react-native-nitro-web-image 0.5.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/NitroWebImage.podspec +33 -0
  2. package/android/CMakeLists.txt +31 -0
  3. package/android/build.gradle +145 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  7. package/android/src/main/java/com/margelo/nitro/web/image/AsyncImagePriority+toCoroutineContext.kt +15 -0
  8. package/android/src/main/java/com/margelo/nitro/web/image/HybridWebImageFactory.kt +32 -0
  9. package/android/src/main/java/com/margelo/nitro/web/image/HybridWebImageLoader.kt +32 -0
  10. package/android/src/main/java/com/margelo/nitro/web/image/ImageLoader+loadImageAsync.kt +37 -0
  11. package/android/src/main/java/com/margelo/nitro/web/image/ImageRequestBuilder+applyOptions.kt +58 -0
  12. package/android/src/main/java/com/margelo/nitro/web/image/NitroWebImagePackage.java +44 -0
  13. package/ios/AsyncImageLoadOptions+toSDWebImageOptions.swift +66 -0
  14. package/ios/Bridge.h +8 -0
  15. package/ios/HybridWebImageFactory.swift +32 -0
  16. package/ios/HybridWebImageLoader.swift +54 -0
  17. package/ios/SDWebImageManager+loadImage.swift +30 -0
  18. package/lib/commonjs/index.js +9 -0
  19. package/lib/commonjs/index.js.map +1 -0
  20. package/lib/commonjs/package.json +1 -0
  21. package/lib/commonjs/specs/WebImageFactory.nitro.js +6 -0
  22. package/lib/commonjs/specs/WebImageFactory.nitro.js.map +1 -0
  23. package/lib/module/index.js +5 -0
  24. package/lib/module/index.js.map +1 -0
  25. package/lib/module/package.json +1 -0
  26. package/lib/module/specs/WebImageFactory.nitro.js +4 -0
  27. package/lib/module/specs/WebImageFactory.nitro.js.map +1 -0
  28. package/lib/tsconfig.build.tsbuildinfo +1 -0
  29. package/lib/typescript/index.d.ts +3 -0
  30. package/lib/typescript/index.d.ts.map +1 -0
  31. package/lib/typescript/specs/WebImageFactory.nitro.d.ts +63 -0
  32. package/lib/typescript/specs/WebImageFactory.nitro.d.ts.map +1 -0
  33. package/nitro.json +18 -0
  34. package/nitrogen/generated/.gitattributes +1 -0
  35. package/nitrogen/generated/android/NitroWebImage+autolinking.cmake +78 -0
  36. package/nitrogen/generated/android/NitroWebImage+autolinking.gradle +27 -0
  37. package/nitrogen/generated/android/NitroWebImageOnLoad.cpp +46 -0
  38. package/nitrogen/generated/android/NitroWebImageOnLoad.hpp +25 -0
  39. package/nitrogen/generated/android/c++/JAsyncImageLoadOptions.hpp +88 -0
  40. package/nitrogen/generated/android/c++/JAsyncImagePriority.hpp +62 -0
  41. package/nitrogen/generated/android/c++/JHybridWebImageFactorySpec.cpp +82 -0
  42. package/nitrogen/generated/android/c++/JHybridWebImageFactorySpec.hpp +64 -0
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/web/image/AsyncImageLoadOptions.kt +35 -0
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/web/image/AsyncImagePriority.kt +26 -0
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/web/image/HybridWebImageFactorySpec.kt +58 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/web/image/NitroWebImageOnLoad.kt +35 -0
  47. package/nitrogen/generated/ios/NitroWebImage+autolinking.rb +60 -0
  48. package/nitrogen/generated/ios/NitroWebImage-Swift-Cxx-Bridge.cpp +65 -0
  49. package/nitrogen/generated/ios/NitroWebImage-Swift-Cxx-Bridge.hpp +197 -0
  50. package/nitrogen/generated/ios/NitroWebImage-Swift-Cxx-Umbrella.hpp +62 -0
  51. package/nitrogen/generated/ios/NitroWebImageAutolinking.mm +33 -0
  52. package/nitrogen/generated/ios/NitroWebImageAutolinking.swift +25 -0
  53. package/nitrogen/generated/ios/c++/HybridWebImageFactorySpecSwift.cpp +11 -0
  54. package/nitrogen/generated/ios/c++/HybridWebImageFactorySpecSwift.hpp +95 -0
  55. package/nitrogen/generated/ios/swift/AsyncImageLoadOptions.swift +237 -0
  56. package/nitrogen/generated/ios/swift/AsyncImagePriority.swift +44 -0
  57. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  58. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec_.swift +51 -0
  59. package/nitrogen/generated/ios/swift/HybridWebImageFactorySpec.swift +51 -0
  60. package/nitrogen/generated/ios/swift/HybridWebImageFactorySpec_cxx.swift +161 -0
  61. package/nitrogen/generated/shared/c++/AsyncImageLoadOptions.hpp +104 -0
  62. package/nitrogen/generated/shared/c++/AsyncImagePriority.hpp +82 -0
  63. package/nitrogen/generated/shared/c++/HybridWebImageFactorySpec.cpp +22 -0
  64. package/nitrogen/generated/shared/c++/HybridWebImageFactorySpec.hpp +74 -0
  65. package/package.json +113 -0
  66. package/react-native.config.js +16 -0
  67. package/src/index.ts +5 -0
  68. package/src/specs/WebImageFactory.nitro.ts +76 -0
