From 62284297199b9fd272ebfcfdb6d2a3c8d9bf5ae1 Mon Sep 17 00:00:00 2001 From: Alejandro Paredes Alva Date: Sat, 14 Mar 2026 16:37:17 +0100 Subject: [PATCH 1/3] chore: Bump Nitrogen and update autolinking Regenerate Nitrogen bindings (v0.35.1) and switch nitro.json autolinking to per-platform objects. Refreshes generated sources, removes the copyright year from headers, and includes Android native API changes (renamed registration API / deprecated initialize). --- nitro.json | 10 ++- .../android/NitroFS+autolinking.cmake | 2 +- .../android/NitroFS+autolinking.gradle | 2 +- nitrogen/generated/android/NitroFSOnLoad.cpp | 46 ++++++---- nitrogen/generated/android/NitroFSOnLoad.hpp | 19 ++-- .../android/c++/JFunc_void_double_double.hpp | 6 +- .../android/c++/JHybridNitroFSSpec.cpp | 86 ++++++++++--------- .../android/c++/JHybridNitroFSSpec.hpp | 42 +++++---- nitrogen/generated/android/c++/JNitroFile.hpp | 4 +- .../android/c++/JNitroFileEncoding.hpp | 11 ++- .../generated/android/c++/JNitroFileStat.hpp | 4 +- .../android/c++/JNitroUploadMethod.hpp | 11 ++- .../android/c++/JNitroUploadOptions.hpp | 4 +- .../nitro/nitrofs/Func_void_double_double.kt | 2 +- .../nitro/nitrofs/HybridNitroFSSpec.kt | 35 ++++---- .../margelo/nitro/nitrofs/NitroFSOnLoad.kt | 2 +- .../com/margelo/nitro/nitrofs/NitroFile.kt | 4 +- .../nitro/nitrofs/NitroFileEncoding.kt | 4 +- .../margelo/nitro/nitrofs/NitroFileStat.kt | 4 +- .../nitro/nitrofs/NitroUploadMethod.kt | 4 +- .../nitro/nitrofs/NitroUploadOptions.kt | 4 +- nitrogen/generated/ios/NitroFS+autolinking.rb | 4 +- .../ios/NitroFS-Swift-Cxx-Bridge.cpp | 2 +- .../ios/NitroFS-Swift-Cxx-Bridge.hpp | 10 +-- .../ios/NitroFS-Swift-Cxx-Umbrella.hpp | 2 +- nitrogen/generated/ios/NitroFSAutolinking.mm | 2 +- .../generated/ios/NitroFSAutolinking.swift | 17 ++-- .../ios/c++/HybridNitroFSSpecSwift.cpp | 2 +- .../ios/c++/HybridNitroFSSpecSwift.hpp | 8 +- nitrogen/generated/ios/swift/Func_void.swift | 3 +- .../ios/swift/Func_void_NitroFile.swift | 3 +- .../ios/swift/Func_void_NitroFileStat.swift | 3 +- .../generated/ios/swift/Func_void_bool.swift | 3 +- .../ios/swift/Func_void_double_double.swift | 3 +- .../swift/Func_void_std__exception_ptr.swift | 3 +- .../ios/swift/Func_void_std__string.swift | 3 +- .../Func_void_std__vector_NitroFile_.swift | 3 +- .../ios/swift/HybridNitroFSSpec.swift | 7 +- .../ios/swift/HybridNitroFSSpec_cxx.swift | 11 ++- nitrogen/generated/ios/swift/NitroFile.swift | 33 ++----- .../ios/swift/NitroFileEncoding.swift | 2 +- .../generated/ios/swift/NitroFileStat.swift | 53 +++--------- .../ios/swift/NitroUploadMethod.swift | 2 +- .../ios/swift/NitroUploadOptions.swift | 59 +++---------- .../shared/c++/HybridNitroFSSpec.cpp | 2 +- .../shared/c++/HybridNitroFSSpec.hpp | 2 +- nitrogen/generated/shared/c++/NitroFile.hpp | 30 ++++--- .../shared/c++/NitroFileEncoding.hpp | 2 +- .../generated/shared/c++/NitroFileStat.hpp | 42 +++++---- .../shared/c++/NitroUploadMethod.hpp | 2 +- .../shared/c++/NitroUploadOptions.hpp | 30 ++++--- package.json | 2 +- 52 files changed, 314 insertions(+), 342 deletions(-) diff --git a/nitro.json b/nitro.json index 0337189..31fcc02 100644 --- a/nitro.json +++ b/nitro.json @@ -14,8 +14,14 @@ }, "autolinking": { "NitroFS": { - "swift": "HybridNitroFS", - "kotlin": "HybridNitroFS" + "ios": { + "language": "swift", + "implementationClassName": "HybridNitroFS" + }, + "android": { + "language": "kotlin", + "implementationClassName": "HybridNitroFS" + } } }, "ignorePaths": [ diff --git a/nitrogen/generated/android/NitroFS+autolinking.cmake b/nitrogen/generated/android/NitroFS+autolinking.cmake index da34ecc..76ad8e8 100644 --- a/nitrogen/generated/android/NitroFS+autolinking.cmake +++ b/nitrogen/generated/android/NitroFS+autolinking.cmake @@ -2,7 +2,7 @@ # NitroFS+autolinking.cmake # This file was generated by nitrogen. DO NOT MODIFY THIS FILE. # https://github.com/mrousavy/nitro -# Copyright © 2025 Marc Rousavy @ Margelo +# Copyright © Marc Rousavy @ Margelo # # This is a CMake file that adds all files generated by Nitrogen diff --git a/nitrogen/generated/android/NitroFS+autolinking.gradle b/nitrogen/generated/android/NitroFS+autolinking.gradle index a0f955e..88e7755 100644 --- a/nitrogen/generated/android/NitroFS+autolinking.gradle +++ b/nitrogen/generated/android/NitroFS+autolinking.gradle @@ -2,7 +2,7 @@ /// NitroFS+autolinking.gradle /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// /// This is a Gradle file that adds all files generated by Nitrogen diff --git a/nitrogen/generated/android/NitroFSOnLoad.cpp b/nitrogen/generated/android/NitroFSOnLoad.cpp index 94b0a1c..2e11cf5 100644 --- a/nitrogen/generated/android/NitroFSOnLoad.cpp +++ b/nitrogen/generated/android/NitroFSOnLoad.cpp @@ -2,7 +2,7 @@ /// NitroFSOnLoad.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #ifndef BUILDING_NITROFS_WITH_GENERATED_CMAKE_PROJECT @@ -22,25 +22,35 @@ namespace margelo::nitro::nitrofs { int initialize(JavaVM* vm) { + return facebook::jni::initialize(vm, []() { + ::margelo::nitro::nitrofs::registerAllNatives(); + }); +} + +struct JHybridNitroFSSpecImpl: public jni::JavaClass { + static constexpr auto kJavaDescriptor = "Lcom/nitrofs/HybridNitroFS;"; + static std::shared_ptr create() { + static const auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridNitroFSSpec(); + } +}; + +void registerAllNatives() { using namespace margelo::nitro; using namespace margelo::nitro::nitrofs; - using namespace facebook; - - return facebook::jni::initialize(vm, [] { - // Register native JNI methods - margelo::nitro::nitrofs::JHybridNitroFSSpec::registerNatives(); - margelo::nitro::nitrofs::JFunc_void_double_double_cxx::registerNatives(); - - // Register Nitro Hybrid Objects - HybridObjectRegistry::registerHybridObjectConstructor( - "NitroFS", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/nitrofs/HybridNitroFS"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - }); + + // Register native JNI methods + margelo::nitro::nitrofs::JHybridNitroFSSpec::CxxPart::registerNatives(); + margelo::nitro::nitrofs::JFunc_void_double_double_cxx::registerNatives(); + + // Register Nitro Hybrid Objects + HybridObjectRegistry::registerHybridObjectConstructor( + "NitroFS", + []() -> std::shared_ptr { + return JHybridNitroFSSpecImpl::create(); + } + ); } } // namespace margelo::nitro::nitrofs diff --git a/nitrogen/generated/android/NitroFSOnLoad.hpp b/nitrogen/generated/android/NitroFSOnLoad.hpp index aeb1d4d..38c4b46 100644 --- a/nitrogen/generated/android/NitroFSOnLoad.hpp +++ b/nitrogen/generated/android/NitroFSOnLoad.hpp @@ -2,24 +2,33 @@ /// NitroFSOnLoad.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include +#include #include namespace margelo::nitro::nitrofs { + [[deprecated("Use registerNatives() instead.")]] + int initialize(JavaVM* vm); + /** - * Initializes the native (C++) part of NitroFS, and autolinks all Hybrid Objects. - * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`). + * Register the native (C++) part of NitroFS, and autolinks all Hybrid Objects. + * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`), + * inside a `facebook::jni::initialize(vm, ...)` call. * Example: * ```cpp (cpp-adapter.cpp) * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { - * return margelo::nitro::nitrofs::initialize(vm); + * return facebook::jni::initialize(vm, []() { + * // register all NitroFS HybridObjects + * margelo::nitro::nitrofs::registerNatives(); + * // any other custom registrations go here. + * }); * } * ``` */ - int initialize(JavaVM* vm); + void registerAllNatives(); } // namespace margelo::nitro::nitrofs diff --git a/nitrogen/generated/android/c++/JFunc_void_double_double.hpp b/nitrogen/generated/android/c++/JFunc_void_double_double.hpp index 810a31b..4848570 100644 --- a/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +++ b/nitrogen/generated/android/c++/JFunc_void_double_double.hpp @@ -2,7 +2,7 @@ /// JFunc_void_double_double.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -23,7 +23,7 @@ namespace margelo::nitro::nitrofs { */ struct JFunc_void_double_double: public jni::JavaClass { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/Func_void_double_double;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/Func_void_double_double;"; public: /** @@ -59,7 +59,7 @@ namespace margelo::nitro::nitrofs { } public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/Func_void_double_double_cxx;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/Func_void_double_double_cxx;"; static void registerNatives() { registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_double_double_cxx::invoke_cxx)}); } diff --git a/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp b/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp index 4c9a44b..c277db0 100644 --- a/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp @@ -2,7 +2,7 @@ /// JHybridNitroFSSpec.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "JHybridNitroFSSpec.hpp" @@ -21,6 +21,7 @@ namespace margelo::nitro::nitrofs { enum class NitroUploadMethod; } #include #include #include +#include #include "NitroFileStat.hpp" #include "JNitroFileStat.hpp" #include "NitroFile.hpp" @@ -39,77 +40,78 @@ namespace margelo::nitro::nitrofs { enum class NitroUploadMethod; } namespace margelo::nitro::nitrofs { - jni::local_ref JHybridNitroFSSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridNitroFSSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridNitroFSSpec::initHybrid), - }); + std::shared_ptr JHybridNitroFSSpec::JavaPart::getJHybridNitroFSSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridNitroFSSpec!"); + } + return castHybridObject; } - size_t JHybridNitroFSSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridNitroFSSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - void JHybridNitroFSSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + std::shared_ptr JHybridNitroFSSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridNitroFSSpec::JavaPart!"); + } + return std::make_shared(castJavaPart); } - std::string JHybridNitroFSSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridNitroFSSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridNitroFSSpec::CxxPart::initHybrid), + }); } // Properties std::string JHybridNitroFSSpec::getBUNDLE_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getBUNDLE_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getBUNDLE_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } std::string JHybridNitroFSSpec::getDOCUMENT_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getDOCUMENT_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getDOCUMENT_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } std::string JHybridNitroFSSpec::getCACHE_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getCACHE_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getCACHE_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } std::string JHybridNitroFSSpec::getDOWNLOAD_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getDOWNLOAD_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getDOWNLOAD_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } std::string JHybridNitroFSSpec::getDCIM_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getDCIM_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getDCIM_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } std::string JHybridNitroFSSpec::getPICTURES_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getPICTURES_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getPICTURES_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } std::string JHybridNitroFSSpec::getMOVIES_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getMOVIES_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getMOVIES_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } std::string JHybridNitroFSSpec::getMUSIC_DIR() { - static const auto method = javaClassStatic()->getMethod()>("getMUSIC_DIR"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getMUSIC_DIR"); auto __result = method(_javaPart); return __result->toStdString(); } // Methods std::shared_ptr> JHybridNitroFSSpec::exists(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("exists"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("exists"); auto __result = method(_javaPart, jni::make_jstring(path)); return [&]() { auto __promise = Promise::create(); @@ -125,7 +127,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::writeFile(const std::string& path, const std::string& data, NitroFileEncoding encoding) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */, jni::alias_ref /* data */, jni::alias_ref /* encoding */)>("writeFile"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */, jni::alias_ref /* data */, jni::alias_ref /* encoding */)>("writeFile"); auto __result = method(_javaPart, jni::make_jstring(path), jni::make_jstring(data), JNitroFileEncoding::fromCpp(encoding)); return [&]() { auto __promise = Promise::create(); @@ -140,7 +142,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::readFile(const std::string& path, NitroFileEncoding encoding) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */, jni::alias_ref /* encoding */)>("readFile"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */, jni::alias_ref /* encoding */)>("readFile"); auto __result = method(_javaPart, jni::make_jstring(path), JNitroFileEncoding::fromCpp(encoding)); return [&]() { auto __promise = Promise::create(); @@ -156,7 +158,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::copyFile(const std::string& srcPath, const std::string& destPath) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* srcPath */, jni::alias_ref /* destPath */)>("copyFile"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* srcPath */, jni::alias_ref /* destPath */)>("copyFile"); auto __result = method(_javaPart, jni::make_jstring(srcPath), jni::make_jstring(destPath)); return [&]() { auto __promise = Promise::create(); @@ -171,7 +173,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::copy(const std::string& srcPath, const std::string& destPath) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* srcPath */, jni::alias_ref /* destPath */)>("copy"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* srcPath */, jni::alias_ref /* destPath */)>("copy"); auto __result = method(_javaPart, jni::make_jstring(srcPath), jni::make_jstring(destPath)); return [&]() { auto __promise = Promise::create(); @@ -186,7 +188,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::unlink(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("unlink"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("unlink"); auto __result = method(_javaPart, jni::make_jstring(path)); return [&]() { auto __promise = Promise::create(); @@ -202,7 +204,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::mkdir(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("mkdir"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("mkdir"); auto __result = method(_javaPart, jni::make_jstring(path)); return [&]() { auto __promise = Promise::create(); @@ -218,7 +220,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::stat(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("stat"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("stat"); auto __result = method(_javaPart, jni::make_jstring(path)); return [&]() { auto __promise = Promise::create(); @@ -234,7 +236,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr>> JHybridNitroFSSpec::readdir(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("readdir"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("readdir"); auto __result = method(_javaPart, jni::make_jstring(path)); return [&]() { auto __promise = Promise>::create(); @@ -259,7 +261,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::rename(const std::string& oldPath, const std::string& newPath) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* oldPath */, jni::alias_ref /* newPath */)>("rename"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* oldPath */, jni::alias_ref /* newPath */)>("rename"); auto __result = method(_javaPart, jni::make_jstring(oldPath), jni::make_jstring(newPath)); return [&]() { auto __promise = Promise::create(); @@ -274,22 +276,22 @@ namespace margelo::nitro::nitrofs { }(); } std::string JHybridNitroFSSpec::dirname(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("dirname"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("dirname"); auto __result = method(_javaPart, jni::make_jstring(path)); return __result->toStdString(); } std::string JHybridNitroFSSpec::basename(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("basename"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("basename"); auto __result = method(_javaPart, jni::make_jstring(path)); return __result->toStdString(); } std::string JHybridNitroFSSpec::extname(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("extname"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("extname"); auto __result = method(_javaPart, jni::make_jstring(path)); return __result->toStdString(); } std::shared_ptr> JHybridNitroFSSpec::uploadFile(const NitroFile& file, const NitroUploadOptions& uploadOptions, const std::optional>& onProgress) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* file */, jni::alias_ref /* uploadOptions */, jni::alias_ref /* onProgress */)>("uploadFile_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* file */, jni::alias_ref /* uploadOptions */, jni::alias_ref /* onProgress */)>("uploadFile_cxx"); auto __result = method(_javaPart, JNitroFile::fromCpp(file), JNitroUploadOptions::fromCpp(uploadOptions), onProgress.has_value() ? JFunc_void_double_double_cxx::fromCpp(onProgress.value()) : nullptr); return [&]() { auto __promise = Promise::create(); @@ -304,7 +306,7 @@ namespace margelo::nitro::nitrofs { }(); } std::shared_ptr> JHybridNitroFSSpec::downloadFile(const std::string& serverUrl, const std::string& destinationPath, const std::optional>& onProgress) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* serverUrl */, jni::alias_ref /* destinationPath */, jni::alias_ref /* onProgress */)>("downloadFile_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* serverUrl */, jni::alias_ref /* destinationPath */, jni::alias_ref /* onProgress */)>("downloadFile_cxx"); auto __result = method(_javaPart, jni::make_jstring(serverUrl), jni::make_jstring(destinationPath), onProgress.has_value() ? JFunc_void_double_double_cxx::fromCpp(onProgress.value()) : nullptr); return [&]() { auto __promise = Promise::create(); diff --git a/nitrogen/generated/android/c++/JHybridNitroFSSpec.hpp b/nitrogen/generated/android/c++/JHybridNitroFSSpec.hpp index 0a5762f..e2bb54a 100644 --- a/nitrogen/generated/android/c++/JHybridNitroFSSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridNitroFSSpec.hpp @@ -2,7 +2,7 @@ /// HybridNitroFSSpec.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -18,33 +18,33 @@ namespace margelo::nitro::nitrofs { using namespace facebook; - class JHybridNitroFSSpec: public jni::HybridClass, - public virtual HybridNitroFSSpec { + class JHybridNitroFSSpec: public virtual HybridNitroFSSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/HybridNitroFSSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridNitroFSSpec(jni::alias_ref jThis) : - HybridObject(HybridNitroFSSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/HybridNitroFSSpec;"; + std::shared_ptr getJHybridNitroFSSpec(); + }; + struct CxxPart: public jni::HybridClass { + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/HybridNitroFSSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridNitroFSSpec(const jni::local_ref& javaPart): + HybridObject(HybridNitroFSSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridNitroFSSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -78,9 +78,7 @@ namespace margelo::nitro::nitrofs { std::shared_ptr> downloadFile(const std::string& serverUrl, const std::string& destinationPath, const std::optional>& onProgress) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::nitrofs diff --git a/nitrogen/generated/android/c++/JNitroFile.hpp b/nitrogen/generated/android/c++/JNitroFile.hpp index a1c5e95..691ca57 100644 --- a/nitrogen/generated/android/c++/JNitroFile.hpp +++ b/nitrogen/generated/android/c++/JNitroFile.hpp @@ -2,7 +2,7 @@ /// JNitroFile.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -21,7 +21,7 @@ namespace margelo::nitro::nitrofs { */ struct JNitroFile final: public jni::JavaClass { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroFile;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroFile;"; public: /** diff --git a/nitrogen/generated/android/c++/JNitroFileEncoding.hpp b/nitrogen/generated/android/c++/JNitroFileEncoding.hpp index acd7b6f..eb44df0 100644 --- a/nitrogen/generated/android/c++/JNitroFileEncoding.hpp +++ b/nitrogen/generated/android/c++/JNitroFileEncoding.hpp @@ -2,7 +2,7 @@ /// JNitroFileEncoding.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -19,7 +19,7 @@ namespace margelo::nitro::nitrofs { */ struct JNitroFileEncoding final: public jni::JavaClass { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroFileEncoding;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroFileEncoding;"; public: /** @@ -41,16 +41,15 @@ namespace margelo::nitro::nitrofs { [[maybe_unused]] static jni::alias_ref fromCpp(NitroFileEncoding value) { static const auto clazz = javaClassStatic(); - static const auto fieldUTF8 = clazz->getStaticField("UTF8"); - static const auto fieldASCII = clazz->getStaticField("ASCII"); - static const auto fieldBASE64 = clazz->getStaticField("BASE64"); - switch (value) { case NitroFileEncoding::UTF8: + static const auto fieldUTF8 = clazz->getStaticField("UTF8"); return clazz->getStaticFieldValue(fieldUTF8); case NitroFileEncoding::ASCII: + static const auto fieldASCII = clazz->getStaticField("ASCII"); return clazz->getStaticFieldValue(fieldASCII); case NitroFileEncoding::BASE64: + static const auto fieldBASE64 = clazz->getStaticField("BASE64"); return clazz->getStaticFieldValue(fieldBASE64); default: std::string stringValue = std::to_string(static_cast(value)); diff --git a/nitrogen/generated/android/c++/JNitroFileStat.hpp b/nitrogen/generated/android/c++/JNitroFileStat.hpp index 1643397..9d3691a 100644 --- a/nitrogen/generated/android/c++/JNitroFileStat.hpp +++ b/nitrogen/generated/android/c++/JNitroFileStat.hpp @@ -2,7 +2,7 @@ /// JNitroFileStat.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -21,7 +21,7 @@ namespace margelo::nitro::nitrofs { */ struct JNitroFileStat final: public jni::JavaClass { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroFileStat;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroFileStat;"; public: /** diff --git a/nitrogen/generated/android/c++/JNitroUploadMethod.hpp b/nitrogen/generated/android/c++/JNitroUploadMethod.hpp index 3618d1c..21e1e58 100644 --- a/nitrogen/generated/android/c++/JNitroUploadMethod.hpp +++ b/nitrogen/generated/android/c++/JNitroUploadMethod.hpp @@ -2,7 +2,7 @@ /// JNitroUploadMethod.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -19,7 +19,7 @@ namespace margelo::nitro::nitrofs { */ struct JNitroUploadMethod final: public jni::JavaClass { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroUploadMethod;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroUploadMethod;"; public: /** @@ -41,16 +41,15 @@ namespace margelo::nitro::nitrofs { [[maybe_unused]] static jni::alias_ref fromCpp(NitroUploadMethod value) { static const auto clazz = javaClassStatic(); - static const auto fieldPOST = clazz->getStaticField("POST"); - static const auto fieldPUT = clazz->getStaticField("PUT"); - static const auto fieldPATCH = clazz->getStaticField("PATCH"); - switch (value) { case NitroUploadMethod::POST: + static const auto fieldPOST = clazz->getStaticField("POST"); return clazz->getStaticFieldValue(fieldPOST); case NitroUploadMethod::PUT: + static const auto fieldPUT = clazz->getStaticField("PUT"); return clazz->getStaticFieldValue(fieldPUT); case NitroUploadMethod::PATCH: + static const auto fieldPATCH = clazz->getStaticField("PATCH"); return clazz->getStaticFieldValue(fieldPATCH); default: std::string stringValue = std::to_string(static_cast(value)); diff --git a/nitrogen/generated/android/c++/JNitroUploadOptions.hpp b/nitrogen/generated/android/c++/JNitroUploadOptions.hpp index 6b222e6..b97c558 100644 --- a/nitrogen/generated/android/c++/JNitroUploadOptions.hpp +++ b/nitrogen/generated/android/c++/JNitroUploadOptions.hpp @@ -2,7 +2,7 @@ /// JNitroUploadOptions.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -24,7 +24,7 @@ namespace margelo::nitro::nitrofs { */ struct JNitroUploadOptions final: public jni::JavaClass { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroUploadOptions;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/NitroUploadOptions;"; public: /** diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/Func_void_double_double.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/Func_void_double_double.kt index 5034c75..dff9b27 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/Func_void_double_double.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/Func_void_double_double.kt @@ -2,7 +2,7 @@ /// Func_void_double_double.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/HybridNitroFSSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/HybridNitroFSSpec.kt index 822f7b2..b1d29a6 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/HybridNitroFSSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/HybridNitroFSSpec.kt @@ -2,7 +2,7 @@ /// HybridNitroFSSpec.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs @@ -25,23 +25,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridNitroFSSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject NitroFS]" - } - // Properties @get:DoNotStrip @get:Keep @@ -146,7 +129,21 @@ abstract class HybridNitroFSSpec: HybridObject() { return __result } - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject NitroFS]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridNitroFSSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridNitroFSSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridNitroFSSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFSOnLoad.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFSOnLoad.kt index e2b58a7..6625d0b 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFSOnLoad.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFSOnLoad.kt @@ -2,7 +2,7 @@ /// NitroFSOnLoad.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt index 6335079..8dea9e1 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt @@ -2,7 +2,7 @@ /// NitroFile.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs @@ -29,7 +29,7 @@ data class NitroFile( ) { /* primary constructor */ - private companion object { + companion object { /** * Constructor called from C++ */ diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileEncoding.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileEncoding.kt index 33190a9..98b8c87 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileEncoding.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileEncoding.kt @@ -2,7 +2,7 @@ /// NitroFileEncoding.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs @@ -19,4 +19,6 @@ enum class NitroFileEncoding(@DoNotStrip @Keep val value: Int) { UTF8(0), ASCII(1), BASE64(2); + + companion object } diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt index d80cf75..af0f440 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt @@ -2,7 +2,7 @@ /// NitroFileStat.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs @@ -35,7 +35,7 @@ data class NitroFileStat( ) { /* primary constructor */ - private companion object { + companion object { /** * Constructor called from C++ */ diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadMethod.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadMethod.kt index 405e1b0..bb6af78 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadMethod.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadMethod.kt @@ -2,7 +2,7 @@ /// NitroUploadMethod.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs @@ -19,4 +19,6 @@ enum class NitroUploadMethod(@DoNotStrip @Keep val value: Int) { POST(0), PUT(1), PATCH(2); + + companion object } diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt index f1f1e34..50d24a0 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt @@ -2,7 +2,7 @@ /// NitroUploadOptions.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.nitrofs @@ -29,7 +29,7 @@ data class NitroUploadOptions( ) { /* primary constructor */ - private companion object { + companion object { /** * Constructor called from C++ */ diff --git a/nitrogen/generated/ios/NitroFS+autolinking.rb b/nitrogen/generated/ios/NitroFS+autolinking.rb index e1e54cb..74449fa 100644 --- a/nitrogen/generated/ios/NitroFS+autolinking.rb +++ b/nitrogen/generated/ios/NitroFS+autolinking.rb @@ -2,7 +2,7 @@ # NitroFS+autolinking.rb # This file was generated by nitrogen. DO NOT MODIFY THIS FILE. # https://github.com/mrousavy/nitro -# Copyright © 2025 Marc Rousavy @ Margelo +# Copyright © Marc Rousavy @ Margelo # # This is a Ruby script that adds all files generated by Nitrogen @@ -52,7 +52,7 @@ def add_nitrogen_files(spec) 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) + # Enables C++ <-> Swift interop (by default it's only ObjC) "SWIFT_OBJC_INTEROP_MODE" => "objcxx", # Enables stricter modular headers "DEFINES_MODULE" => "YES", diff --git a/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.cpp b/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.cpp index dc2f354..aad784e 100644 --- a/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.cpp +++ b/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.cpp @@ -2,7 +2,7 @@ /// NitroFS-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 +/// Copyright © Marc Rousavy @ Margelo /// #include "NitroFS-Swift-Cxx-Bridge.hpp" diff --git a/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.hpp b/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.hpp index 5ad6404..8f2f8e6 100644 --- a/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.hpp +++ b/nitrogen/generated/ios/NitroFS-Swift-Cxx-Bridge.hpp @@ -2,7 +2,7 @@ /// NitroFS-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 +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -257,7 +257,7 @@ namespace margelo::nitro::nitrofs::bridge::swift { return optional.has_value(); } inline NitroUploadMethod get_std__optional_NitroUploadMethod_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::optional @@ -272,7 +272,7 @@ namespace margelo::nitro::nitrofs::bridge::swift { return optional.has_value(); } inline std::string get_std__optional_std__string_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::function @@ -309,7 +309,7 @@ namespace margelo::nitro::nitrofs::bridge::swift { return optional.has_value(); } inline std::function get_std__optional_std__function_void_double____uploadedBytes_____double____totalBytes______(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr> @@ -358,7 +358,7 @@ namespace margelo::nitro::nitrofs::bridge::swift { return optional.has_value(); } inline std::function get_std__optional_std__function_void_double____downloadedBytes_____double____totalBytes______(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr diff --git a/nitrogen/generated/ios/NitroFS-Swift-Cxx-Umbrella.hpp b/nitrogen/generated/ios/NitroFS-Swift-Cxx-Umbrella.hpp index 16ec4d2..afdbed7 100644 --- a/nitrogen/generated/ios/NitroFS-Swift-Cxx-Umbrella.hpp +++ b/nitrogen/generated/ios/NitroFS-Swift-Cxx-Umbrella.hpp @@ -2,7 +2,7 @@ /// NitroFS-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 +/// Copyright © Marc Rousavy @ Margelo /// #pragma once diff --git a/nitrogen/generated/ios/NitroFSAutolinking.mm b/nitrogen/generated/ios/NitroFSAutolinking.mm index 173dccf..cdf4b05 100644 --- a/nitrogen/generated/ios/NitroFSAutolinking.mm +++ b/nitrogen/generated/ios/NitroFSAutolinking.mm @@ -2,7 +2,7 @@ /// NitroFSAutolinking.mm /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #import diff --git a/nitrogen/generated/ios/NitroFSAutolinking.swift b/nitrogen/generated/ios/NitroFSAutolinking.swift index 6f48532..6ca7fbd 100644 --- a/nitrogen/generated/ios/NitroFSAutolinking.swift +++ b/nitrogen/generated/ios/NitroFSAutolinking.swift @@ -2,19 +2,16 @@ /// NitroFSAutolinking.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// +import NitroModules + +// TODO: Use empty enums once Swift supports exporting them as namespaces +// See: https://github.com/swiftlang/swift/pull/83616 public final class NitroFSAutolinking { public typealias bridge = margelo.nitro.nitrofs.bridge.swift - /** - * Creates an instance of a Swift class that implements `HybridNitroFSSpec`, - * and wraps it in a Swift class that can directly interop with C++ (`HybridNitroFSSpec_cxx`) - * - * This is generated by Nitrogen and will initialize the class specified - * in the `"autolinking"` property of `nitro.json` (in this case, `HybridNitroFS`). - */ public static func createNitroFS() -> bridge.std__shared_ptr_HybridNitroFSSpec_ { let hybridObject = HybridNitroFS() return { () -> bridge.std__shared_ptr_HybridNitroFSSpec_ in @@ -22,4 +19,8 @@ public final class NitroFSAutolinking { return __cxxWrapped.getCxxPart() }() } + + public static func isNitroFSRecyclable() -> Bool { + return HybridNitroFS.self is any RecyclableView.Type + } } diff --git a/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.cpp b/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.cpp index 22926e8..503875e 100644 --- a/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.cpp +++ b/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.cpp @@ -2,7 +2,7 @@ /// HybridNitroFSSpecSwift.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "HybridNitroFSSpecSwift.hpp" diff --git a/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.hpp b/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.hpp index 1ffb5e4..ab17999 100644 --- a/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridNitroFSSpecSwift.hpp @@ -2,7 +2,7 @@ /// HybridNitroFSSpecSwift.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -65,6 +65,12 @@ namespace margelo::nitro::nitrofs { inline size_t getExternalMemorySize() noexcept override { return _swiftPart.getMemorySize(); } + bool equals(const std::shared_ptr& other) override { + if (auto otherCast = std::dynamic_pointer_cast(other)) { + return _swiftPart.equals(otherCast->_swiftPart); + } + return false; + } void dispose() noexcept override { _swiftPart.dispose(); } diff --git a/nitrogen/generated/ios/swift/Func_void.swift b/nitrogen/generated/ios/swift/Func_void.swift index c417782..2c0c354 100644 --- a/nitrogen/generated/ios/swift/Func_void.swift +++ b/nitrogen/generated/ios/swift/Func_void.swift @@ -2,10 +2,9 @@ /// Func_void.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_NitroFile.swift b/nitrogen/generated/ios/swift/Func_void_NitroFile.swift index 6e51d2d..1873071 100644 --- a/nitrogen/generated/ios/swift/Func_void_NitroFile.swift +++ b/nitrogen/generated/ios/swift/Func_void_NitroFile.swift @@ -2,10 +2,9 @@ /// Func_void_NitroFile.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_NitroFileStat.swift b/nitrogen/generated/ios/swift/Func_void_NitroFileStat.swift index 42ff3fd..fc6ebe3 100644 --- a/nitrogen/generated/ios/swift/Func_void_NitroFileStat.swift +++ b/nitrogen/generated/ios/swift/Func_void_NitroFileStat.swift @@ -2,10 +2,9 @@ /// Func_void_NitroFileStat.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_bool.swift b/nitrogen/generated/ios/swift/Func_void_bool.swift index 3731ecf..3e69485 100644 --- a/nitrogen/generated/ios/swift/Func_void_bool.swift +++ b/nitrogen/generated/ios/swift/Func_void_bool.swift @@ -2,10 +2,9 @@ /// Func_void_bool.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_double_double.swift b/nitrogen/generated/ios/swift/Func_void_double_double.swift index 4c4ca87..a037158 100644 --- a/nitrogen/generated/ios/swift/Func_void_double_double.swift +++ b/nitrogen/generated/ios/swift/Func_void_double_double.swift @@ -2,10 +2,9 @@ /// Func_void_double_double.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift b/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift index e7df9ac..ced9302 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift @@ -2,10 +2,9 @@ /// Func_void_std__exception_ptr.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_std__string.swift b/nitrogen/generated/ios/swift/Func_void_std__string.swift index c4726d8..8fa1549 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__string.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__string.swift @@ -2,10 +2,9 @@ /// Func_void_std__string.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_std__vector_NitroFile_.swift b/nitrogen/generated/ios/swift/Func_void_std__vector_NitroFile_.swift index 18eb94f..5cc4319 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__vector_NitroFile_.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__vector_NitroFile_.swift @@ -2,10 +2,9 @@ /// Func_void_std__vector_NitroFile_.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridNitroFSSpec.swift b/nitrogen/generated/ios/swift/HybridNitroFSSpec.swift index a9d411d..4083404 100644 --- a/nitrogen/generated/ios/swift/HybridNitroFSSpec.swift +++ b/nitrogen/generated/ios/swift/HybridNitroFSSpec.swift @@ -2,10 +2,9 @@ /// HybridNitroFSSpec.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridNitroFSSpec`` @@ -51,14 +50,14 @@ open class HybridNitroFSSpec_base { public init() { } public func getCxxWrapper() -> HybridNitroFSSpec_cxx { #if DEBUG - guard self is HybridNitroFSSpec else { + guard self is any HybridNitroFSSpec else { fatalError("`self` is not a `HybridNitroFSSpec`! Did you accidentally inherit from `HybridNitroFSSpec_base` instead of `HybridNitroFSSpec`?") } #endif if let cxxWrapper = self.cxxWrapper { return cxxWrapper } else { - let cxxWrapper = HybridNitroFSSpec_cxx(self as! HybridNitroFSSpec) + let cxxWrapper = HybridNitroFSSpec_cxx(self as! any HybridNitroFSSpec) self.cxxWrapper = cxxWrapper return cxxWrapper } diff --git a/nitrogen/generated/ios/swift/HybridNitroFSSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridNitroFSSpec_cxx.swift index 8015f1e..99cf647 100644 --- a/nitrogen/generated/ios/swift/HybridNitroFSSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridNitroFSSpec_cxx.swift @@ -2,10 +2,9 @@ /// HybridNitroFSSpec_cxx.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -96,6 +95,14 @@ open class HybridNitroFSSpec_cxx { return MemoryHelper.getSizeOf(self.__implementation) + self.__implementation.memorySize } + /** + * Compares this object with the given [other] object for reference equality. + */ + @inline(__always) + public func equals(other: HybridNitroFSSpec_cxx) -> Bool { + return self.__implementation === other.__implementation + } + /** * Call dispose() on the Swift class. * This _may_ be called manually from JS. diff --git a/nitrogen/generated/ios/swift/NitroFile.swift b/nitrogen/generated/ios/swift/NitroFile.swift index 63db534..147ae1f 100644 --- a/nitrogen/generated/ios/swift/NitroFile.swift +++ b/nitrogen/generated/ios/swift/NitroFile.swift @@ -2,10 +2,9 @@ /// NitroFile.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -23,36 +22,18 @@ public extension NitroFile { self.init(std.string(name), std.string(mimeType), std.string(path)) } + @inline(__always) var name: String { - @inline(__always) - get { - return String(self.__name) - } - @inline(__always) - set { - self.__name = std.string(newValue) - } + return String(self.__name) } + @inline(__always) var mimeType: String { - @inline(__always) - get { - return String(self.__mimeType) - } - @inline(__always) - set { - self.__mimeType = std.string(newValue) - } + return String(self.__mimeType) } + @inline(__always) var path: String { - @inline(__always) - get { - return String(self.__path) - } - @inline(__always) - set { - self.__path = std.string(newValue) - } + return String(self.__path) } } diff --git a/nitrogen/generated/ios/swift/NitroFileEncoding.swift b/nitrogen/generated/ios/swift/NitroFileEncoding.swift index 38e0b97..6104640 100644 --- a/nitrogen/generated/ios/swift/NitroFileEncoding.swift +++ b/nitrogen/generated/ios/swift/NitroFileEncoding.swift @@ -2,7 +2,7 @@ /// NitroFileEncoding.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// /** diff --git a/nitrogen/generated/ios/swift/NitroFileStat.swift b/nitrogen/generated/ios/swift/NitroFileStat.swift index 3068516..83dca56 100644 --- a/nitrogen/generated/ios/swift/NitroFileStat.swift +++ b/nitrogen/generated/ios/swift/NitroFileStat.swift @@ -2,10 +2,9 @@ /// NitroFileStat.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -23,58 +22,28 @@ public extension NitroFileStat { self.init(size, ctime, mtime, isFile, isDirectory) } + @inline(__always) var size: Double { - @inline(__always) - get { - return self.__size - } - @inline(__always) - set { - self.__size = newValue - } + return self.__size } + @inline(__always) var ctime: Double { - @inline(__always) - get { - return self.__ctime - } - @inline(__always) - set { - self.__ctime = newValue - } + return self.__ctime } + @inline(__always) var mtime: Double { - @inline(__always) - get { - return self.__mtime - } - @inline(__always) - set { - self.__mtime = newValue - } + return self.__mtime } + @inline(__always) var isFile: Bool { - @inline(__always) - get { - return self.__isFile - } - @inline(__always) - set { - self.__isFile = newValue - } + return self.__isFile } + @inline(__always) var isDirectory: Bool { - @inline(__always) - get { - return self.__isDirectory - } - @inline(__always) - set { - self.__isDirectory = newValue - } + return self.__isDirectory } } diff --git a/nitrogen/generated/ios/swift/NitroUploadMethod.swift b/nitrogen/generated/ios/swift/NitroUploadMethod.swift index da1197f..ffcaca7 100644 --- a/nitrogen/generated/ios/swift/NitroUploadMethod.swift +++ b/nitrogen/generated/ios/swift/NitroUploadMethod.swift @@ -2,7 +2,7 @@ /// NitroUploadMethod.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// /** diff --git a/nitrogen/generated/ios/swift/NitroUploadOptions.swift b/nitrogen/generated/ios/swift/NitroUploadOptions.swift index 2141117..9e1539a 100644 --- a/nitrogen/generated/ios/swift/NitroUploadOptions.swift +++ b/nitrogen/generated/ios/swift/NitroUploadOptions.swift @@ -2,10 +2,9 @@ /// NitroUploadOptions.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -35,55 +34,25 @@ public extension NitroUploadOptions { }()) } + @inline(__always) var url: String { - @inline(__always) - get { - return String(self.__url) - } - @inline(__always) - set { - self.__url = std.string(newValue) - } + return String(self.__url) } + @inline(__always) var method: NitroUploadMethod? { - @inline(__always) - get { - return self.__method.value - } - @inline(__always) - set { - self.__method = { () -> bridge.std__optional_NitroUploadMethod_ in - if let __unwrappedValue = newValue { - return bridge.create_std__optional_NitroUploadMethod_(__unwrappedValue) - } else { - return .init() - } - }() - } + return self.__method.value } + @inline(__always) var field: String? { - @inline(__always) - get { - return { () -> String? in - if bridge.has_value_std__optional_std__string_(self.__field) { - let __unwrapped = bridge.get_std__optional_std__string_(self.__field) - return String(__unwrapped) - } else { - return nil - } - }() - } - @inline(__always) - set { - self.__field = { () -> bridge.std__optional_std__string_ in - if let __unwrappedValue = newValue { - return bridge.create_std__optional_std__string_(std.string(__unwrappedValue)) - } else { - return .init() - } - }() - } + return { () -> String? in + if bridge.has_value_std__optional_std__string_(self.__field) { + let __unwrapped = bridge.get_std__optional_std__string_(self.__field) + return String(__unwrapped) + } else { + return nil + } + }() } } diff --git a/nitrogen/generated/shared/c++/HybridNitroFSSpec.cpp b/nitrogen/generated/shared/c++/HybridNitroFSSpec.cpp index f26b426..70a5a10 100644 --- a/nitrogen/generated/shared/c++/HybridNitroFSSpec.cpp +++ b/nitrogen/generated/shared/c++/HybridNitroFSSpec.cpp @@ -2,7 +2,7 @@ /// HybridNitroFSSpec.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "HybridNitroFSSpec.hpp" diff --git a/nitrogen/generated/shared/c++/HybridNitroFSSpec.hpp b/nitrogen/generated/shared/c++/HybridNitroFSSpec.hpp index a2c7cce..ebd5581 100644 --- a/nitrogen/generated/shared/c++/HybridNitroFSSpec.hpp +++ b/nitrogen/generated/shared/c++/HybridNitroFSSpec.hpp @@ -2,7 +2,7 @@ /// HybridNitroFSSpec.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once diff --git a/nitrogen/generated/shared/c++/NitroFile.hpp b/nitrogen/generated/shared/c++/NitroFile.hpp index 4a40b0f..1d87940 100644 --- a/nitrogen/generated/shared/c++/NitroFile.hpp +++ b/nitrogen/generated/shared/c++/NitroFile.hpp @@ -2,7 +2,7 @@ /// NitroFile.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -22,6 +22,11 @@ #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif +#if __has_include() +#include +#else +#error NitroModules cannot be found! Are you sure you installed NitroModules properly? +#endif @@ -32,7 +37,7 @@ namespace margelo::nitro::nitrofs { /** * A struct which can be represented as a JavaScript object (NitroFile). */ - struct NitroFile { + struct NitroFile final { public: std::string name SWIFT_PRIVATE; std::string mimeType SWIFT_PRIVATE; @@ -41,6 +46,9 @@ namespace margelo::nitro::nitrofs { public: NitroFile() = default; explicit NitroFile(std::string name, std::string mimeType, std::string path): name(name), mimeType(mimeType), path(path) {} + + public: + friend bool operator==(const NitroFile& lhs, const NitroFile& rhs) = default; }; } // namespace margelo::nitro::nitrofs @@ -53,16 +61,16 @@ namespace margelo::nitro { static inline margelo::nitro::nitrofs::NitroFile fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); return margelo::nitro::nitrofs::NitroFile( - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "name")), - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "mimeType")), - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "path")) + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "name"))), + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "mimeType"))), + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "path"))) ); } static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitrofs::NitroFile& arg) { jsi::Object obj(runtime); - obj.setProperty(runtime, "name", JSIConverter::toJSI(runtime, arg.name)); - obj.setProperty(runtime, "mimeType", JSIConverter::toJSI(runtime, arg.mimeType)); - obj.setProperty(runtime, "path", JSIConverter::toJSI(runtime, arg.path)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "name"), JSIConverter::toJSI(runtime, arg.name)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "mimeType"), JSIConverter::toJSI(runtime, arg.mimeType)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "path"), JSIConverter::toJSI(runtime, arg.path)); return obj; } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { @@ -73,9 +81,9 @@ namespace margelo::nitro { if (!nitro::isPlainObject(runtime, obj)) { return false; } - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "name"))) return false; - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "mimeType"))) return false; - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "path"))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "name")))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "mimeType")))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "path")))) return false; return true; } }; diff --git a/nitrogen/generated/shared/c++/NitroFileEncoding.hpp b/nitrogen/generated/shared/c++/NitroFileEncoding.hpp index 91b36a2..b34422e 100644 --- a/nitrogen/generated/shared/c++/NitroFileEncoding.hpp +++ b/nitrogen/generated/shared/c++/NitroFileEncoding.hpp @@ -2,7 +2,7 @@ /// NitroFileEncoding.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once diff --git a/nitrogen/generated/shared/c++/NitroFileStat.hpp b/nitrogen/generated/shared/c++/NitroFileStat.hpp index fe3b56c..75287e7 100644 --- a/nitrogen/generated/shared/c++/NitroFileStat.hpp +++ b/nitrogen/generated/shared/c++/NitroFileStat.hpp @@ -2,7 +2,7 @@ /// NitroFileStat.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -22,6 +22,11 @@ #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif +#if __has_include() +#include +#else +#error NitroModules cannot be found! Are you sure you installed NitroModules properly? +#endif @@ -32,7 +37,7 @@ namespace margelo::nitro::nitrofs { /** * A struct which can be represented as a JavaScript object (NitroFileStat). */ - struct NitroFileStat { + struct NitroFileStat final { public: double size SWIFT_PRIVATE; double ctime SWIFT_PRIVATE; @@ -43,6 +48,9 @@ namespace margelo::nitro::nitrofs { public: NitroFileStat() = default; explicit NitroFileStat(double size, double ctime, double mtime, bool isFile, bool isDirectory): size(size), ctime(ctime), mtime(mtime), isFile(isFile), isDirectory(isDirectory) {} + + public: + friend bool operator==(const NitroFileStat& lhs, const NitroFileStat& rhs) = default; }; } // namespace margelo::nitro::nitrofs @@ -55,20 +63,20 @@ namespace margelo::nitro { static inline margelo::nitro::nitrofs::NitroFileStat fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); return margelo::nitro::nitrofs::NitroFileStat( - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "size")), - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "ctime")), - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "mtime")), - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "isFile")), - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "isDirectory")) + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "size"))), + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "ctime"))), + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "mtime"))), + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "isFile"))), + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "isDirectory"))) ); } static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitrofs::NitroFileStat& arg) { jsi::Object obj(runtime); - obj.setProperty(runtime, "size", JSIConverter::toJSI(runtime, arg.size)); - obj.setProperty(runtime, "ctime", JSIConverter::toJSI(runtime, arg.ctime)); - obj.setProperty(runtime, "mtime", JSIConverter::toJSI(runtime, arg.mtime)); - obj.setProperty(runtime, "isFile", JSIConverter::toJSI(runtime, arg.isFile)); - obj.setProperty(runtime, "isDirectory", JSIConverter::toJSI(runtime, arg.isDirectory)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "size"), JSIConverter::toJSI(runtime, arg.size)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "ctime"), JSIConverter::toJSI(runtime, arg.ctime)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "mtime"), JSIConverter::toJSI(runtime, arg.mtime)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "isFile"), JSIConverter::toJSI(runtime, arg.isFile)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "isDirectory"), JSIConverter::toJSI(runtime, arg.isDirectory)); return obj; } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { @@ -79,11 +87,11 @@ namespace margelo::nitro { if (!nitro::isPlainObject(runtime, obj)) { return false; } - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "size"))) return false; - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "ctime"))) return false; - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "mtime"))) return false; - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "isFile"))) return false; - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "isDirectory"))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "size")))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "ctime")))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "mtime")))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "isFile")))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "isDirectory")))) return false; return true; } }; diff --git a/nitrogen/generated/shared/c++/NitroUploadMethod.hpp b/nitrogen/generated/shared/c++/NitroUploadMethod.hpp index c089958..f69133e 100644 --- a/nitrogen/generated/shared/c++/NitroUploadMethod.hpp +++ b/nitrogen/generated/shared/c++/NitroUploadMethod.hpp @@ -2,7 +2,7 @@ /// NitroUploadMethod.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once diff --git a/nitrogen/generated/shared/c++/NitroUploadOptions.hpp b/nitrogen/generated/shared/c++/NitroUploadOptions.hpp index bbfab98..5036e14 100644 --- a/nitrogen/generated/shared/c++/NitroUploadOptions.hpp +++ b/nitrogen/generated/shared/c++/NitroUploadOptions.hpp @@ -2,7 +2,7 @@ /// NitroUploadOptions.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2025 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -22,6 +22,11 @@ #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif +#if __has_include() +#include +#else +#error NitroModules cannot be found! Are you sure you installed NitroModules properly? +#endif // Forward declaration of `NitroUploadMethod` to properly resolve imports. namespace margelo::nitro::nitrofs { enum class NitroUploadMethod; } @@ -35,7 +40,7 @@ namespace margelo::nitro::nitrofs { /** * A struct which can be represented as a JavaScript object (NitroUploadOptions). */ - struct NitroUploadOptions { + struct NitroUploadOptions final { public: std::string url SWIFT_PRIVATE; std::optional method SWIFT_PRIVATE; @@ -44,6 +49,9 @@ namespace margelo::nitro::nitrofs { public: NitroUploadOptions() = default; explicit NitroUploadOptions(std::string url, std::optional method, std::optional field): url(url), method(method), field(field) {} + + public: + friend bool operator==(const NitroUploadOptions& lhs, const NitroUploadOptions& rhs) = default; }; } // namespace margelo::nitro::nitrofs @@ -56,16 +64,16 @@ namespace margelo::nitro { static inline margelo::nitro::nitrofs::NitroUploadOptions fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); return margelo::nitro::nitrofs::NitroUploadOptions( - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "url")), - JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "method")), - JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "field")) + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "url"))), + JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "method"))), + JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "field"))) ); } static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitrofs::NitroUploadOptions& arg) { jsi::Object obj(runtime); - obj.setProperty(runtime, "url", JSIConverter::toJSI(runtime, arg.url)); - obj.setProperty(runtime, "method", JSIConverter>::toJSI(runtime, arg.method)); - obj.setProperty(runtime, "field", JSIConverter>::toJSI(runtime, arg.field)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "url"), JSIConverter::toJSI(runtime, arg.url)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "method"), JSIConverter>::toJSI(runtime, arg.method)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "field"), JSIConverter>::toJSI(runtime, arg.field)); return obj; } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { @@ -76,9 +84,9 @@ namespace margelo::nitro { if (!nitro::isPlainObject(runtime, obj)) { return false; } - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "url"))) return false; - if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "method"))) return false; - if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "field"))) return false; + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "url")))) return false; + if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "method")))) return false; + if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "field")))) return false; return true; } }; diff --git a/package.json b/package.json index 856792c..798b386 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "@types/jest": "^29.5.12", "@types/react": "^19.1.0", "conventional-changelog-conventionalcommits": "^9.1.0", - "nitrogen": "^0.31.9", + "nitrogen": "^0.35.1", "react": "19.1.0", "react-native": "0.81.5", "react-native-builder-bob": "^0.37.0", From aa68ec8f247a9c1a4321c511bdfcbaba0d6b68f2 Mon Sep 17 00:00:00 2001 From: Alejandro Paredes Alva Date: Mon, 6 Apr 2026 16:51:33 +0200 Subject: [PATCH 2/3] Bump Nitro deps and fix Android Java descriptor --- bun.lock | 52 +++++++++++--------- example/ios/Podfile.lock | 10 ++-- example/package.json | 6 +-- nitrogen/generated/android/NitroFSOnLoad.cpp | 2 +- package.json | 4 +- 5 files changed, 40 insertions(+), 34 deletions(-) diff --git a/bun.lock b/bun.lock index 2ae0b37..97c3c88 100644 --- a/bun.lock +++ b/bun.lock @@ -14,11 +14,11 @@ "@types/jest": "^29.5.12", "@types/react": "^19.1.0", "conventional-changelog-conventionalcommits": "^9.1.0", - "nitrogen": "^0.31.9", + "nitrogen": "^0.35.3", "react": "19.1.0", "react-native": "0.81.5", "react-native-builder-bob": "^0.37.0", - "react-native-nitro-modules": "^0.31.9", + "react-native-nitro-modules": "^0.35.3", "semantic-release": "^24.2.7", "typescript": "^5.8.3", }, @@ -34,8 +34,8 @@ "dependencies": { "react": "19.1.0", "react-native": "0.81.5", - "react-native-nitro-document-picker": "^1.2.0", - "react-native-nitro-modules": "^0.31.9", + "react-native-nitro-document-picker": "^1.2.3", + "react-native-nitro-modules": "^0.35.3", "react-native-safe-area-context": "^5.6.2", }, "devDependencies": { @@ -78,7 +78,7 @@ "@babel/core": ["@babel/core@7.28.3", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.3", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.3", "@babel/types": "^7.28.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ=="], - "@babel/eslint-parser": ["@babel/eslint-parser@7.28.0", "", { "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.11.0", "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w=="], + "@babel/eslint-parser": ["@babel/eslint-parser@7.28.6", "", { "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.11.0", "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA=="], "@babel/generator": ["@babel/generator@7.28.3", "", { "dependencies": { "@babel/parser": "^7.28.3", "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw=="], @@ -326,9 +326,9 @@ "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="], + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], "@eslint/eslintrc": ["@eslint/eslintrc@2.1.4", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ=="], @@ -552,7 +552,7 @@ "@types/react-test-renderer": ["@types/react-test-renderer@19.1.0", "", { "dependencies": { "@types/react": "*" } }, "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ=="], - "@types/semver": ["@types/semver@7.7.0", "", {}, "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA=="], + "@types/semver": ["@types/semver@7.7.1", "", {}, "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA=="], "@types/stack-utils": ["@types/stack-utils@2.0.3", "", {}, "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="], @@ -592,7 +592,7 @@ "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], - "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + "ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], "anser": ["anser@1.4.10", "", {}, "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="], @@ -736,7 +736,7 @@ "code-block-writer": ["code-block-writer@13.0.3", "", {}, "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="], - "collect-v8-coverage": ["collect-v8-coverage@1.0.2", "", {}, "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q=="], + "collect-v8-coverage": ["collect-v8-coverage@1.0.3", "", {}, "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw=="], "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], @@ -866,13 +866,13 @@ "errorhandler": ["errorhandler@1.5.1", "", { "dependencies": { "accepts": "~1.3.7", "escape-html": "~1.0.3" } }, "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A=="], - "es-abstract": ["es-abstract@1.24.0", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg=="], + "es-abstract": ["es-abstract@1.24.1", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="], + "es-iterator-helpers": ["es-iterator-helpers@1.3.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.1", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "math-intrinsics": "^1.1.0", "safe-array-concat": "^1.1.3" } }, "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ=="], "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], @@ -914,7 +914,7 @@ "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], + "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], @@ -970,7 +970,7 @@ "flat-cache": ["flat-cache@3.2.0", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="], - "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + "flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="], "flow-enums-runtime": ["flow-enums-runtime@0.0.6", "", {}, "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw=="], @@ -994,6 +994,8 @@ "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], + "generator-function": ["generator-function@2.0.1", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], @@ -1130,7 +1132,7 @@ "is-generator-fn": ["is-generator-fn@2.1.0", "", {}, "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ=="], - "is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="], + "is-generator-function": ["is-generator-function@1.1.2", "", { "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="], "is-git-dirty": ["is-git-dirty@2.0.2", "", { "dependencies": { "execa": "^4.0.3", "is-git-repository": "^2.0.0" } }, "sha512-U3YCo+GKR/rDsY7r0v/LBICbQwsx859tDQnAT+v0E/zCDeWbQ1TUt1FtyExeyik7VIJlYOLHCIifLdz71HDalg=="], @@ -1200,7 +1202,7 @@ "istanbul-lib-source-maps": ["istanbul-lib-source-maps@4.0.1", "", { "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" } }, "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw=="], - "istanbul-reports": ["istanbul-reports@3.1.7", "", { "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" } }, "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g=="], + "istanbul-reports": ["istanbul-reports@3.2.0", "", { "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" } }, "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA=="], "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], @@ -1410,7 +1412,7 @@ "nerf-dart": ["nerf-dart@1.0.0", "", {}, "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g=="], - "nitrogen": ["nitrogen@0.31.9", "", { "dependencies": { "chalk": "^5.3.0", "react-native-nitro-modules": "^0.31.9", "ts-morph": "^27.0.0", "yargs": "^18.0.0", "zod": "^4.0.5" }, "bin": { "nitrogen": "lib/index.js" } }, "sha512-6CinyRMMR8W4h6to6tLGx9BGddlOiUZi4W4iQaUrRJnYif09/w3HBNXwj43ItehICzlTA8E+vV7YbLCls4n6XQ=="], + "nitrogen": ["nitrogen@0.35.3", "", { "dependencies": { "chalk": "^5.3.0", "react-native-nitro-modules": "^0.35.3", "ts-morph": "^27.0.0", "yargs": "^18.0.0", "zod": "^4.0.5" }, "bin": { "nitrogen": "lib/index.js" } }, "sha512-j4XMj8dmMuDvtwtpzmqLggKF8f5KXbYZwXSfvRGC1sHD13o3pl8H3BaIaCGm8MooUFRXSkJH93XjKK3A1u5N2A=="], "nocache": ["nocache@3.0.4", "", {}, "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw=="], @@ -1418,6 +1420,8 @@ "node-emoji": ["node-emoji@2.2.0", "", { "dependencies": { "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", "emojilib": "^2.4.0", "skin-tone": "^2.0.0" } }, "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw=="], + "node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="], + "node-int64": ["node-int64@0.4.0", "", {}, "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="], "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], @@ -1566,17 +1570,17 @@ "react-devtools-core": ["react-devtools-core@6.1.5", "", { "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" } }, "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA=="], - "react-is": ["react-is@19.1.1", "", {}, "sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA=="], + "react-is": ["react-is@19.2.4", "", {}, "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA=="], "react-native": ["react-native@0.81.5", "", { "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", "@react-native/codegen": "0.81.5", "@react-native/community-cli-plugin": "0.81.5", "@react-native/gradle-plugin": "0.81.5", "@react-native/js-polyfills": "0.81.5", "@react-native/normalize-colors": "0.81.5", "@react-native/virtualized-lists": "0.81.5", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", "babel-plugin-syntax-hermes-parser": "0.29.1", "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", "metro-runtime": "^0.83.1", "metro-source-map": "^0.83.1", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", "scheduler": "0.26.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", "ws": "^6.2.3", "yargs": "^17.6.2" }, "peerDependencies": { "@types/react": "^19.1.0", "react": "^19.1.0" }, "optionalPeers": ["@types/react"], "bin": { "react-native": "cli.js" } }, "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw=="], "react-native-builder-bob": ["react-native-builder-bob@0.37.0", "", { "dependencies": { "@babel/core": "^7.25.2", "@babel/plugin-transform-strict-mode": "^7.24.7", "@babel/preset-env": "^7.25.2", "@babel/preset-flow": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", "babel-plugin-module-resolver": "^5.0.2", "browserslist": "^4.20.4", "cosmiconfig": "^9.0.0", "cross-spawn": "^7.0.3", "dedent": "^0.7.0", "del": "^6.1.1", "escape-string-regexp": "^4.0.0", "fs-extra": "^10.1.0", "glob": "^8.0.3", "is-git-dirty": "^2.0.1", "json5": "^2.2.1", "kleur": "^4.1.4", "metro-config": "^0.80.9", "prompts": "^2.4.2", "which": "^2.0.2", "yargs": "^17.5.1" }, "bin": { "bob": "bin/bob" } }, "sha512-CkM4csFrYtdGJoRLbPY6V8LBbOxgPZIuM0MkPaiOI2F/ASwxMAzoJu9wBw8Pyvx1p27XnrIEKPyDiTqimJ7xbA=="], - "react-native-nitro-document-picker": ["react-native-nitro-document-picker@1.2.0", "", { "peerDependencies": { "react": "*", "react-native": "*", "react-native-nitro-modules": "*" } }, "sha512-p0MM6m4JyEQEto2IaU4BS96Npk4CMfErUNWKGDefbah4TupektuejC/Z/EzxYEltsFofjFdjFq/pvByL8xx58w=="], + "react-native-nitro-document-picker": ["react-native-nitro-document-picker@1.2.3", "", { "peerDependencies": { "react": "*", "react-native": "*", "react-native-nitro-modules": "*" } }, "sha512-CxMVeXcNLXmg+p9wJVykksqcLM1cgAzi5WgOYVxBAS4iqlnxJumtTfZiY8wLVS29rvXSnUvh6FxBarKf4pNehw=="], "react-native-nitro-fs-example": ["react-native-nitro-fs-example@workspace:example"], - "react-native-nitro-modules": ["react-native-nitro-modules@0.31.9", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-w7NtHq4wP6LZgvDs7zbFU3B2uHpRx/bJlSTckw0By8NyEX39fURPGgHyi4a67q1O7I3iFJvbRNWUiiOBbNvHDg=="], + "react-native-nitro-modules": ["react-native-nitro-modules@0.35.3", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-pfPfFtGeMfFpLo4HidTFs5zsAs1wRh9qaWGSiF5UeI2YQaAgRHPlson0UNxw25pTCLV9NBrKgSDaMVfPEXXbNw=="], "react-native-safe-area-context": ["react-native-safe-area-context@5.6.2", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg=="], @@ -1880,7 +1884,7 @@ "which-module": ["which-module@2.0.1", "", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="], - "which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="], + "which-typed-array": ["which-typed-array@1.1.20", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg=="], "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], @@ -2052,7 +2056,7 @@ "eslint-plugin-react/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], - "eslint-plugin-react/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], + "eslint-plugin-react/resolve": ["resolve@2.0.0-next.6", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA=="], "eslint-plugin-react/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -2084,7 +2088,7 @@ "jest-circus/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "jest-circus/dedent": ["dedent@1.6.0", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA=="], + "jest-circus/dedent": ["dedent@1.7.2", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA=="], "jest-cli/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -2156,6 +2160,8 @@ "metro-transform-worker/metro-cache": ["metro-cache@0.83.1", "", { "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", "metro-core": "0.83.1" } }, "sha512-7N/Ad1PHa1YMWDNiyynTPq34Op2qIE68NWryGEQ4TSE3Zy6a8GpsYnEEZE4Qi6aHgsE+yZHKkRczeBgxhnFIxQ=="], + "node-exports-info/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "normalize-package-data/hosted-git-info": ["hosted-git-info@7.0.2", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w=="], "npm/@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 7cd84de..4dd6469 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -8,7 +8,7 @@ PODS: - hermes-engine (0.81.5): - hermes-engine/Pre-built (= 0.81.5) - hermes-engine/Pre-built (0.81.5) - - NitroDocumentPicker (1.2.0): + - NitroDocumentPicker (1.2.3): - boost - DoubleConversion - fast_float @@ -68,7 +68,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - NitroModules (0.31.9): + - NitroModules (0.35.3): - boost - DoubleConversion - fast_float @@ -2676,9 +2676,9 @@ SPEC CHECKSUMS: fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 - NitroDocumentPicker: 3f7adcb535ed9ac19a92a65c7228da559227ffdb + NitroDocumentPicker: 9fa4caf13437bcee7bcbaba22425888d3bb95ed5 NitroFS: a95f56e0a9ae2674f8e98c22cb671f60fef788ec - NitroModules: 224bf833d249b0c7ce32831368f2887008579b13 + NitroModules: 0ecd2bf2d12a6a2958fe10c5200e8e61cbea0fd0 RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 RCTDeprecation: 5eb1d2eeff5fb91151e8a8eef45b6c7658b6c897 RCTRequired: cebcf9442fc296c9b89ac791dfd463021d9f6f23 @@ -2746,6 +2746,6 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 728df40394d49f3f471688747cf558158b3a3bd1 -PODFILE CHECKSUM: f287a9473ffda722086de7168bf4032a763ccc2a +PODFILE CHECKSUM: d2e511fc9da232eec9369e1f178fd3254b633c47 COCOAPODS: 1.16.2 diff --git a/example/package.json b/example/package.json index 7bd3525..f45ff1b 100644 --- a/example/package.json +++ b/example/package.json @@ -13,8 +13,8 @@ "dependencies": { "react": "19.1.0", "react-native": "0.81.5", - "react-native-nitro-document-picker": "^1.2.0", - "react-native-nitro-modules": "^0.31.9", + "react-native-nitro-document-picker": "^1.2.3", + "react-native-nitro-modules": "^0.35.3", "react-native-safe-area-context": "^5.6.2" }, "devDependencies": { @@ -41,4 +41,4 @@ "engines": { "node": ">=20" } -} \ No newline at end of file +} diff --git a/nitrogen/generated/android/NitroFSOnLoad.cpp b/nitrogen/generated/android/NitroFSOnLoad.cpp index 2e11cf5..4fd0429 100644 --- a/nitrogen/generated/android/NitroFSOnLoad.cpp +++ b/nitrogen/generated/android/NitroFSOnLoad.cpp @@ -28,7 +28,7 @@ int initialize(JavaVM* vm) { } struct JHybridNitroFSSpecImpl: public jni::JavaClass { - static constexpr auto kJavaDescriptor = "Lcom/nitrofs/HybridNitroFS;"; + static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/HybridNitroFS;"; static std::shared_ptr create() { static const auto constructorFn = javaClassStatic()->getConstructor(); jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); diff --git a/package.json b/package.json index 798b386..1f74e81 100644 --- a/package.json +++ b/package.json @@ -58,11 +58,11 @@ "@types/jest": "^29.5.12", "@types/react": "^19.1.0", "conventional-changelog-conventionalcommits": "^9.1.0", - "nitrogen": "^0.35.1", + "nitrogen": "^0.35.3", "react": "19.1.0", "react-native": "0.81.5", "react-native-builder-bob": "^0.37.0", - "react-native-nitro-modules": "^0.31.9", + "react-native-nitro-modules": "^0.35.3", "semantic-release": "^24.2.7", "typescript": "^5.8.3" }, From ac5ff9efbb46d6adecf9b94911c178ce0aec4f2f Mon Sep 17 00:00:00 2001 From: Patrick Kabwe Date: Sun, 17 May 2026 13:27:01 +0200 Subject: [PATCH 3/3] chore: bump Nitro modules and update generated code Upgrade Nitrogen/react-native-nitro-modules to v0.35.6 and regenerate native bindings and Kotlin models. Simplify CI to only build the new architecture for Android and iOS, remove the old-arch matrix/jobs, and adjust build job names. Regenerated artifacts include JNI/C++ fixes (Java descriptor and promise lambda capture) and Kotlin data classes (equals/hashCode implementations). Also adjust iOS autolinking to disable generating the Swift ObjC header (SWIFT_INSTALL_OBJC_HEADER = NO) to avoid static linkage issues on Xcode 26.4. --- .github/workflows/android-build.yml | 31 +------------------ .github/workflows/ios-build.yml | 10 +----- bun.lock | 10 +++--- example/ios/Podfile.lock | 8 ++--- example/package.json | 2 +- nitrogen/generated/android/NitroFSOnLoad.cpp | 2 +- .../android/c++/JHybridNitroFSSpec.cpp | 8 ++--- .../com/margelo/nitro/nitrofs/NitroFile.kt | 17 ++++++++++ .../margelo/nitro/nitrofs/NitroFileStat.kt | 21 +++++++++++++ .../nitro/nitrofs/NitroUploadOptions.kt | 17 ++++++++++ nitrogen/generated/ios/NitroFS+autolinking.rb | 2 ++ package.json | 4 +-- 12 files changed, 76 insertions(+), 56 deletions(-) diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml index 60ba175..c9de103 100644 --- a/.github/workflows/android-build.yml +++ b/.github/workflows/android-build.yml @@ -31,7 +31,7 @@ concurrency: cancel-in-progress: true jobs: - build_new: + build: name: Build Android Example App (new architecture) runs-on: ubuntu-latest steps: @@ -56,32 +56,3 @@ jobs: - name: Stop Gradle Daemon working-directory: example/android run: ./gradlew --stop - - build_old: - name: Build Android Example App (old architecture) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: oven-sh/setup-bun@v2 - - - name: Install npm dependencies (bun) - run: bun install - - - name: Disable new architecture in gradle.properties - run: sed -i "s/newArchEnabled=true/newArchEnabled=false/g" example/android/gradle.properties - - - name: Setup JDK 17 - uses: actions/setup-java@v5 - with: - distribution: 'zulu' - java-version: 17 - java-package: jdk - cache: gradle - - - name: Run Gradle Build for example/android/ - working-directory: example/android - run: ./gradlew assembleDebug --no-daemon --build-cache - - - name: Stop Gradle Daemon - working-directory: example/android - run: ./gradlew --stop diff --git a/.github/workflows/ios-build.yml b/.github/workflows/ios-build.yml index 68abf6c..b53490a 100644 --- a/.github/workflows/ios-build.yml +++ b/.github/workflows/ios-build.yml @@ -47,12 +47,8 @@ concurrency: jobs: build: - name: Build iOS Example App (${{ matrix.arch }}) + name: Build iOS Example App (new architecture) runs-on: macOS-15 - strategy: - fail-fast: false - matrix: - arch: [new, old] steps: - uses: actions/checkout@v6 - uses: oven-sh/setup-bun@v2 @@ -64,10 +60,6 @@ jobs: - name: Install dependencies (bun) run: bun install - - name: Disable new architecture in Podfile - if: matrix.arch == 'old' - run: sed -i "" "s/ENV\['RCT_NEW_ARCH_ENABLED'\] = '1'/ENV['RCT_NEW_ARCH_ENABLED'] = '0'/g" example/ios/Podfile - - name: Setup Ruby (bundle) uses: ruby/setup-ruby@v1 with: diff --git a/bun.lock b/bun.lock index 97c3c88..e300af3 100644 --- a/bun.lock +++ b/bun.lock @@ -14,11 +14,11 @@ "@types/jest": "^29.5.12", "@types/react": "^19.1.0", "conventional-changelog-conventionalcommits": "^9.1.0", - "nitrogen": "^0.35.3", + "nitrogen": "^0.35.6", "react": "19.1.0", "react-native": "0.81.5", "react-native-builder-bob": "^0.37.0", - "react-native-nitro-modules": "^0.35.3", + "react-native-nitro-modules": "^0.35.6", "semantic-release": "^24.2.7", "typescript": "^5.8.3", }, @@ -35,7 +35,7 @@ "react": "19.1.0", "react-native": "0.81.5", "react-native-nitro-document-picker": "^1.2.3", - "react-native-nitro-modules": "^0.35.3", + "react-native-nitro-modules": "^0.35.6", "react-native-safe-area-context": "^5.6.2", }, "devDependencies": { @@ -1412,7 +1412,7 @@ "nerf-dart": ["nerf-dart@1.0.0", "", {}, "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g=="], - "nitrogen": ["nitrogen@0.35.3", "", { "dependencies": { "chalk": "^5.3.0", "react-native-nitro-modules": "^0.35.3", "ts-morph": "^27.0.0", "yargs": "^18.0.0", "zod": "^4.0.5" }, "bin": { "nitrogen": "lib/index.js" } }, "sha512-j4XMj8dmMuDvtwtpzmqLggKF8f5KXbYZwXSfvRGC1sHD13o3pl8H3BaIaCGm8MooUFRXSkJH93XjKK3A1u5N2A=="], + "nitrogen": ["nitrogen@0.35.6", "", { "dependencies": { "chalk": "^5.3.0", "react-native-nitro-modules": "^0.35.6", "ts-morph": "^27.0.0", "yargs": "^18.0.0", "zod": "^4.0.5" }, "bin": { "nitrogen": "lib/index.js" } }, "sha512-fUoyqCEQugl49L/lp/v3LceZt8jwL/gqfLhWsxRPxr1pOTnBhyrcEJ2dAJvHl10h7JxaswP6YCnVZMZmjJavKg=="], "nocache": ["nocache@3.0.4", "", {}, "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw=="], @@ -1580,7 +1580,7 @@ "react-native-nitro-fs-example": ["react-native-nitro-fs-example@workspace:example"], - "react-native-nitro-modules": ["react-native-nitro-modules@0.35.3", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-pfPfFtGeMfFpLo4HidTFs5zsAs1wRh9qaWGSiF5UeI2YQaAgRHPlson0UNxw25pTCLV9NBrKgSDaMVfPEXXbNw=="], + "react-native-nitro-modules": ["react-native-nitro-modules@0.35.6", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-3Cb7s+O5tpZ6RdIiPOB/wi3IMfBxD6tl6VDF8gJ5zvM/BEGTWxwMMLjzmWmsYPKekdbYBznF6qp2d2SxixPy8g=="], "react-native-safe-area-context": ["react-native-safe-area-context@5.6.2", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg=="], diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 4dd6469..215ea24 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -68,7 +68,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - NitroModules (0.35.3): + - NitroModules (0.35.6): - boost - DoubleConversion - fast_float @@ -2677,8 +2677,8 @@ SPEC CHECKSUMS: glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 NitroDocumentPicker: 9fa4caf13437bcee7bcbaba22425888d3bb95ed5 - NitroFS: a95f56e0a9ae2674f8e98c22cb671f60fef788ec - NitroModules: 0ecd2bf2d12a6a2958fe10c5200e8e61cbea0fd0 + NitroFS: ecec9604b24e719e8f28486a3c19c235fbe05c87 + NitroModules: 70e2ff77a0b718e47d5bccd837fefe8a9aa20f50 RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 RCTDeprecation: 5eb1d2eeff5fb91151e8a8eef45b6c7658b6c897 RCTRequired: cebcf9442fc296c9b89ac791dfd463021d9f6f23 @@ -2746,6 +2746,6 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 728df40394d49f3f471688747cf558158b3a3bd1 -PODFILE CHECKSUM: d2e511fc9da232eec9369e1f178fd3254b633c47 +PODFILE CHECKSUM: f287a9473ffda722086de7168bf4032a763ccc2a COCOAPODS: 1.16.2 diff --git a/example/package.json b/example/package.json index f45ff1b..bfc1be6 100644 --- a/example/package.json +++ b/example/package.json @@ -14,7 +14,7 @@ "react": "19.1.0", "react-native": "0.81.5", "react-native-nitro-document-picker": "^1.2.3", - "react-native-nitro-modules": "^0.35.3", + "react-native-nitro-modules": "^0.35.6", "react-native-safe-area-context": "^5.6.2" }, "devDependencies": { diff --git a/nitrogen/generated/android/NitroFSOnLoad.cpp b/nitrogen/generated/android/NitroFSOnLoad.cpp index 4fd0429..2e11cf5 100644 --- a/nitrogen/generated/android/NitroFSOnLoad.cpp +++ b/nitrogen/generated/android/NitroFSOnLoad.cpp @@ -28,7 +28,7 @@ int initialize(JavaVM* vm) { } struct JHybridNitroFSSpecImpl: public jni::JavaClass { - static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrofs/HybridNitroFS;"; + static constexpr auto kJavaDescriptor = "Lcom/nitrofs/HybridNitroFS;"; static std::shared_ptr create() { static const auto constructorFn = javaClassStatic()->getConstructor(); jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); diff --git a/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp b/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp index c277db0..24d8644 100644 --- a/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridNitroFSSpec.cpp @@ -242,16 +242,16 @@ namespace margelo::nitro::nitrofs { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { auto __result = jni::static_ref_cast>(__boxedResult); - __promise->resolve([&]() { - size_t __size = __result->size(); + __promise->resolve([&](auto&& __input) { + size_t __size = __input->size(); std::vector __vector; __vector.reserve(__size); for (size_t __i = 0; __i < __size; __i++) { - auto __element = __result->getElement(__i); + auto __element = __input->getElement(__i); __vector.push_back(__element->toCpp()); } return __vector; - }()); + }(__result)); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt index 8dea9e1..1110ddf 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFile.kt @@ -9,6 +9,7 @@ package com.margelo.nitro.nitrofs import androidx.annotation.Keep import com.facebook.proguard.annotations.DoNotStrip +import java.util.Objects /** @@ -29,6 +30,22 @@ data class NitroFile( ) { /* primary constructor */ + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is NitroFile) return false + return Objects.deepEquals(this.name, other.name) + && Objects.deepEquals(this.mimeType, other.mimeType) + && Objects.deepEquals(this.path, other.path) + } + + override fun hashCode(): Int { + return arrayOf( + name, + mimeType, + path + ).contentDeepHashCode() + } + companion object { /** * Constructor called from C++ diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt index af0f440..eb2fbe5 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroFileStat.kt @@ -9,6 +9,7 @@ package com.margelo.nitro.nitrofs import androidx.annotation.Keep import com.facebook.proguard.annotations.DoNotStrip +import java.util.Objects /** @@ -35,6 +36,26 @@ data class NitroFileStat( ) { /* primary constructor */ + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is NitroFileStat) return false + return Objects.deepEquals(this.size, other.size) + && Objects.deepEquals(this.ctime, other.ctime) + && Objects.deepEquals(this.mtime, other.mtime) + && Objects.deepEquals(this.isFile, other.isFile) + && Objects.deepEquals(this.isDirectory, other.isDirectory) + } + + override fun hashCode(): Int { + return arrayOf( + size, + ctime, + mtime, + isFile, + isDirectory + ).contentDeepHashCode() + } + companion object { /** * Constructor called from C++ diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt index 50d24a0..e0282ea 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofs/NitroUploadOptions.kt @@ -9,6 +9,7 @@ package com.margelo.nitro.nitrofs import androidx.annotation.Keep import com.facebook.proguard.annotations.DoNotStrip +import java.util.Objects /** @@ -29,6 +30,22 @@ data class NitroUploadOptions( ) { /* primary constructor */ + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is NitroUploadOptions) return false + return Objects.deepEquals(this.url, other.url) + && Objects.deepEquals(this.method, other.method) + && Objects.deepEquals(this.field, other.field) + } + + override fun hashCode(): Int { + return arrayOf( + url, + method, + field + ).contentDeepHashCode() + } + companion object { /** * Constructor called from C++ diff --git a/nitrogen/generated/ios/NitroFS+autolinking.rb b/nitrogen/generated/ios/NitroFS+autolinking.rb index 74449fa..3a80bf3 100644 --- a/nitrogen/generated/ios/NitroFS+autolinking.rb +++ b/nitrogen/generated/ios/NitroFS+autolinking.rb @@ -56,5 +56,7 @@ def add_nitrogen_files(spec) "SWIFT_OBJC_INTEROP_MODE" => "objcxx", # Enables stricter modular headers "DEFINES_MODULE" => "YES", + # Disable auto-generated ObjC header for Swift (Static linkage on Xcode 26.4 breaks here) + "SWIFT_INSTALL_OBJC_HEADER" => "NO", }) end diff --git a/package.json b/package.json index 1f74e81..8ffc384 100644 --- a/package.json +++ b/package.json @@ -58,11 +58,11 @@ "@types/jest": "^29.5.12", "@types/react": "^19.1.0", "conventional-changelog-conventionalcommits": "^9.1.0", - "nitrogen": "^0.35.3", + "nitrogen": "^0.35.6", "react": "19.1.0", "react-native": "0.81.5", "react-native-builder-bob": "^0.37.0", - "react-native-nitro-modules": "^0.35.3", + "react-native-nitro-modules": "^0.35.6", "semantic-release": "^24.2.7", "typescript": "^5.8.3" },