From 49a9a9b5d5f424b34b300cbf0d17a00b1c21b44f Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 15 Sep 2025 12:54:05 +0200 Subject: [PATCH 1/4] bump nitro --- ios/Podfile.lock | 10 +-- .../nitrogen/generated/.gitattributes | 2 +- .../android/ExpensifyNitroUtilsOnLoad.cpp | 4 +- .../generated/android/c++/JContactFields.hpp | 2 +- .../android/c++/JHybridContactsModuleSpec.cpp | 11 ++- .../android/c++/JHybridContactsModuleSpec.hpp | 2 + .../kotlin/com/margelo/nitro/utils/Contact.kt | 11 +++ .../com/margelo/nitro/utils/ContactFields.kt | 16 ++--- .../com/margelo/nitro/utils/StringHolder.kt | 3 + .../ios/ExpensifyNitroUtils+autolinking.rb | 2 - .../ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp | 14 ++-- .../ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp | 70 +++++++++++-------- ...ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp | 3 +- .../ios/ExpensifyNitroUtilsAutolinking.mm | 2 +- .../ios/ExpensifyNitroUtilsAutolinking.swift | 4 +- .../ios/c++/HybridContactsModuleSpecSwift.hpp | 10 +-- .../generated/ios/swift/Contact.swift | 15 ++-- .../swift/Func_void_std__exception_ptr.swift | 1 + .../Func_void_std__vector_Contact_.swift | 1 + .../ios/swift/HybridContactsModuleSpec.swift | 3 +- .../swift/HybridContactsModuleSpec_cxx.swift | 21 ++++-- .../nitrogen/generated/shared/c++/Contact.hpp | 26 ++++--- .../generated/shared/c++/ContactFields.hpp | 28 ++++---- .../shared/c++/HybridContactsModuleSpec.hpp | 4 +- .../generated/shared/c++/StringHolder.hpp | 10 ++- modules/ExpensifyNitroUtils/package.json | 4 +- package-lock.json | 46 +++++++----- package.json | 6 +- 28 files changed, 189 insertions(+), 142 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 0d4f3ab27b99..8b6a69daa3a2 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -396,7 +396,7 @@ PODS: - nanopb/encode (= 3.30910.0) - nanopb/decode (3.30910.0) - nanopb/encode (3.30910.0) - - NitroModules (0.26.2): + - NitroModules (0.29.4): - DoubleConversion - glog - hermes-engine @@ -2934,7 +2934,7 @@ PODS: - ReactCommon/turbomodule/core - Turf - Yoga - - RNNitroSQLite (9.1.10): + - RNNitroSQLite (9.1.11): - DoubleConversion - glog - hermes-engine @@ -3769,7 +3769,7 @@ SPEC CHECKSUMS: EXConstants: 26f334022fc0b454b7ecdc7c12d36ffa68c7c397 EXImageLoader: ab4fcf9240cf3636a83c00e3fc5229d692899428 expensify-react-native-background-task: 33f3c3977ee1bcfb75b5466735d467cacda86746 - ExpensifyNitroUtils: e0db1bd03c2ee179bdca45c57bf0497e626b18cd + ExpensifyNitroUtils: fb0098627e13de07aef912c0bb70e8f307f01f60 Expo: a02b1eb4c08689dc866eabf48e2eefee712ded6b ExpoAsset: 3ea3275cca6a7793b3d36fbf1075c590f803fbcb ExpoFont: 312c73403bbd4f98e1d6a5330641a56292583cd2 @@ -3816,7 +3816,7 @@ SPEC CHECKSUMS: MapboxMaps: 05822ab0ee74f7d626e6471572439afe35c1c116 MapboxMobileEvents: d044b9edbe0ec7df60f6c2c9634fe9a7f449266b nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - NitroModules: faec300c5f7074ec6d3255b2f6aedb94ac8a2d3d + NitroModules: 058e64fb28102fadd1105e5530fdfa1ff93db7ac NWWebSocket: 040d22f23438cc09aaeabf537beff67699c3c76d Onfido: f3af62ea1c9a419589c133e3e511e5d2c4f3f8af onfido-react-native-sdk: 0245dba46f3e3a10bbaf3969fc7c947a22fb46fa @@ -3926,7 +3926,7 @@ SPEC CHECKSUMS: RNLiveMarkdown: 33974079f2be0b5c5e6032582c265494f00a8ce4 RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 rnmapbox-maps: 315b95f92be3bf9c86cac2925e39c9ab2ad2c793 - RNNitroSQLite: a1b0f1a665c54fc0f2510a292c1bf8ac4d44231b + RNNitroSQLite: e36968e81bbcab6c9e97a35e74ae34c7420d734c RNPermissions: fd6b2676e74ecb6d2dec0a6168502ab7af733e34 RNReactNativeHapticFeedback: 85c0a6ff490d52f5e8073040296fefe5945ebbfa RNReanimated: 0692f0b36f15b83a7936c3611cab923e1396eeb9 diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/.gitattributes b/modules/ExpensifyNitroUtils/nitrogen/generated/.gitattributes index aae64e233370..fb7a0d5a3f6c 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/.gitattributes +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/.gitattributes @@ -1 +1 @@ -* linguist-generated +** linguist-generated=true diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp index a0df7e19fd72..31fc81d050c7 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp @@ -16,7 +16,6 @@ #include #include "JHybridContactsModuleSpec.hpp" -#include #include namespace margelo::nitro::utils { @@ -36,8 +35,7 @@ int initialize(JavaVM* vm) { []() -> std::shared_ptr { static DefaultConstructableObject object("com/margelo/nitro/utils/HybridContactsModule"); auto instance = object.create(); - auto globalRef = jni::make_global(instance); - return JNISharedPtr::make_shared_from_jni(globalRef); + return instance->cthis()->shared(); } ); }); diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp index a925e6f5f99c..e805f27d8102 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp @@ -29,7 +29,7 @@ namespace margelo::nitro::utils { [[nodiscard]] ContactFields toCpp() const { static const auto clazz = javaClassStatic(); - static const auto fieldOrdinal = clazz->getField("_ordinal"); + static const auto fieldOrdinal = clazz->getField("value"); int ordinal = this->getFieldValue(fieldOrdinal); return static_cast(ordinal); } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp index 16cfa5d84567..a97508ccac41 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp @@ -14,13 +14,13 @@ namespace margelo::nitro::utils { struct StringHolder; } // Forward declaration of `ContactFields` to properly resolve imports. namespace margelo::nitro::utils { enum class ContactFields; } -#include -#include #include "Contact.hpp" +#include +#include #include #include "JContact.hpp" -#include #include +#include #include "StringHolder.hpp" #include "JStringHolder.hpp" #include "ContactFields.hpp" @@ -43,6 +43,11 @@ namespace margelo::nitro::utils { return method(_javaPart); } + void JHybridContactsModuleSpec::dispose() noexcept { + static const auto method = javaClassStatic()->getMethod("dispose"); + method(_javaPart); + } + // Properties diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp index 3765801077da..267335bf4d1f 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp @@ -29,6 +29,7 @@ namespace margelo::nitro::utils { // C++ constructor (called from Java via `initHybrid()`) explicit JHybridContactsModuleSpec(jni::alias_ref jThis) : HybridObject(HybridContactsModuleSpec::TAG), + HybridBase(jThis), _javaPart(jni::make_global(jThis)) {} public: @@ -39,6 +40,7 @@ namespace margelo::nitro::utils { public: size_t getExternalMemorySize() noexcept override; + void dispose() noexcept override; public: inline const jni::global_ref& getJavaPart() const noexcept { diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt index c4afcb3a95dc..8e973bbd49d8 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt @@ -11,6 +11,7 @@ import androidx.annotation.Keep import com.facebook.proguard.annotations.DoNotStrip import com.margelo.nitro.core.* + /** * Represents the JavaScript object/struct "Contact". */ @@ -20,10 +21,20 @@ data class Contact @DoNotStrip @Keep constructor( + @DoNotStrip + @Keep val firstName: String?, + @DoNotStrip + @Keep val lastName: String?, + @DoNotStrip + @Keep val phoneNumbers: Array?, + @DoNotStrip + @Keep val emailAddresses: Array?, + @DoNotStrip + @Keep val imageData: String? ) { /* main constructor */ diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt index f0cd2743308d..2ccadba2b44f 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt @@ -15,14 +15,10 @@ import com.facebook.proguard.annotations.DoNotStrip */ @DoNotStrip @Keep -enum class ContactFields { - FIRST_NAME, - LAST_NAME, - PHONE_NUMBERS, - EMAIL_ADDRESSES, - IMAGE_DATA; - - @DoNotStrip - @Keep - private val _ordinal = ordinal +enum class ContactFields(@DoNotStrip @Keep val value: Int) { + FIRST_NAME(0), + LAST_NAME(1), + PHONE_NUMBERS(2), + EMAIL_ADDRESSES(3), + IMAGE_DATA(4); } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt index f679152f1495..f901bdade52c 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt @@ -11,6 +11,7 @@ import androidx.annotation.Keep import com.facebook.proguard.annotations.DoNotStrip import com.margelo.nitro.core.* + /** * Represents the JavaScript object/struct "StringHolder". */ @@ -20,6 +21,8 @@ data class StringHolder @DoNotStrip @Keep constructor( + @DoNotStrip + @Keep val value: String ) { /* main constructor */ diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb index e843a5df9753..7c97cbfb8888 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb @@ -56,7 +56,5 @@ def add_nitrogen_files(spec) "SWIFT_OBJC_INTEROP_MODE" => "objcxx", # Enables stricter modular headers "DEFINES_MODULE" => "YES", - # C++ compiler flags to disable Folly config and coroutines. https://github.com/mrousavy/nitro/issues/591 - "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) FOLLY_NO_CONFIG FOLLY_CFG_NO_COROUTINES", }) end diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp index 94e3cdfc82eb..3301e4226c02 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp @@ -14,7 +14,7 @@ namespace margelo::nitro::utils::bridge::swift { // pragma MARK: std::function& /* result */)> - Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* _Nonnull swiftClosureWrapper) { + Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* _Nonnull swiftClosureWrapper) noexcept { auto swiftClosure = ExpensifyNitroUtils::Func_void_std__vector_Contact_::fromUnsafe(swiftClosureWrapper); return [swiftClosure = std::move(swiftClosure)](const std::vector& result) mutable -> void { swiftClosure.call(result); @@ -22,25 +22,25 @@ namespace margelo::nitro::utils::bridge::swift { } // pragma MARK: std::function - Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* _Nonnull swiftClosureWrapper) { + Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* _Nonnull swiftClosureWrapper) noexcept { auto swiftClosure = ExpensifyNitroUtils::Func_void_std__exception_ptr::fromUnsafe(swiftClosureWrapper); return [swiftClosure = std::move(swiftClosure)](const std::exception_ptr& error) mutable -> void { swiftClosure.call(error); }; } - // pragma MARK: std::shared_ptr - std::shared_ptr create_std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_(void* _Nonnull swiftUnsafePointer) { + // pragma MARK: std::shared_ptr + std::shared_ptr create_std__shared_ptr_HybridContactsModuleSpec_(void* _Nonnull swiftUnsafePointer) noexcept { ExpensifyNitroUtils::HybridContactsModuleSpec_cxx swiftPart = ExpensifyNitroUtils::HybridContactsModuleSpec_cxx::fromUnsafe(swiftUnsafePointer); return std::make_shared(swiftPart); } - void* _Nonnull get_std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_(std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ cppType) { + void* _Nonnull get_std__shared_ptr_HybridContactsModuleSpec_(std__shared_ptr_HybridContactsModuleSpec_ cppType) noexcept { std::shared_ptr swiftWrapper = std::dynamic_pointer_cast(cppType); - #ifdef NITRO_DEBUG + #ifdef NITRO_DEBUG if (swiftWrapper == nullptr) [[unlikely]] { throw std::runtime_error("Class \"HybridContactsModuleSpec\" is not implemented in Swift!"); } - #endif + #endif ExpensifyNitroUtils::HybridContactsModuleSpec_cxx& swiftPart = swiftWrapper->getSwiftPart(); return swiftPart.toUnsafe(); } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp index 07e2befb6dfc..81e525440f66 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp @@ -47,16 +47,22 @@ namespace margelo::nitro::utils::bridge::swift { * Specialized version of `std::optional`. */ using std__optional_std__string_ = std::optional; - inline std::optional create_std__optional_std__string_(const std::string& value) { + inline std::optional create_std__optional_std__string_(const std::string& value) noexcept { return std::optional(value); } + inline bool has_value_std__optional_std__string_(const std::optional& optional) noexcept { + return optional.has_value(); + } + inline std::string get_std__optional_std__string_(const std::optional& optional) noexcept { + return *optional; + } // pragma MARK: std::vector /** * Specialized version of `std::vector`. */ using std__vector_StringHolder_ = std::vector; - inline std::vector create_std__vector_StringHolder_(size_t size) { + inline std::vector create_std__vector_StringHolder_(size_t size) noexcept { std::vector vector; vector.reserve(size); return vector; @@ -67,16 +73,22 @@ namespace margelo::nitro::utils::bridge::swift { * Specialized version of `std::optional>`. */ using std__optional_std__vector_StringHolder__ = std::optional>; - inline std::optional> create_std__optional_std__vector_StringHolder__(const std::vector& value) { + inline std::optional> create_std__optional_std__vector_StringHolder__(const std::vector& value) noexcept { return std::optional>(value); } + inline bool has_value_std__optional_std__vector_StringHolder__(const std::optional>& optional) noexcept { + return optional.has_value(); + } + inline std::vector get_std__optional_std__vector_StringHolder__(const std::optional>& optional) noexcept { + return *optional; + } // pragma MARK: std::vector /** * Specialized version of `std::vector`. */ using std__vector_Contact_ = std::vector; - inline std::vector create_std__vector_Contact_(size_t size) { + inline std::vector create_std__vector_Contact_(size_t size) noexcept { std::vector vector; vector.reserve(size); return vector; @@ -87,10 +99,10 @@ namespace margelo::nitro::utils::bridge::swift { * Specialized version of `std::shared_ptr>>`. */ using std__shared_ptr_Promise_std__vector_Contact___ = std::shared_ptr>>; - inline std::shared_ptr>> create_std__shared_ptr_Promise_std__vector_Contact___() { + inline std::shared_ptr>> create_std__shared_ptr_Promise_std__vector_Contact___() noexcept { return Promise>::create(); } - inline PromiseHolder> wrap_std__shared_ptr_Promise_std__vector_Contact___(std::shared_ptr>> promise) { + inline PromiseHolder> wrap_std__shared_ptr_Promise_std__vector_Contact___(std::shared_ptr>> promise) noexcept { return PromiseHolder>(std::move(promise)); } @@ -104,15 +116,15 @@ namespace margelo::nitro::utils::bridge::swift { */ class Func_void_std__vector_Contact__Wrapper final { public: - explicit Func_void_std__vector_Contact__Wrapper(std::function& /* result */)>&& func): _function(std::make_shared& /* result */)>>(std::move(func))) {} - inline void call(std::vector result) const { + explicit Func_void_std__vector_Contact__Wrapper(std::function& /* result */)>&& func): _function(std::make_unique& /* result */)>>(std::move(func))) {} + inline void call(std::vector result) const noexcept { _function->operator()(result); } private: - std::shared_ptr& /* result */)>> _function; - }; - Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* _Nonnull swiftClosureWrapper); - inline Func_void_std__vector_Contact__Wrapper wrap_Func_void_std__vector_Contact_(Func_void_std__vector_Contact_ value) { + std::unique_ptr& /* result */)>> _function; + } SWIFT_NONCOPYABLE; + Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* _Nonnull swiftClosureWrapper) noexcept; + inline Func_void_std__vector_Contact__Wrapper wrap_Func_void_std__vector_Contact_(Func_void_std__vector_Contact_ value) noexcept { return Func_void_std__vector_Contact__Wrapper(std::move(value)); } @@ -126,15 +138,15 @@ namespace margelo::nitro::utils::bridge::swift { */ class Func_void_std__exception_ptr_Wrapper final { public: - explicit Func_void_std__exception_ptr_Wrapper(std::function&& func): _function(std::make_shared>(std::move(func))) {} - inline void call(std::exception_ptr error) const { + explicit Func_void_std__exception_ptr_Wrapper(std::function&& func): _function(std::make_unique>(std::move(func))) {} + inline void call(std::exception_ptr error) const noexcept { _function->operator()(error); } private: - std::shared_ptr> _function; - }; - Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* _Nonnull swiftClosureWrapper); - inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) { + std::unique_ptr> _function; + } SWIFT_NONCOPYABLE; + Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* _Nonnull swiftClosureWrapper) noexcept; + inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) noexcept { return Func_void_std__exception_ptr_Wrapper(std::move(value)); } @@ -143,30 +155,30 @@ namespace margelo::nitro::utils::bridge::swift { * Specialized version of `std::vector`. */ using std__vector_ContactFields_ = std::vector; - inline std::vector create_std__vector_ContactFields_(size_t size) { + inline std::vector create_std__vector_ContactFields_(size_t size) noexcept { std::vector vector; vector.reserve(size); return vector; } - // pragma MARK: std::shared_ptr + // pragma MARK: std::shared_ptr /** - * Specialized version of `std::shared_ptr`. + * Specialized version of `std::shared_ptr`. */ - using std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ = std::shared_ptr; - std::shared_ptr create_std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_(void* _Nonnull swiftUnsafePointer); - void* _Nonnull get_std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_(std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ cppType); + using std__shared_ptr_HybridContactsModuleSpec_ = std::shared_ptr; + std::shared_ptr create_std__shared_ptr_HybridContactsModuleSpec_(void* _Nonnull swiftUnsafePointer) noexcept; + void* _Nonnull get_std__shared_ptr_HybridContactsModuleSpec_(std__shared_ptr_HybridContactsModuleSpec_ cppType) noexcept; - // pragma MARK: std::weak_ptr - using std__weak_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ = std::weak_ptr; - inline std__weak_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ weakify_std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_(const std::shared_ptr& strong) { return strong; } + // pragma MARK: std::weak_ptr + using std__weak_ptr_HybridContactsModuleSpec_ = std::weak_ptr; + inline std__weak_ptr_HybridContactsModuleSpec_ weakify_std__shared_ptr_HybridContactsModuleSpec_(const std::shared_ptr& strong) noexcept { return strong; } // pragma MARK: Result>>> using Result_std__shared_ptr_Promise_std__vector_Contact____ = Result>>>; - inline Result_std__shared_ptr_Promise_std__vector_Contact____ create_Result_std__shared_ptr_Promise_std__vector_Contact____(const std::shared_ptr>>& value) { + inline Result_std__shared_ptr_Promise_std__vector_Contact____ create_Result_std__shared_ptr_Promise_std__vector_Contact____(const std::shared_ptr>>& value) noexcept { return Result>>>::withValue(value); } - inline Result_std__shared_ptr_Promise_std__vector_Contact____ create_Result_std__shared_ptr_Promise_std__vector_Contact____(const std::exception_ptr& error) { + inline Result_std__shared_ptr_Promise_std__vector_Contact____ create_Result_std__shared_ptr_Promise_std__vector_Contact____(const std::exception_ptr& error) noexcept { return Result>>>::withError(error); } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp index 23aa1fafd723..1d6ea0e67519 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp @@ -35,8 +35,9 @@ namespace margelo::nitro::utils { struct StringHolder; } // Common C++ types used in Swift #include -#include +#include #include +#include // Forward declarations of Swift defined types // Forward declaration of `HybridContactsModuleSpec_cxx` to properly resolve imports. diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm index 89cb3c9d70da..a1aeccf77174 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm @@ -24,7 +24,7 @@ + (void) load { HybridObjectRegistry::registerHybridObjectConstructor( "ContactsModule", []() -> std::shared_ptr { - std::shared_ptr hybridObject = ExpensifyNitroUtils::ExpensifyNitroUtilsAutolinking::createContactsModule(); + std::shared_ptr hybridObject = ExpensifyNitroUtils::ExpensifyNitroUtilsAutolinking::createContactsModule(); return hybridObject; } ); diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift index 50e2323a8b71..d3c891be34a8 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift @@ -15,9 +15,9 @@ public final class ExpensifyNitroUtilsAutolinking { * This is generated by Nitrogen and will initialize the class specified * in the `"autolinking"` property of `nitro.json` (in this case, `HybridContactsModule`). */ - public static func createContactsModule() -> bridge.std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ { + public static func createContactsModule() -> bridge.std__shared_ptr_HybridContactsModuleSpec_ { let hybridObject = HybridContactsModule() - return { () -> bridge.std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ in + return { () -> bridge.std__shared_ptr_HybridContactsModuleSpec_ in let __cxxWrapped = hybridObject.getCxxWrapper() return __cxxWrapped.getCxxPart() }() diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp index 5f7b2864b983..d5245138dbaf 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp @@ -19,11 +19,11 @@ namespace margelo::nitro::utils { struct StringHolder; } // Forward declaration of `ContactFields` to properly resolve imports. namespace margelo::nitro::utils { enum class ContactFields; } -#include -#include #include "Contact.hpp" -#include +#include +#include #include +#include #include "StringHolder.hpp" #include "ContactFields.hpp" @@ -55,10 +55,12 @@ namespace margelo::nitro::utils { } public: - // Get memory pressure inline size_t getExternalMemorySize() noexcept override { return _swiftPart.getMemorySize(); } + void dispose() noexcept override { + _swiftPart.dispose(); + } public: // Properties diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift index a9bcb211c356..4b165d37a294 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift @@ -68,7 +68,8 @@ public extension Contact { @inline(__always) get { return { () -> String? in - if let __unwrapped = self.__firstName.value { + if bridge.has_value_std__optional_std__string_(self.__firstName) { + let __unwrapped = bridge.get_std__optional_std__string_(self.__firstName) return String(__unwrapped) } else { return nil @@ -91,7 +92,8 @@ public extension Contact { @inline(__always) get { return { () -> String? in - if let __unwrapped = self.__lastName.value { + if bridge.has_value_std__optional_std__string_(self.__lastName) { + let __unwrapped = bridge.get_std__optional_std__string_(self.__lastName) return String(__unwrapped) } else { return nil @@ -114,7 +116,8 @@ public extension Contact { @inline(__always) get { return { () -> [StringHolder]? in - if let __unwrapped = self.__phoneNumbers.value { + if bridge.has_value_std__optional_std__vector_StringHolder__(self.__phoneNumbers) { + let __unwrapped = bridge.get_std__optional_std__vector_StringHolder__(self.__phoneNumbers) return __unwrapped.map({ __item in __item }) } else { return nil @@ -143,7 +146,8 @@ public extension Contact { @inline(__always) get { return { () -> [StringHolder]? in - if let __unwrapped = self.__emailAddresses.value { + if bridge.has_value_std__optional_std__vector_StringHolder__(self.__emailAddresses) { + let __unwrapped = bridge.get_std__optional_std__vector_StringHolder__(self.__emailAddresses) return __unwrapped.map({ __item in __item }) } else { return nil @@ -172,7 +176,8 @@ public extension Contact { @inline(__always) get { return { () -> String? in - if let __unwrapped = self.__imageData.value { + if bridge.has_value_std__optional_std__string_(self.__imageData) { + let __unwrapped = bridge.get_std__optional_std__string_(self.__imageData) return String(__unwrapped) } else { return nil diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift index 30229b78ad14..8eaa9f12b2a1 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift @@ -7,6 +7,7 @@ import NitroModules + /** * Wraps a Swift `(_ error: Error) -> Void` as a class. * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`. diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift index 38697a319846..26501cd5acaa 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift @@ -7,6 +7,7 @@ import NitroModules + /** * Wraps a Swift `(_ value: [Contact]) -> Void` as a class. * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`. diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift index 8e6c97b12fe7..3c0165804127 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift @@ -18,8 +18,9 @@ public protocol HybridContactsModuleSpec_protocol: HybridObject { } /// See ``HybridContactsModuleSpec`` -public class HybridContactsModuleSpec_base { +open class HybridContactsModuleSpec_base { private weak var cxxWrapper: HybridContactsModuleSpec_cxx? = nil + public init() { } public func getCxxWrapper() -> HybridContactsModuleSpec_cxx { #if DEBUG guard self is HybridContactsModuleSpec else { diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift index c7fd1700bcbc..04cbd1cfd732 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift @@ -17,7 +17,7 @@ import NitroModules * - Other HybridObjects need to be wrapped/unwrapped from the Swift TCxx wrapper * - Throwing methods need to be wrapped with a Result type, as exceptions cannot be propagated to C++ */ -public class HybridContactsModuleSpec_cxx { +open class HybridContactsModuleSpec_cxx { /** * The Swift <> C++ bridge's namespace (`margelo::nitro::utils::bridge::swift`) * from `ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp`. @@ -33,7 +33,7 @@ public class HybridContactsModuleSpec_cxx { /** * Holds a weak pointer to the C++ class that wraps the Swift class. */ - private var __cxxPart: bridge.std__weak_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ + private var __cxxPart: bridge.std__weak_ptr_HybridContactsModuleSpec_ /** * Create a new `HybridContactsModuleSpec_cxx` that wraps the given `HybridContactsModuleSpec`. @@ -72,15 +72,15 @@ public class HybridContactsModuleSpec_cxx { /** * Gets (or creates) the C++ part of this Hybrid Object. - * The C++ part is a `std::shared_ptr`. + * The C++ part is a `std::shared_ptr`. */ - public func getCxxPart() -> bridge.std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_ { + public func getCxxPart() -> bridge.std__shared_ptr_HybridContactsModuleSpec_ { let cachedCxxPart = self.__cxxPart.lock() if cachedCxxPart.__convertToBool() { return cachedCxxPart } else { - let newCxxPart = bridge.create_std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_(self.toUnsafe()) - __cxxPart = bridge.weakify_std__shared_ptr_margelo__nitro__utils__HybridContactsModuleSpec_(newCxxPart) + let newCxxPart = bridge.create_std__shared_ptr_HybridContactsModuleSpec_(self.toUnsafe()) + __cxxPart = bridge.weakify_std__shared_ptr_HybridContactsModuleSpec_(newCxxPart) return newCxxPart } } @@ -96,6 +96,15 @@ public class HybridContactsModuleSpec_cxx { return MemoryHelper.getSizeOf(self.__implementation) + self.__implementation.memorySize } + /** + * Call dispose() on the Swift class. + * This _may_ be called manually from JS. + */ + @inline(__always) + public func dispose() { + self.__implementation.dispose() + } + // Properties diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp index adb87772615c..0a9128bad9a7 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp @@ -21,10 +21,10 @@ // Forward declaration of `StringHolder` to properly resolve imports. namespace margelo::nitro::utils { struct StringHolder; } -#include #include -#include +#include #include "StringHolder.hpp" +#include namespace margelo::nitro::utils { @@ -48,27 +48,25 @@ namespace margelo::nitro::utils { namespace margelo::nitro { - using namespace margelo::nitro::utils; - // C++ Contact <> JS Contact (object) template <> - struct JSIConverter final { - static inline Contact fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { + struct JSIConverter final { + static inline margelo::nitro::utils::Contact fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); - return Contact( + return margelo::nitro::utils::Contact( JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "firstName")), JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "lastName")), - JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, "phoneNumbers")), - JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, "emailAddresses")), + JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, "phoneNumbers")), + JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, "emailAddresses")), JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "imageData")) ); } - static inline jsi::Value toJSI(jsi::Runtime& runtime, const Contact& arg) { + static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::utils::Contact& arg) { jsi::Object obj(runtime); obj.setProperty(runtime, "firstName", JSIConverter>::toJSI(runtime, arg.firstName)); obj.setProperty(runtime, "lastName", JSIConverter>::toJSI(runtime, arg.lastName)); - obj.setProperty(runtime, "phoneNumbers", JSIConverter>>::toJSI(runtime, arg.phoneNumbers)); - obj.setProperty(runtime, "emailAddresses", JSIConverter>>::toJSI(runtime, arg.emailAddresses)); + obj.setProperty(runtime, "phoneNumbers", JSIConverter>>::toJSI(runtime, arg.phoneNumbers)); + obj.setProperty(runtime, "emailAddresses", JSIConverter>>::toJSI(runtime, arg.emailAddresses)); obj.setProperty(runtime, "imageData", JSIConverter>::toJSI(runtime, arg.imageData)); return obj; } @@ -79,8 +77,8 @@ namespace margelo::nitro { jsi::Object obj = value.getObject(runtime); if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "firstName"))) return false; if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "lastName"))) return false; - if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, "phoneNumbers"))) return false; - if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, "emailAddresses"))) return false; + if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, "phoneNumbers"))) return false; + if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, "emailAddresses"))) return false; if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "imageData"))) return false; return true; } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp index 9e5eea27a0b1..a00d7f799a59 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp @@ -40,30 +40,28 @@ namespace margelo::nitro::utils { namespace margelo::nitro { - using namespace margelo::nitro::utils; - // C++ ContactFields <> JS ContactFields (union) template <> - struct JSIConverter final { - static inline ContactFields fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { + struct JSIConverter final { + static inline margelo::nitro::utils::ContactFields fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { std::string unionValue = JSIConverter::fromJSI(runtime, arg); switch (hashString(unionValue.c_str(), unionValue.size())) { - case hashString("FIRST_NAME"): return ContactFields::FIRST_NAME; - case hashString("LAST_NAME"): return ContactFields::LAST_NAME; - case hashString("PHONE_NUMBERS"): return ContactFields::PHONE_NUMBERS; - case hashString("EMAIL_ADDRESSES"): return ContactFields::EMAIL_ADDRESSES; - case hashString("IMAGE_DATA"): return ContactFields::IMAGE_DATA; + case hashString("FIRST_NAME"): return margelo::nitro::utils::ContactFields::FIRST_NAME; + case hashString("LAST_NAME"): return margelo::nitro::utils::ContactFields::LAST_NAME; + case hashString("PHONE_NUMBERS"): return margelo::nitro::utils::ContactFields::PHONE_NUMBERS; + case hashString("EMAIL_ADDRESSES"): return margelo::nitro::utils::ContactFields::EMAIL_ADDRESSES; + case hashString("IMAGE_DATA"): return margelo::nitro::utils::ContactFields::IMAGE_DATA; default: [[unlikely]] throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum ContactFields - invalid value!"); } } - static inline jsi::Value toJSI(jsi::Runtime& runtime, ContactFields arg) { + static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::utils::ContactFields arg) { switch (arg) { - case ContactFields::FIRST_NAME: return JSIConverter::toJSI(runtime, "FIRST_NAME"); - case ContactFields::LAST_NAME: return JSIConverter::toJSI(runtime, "LAST_NAME"); - case ContactFields::PHONE_NUMBERS: return JSIConverter::toJSI(runtime, "PHONE_NUMBERS"); - case ContactFields::EMAIL_ADDRESSES: return JSIConverter::toJSI(runtime, "EMAIL_ADDRESSES"); - case ContactFields::IMAGE_DATA: return JSIConverter::toJSI(runtime, "IMAGE_DATA"); + case margelo::nitro::utils::ContactFields::FIRST_NAME: return JSIConverter::toJSI(runtime, "FIRST_NAME"); + case margelo::nitro::utils::ContactFields::LAST_NAME: return JSIConverter::toJSI(runtime, "LAST_NAME"); + case margelo::nitro::utils::ContactFields::PHONE_NUMBERS: return JSIConverter::toJSI(runtime, "PHONE_NUMBERS"); + case margelo::nitro::utils::ContactFields::EMAIL_ADDRESSES: return JSIConverter::toJSI(runtime, "EMAIL_ADDRESSES"); + case margelo::nitro::utils::ContactFields::IMAGE_DATA: return JSIConverter::toJSI(runtime, "IMAGE_DATA"); default: [[unlikely]] throw std::invalid_argument("Cannot convert ContactFields to JS - invalid value: " + std::to_string(static_cast(arg)) + "!"); diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp index c7227466d52d..12aa95f90327 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp @@ -18,9 +18,9 @@ namespace margelo::nitro::utils { struct Contact; } // Forward declaration of `ContactFields` to properly resolve imports. namespace margelo::nitro::utils { enum class ContactFields; } -#include -#include #include "Contact.hpp" +#include +#include #include "ContactFields.hpp" namespace margelo::nitro::utils { diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp index ab4dc27febd1..9d993b639a82 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp @@ -40,18 +40,16 @@ namespace margelo::nitro::utils { namespace margelo::nitro { - using namespace margelo::nitro::utils; - // C++ StringHolder <> JS StringHolder (object) template <> - struct JSIConverter final { - static inline StringHolder fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { + struct JSIConverter final { + static inline margelo::nitro::utils::StringHolder fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); - return StringHolder( + return margelo::nitro::utils::StringHolder( JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "value")) ); } - static inline jsi::Value toJSI(jsi::Runtime& runtime, const StringHolder& arg) { + static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::utils::StringHolder& arg) { jsi::Object obj(runtime); obj.setProperty(runtime, "value", JSIConverter::toJSI(runtime, arg.value)); return obj; diff --git a/modules/ExpensifyNitroUtils/package.json b/modules/ExpensifyNitroUtils/package.json index 6df3555171a8..f53733968d9c 100644 --- a/modules/ExpensifyNitroUtils/package.json +++ b/modules/ExpensifyNitroUtils/package.json @@ -26,9 +26,9 @@ "postinstall": "tsc || exit 0;", "typecheck": "tsc --noEmit", "clean": " rm -rf android/build node_modules/**/android/build lib", - "specs-debug": "npm run --filter=\"**\" typescript && npx nitro-codegen --logLevel=\"debug\"", + "specs-debug": "npm run --filter=\"**\" typescript && npx nitrogen --logLevel=\"debug\"", "typescript": "tsc --noEmit false", - "specs": "npx nitro-codegen" + "specs": "npx nitrogen" }, "author": "Expensify", "license": "MIT", diff --git a/package-lock.json b/package-lock.json index 42750059acaf..e85023198701 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,8 +112,8 @@ "react-native-launch-arguments": "^4.0.2", "react-native-localize": "^2.2.6", "react-native-modal": "^13.0.0", - "react-native-nitro-modules": "0.26.2", - "react-native-nitro-sqlite": "9.1.10", + "react-native-nitro-modules": "0.29.4", + "react-native-nitro-sqlite": "9.1.11", "react-native-onyx": "2.0.138", "react-native-pager-view": "6.5.3", "react-native-pdf": "6.7.3", @@ -266,7 +266,7 @@ "jest-when": "^3.5.2", "link": "^2.1.1", "memfs": "^4.6.0", - "nitro-codegen": "0.25.2", + "nitrogen": "0.29.4", "onchange": "^7.1.0", "openai": "5.5.1", "patch-package": "^8.1.0-canary.1", @@ -29103,24 +29103,28 @@ "version": "2.0.1", "license": "MIT" }, - "node_modules/nitro-codegen": { - "version": "0.25.2", + "node_modules/nitrogen": { + "version": "0.29.4", + "resolved": "https://registry.npmjs.org/nitrogen/-/nitrogen-0.29.4.tgz", + "integrity": "sha512-XtQyaWw12S8LpKD3muf+BXNXP2UAPONd4wC7oWK2+JoYVMSlYnMTnRxd6RRT7qH2j5KwFQeuRpwRPWSsxtCAXQ==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { "chalk": "^5.3.0", - "react-native-nitro-modules": "^0.25.2", + "react-native-nitro-modules": "^0.29.4", "ts-morph": "^25.0.0", "yargs": "^17.7.2", - "zod": "^3.23.8" + "zod": "^4.0.5" }, "bin": { - "nitro-codegen": "lib/index.js" + "nitrogen": "lib/index.js" } }, - "node_modules/nitro-codegen/node_modules/chalk": { - "version": "5.4.1", + "node_modules/nitrogen/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { @@ -29130,14 +29134,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/nitro-codegen/node_modules/react-native-nitro-modules": { - "version": "0.25.2", + "node_modules/nitrogen/node_modules/zod": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.8.tgz", + "integrity": "sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/no-case": { @@ -31679,7 +31683,9 @@ } }, "node_modules/react-native-nitro-modules": { - "version": "0.26.2", + "version": "0.29.4", + "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.29.4.tgz", + "integrity": "sha512-AfUMcwFtj9FuEDwDLN5eIVo0lBYTQqDaV7meiFzuoZyRmc8ywykFTKfyZwRN2t8Z/WtTlfCj9Y9yaET33IImsg==", "hasInstallScript": true, "license": "MIT", "peerDependencies": { @@ -31688,7 +31694,9 @@ } }, "node_modules/react-native-nitro-sqlite": { - "version": "9.1.10", + "version": "9.1.11", + "resolved": "https://registry.npmjs.org/react-native-nitro-sqlite/-/react-native-nitro-sqlite-9.1.11.tgz", + "integrity": "sha512-MU8c1rI5SQXKTvVZtBsUtvHmObhCZg4LnxHgHNnS0VS5ovYeT1KTY29H7+S7YJoiR4DKYvuU/d7pFwoIMHTaww==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -31697,7 +31705,7 @@ "peerDependencies": { "react": ">=17.0.0", "react-native": ">=0.75.0", - "react-native-nitro-modules": ">=0.24.1" + "react-native-nitro-modules": ">=0.27.2" } }, "node_modules/react-native-nitro-sqlite/node_modules/ansi-styles": { diff --git a/package.json b/package.json index 1cbe48d99a38..28202803802e 100644 --- a/package.json +++ b/package.json @@ -182,8 +182,8 @@ "react-native-launch-arguments": "^4.0.2", "react-native-localize": "^2.2.6", "react-native-modal": "^13.0.0", - "react-native-nitro-modules": "0.26.2", - "react-native-nitro-sqlite": "9.1.10", + "react-native-nitro-modules": "0.29.4", + "react-native-nitro-sqlite": "9.1.11", "react-native-onyx": "2.0.138", "react-native-pager-view": "6.5.3", "react-native-pdf": "6.7.3", @@ -336,7 +336,7 @@ "jest-when": "^3.5.2", "link": "^2.1.1", "memfs": "^4.6.0", - "nitro-codegen": "0.25.2", + "nitrogen": "0.29.4", "onchange": "^7.1.0", "openai": "5.5.1", "patch-package": "^8.1.0-canary.1", From 4dc667afff53c460200047845a8b307520f4f027 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 16 Sep 2025 14:11:57 +0200 Subject: [PATCH 2/4] move `GCC_PREPROCESSOR_DEFINITIONS` from OD podfile to ExpensifyNitroUtils.podspec --- ios/Podfile.lock | 4 ++-- modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 557a00352afa..ed8fd70140fc 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3769,8 +3769,8 @@ SPEC CHECKSUMS: EXConstants: 9d62a46a36eae6d28cb978efcbc68aef354d1704 EXImageLoader: ab4fcf9240cf3636a83c00e3fc5229d692899428 expensify-react-native-background-task: 33f3c3977ee1bcfb75b5466735d467cacda86746 - ExpensifyNitroUtils: fb0098627e13de07aef912c0bb70e8f307f01f60 - Expo: a02b1eb4c08689dc866eabf48e2eefee712ded6b + ExpensifyNitroUtils: de897350b81393fcdf3b80db07eff8ac52b1a116 + Expo: 63b9951a116c03a63215ae0a116e52b50107cecd ExpoAsset: 3ea3275cca6a7793b3d36fbf1075c590f803fbcb ExpoFont: 312c73403bbd4f98e1d6a5330641a56292583cd2 ExpoImage: 04ffc79f9a0391573b77efbc549d59c655caa5a8 diff --git a/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec b/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec index 89d63d0f2c74..442141b382e6 100644 --- a/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec +++ b/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec @@ -22,6 +22,10 @@ Pod::Spec.new do |s| "cpp/**/*.{hpp,cpp}", ] + s.pod_target_xcconfig = { + "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) FOLLY_NO_CONFIG FOLLY_CFG_NO_COROUTINES", + } + load 'nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb' add_nitrogen_files(s) From ab0dfa9e67d69a7a1a4e8021e3b6263e9f347a86 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 16 Sep 2025 14:24:50 +0200 Subject: [PATCH 3/4] add HEADER_SEARCH_PATHS --- modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec b/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec index 442141b382e6..417126ab2532 100644 --- a/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec +++ b/modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec @@ -23,6 +23,9 @@ Pod::Spec.new do |s| ] s.pod_target_xcconfig = { + "HEADER_SEARCH_PATHS" => [ + "${PODS_ROOT}/RCT-Folly", + ], "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) FOLLY_NO_CONFIG FOLLY_CFG_NO_COROUTINES", } From f15a2a09ef4875398a8ec6858ac14be56c94fc65 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 17 Sep 2025 14:48:11 +0200 Subject: [PATCH 4/4] update podfile --- ios/Podfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 32dfec3c3abd..8f543edfd43d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3769,7 +3769,7 @@ SPEC CHECKSUMS: EXConstants: 9d62a46a36eae6d28cb978efcbc68aef354d1704 EXImageLoader: ab4fcf9240cf3636a83c00e3fc5229d692899428 expensify-react-native-background-task: 33f3c3977ee1bcfb75b5466735d467cacda86746 - ExpensifyNitroUtils: de897350b81393fcdf3b80db07eff8ac52b1a116 + ExpensifyNitroUtils: e23437311e907914fc58da92569b5f9805b724f3 Expo: 63b9951a116c03a63215ae0a116e52b50107cecd ExpoAsset: 3ea3275cca6a7793b3d36fbf1075c590f803fbcb ExpoFont: 312c73403bbd4f98e1d6a5330641a56292583cd2