@@ -0,0 +1,197 @@
1
+ ///
2
+ /// NitroWebImage-Swift-Cxx-Bridge.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ // Forward declarations of C++ defined types
11
+ // Forward declaration of `AsyncImageLoadOptions` to properly resolve imports.
12
+ namespace margelo::nitro::web::image { struct AsyncImageLoadOptions; }
13
+ // Forward declaration of `AsyncImagePriority` to properly resolve imports.
14
+ namespace margelo::nitro::web::image { enum class AsyncImagePriority; }
15
+ // Forward declaration of `HybridImageLoaderSpec` to properly resolve imports.
16
+ namespace margelo::nitro::image { class HybridImageLoaderSpec; }
17
+ // Forward declaration of `HybridImageSpec` to properly resolve imports.
18
+ namespace margelo::nitro::image { class HybridImageSpec; }
19
+ // Forward declaration of `HybridWebImageFactorySpec` to properly resolve imports.
20
+ namespace margelo::nitro::web::image { class HybridWebImageFactorySpec; }
21
+
22
+ // Forward declarations of Swift defined types
23
+ // Forward declaration of `HybridImageLoaderSpec_cxx` to properly resolve imports.
24
+ namespace NitroImage { class HybridImageLoaderSpec_cxx; }
25
+ // Forward declaration of `HybridImageSpec_cxx` to properly resolve imports.
26
+ namespace NitroImage { class HybridImageSpec_cxx; }
27
+ // Forward declaration of `HybridWebImageFactorySpec_cxx` to properly resolve imports.
28
+ namespace NitroWebImage { class HybridWebImageFactorySpec_cxx; }
29
+
30
+ // Include C++ defined types
31
+ #include "AsyncImageLoadOptions.hpp"
32
+ #include "AsyncImagePriority.hpp"
33
+ #include "HybridWebImageFactorySpec.hpp"
34
+ #include <NitroImage/HybridImageLoaderSpec.hpp>
35
+ #include <NitroImage/HybridImageSpec.hpp>
36
+ #include <NitroModules/Promise.hpp>
37
+ #include <NitroModules/PromiseHolder.hpp>
38
+ #include <NitroModules/Result.hpp>
39
+ #include <exception>
40
+ #include <functional>
41
+ #include <memory>
42
+ #include <optional>
43
+ #include <string>
44
+
45
+ /**
46
+ * Contains specialized versions of C++ templated types so they can be accessed from Swift,
47
+ * as well as helper functions to interact with those C++ types from Swift.
48
+ */
49
+ namespace margelo::nitro::web::image::bridge::swift {
50
+
51
+ // pragma MARK: std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>
52
+ /**
53
+ * Specialized version of `std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>`.
54
+ */
55
+ using std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec_ = std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>;
56
+ std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec> create_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec_(void* _Nonnull swiftUnsafePointer);
57
+ void* _Nonnull get_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec_(std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec_ cppType);
58
+
59
+ // pragma MARK: std::weak_ptr<margelo::nitro::image::HybridImageLoaderSpec>
60
+ using std__weak_ptr_margelo__nitro__image__HybridImageLoaderSpec_ = std::weak_ptr<margelo::nitro::image::HybridImageLoaderSpec>;
61
+ inline std__weak_ptr_margelo__nitro__image__HybridImageLoaderSpec_ weakify_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec_(const std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>& strong) { return strong; }
62
+
63
+ // pragma MARK: std::optional<AsyncImagePriority>
64
+ /**
65
+ * Specialized version of `std::optional<AsyncImagePriority>`.
66
+ */
67
+ using std__optional_AsyncImagePriority_ = std::optional<AsyncImagePriority>;
68
+ inline std::optional<AsyncImagePriority> create_std__optional_AsyncImagePriority_(const AsyncImagePriority& value) {
69
+ return std::optional<AsyncImagePriority>(value);
70
+ }
71
+
72
+ // pragma MARK: std::optional<bool>
73
+ /**
74
+ * Specialized version of `std::optional<bool>`.
75
+ */
76
+ using std__optional_bool_ = std::optional<bool>;
77
+ inline std::optional<bool> create_std__optional_bool_(const bool& value) {
78
+ return std::optional<bool>(value);
79
+ }
80
+
81
+ // pragma MARK: std::optional<std::string>
82
+ /**
83
+ * Specialized version of `std::optional<std::string>`.
84
+ */
85
+ using std__optional_std__string_ = std::optional<std::string>;
86
+ inline std::optional<std::string> create_std__optional_std__string_(const std::string& value) {
87
+ return std::optional<std::string>(value);
88
+ }
89
+
90
+ // pragma MARK: std::optional<AsyncImageLoadOptions>
91
+ /**
92
+ * Specialized version of `std::optional<AsyncImageLoadOptions>`.
93
+ */
94
+ using std__optional_AsyncImageLoadOptions_ = std::optional<AsyncImageLoadOptions>;
95
+ inline std::optional<AsyncImageLoadOptions> create_std__optional_AsyncImageLoadOptions_(const AsyncImageLoadOptions& value) {
96
+ return std::optional<AsyncImageLoadOptions>(value);
97
+ }
98
+
99
+ // pragma MARK: std::shared_ptr<margelo::nitro::image::HybridImageSpec>
100
+ /**
101
+ * Specialized version of `std::shared_ptr<margelo::nitro::image::HybridImageSpec>`.
102
+ */
103
+ using std__shared_ptr_margelo__nitro__image__HybridImageSpec_ = std::shared_ptr<margelo::nitro::image::HybridImageSpec>;
104
+ std::shared_ptr<margelo::nitro::image::HybridImageSpec> create_std__shared_ptr_margelo__nitro__image__HybridImageSpec_(void* _Nonnull swiftUnsafePointer);
105
+ void* _Nonnull get_std__shared_ptr_margelo__nitro__image__HybridImageSpec_(std__shared_ptr_margelo__nitro__image__HybridImageSpec_ cppType);
106
+
107
+ // pragma MARK: std::weak_ptr<margelo::nitro::image::HybridImageSpec>
108
+ using std__weak_ptr_margelo__nitro__image__HybridImageSpec_ = std::weak_ptr<margelo::nitro::image::HybridImageSpec>;
109
+ inline std__weak_ptr_margelo__nitro__image__HybridImageSpec_ weakify_std__shared_ptr_margelo__nitro__image__HybridImageSpec_(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>& strong) { return strong; }
110
+
111
+ // pragma MARK: std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>
112
+ /**
113
+ * Specialized version of `std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>`.
114
+ */
115
+ using std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec___ = std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>;
116
+ inline std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>> create_std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec___() {
117
+ return Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>::create();
118
+ }
119
+ inline PromiseHolder<std::shared_ptr<margelo::nitro::image::HybridImageSpec>> wrap_std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec___(std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>> promise) {
120
+ return PromiseHolder<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>(std::move(promise));
121
+ }
122
+
123
+ // pragma MARK: std::function<void(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>& /* result */)>
124
+ /**
125
+ * Specialized version of `std::function<void(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>&)>`.
126
+ */
127
+ using Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec_ = std::function<void(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>& /* result */)>;
128
+ /**
129
+ * Wrapper class for a `std::function<void(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>& / * result * /)>`, this can be used from Swift.
130
+ */
131
+ class Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec__Wrapper final {
132
+ public:
133
+ explicit Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec__Wrapper(std::function<void(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>& /* result */)>&& func): _function(std::make_unique<std::function<void(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>& /* result */)>>(std::move(func))) {}
134
+ inline void call(std::shared_ptr<margelo::nitro::image::HybridImageSpec> result) const {
135
+ _function->operator()(result);
136
+ }
137
+ private:
138
+ std::unique_ptr<std::function<void(const std::shared_ptr<margelo::nitro::image::HybridImageSpec>& /* result */)>> _function;
139
+ } SWIFT_NONCOPYABLE;
140
+ Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec_ create_Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec_(void* _Nonnull swiftClosureWrapper);
141
+ inline Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec__Wrapper wrap_Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec_(Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec_ value) {
142
+ return Func_void_std__shared_ptr_margelo__nitro__image__HybridImageSpec__Wrapper(std::move(value));
143
+ }
144
+
145
+ // pragma MARK: std::function<void(const std::exception_ptr& /* error */)>
146
+ /**
147
+ * Specialized version of `std::function<void(const std::exception_ptr&)>`.
148
+ */
149
+ using Func_void_std__exception_ptr = std::function<void(const std::exception_ptr& /* error */)>;
150
+ /**
151
+ * Wrapper class for a `std::function<void(const std::exception_ptr& / * error * /)>`, this can be used from Swift.
152
+ */
153
+ class Func_void_std__exception_ptr_Wrapper final {
154
+ public:
155
+ explicit Func_void_std__exception_ptr_Wrapper(std::function<void(const std::exception_ptr& /* error */)>&& func): _function(std::make_unique<std::function<void(const std::exception_ptr& /* error */)>>(std::move(func))) {}
156
+ inline void call(std::exception_ptr error) const {
157
+ _function->operator()(error);
158
+ }
159
+ private:
160
+ std::unique_ptr<std::function<void(const std::exception_ptr& /* error */)>> _function;
161
+ } SWIFT_NONCOPYABLE;
162
+ Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* _Nonnull swiftClosureWrapper);
163
+ inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) {
164
+ return Func_void_std__exception_ptr_Wrapper(std::move(value));
165
+ }
166
+
167
+ // pragma MARK: std::shared_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec>
168
+ /**
169
+ * Specialized version of `std::shared_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec>`.
170
+ */
171
+ using std__shared_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_ = std::shared_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec>;
172
+ std::shared_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec> create_std__shared_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_(void* _Nonnull swiftUnsafePointer);
173
+ void* _Nonnull get_std__shared_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_(std__shared_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_ cppType);
174
+
175
+ // pragma MARK: std::weak_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec>
176
+ using std__weak_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_ = std::weak_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec>;
177
+ inline std__weak_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_ weakify_std__shared_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_(const std::shared_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec>& strong) { return strong; }
178
+
179
+ // pragma MARK: Result<std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>>
180
+ using Result_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec__ = Result<std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>>;
181
+ inline Result_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec__ create_Result_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec__(const std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>& value) {
182
+ return Result<std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>>::withValue(value);
183
+ }
184
+ inline Result_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec__ create_Result_std__shared_ptr_margelo__nitro__image__HybridImageLoaderSpec__(const std::exception_ptr& error) {
185
+ return Result<std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec>>::withError(error);
186
+ }
187
+
188
+ // pragma MARK: Result<std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>>
189
+ using Result_std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec____ = Result<std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>>;
190
+ inline Result_std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec____ create_Result_std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec____(const std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>& value) {
191
+ return Result<std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>>::withValue(value);
192
+ }
193
+ inline Result_std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec____ create_Result_std__shared_ptr_Promise_std__shared_ptr_margelo__nitro__image__HybridImageSpec____(const std::exception_ptr& error) {
194
+ return Result<std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>>>::withError(error);
195
+ }
196
+
197
+ } // namespace margelo::nitro::web::image::bridge::swift
@@ -0,0 +1,62 @@
1
+ ///
2
+ /// NitroWebImage-Swift-Cxx-Umbrella.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ // Forward declarations of C++ defined types
11
+ // Forward declaration of `AsyncImageLoadOptions` to properly resolve imports.
12
+ namespace margelo::nitro::web::image { struct AsyncImageLoadOptions; }
13
+ // Forward declaration of `AsyncImagePriority` to properly resolve imports.
14
+ namespace margelo::nitro::web::image { enum class AsyncImagePriority; }
15
+ // Forward declaration of `HybridImageLoaderSpec` to properly resolve imports.
16
+ namespace margelo::nitro::image { class HybridImageLoaderSpec; }
17
+ // Forward declaration of `HybridImageSpec` to properly resolve imports.
18
+ namespace margelo::nitro::image { class HybridImageSpec; }
19
+ // Forward declaration of `HybridWebImageFactorySpec` to properly resolve imports.
20
+ namespace margelo::nitro::web::image { class HybridWebImageFactorySpec; }
21
+
22
+ // Include C++ defined types
23
+ #include "AsyncImageLoadOptions.hpp"
24
+ #include "AsyncImagePriority.hpp"
25
+ #include "HybridWebImageFactorySpec.hpp"
26
+ #include <NitroImage/HybridImageLoaderSpec.hpp>
27
+ #include <NitroImage/HybridImageSpec.hpp>
28
+ #include <NitroModules/Promise.hpp>
29
+ #include <NitroModules/Result.hpp>
30
+ #include <exception>
31
+ #include <memory>
32
+ #include <optional>
33
+ #include <string>
34
+
35
+ // C++ helpers for Swift
36
+ #include "NitroWebImage-Swift-Cxx-Bridge.hpp"
37
+
38
+ // Common C++ types used in Swift
39
+ #include <NitroModules/ArrayBufferHolder.hpp>
40
+ #include <NitroModules/AnyMapUtils.hpp>
41
+ #include <NitroModules/RuntimeError.hpp>
42
+ #include <NitroModules/DateToChronoDate.hpp>
43
+
44
+ // Forward declarations of Swift defined types
45
+ // Forward declaration of `HybridImageLoaderSpec_cxx` to properly resolve imports.
46
+ namespace NitroImage { class HybridImageLoaderSpec_cxx; }
47
+ // Forward declaration of `HybridImageSpec_cxx` to properly resolve imports.
48
+ namespace NitroImage { class HybridImageSpec_cxx; }
49
+ // Forward declaration of `HybridWebImageFactorySpec_cxx` to properly resolve imports.
50
+ namespace NitroWebImage { class HybridWebImageFactorySpec_cxx; }
51
+
52
+ // Include Swift defined types
53
+ #if __has_include("NitroWebImage-Swift.h")
54
+ // This header is generated by Xcode/Swift on every app build.
55
+ // If it cannot be found, make sure the Swift module's name (= podspec name) is actually "NitroWebImage".
56
+ #include "NitroWebImage-Swift.h"
57
+ // Same as above, but used when building with frameworks (`use_frameworks`)
58
+ #elif __has_include(<NitroWebImage/NitroWebImage-Swift.h>)
59
+ #include <NitroWebImage/NitroWebImage-Swift.h>
60
+ #else
61
+ #error NitroWebImage's autogenerated Swift header cannot be found! Make sure the Swift module's name (= podspec name) is actually "NitroWebImage", and try building the app first.
62
+ #endif
@@ -0,0 +1,33 @@
1
+ ///
2
+ /// NitroWebImageAutolinking.mm
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #import <Foundation/Foundation.h>
9
+ #import <NitroModules/HybridObjectRegistry.hpp>
10
+ #import "NitroWebImage-Swift-Cxx-Umbrella.hpp"
11
+ #import <type_traits>
12
+
13
+ #include "HybridWebImageFactorySpecSwift.hpp"
14
+
15
+ @interface NitroWebImageAutolinking : NSObject
16
+ @end
17
+
18
+ @implementation NitroWebImageAutolinking
19
+
20
+ + (void) load {
21
+ using namespace margelo::nitro;
22
+ using namespace margelo::nitro::web::image;
23
+
24
+ HybridObjectRegistry::registerHybridObjectConstructor(
25
+ "WebImageFactory",
26
+ []() -> std::shared_ptr<HybridObject> {
27
+ std::shared_ptr<margelo::nitro::web::image::HybridWebImageFactorySpec> hybridObject = NitroWebImage::NitroWebImageAutolinking::createWebImageFactory();
28
+ return hybridObject;
29
+ }
30
+ );
31
+ }
32
+
33
+ @end
@@ -0,0 +1,25 @@
1
+ ///
2
+ /// NitroWebImageAutolinking.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ public final class NitroWebImageAutolinking {
9
+ public typealias bridge = margelo.nitro.web.image.bridge.swift
10
+
11
+ /**
12
+ * Creates an instance of a Swift class that implements `HybridWebImageFactorySpec`,
13
+ * and wraps it in a Swift class that can directly interop with C++ (`HybridWebImageFactorySpec_cxx`)
14
+ *
15
+ * This is generated by Nitrogen and will initialize the class specified
16
+ * in the `"autolinking"` property of `nitro.json` (in this case, `HybridWebImageFactory`).
17
+ */
18
+ public static func createWebImageFactory() -> bridge.std__shared_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_ {
19
+ let hybridObject = HybridWebImageFactory()
20
+ return { () -> bridge.std__shared_ptr_margelo__nitro__web__image__HybridWebImageFactorySpec_ in
21
+ let __cxxWrapped = hybridObject.getCxxWrapper()
22
+ return __cxxWrapped.getCxxPart()
23
+ }()
24
+ }
25
+ }
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridWebImageFactorySpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridWebImageFactorySpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::web::image {
11
+ } // namespace margelo::nitro::web::image
@@ -0,0 +1,95 @@
1
+ ///
2
+ /// HybridWebImageFactorySpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridWebImageFactorySpec.hpp"
11
+
12
+ // Forward declaration of `HybridWebImageFactorySpec_cxx` to properly resolve imports.
13
+ namespace NitroWebImage { class HybridWebImageFactorySpec_cxx; }
14
+
15
+ // Forward declaration of `HybridImageLoaderSpec` to properly resolve imports.
16
+ namespace margelo::nitro::image { class HybridImageLoaderSpec; }
17
+ // Forward declaration of `AsyncImageLoadOptions` to properly resolve imports.
18
+ namespace margelo::nitro::web::image { struct AsyncImageLoadOptions; }
19
+ // Forward declaration of `AsyncImagePriority` to properly resolve imports.
20
+ namespace margelo::nitro::web::image { enum class AsyncImagePriority; }
21
+ // Forward declaration of `HybridImageSpec` to properly resolve imports.
22
+ namespace margelo::nitro::image { class HybridImageSpec; }
23
+
24
+ #include <memory>
25
+ #include <NitroImage/HybridImageLoaderSpec.hpp>
26
+ #include <string>
27
+ #include "AsyncImageLoadOptions.hpp"
28
+ #include <optional>
29
+ #include "AsyncImagePriority.hpp"
30
+ #include <NitroImage/HybridImageSpec.hpp>
31
+ #include <NitroModules/Promise.hpp>
32
+
33
+ #include "NitroWebImage-Swift-Cxx-Umbrella.hpp"
34
+
35
+ namespace margelo::nitro::web::image {
36
+
37
+ /**
38
+ * The C++ part of HybridWebImageFactorySpec_cxx.swift.
39
+ *
40
+ * HybridWebImageFactorySpecSwift (C++) accesses HybridWebImageFactorySpec_cxx (Swift), and might
41
+ * contain some additional bridging code for C++ <> Swift interop.
42
+ *
43
+ * Since this obviously introduces an overhead, I hope at some point in
44
+ * the future, HybridWebImageFactorySpec_cxx can directly inherit from the C++ class HybridWebImageFactorySpec
45
+ * to simplify the whole structure and memory management.
46
+ */
47
+ class HybridWebImageFactorySpecSwift: public virtual HybridWebImageFactorySpec {
48
+ public:
49
+ // Constructor from a Swift instance
50
+ explicit HybridWebImageFactorySpecSwift(const NitroWebImage::HybridWebImageFactorySpec_cxx& swiftPart):
51
+ HybridObject(HybridWebImageFactorySpec::TAG),
52
+ _swiftPart(swiftPart) { }
53
+
54
+ public:
55
+ // Get the Swift part
56
+ inline NitroWebImage::HybridWebImageFactorySpec_cxx& getSwiftPart() noexcept {
57
+ return _swiftPart;
58
+ }
59
+
60
+ public:
61
+ inline size_t getExternalMemorySize() noexcept override {
62
+ return _swiftPart.getMemorySize();
63
+ }
64
+ void dispose() noexcept override {
65
+ _swiftPart.dispose();
66
+ }
67
+
68
+ public:
69
+ // Properties
70
+
71
+
72
+ public:
73
+ // Methods
74
+ inline std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec> createWebImageLoader(const std::string& url, const std::optional<AsyncImageLoadOptions>& options) override {
75
+ auto __result = _swiftPart.createWebImageLoader(url, options);
76
+ if (__result.hasError()) [[unlikely]] {
77
+ std::rethrow_exception(__result.error());
78
+ }
79
+ auto __value = std::move(__result.value());
80
+ return __value;
81
+ }
82
+ inline std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>> loadFromURLAsync(const std::string& url, const std::optional<AsyncImageLoadOptions>& options) override {
83
+ auto __result = _swiftPart.loadFromURLAsync(url, options);
84
+ if (__result.hasError()) [[unlikely]] {
85
+ std::rethrow_exception(__result.error());
86
+ }
87
+ auto __value = std::move(__result.value());
88
+ return __value;
89
+ }
90
+
91
+ private:
92
+ NitroWebImage::HybridWebImageFactorySpec_cxx _swiftPart;
93
+ };
94
+
95
+ } // namespace margelo::nitro::web::image
@@ -0,0 +1,237 @@
1
+ ///
2
+ /// AsyncImageLoadOptions.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Represents an instance of `AsyncImageLoadOptions`, backed by a C++ struct.
12
+ */
13
+ public typealias AsyncImageLoadOptions = margelo.nitro.web.image.AsyncImageLoadOptions
14
+
15
+ public extension AsyncImageLoadOptions {
16
+ private typealias bridge = margelo.nitro.web.image.bridge.swift
17
+
18
+ /**
19
+ * Create a new instance of `AsyncImageLoadOptions`.
20
+ */
21
+ init(priority: AsyncImagePriority?, forceRefresh: Bool?, cacheKey: String?, continueInBackground: Bool?, allowInvalidSSLCertificates: Bool?, scaleDownLargeImages: Bool?, queryMemoryDataSync: Bool?, queryDiskDataSync: Bool?, decodeImage: Bool?) {
22
+ self.init({ () -> bridge.std__optional_AsyncImagePriority_ in
23
+ if let __unwrappedValue = priority {
24
+ return bridge.create_std__optional_AsyncImagePriority_(__unwrappedValue)
25
+ } else {
26
+ return .init()
27
+ }
28
+ }(), { () -> bridge.std__optional_bool_ in
29
+ if let __unwrappedValue = forceRefresh {
30
+ return bridge.create_std__optional_bool_(__unwrappedValue)
31
+ } else {
32
+ return .init()
33
+ }
34
+ }(), { () -> bridge.std__optional_std__string_ in
35
+ if let __unwrappedValue = cacheKey {
36
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
37
+ } else {
38
+ return .init()
39
+ }
40
+ }(), { () -> bridge.std__optional_bool_ in
41
+ if let __unwrappedValue = continueInBackground {
42
+ return bridge.create_std__optional_bool_(__unwrappedValue)
43
+ } else {
44
+ return .init()
45
+ }
46
+ }(), { () -> bridge.std__optional_bool_ in
47
+ if let __unwrappedValue = allowInvalidSSLCertificates {
48
+ return bridge.create_std__optional_bool_(__unwrappedValue)
49
+ } else {
50
+ return .init()
51
+ }
52
+ }(), { () -> bridge.std__optional_bool_ in
53
+ if let __unwrappedValue = scaleDownLargeImages {
54
+ return bridge.create_std__optional_bool_(__unwrappedValue)
55
+ } else {
56
+ return .init()
57
+ }
58
+ }(), { () -> bridge.std__optional_bool_ in
59
+ if let __unwrappedValue = queryMemoryDataSync {
60
+ return bridge.create_std__optional_bool_(__unwrappedValue)
61
+ } else {
62
+ return .init()
63
+ }
64
+ }(), { () -> bridge.std__optional_bool_ in
65
+ if let __unwrappedValue = queryDiskDataSync {
66
+ return bridge.create_std__optional_bool_(__unwrappedValue)
67
+ } else {
68
+ return .init()
69
+ }
70
+ }(), { () -> bridge.std__optional_bool_ in
71
+ if let __unwrappedValue = decodeImage {
72
+ return bridge.create_std__optional_bool_(__unwrappedValue)
73
+ } else {
74
+ return .init()
75
+ }
76
+ }())
77
+ }
78
+
79
+ var priority: AsyncImagePriority? {
80
+ @inline(__always)
81
+ get {
82
+ return self.__priority.value
83
+ }
84
+ @inline(__always)
85
+ set {
86
+ self.__priority = { () -> bridge.std__optional_AsyncImagePriority_ in
87
+ if let __unwrappedValue = newValue {
88
+ return bridge.create_std__optional_AsyncImagePriority_(__unwrappedValue)
89
+ } else {
90
+ return .init()
91
+ }
92
+ }()
93
+ }
94
+ }
95
+
96
+ var forceRefresh: Bool? {
97
+ @inline(__always)
98
+ get {
99
+ return self.__forceRefresh.value
100
+ }
101
+ @inline(__always)
102
+ set {
103
+ self.__forceRefresh = { () -> bridge.std__optional_bool_ in
104
+ if let __unwrappedValue = newValue {
105
+ return bridge.create_std__optional_bool_(__unwrappedValue)
106
+ } else {
107
+ return .init()
108
+ }
109
+ }()
110
+ }
111
+ }
112
+
113
+ var cacheKey: String? {
114
+ @inline(__always)
115
+ get {
116
+ return { () -> String? in
117
+ if let __unwrapped = self.__cacheKey.value {
118
+ return String(__unwrapped)
119
+ } else {
120
+ return nil
121
+ }
122
+ }()
123
+ }
124
+ @inline(__always)
125
+ set {
126
+ self.__cacheKey = { () -> bridge.std__optional_std__string_ in
127
+ if let __unwrappedValue = newValue {
128
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
129
+ } else {
130
+ return .init()
131
+ }
132
+ }()
133
+ }
134
+ }
135
+
136
+ var continueInBackground: Bool? {
137
+ @inline(__always)
138
+ get {
139
+ return self.__continueInBackground.value
140
+ }
141
+ @inline(__always)
142
+ set {
143
+ self.__continueInBackground = { () -> bridge.std__optional_bool_ in
144
+ if let __unwrappedValue = newValue {
145
+ return bridge.create_std__optional_bool_(__unwrappedValue)
146
+ } else {
147
+ return .init()
148
+ }
149
+ }()
150
+ }
151
+ }
152
+
153
+ var allowInvalidSSLCertificates: Bool? {
154
+ @inline(__always)
155
+ get {
156
+ return self.__allowInvalidSSLCertificates.value
157
+ }
158
+ @inline(__always)
159
+ set {
160
+ self.__allowInvalidSSLCertificates = { () -> bridge.std__optional_bool_ in
161
+ if let __unwrappedValue = newValue {
162
+ return bridge.create_std__optional_bool_(__unwrappedValue)
163
+ } else {
164
+ return .init()
165
+ }
166
+ }()
167
+ }
168
+ }
169
+
170
+ var scaleDownLargeImages: Bool? {
171
+ @inline(__always)
172
+ get {
173
+ return self.__scaleDownLargeImages.value
174
+ }
175
+ @inline(__always)
176
+ set {
177
+ self.__scaleDownLargeImages = { () -> bridge.std__optional_bool_ in
178
+ if let __unwrappedValue = newValue {
179
+ return bridge.create_std__optional_bool_(__unwrappedValue)
180
+ } else {
181
+ return .init()
182
+ }
183
+ }()
184
+ }
185
+ }
186
+
187
+ var queryMemoryDataSync: Bool? {
188
+ @inline(__always)
189
+ get {
190
+ return self.__queryMemoryDataSync.value
191
+ }
192
+ @inline(__always)
193
+ set {
194
+ self.__queryMemoryDataSync = { () -> bridge.std__optional_bool_ in
195
+ if let __unwrappedValue = newValue {
196
+ return bridge.create_std__optional_bool_(__unwrappedValue)
197
+ } else {
198
+ return .init()
199
+ }
200
+ }()
201
+ }
202
+ }
203
+
204
+ var queryDiskDataSync: Bool? {
205
+ @inline(__always)
206
+ get {
207
+ return self.__queryDiskDataSync.value
208
+ }
209
+ @inline(__always)
210
+ set {
211
+ self.__queryDiskDataSync = { () -> bridge.std__optional_bool_ in
212
+ if let __unwrappedValue = newValue {
213
+ return bridge.create_std__optional_bool_(__unwrappedValue)
214
+ } else {
215
+ return .init()
216
+ }
217
+ }()
218
+ }
219
+ }
220
+
221
+ var decodeImage: Bool? {
222
+ @inline(__always)
223
+ get {
224
+ return self.__decodeImage.value
225
+ }
226
+ @inline(__always)
227
+ set {
228
+ self.__decodeImage = { () -> bridge.std__optional_bool_ in
229
+ if let __unwrappedValue = newValue {
230
+ return bridge.create_std__optional_bool_(__unwrappedValue)
231
+ } else {
232
+ return .init()
233
+ }
234
+ }()
235
+ }
236
+ }
237
+ }