react-native-nitro-player 1.4.3 → 1.5.0-alpha.0

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/NitroPlayer.podspec +6 -0
  2. package/README.md +113 -0
  3. package/android/build.gradle +8 -0
  4. package/android/src/main/AndroidManifest.xml +11 -0
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridCast.kt +79 -0
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ExoPlayerCore.kt +10 -7
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCast.kt +122 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +13 -0
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerSetup.kt +7 -0
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/CastSessionController.kt +160 -0
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/NitroCastConfig.kt +23 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/NitroCastOptionsProvider.kt +30 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/NitroMediaItemConverter.kt +53 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/PlaybackService.kt +33 -0
  15. package/ios/HybridCast.swift +63 -0
  16. package/ios/core/CastSessionManager.swift +367 -0
  17. package/ios/core/TrackPlayerCast.swift +109 -0
  18. package/ios/core/TrackPlayerCore.swift +28 -2
  19. package/ios/core/TrackPlayerPlayback.swift +32 -0
  20. package/ios/core/TrackPlayerQueue.swift +8 -1
  21. package/ios/core/TrackPlayerQueueBuild.swift +37 -2
  22. package/ios/core/TrackPlayerRedirectResolver.swift +150 -0
  23. package/lib/components/CastButton.d.ts +44 -0
  24. package/lib/components/CastButton.js +100 -0
  25. package/lib/hooks/castCallbackManager.d.ts +19 -0
  26. package/lib/hooks/castCallbackManager.js +43 -0
  27. package/lib/hooks/index.d.ts +3 -0
  28. package/lib/hooks/index.js +3 -0
  29. package/lib/hooks/useCastState.d.ts +27 -0
  30. package/lib/hooks/useCastState.js +49 -0
  31. package/lib/hooks/useIsCasting.d.ts +17 -0
  32. package/lib/hooks/useIsCasting.js +43 -0
  33. package/lib/index.d.ts +5 -0
  34. package/lib/index.js +4 -1
  35. package/lib/specs/Cast.nitro.d.ts +58 -0
  36. package/lib/specs/Cast.nitro.js +1 -0
  37. package/nitro.json +10 -0
  38. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +3 -1
  39. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +18 -0
  40. package/nitrogen/generated/android/c++/JCastState.hpp +64 -0
  41. package/nitrogen/generated/android/c++/JFunc_void_CastState_std__optional_std__variant_nitro__NullType__std__string__.hpp +83 -0
  42. package/nitrogen/generated/android/c++/JHybridCastSpec.cpp +115 -0
  43. package/nitrogen/generated/android/c++/JHybridCastSpec.hpp +69 -0
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CastState.kt +25 -0
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__.kt +80 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridCastSpec.kt +85 -0
  47. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +38 -13
  48. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +176 -125
  49. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +8 -0
  50. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +8 -0
  51. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +12 -0
  52. package/nitrogen/generated/ios/c++/HybridCastSpecSwift.cpp +11 -0
  53. package/nitrogen/generated/ios/c++/HybridCastSpecSwift.hpp +133 -0
  54. package/nitrogen/generated/ios/swift/CastState.swift +48 -0
  55. package/nitrogen/generated/ios/swift/Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__.swift +65 -0
  56. package/nitrogen/generated/ios/swift/HybridCastSpec.swift +61 -0
  57. package/nitrogen/generated/ios/swift/HybridCastSpec_cxx.swift +254 -0
  58. package/nitrogen/generated/shared/c++/CastState.hpp +84 -0
  59. package/nitrogen/generated/shared/c++/HybridCastSpec.cpp +27 -0
  60. package/nitrogen/generated/shared/c++/HybridCastSpec.hpp +75 -0
  61. package/package.json +3 -3
  62. package/src/components/CastButton.tsx +196 -0
  63. package/src/hooks/castCallbackManager.ts +55 -0
  64. package/src/hooks/index.ts +5 -0
  65. package/src/hooks/useCastState.ts +67 -0
  66. package/src/hooks/useIsCasting.ts +47 -0
  67. package/src/index.ts +9 -0
  68. package/src/specs/Cast.nitro.ts +72 -0
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.nitroplayer
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
14
+ import com.margelo.nitro.core.NullType
15
+
16
+ /**
17
+ * Represents the JavaScript callback `(state: enum, deviceName: optional) => void`.
18
+ * This can be either implemented in C++ (in which case it might be a callback coming from JS),
19
+ * or in Kotlin/Java (in which case it is a native callback).
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress("ClassName", "RedundantUnitReturnType")
24
+ fun interface Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__: (CastState, Variant_NullType_String?) -> Unit {
25
+ /**
26
+ * Call the given JS callback.
27
+ * @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
28
+ */
29
+ @DoNotStrip
30
+ @Keep
31
+ override fun invoke(state: CastState, deviceName: Variant_NullType_String?): Unit
32
+ }
33
+
34
+ /**
35
+ * Represents the JavaScript callback `(state: enum, deviceName: optional) => void`.
36
+ * This is implemented in C++, via a `std::function<...>`.
37
+ * The callback might be coming from JS.
38
+ */
39
+ @DoNotStrip
40
+ @Keep
41
+ @Suppress(
42
+ "KotlinJniMissingFunction", "unused",
43
+ "RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
44
+ "ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
45
+ )
46
+ class Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string___cxx: Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__ {
47
+ @DoNotStrip
48
+ @Keep
49
+ private val mHybridData: HybridData
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ private constructor(hybridData: HybridData) {
54
+ mHybridData = hybridData
55
+ }
56
+
57
+ @DoNotStrip
58
+ @Keep
59
+ override fun invoke(state: CastState, deviceName: Variant_NullType_String?): Unit
60
+ = invoke_cxx(state,deviceName)
61
+
62
+ @FastNative
63
+ private external fun invoke_cxx(state: CastState, deviceName: Variant_NullType_String?): Unit
64
+ }
65
+
66
+ /**
67
+ * Represents the JavaScript callback `(state: enum, deviceName: optional) => void`.
68
+ * This is implemented in Java/Kotlin, via a `(CastState, Variant_NullType_String?) -> Unit`.
69
+ * The callback is always coming from native.
70
+ */
71
+ @DoNotStrip
72
+ @Keep
73
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
74
+ class Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string___java(private val function: (CastState, Variant_NullType_String?) -> Unit): Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__ {
75
+ @DoNotStrip
76
+ @Keep
77
+ override fun invoke(state: CastState, deviceName: Variant_NullType_String?): Unit {
78
+ return this.function(state, deviceName)
79
+ }
80
+ }
@@ -0,0 +1,85 @@
1
+ ///
2
+ /// HybridCastSpec.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.nitroplayer
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import com.margelo.nitro.core.Promise
14
+ import com.margelo.nitro.core.NullType
15
+ import com.margelo.nitro.core.HybridObject
16
+
17
+ /**
18
+ * A Kotlin class representing the Cast HybridObject.
19
+ * Implement this abstract class to create Kotlin-based instances of Cast.
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress(
24
+ "KotlinJniMissingFunction", "unused",
25
+ "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
26
+ "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
27
+ )
28
+ abstract class HybridCastSpec: HybridObject() {
29
+ // Properties
30
+
31
+
32
+ // Methods
33
+ @DoNotStrip
34
+ @Keep
35
+ abstract fun configure(receiverApplicationId: String?): Promise<Unit>
36
+
37
+ @DoNotStrip
38
+ @Keep
39
+ abstract fun isCasting(): Boolean
40
+
41
+ @DoNotStrip
42
+ @Keep
43
+ abstract fun getCastState(): CastState
44
+
45
+ @DoNotStrip
46
+ @Keep
47
+ abstract fun getCastDeviceName(): Variant_NullType_String
48
+
49
+ @DoNotStrip
50
+ @Keep
51
+ abstract fun showCastPicker(): Unit
52
+
53
+ @DoNotStrip
54
+ @Keep
55
+ abstract fun endCastSession(): Promise<Unit>
56
+
57
+ abstract fun onCastStateChange(callback: (state: CastState, deviceName: Variant_NullType_String?) -> Unit): Unit
58
+
59
+ @DoNotStrip
60
+ @Keep
61
+ private fun onCastStateChange_cxx(callback: Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__): Unit {
62
+ val __result = onCastStateChange(callback)
63
+ return __result
64
+ }
65
+
66
+ // Default implementation of `HybridObject.toString()`
67
+ override fun toString(): String {
68
+ return "[HybridObject Cast]"
69
+ }
70
+
71
+ // C++ backing class
72
+ @DoNotStrip
73
+ @Keep
74
+ protected open class CxxPart(javaPart: HybridCastSpec): HybridObject.CxxPart(javaPart) {
75
+ // C++ JHybridCastSpec::CxxPart::initHybrid(...)
76
+ external override fun initHybrid(): HybridData
77
+ }
78
+ override fun createCxxPart(): CxxPart {
79
+ return CxxPart(this)
80
+ }
81
+
82
+ companion object {
83
+ protected const val TAG = "HybridCastSpec"
84
+ }
85
+ }
@@ -9,6 +9,7 @@
9
9
 
10
10
  // Include C++ implementation defined types
11
11
  #include "HybridAudioRoutePickerSpecSwift.hpp"
12
+ #include "HybridCastSpecSwift.hpp"
12
13
  #include "HybridDownloadManagerSpecSwift.hpp"
13
14
  #include "HybridEqualizerSpecSwift.hpp"
14
15
  #include "HybridPlayerQueueSpecSwift.hpp"
@@ -34,11 +35,11 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
34
35
  return swiftPart.toUnsafe();
35
36
  }
36
37
 
37
- // pragma MARK: std::function<void(const std::string& /* result */)>
38
- Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
39
- auto swiftClosure = NitroPlayer::Func_void_std__string::fromUnsafe(swiftClosureWrapper);
40
- return [swiftClosure = std::move(swiftClosure)](const std::string& result) mutable -> void {
41
- swiftClosure.call(result);
38
+ // pragma MARK: std::function<void()>
39
+ Func_void create_Func_void(void* NON_NULL swiftClosureWrapper) noexcept {
40
+ auto swiftClosure = NitroPlayer::Func_void::fromUnsafe(swiftClosureWrapper);
41
+ return [swiftClosure = std::move(swiftClosure)]() mutable -> void {
42
+ swiftClosure.call();
42
43
  };
43
44
  }
44
45
 
@@ -50,6 +51,38 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
50
51
  };
51
52
  }
52
53
 
54
+ // pragma MARK: std::function<void(CastState /* state */, const std::optional<std::variant<nitro::NullType, std::string>>& /* deviceName */)>
55
+ Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__ create_Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__(void* NON_NULL swiftClosureWrapper) noexcept {
56
+ auto swiftClosure = NitroPlayer::Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__::fromUnsafe(swiftClosureWrapper);
57
+ return [swiftClosure = std::move(swiftClosure)](CastState state, const std::optional<std::variant<nitro::NullType, std::string>>& deviceName) mutable -> void {
58
+ swiftClosure.call(static_cast<int>(state), deviceName);
59
+ };
60
+ }
61
+
62
+ // pragma MARK: std::shared_ptr<HybridCastSpec>
63
+ std::shared_ptr<HybridCastSpec> create_std__shared_ptr_HybridCastSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
64
+ NitroPlayer::HybridCastSpec_cxx swiftPart = NitroPlayer::HybridCastSpec_cxx::fromUnsafe(swiftUnsafePointer);
65
+ return std::make_shared<margelo::nitro::nitroplayer::HybridCastSpecSwift>(swiftPart);
66
+ }
67
+ void* NON_NULL get_std__shared_ptr_HybridCastSpec_(std__shared_ptr_HybridCastSpec_ cppType) {
68
+ std::shared_ptr<margelo::nitro::nitroplayer::HybridCastSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::nitroplayer::HybridCastSpecSwift>(cppType);
69
+ #ifdef NITRO_DEBUG
70
+ if (swiftWrapper == nullptr) [[unlikely]] {
71
+ throw std::runtime_error("Class \"HybridCastSpec\" is not implemented in Swift!");
72
+ }
73
+ #endif
74
+ NitroPlayer::HybridCastSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
75
+ return swiftPart.toUnsafe();
76
+ }
77
+
78
+ // pragma MARK: std::function<void(const std::string& /* result */)>
79
+ Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
80
+ auto swiftClosure = NitroPlayer::Func_void_std__string::fromUnsafe(swiftClosureWrapper);
81
+ return [swiftClosure = std::move(swiftClosure)](const std::string& result) mutable -> void {
82
+ swiftClosure.call(result);
83
+ };
84
+ }
85
+
53
86
  // pragma MARK: std::function<void(const std::vector<std::string>& /* result */)>
54
87
  Func_void_std__vector_std__string_ create_Func_void_std__vector_std__string_(void* NON_NULL swiftClosureWrapper) noexcept {
55
88
  auto swiftClosure = NitroPlayer::Func_void_std__vector_std__string_::fromUnsafe(swiftClosureWrapper);
@@ -58,14 +91,6 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
58
91
  };
59
92
  }
60
93
 
61
- // pragma MARK: std::function<void()>
62
- Func_void create_Func_void(void* NON_NULL swiftClosureWrapper) noexcept {
63
- auto swiftClosure = NitroPlayer::Func_void::fromUnsafe(swiftClosureWrapper);
64
- return [swiftClosure = std::move(swiftClosure)]() mutable -> void {
65
- swiftClosure.call();
66
- };
67
- }
68
-
69
94
  // pragma MARK: std::function<void(bool /* result */)>
70
95
  Func_void_bool create_Func_void_bool(void* NON_NULL swiftClosureWrapper) noexcept {
71
96
  auto swiftClosure = NitroPlayer::Func_void_bool::fromUnsafe(swiftClosureWrapper);
@@ -8,6 +8,8 @@
8
8
  #pragma once
9
9
 
10
10
  // Forward declarations of C++ defined types
11
+ // Forward declaration of `CastState` to properly resolve imports.
12
+ namespace margelo::nitro::nitroplayer { enum class CastState; }
11
13
  // Forward declaration of `CurrentPlayingType` to properly resolve imports.
12
14
  namespace margelo::nitro::nitroplayer { enum class CurrentPlayingType; }
13
15
  // Forward declaration of `DownloadConfig` to properly resolve imports.
@@ -40,6 +42,8 @@ namespace margelo::nitro::nitroplayer { struct EqualizerState; }
40
42
  namespace margelo::nitro::nitroplayer { struct GainRange; }
41
43
  // Forward declaration of `HybridAudioRoutePickerSpec` to properly resolve imports.
42
44
  namespace margelo::nitro::nitroplayer { class HybridAudioRoutePickerSpec; }
45
+ // Forward declaration of `HybridCastSpec` to properly resolve imports.
46
+ namespace margelo::nitro::nitroplayer { class HybridCastSpec; }
43
47
  // Forward declaration of `HybridDownloadManagerSpec` to properly resolve imports.
44
48
  namespace margelo::nitro::nitroplayer { class HybridDownloadManagerSpec; }
45
49
  // Forward declaration of `HybridEqualizerSpec` to properly resolve imports.
@@ -72,6 +76,8 @@ namespace margelo::nitro::nitroplayer { enum class TrackPlayerState; }
72
76
  // Forward declarations of Swift defined types
73
77
  // Forward declaration of `HybridAudioRoutePickerSpec_cxx` to properly resolve imports.
74
78
  namespace NitroPlayer { class HybridAudioRoutePickerSpec_cxx; }
79
+ // Forward declaration of `HybridCastSpec_cxx` to properly resolve imports.
80
+ namespace NitroPlayer { class HybridCastSpec_cxx; }
75
81
  // Forward declaration of `HybridDownloadManagerSpec_cxx` to properly resolve imports.
76
82
  namespace NitroPlayer { class HybridDownloadManagerSpec_cxx; }
77
83
  // Forward declaration of `HybridEqualizerSpec_cxx` to properly resolve imports.
@@ -82,6 +88,7 @@ namespace NitroPlayer { class HybridPlayerQueueSpec_cxx; }
82
88
  namespace NitroPlayer { class HybridTrackPlayerSpec_cxx; }
83
89
 
84
90
  // Include C++ defined types
91
+ #include "CastState.hpp"
85
92
  #include "CurrentPlayingType.hpp"
86
93
  #include "DownloadConfig.hpp"
87
94
  #include "DownloadError.hpp"
@@ -98,6 +105,7 @@ namespace NitroPlayer { class HybridTrackPlayerSpec_cxx; }
98
105
  #include "EqualizerState.hpp"
99
106
  #include "GainRange.hpp"
100
107
  #include "HybridAudioRoutePickerSpec.hpp"
108
+ #include "HybridCastSpec.hpp"
101
109
  #include "HybridDownloadManagerSpec.hpp"
102
110
  #include "HybridEqualizerSpec.hpp"
103
111
  #include "HybridPlayerQueueSpec.hpp"
@@ -152,48 +160,74 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
152
160
  return Result<void>::withError(error);
153
161
  }
154
162
 
155
- // pragma MARK: std::optional<StorageLocation>
163
+ // pragma MARK: std::shared_ptr<Promise<void>>
156
164
  /**
157
- * Specialized version of `std::optional<StorageLocation>`.
165
+ * Specialized version of `std::shared_ptr<Promise<void>>`.
158
166
  */
159
- using std__optional_StorageLocation_ = std::optional<StorageLocation>;
160
- inline std::optional<StorageLocation> create_std__optional_StorageLocation_(const StorageLocation& value) noexcept {
161
- return std::optional<StorageLocation>(value);
162
- }
163
- inline bool has_value_std__optional_StorageLocation_(const std::optional<StorageLocation>& optional) noexcept {
164
- return optional.has_value();
167
+ using std__shared_ptr_Promise_void__ = std::shared_ptr<Promise<void>>;
168
+ inline std::shared_ptr<Promise<void>> create_std__shared_ptr_Promise_void__() noexcept {
169
+ return Promise<void>::create();
165
170
  }
166
- inline StorageLocation get_std__optional_StorageLocation_(const std::optional<StorageLocation>& optional) noexcept {
167
- return optional.value();
171
+ inline PromiseHolder<void> wrap_std__shared_ptr_Promise_void__(std::shared_ptr<Promise<void>> promise) noexcept {
172
+ return PromiseHolder<void>(std::move(promise));
168
173
  }
169
174
 
170
- // pragma MARK: std::optional<double>
175
+ // pragma MARK: std::function<void()>
171
176
  /**
172
- * Specialized version of `std::optional<double>`.
177
+ * Specialized version of `std::function<void()>`.
173
178
  */
174
- using std__optional_double_ = std::optional<double>;
175
- inline std::optional<double> create_std__optional_double_(const double& value) noexcept {
176
- return std::optional<double>(value);
177
- }
178
- inline bool has_value_std__optional_double_(const std::optional<double>& optional) noexcept {
179
- return optional.has_value();
179
+ using Func_void = std::function<void()>;
180
+ /**
181
+ * Wrapper class for a `std::function<void()>`, this can be used from Swift.
182
+ */
183
+ class Func_void_Wrapper final {
184
+ public:
185
+ explicit Func_void_Wrapper(std::function<void()>&& func): _function(std::make_unique<std::function<void()>>(std::move(func))) {}
186
+ inline void call() const noexcept {
187
+ _function->operator()();
188
+ }
189
+ private:
190
+ std::unique_ptr<std::function<void()>> _function;
191
+ } SWIFT_NONCOPYABLE;
192
+ Func_void create_Func_void(void* NON_NULL swiftClosureWrapper) noexcept;
193
+ inline Func_void_Wrapper wrap_Func_void(Func_void value) noexcept {
194
+ return Func_void_Wrapper(std::move(value));
180
195
  }
181
- inline double get_std__optional_double_(const std::optional<double>& optional) noexcept {
182
- return optional.value();
196
+
197
+ // pragma MARK: std::function<void(const std::exception_ptr& /* error */)>
198
+ /**
199
+ * Specialized version of `std::function<void(const std::exception_ptr&)>`.
200
+ */
201
+ using Func_void_std__exception_ptr = std::function<void(const std::exception_ptr& /* error */)>;
202
+ /**
203
+ * Wrapper class for a `std::function<void(const std::exception_ptr& / * error * /)>`, this can be used from Swift.
204
+ */
205
+ class Func_void_std__exception_ptr_Wrapper final {
206
+ public:
207
+ 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))) {}
208
+ inline void call(std::exception_ptr error) const noexcept {
209
+ _function->operator()(error);
210
+ }
211
+ private:
212
+ std::unique_ptr<std::function<void(const std::exception_ptr& /* error */)>> _function;
213
+ } SWIFT_NONCOPYABLE;
214
+ Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept;
215
+ inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) noexcept {
216
+ return Func_void_std__exception_ptr_Wrapper(std::move(value));
183
217
  }
184
218
 
185
- // pragma MARK: std::optional<bool>
219
+ // pragma MARK: std::optional<std::string>
186
220
  /**
187
- * Specialized version of `std::optional<bool>`.
221
+ * Specialized version of `std::optional<std::string>`.
188
222
  */
189
- using std__optional_bool_ = std::optional<bool>;
190
- inline std::optional<bool> create_std__optional_bool_(const bool& value) noexcept {
191
- return std::optional<bool>(value);
223
+ using std__optional_std__string_ = std::optional<std::string>;
224
+ inline std::optional<std::string> create_std__optional_std__string_(const std::string& value) noexcept {
225
+ return std::optional<std::string>(value);
192
226
  }
193
- inline bool has_value_std__optional_bool_(const std::optional<bool>& optional) noexcept {
227
+ inline bool has_value_std__optional_std__string_(const std::optional<std::string>& optional) noexcept {
194
228
  return optional.has_value();
195
229
  }
196
- inline bool get_std__optional_bool_(const std::optional<bool>& optional) noexcept {
230
+ inline std::string get_std__optional_std__string_(const std::optional<std::string>& optional) noexcept {
197
231
  return optional.value();
198
232
  }
199
233
 
@@ -241,6 +275,121 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
241
275
  return optional.value();
242
276
  }
243
277
 
278
+ // pragma MARK: std::function<void(CastState /* state */, const std::optional<std::variant<nitro::NullType, std::string>>& /* deviceName */)>
279
+ /**
280
+ * Specialized version of `std::function<void(CastState, const std::optional<std::variant<nitro::NullType, std::string>>&)>`.
281
+ */
282
+ using Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__ = std::function<void(CastState /* state */, const std::optional<std::variant<nitro::NullType, std::string>>& /* deviceName */)>;
283
+ /**
284
+ * Wrapper class for a `std::function<void(CastState / * state * /, const std::optional<std::variant<nitro::NullType, std::string>>& / * deviceName * /)>`, this can be used from Swift.
285
+ */
286
+ class Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string___Wrapper final {
287
+ public:
288
+ explicit Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string___Wrapper(std::function<void(CastState /* state */, const std::optional<std::variant<nitro::NullType, std::string>>& /* deviceName */)>&& func): _function(std::make_unique<std::function<void(CastState /* state */, const std::optional<std::variant<nitro::NullType, std::string>>& /* deviceName */)>>(std::move(func))) {}
289
+ inline void call(int state, std::optional<std::variant<nitro::NullType, std::string>> deviceName) const noexcept {
290
+ _function->operator()(static_cast<CastState>(state), deviceName);
291
+ }
292
+ private:
293
+ std::unique_ptr<std::function<void(CastState /* state */, const std::optional<std::variant<nitro::NullType, std::string>>& /* deviceName */)>> _function;
294
+ } SWIFT_NONCOPYABLE;
295
+ Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__ create_Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__(void* NON_NULL swiftClosureWrapper) noexcept;
296
+ inline Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string___Wrapper wrap_Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__(Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string__ value) noexcept {
297
+ return Func_void_CastState_std__optional_std__variant_nitro__NullType__std__string___Wrapper(std::move(value));
298
+ }
299
+
300
+ // pragma MARK: std::shared_ptr<HybridCastSpec>
301
+ /**
302
+ * Specialized version of `std::shared_ptr<HybridCastSpec>`.
303
+ */
304
+ using std__shared_ptr_HybridCastSpec_ = std::shared_ptr<HybridCastSpec>;
305
+ std::shared_ptr<HybridCastSpec> create_std__shared_ptr_HybridCastSpec_(void* NON_NULL swiftUnsafePointer) noexcept;
306
+ void* NON_NULL get_std__shared_ptr_HybridCastSpec_(std__shared_ptr_HybridCastSpec_ cppType);
307
+
308
+ // pragma MARK: std::weak_ptr<HybridCastSpec>
309
+ using std__weak_ptr_HybridCastSpec_ = std::weak_ptr<HybridCastSpec>;
310
+ inline std__weak_ptr_HybridCastSpec_ weakify_std__shared_ptr_HybridCastSpec_(const std::shared_ptr<HybridCastSpec>& strong) noexcept { return strong; }
311
+
312
+ // pragma MARK: Result<std::shared_ptr<Promise<void>>>
313
+ using Result_std__shared_ptr_Promise_void___ = Result<std::shared_ptr<Promise<void>>>;
314
+ inline Result_std__shared_ptr_Promise_void___ create_Result_std__shared_ptr_Promise_void___(const std::shared_ptr<Promise<void>>& value) noexcept {
315
+ return Result<std::shared_ptr<Promise<void>>>::withValue(value);
316
+ }
317
+ inline Result_std__shared_ptr_Promise_void___ create_Result_std__shared_ptr_Promise_void___(const std::exception_ptr& error) noexcept {
318
+ return Result<std::shared_ptr<Promise<void>>>::withError(error);
319
+ }
320
+
321
+ // pragma MARK: Result<bool>
322
+ using Result_bool_ = Result<bool>;
323
+ inline Result_bool_ create_Result_bool_(bool value) noexcept {
324
+ return Result<bool>::withValue(std::move(value));
325
+ }
326
+ inline Result_bool_ create_Result_bool_(const std::exception_ptr& error) noexcept {
327
+ return Result<bool>::withError(error);
328
+ }
329
+
330
+ // pragma MARK: Result<CastState>
331
+ using Result_CastState_ = Result<CastState>;
332
+ inline Result_CastState_ create_Result_CastState_(CastState value) noexcept {
333
+ return Result<CastState>::withValue(std::move(value));
334
+ }
335
+ inline Result_CastState_ create_Result_CastState_(const std::exception_ptr& error) noexcept {
336
+ return Result<CastState>::withError(error);
337
+ }
338
+
339
+ // pragma MARK: Result<std::variant<nitro::NullType, std::string>>
340
+ using Result_std__variant_nitro__NullType__std__string__ = Result<std::variant<nitro::NullType, std::string>>;
341
+ inline Result_std__variant_nitro__NullType__std__string__ create_Result_std__variant_nitro__NullType__std__string__(const std::variant<nitro::NullType, std::string>& value) noexcept {
342
+ return Result<std::variant<nitro::NullType, std::string>>::withValue(value);
343
+ }
344
+ inline Result_std__variant_nitro__NullType__std__string__ create_Result_std__variant_nitro__NullType__std__string__(const std::exception_ptr& error) noexcept {
345
+ return Result<std::variant<nitro::NullType, std::string>>::withError(error);
346
+ }
347
+
348
+ // pragma MARK: std::optional<StorageLocation>
349
+ /**
350
+ * Specialized version of `std::optional<StorageLocation>`.
351
+ */
352
+ using std__optional_StorageLocation_ = std::optional<StorageLocation>;
353
+ inline std::optional<StorageLocation> create_std__optional_StorageLocation_(const StorageLocation& value) noexcept {
354
+ return std::optional<StorageLocation>(value);
355
+ }
356
+ inline bool has_value_std__optional_StorageLocation_(const std::optional<StorageLocation>& optional) noexcept {
357
+ return optional.has_value();
358
+ }
359
+ inline StorageLocation get_std__optional_StorageLocation_(const std::optional<StorageLocation>& optional) noexcept {
360
+ return optional.value();
361
+ }
362
+
363
+ // pragma MARK: std::optional<double>
364
+ /**
365
+ * Specialized version of `std::optional<double>`.
366
+ */
367
+ using std__optional_double_ = std::optional<double>;
368
+ inline std::optional<double> create_std__optional_double_(const double& value) noexcept {
369
+ return std::optional<double>(value);
370
+ }
371
+ inline bool has_value_std__optional_double_(const std::optional<double>& optional) noexcept {
372
+ return optional.has_value();
373
+ }
374
+ inline double get_std__optional_double_(const std::optional<double>& optional) noexcept {
375
+ return optional.value();
376
+ }
377
+
378
+ // pragma MARK: std::optional<bool>
379
+ /**
380
+ * Specialized version of `std::optional<bool>`.
381
+ */
382
+ using std__optional_bool_ = std::optional<bool>;
383
+ inline std::optional<bool> create_std__optional_bool_(const bool& value) noexcept {
384
+ return std::optional<bool>(value);
385
+ }
386
+ inline bool has_value_std__optional_bool_(const std::optional<bool>& optional) noexcept {
387
+ return optional.has_value();
388
+ }
389
+ inline bool get_std__optional_bool_(const std::optional<bool>& optional) noexcept {
390
+ return optional.value();
391
+ }
392
+
244
393
  // pragma MARK: std::shared_ptr<Promise<std::string>>
245
394
  /**
246
395
  * Specialized version of `std::shared_ptr<Promise<std::string>>`.
@@ -275,28 +424,6 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
275
424
  return Func_void_std__string_Wrapper(std::move(value));
276
425
  }
277
426
 
278
- // pragma MARK: std::function<void(const std::exception_ptr& /* error */)>
279
- /**
280
- * Specialized version of `std::function<void(const std::exception_ptr&)>`.
281
- */
282
- using Func_void_std__exception_ptr = std::function<void(const std::exception_ptr& /* error */)>;
283
- /**
284
- * Wrapper class for a `std::function<void(const std::exception_ptr& / * error * /)>`, this can be used from Swift.
285
- */
286
- class Func_void_std__exception_ptr_Wrapper final {
287
- public:
288
- 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))) {}
289
- inline void call(std::exception_ptr error) const noexcept {
290
- _function->operator()(error);
291
- }
292
- private:
293
- std::unique_ptr<std::function<void(const std::exception_ptr& /* error */)>> _function;
294
- } SWIFT_NONCOPYABLE;
295
- Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept;
296
- inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) noexcept {
297
- return Func_void_std__exception_ptr_Wrapper(std::move(value));
298
- }
299
-
300
427
  // pragma MARK: std::optional<std::shared_ptr<AnyMap>>
301
428
  /**
302
429
  * Specialized version of `std::optional<std::shared_ptr<AnyMap>>`.
@@ -312,21 +439,6 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
312
439
  return optional.value();
313
440
  }
314
441
 
315
- // pragma MARK: std::optional<std::string>
316
- /**
317
- * Specialized version of `std::optional<std::string>`.
318
- */
319
- using std__optional_std__string_ = std::optional<std::string>;
320
- inline std::optional<std::string> create_std__optional_std__string_(const std::string& value) noexcept {
321
- return std::optional<std::string>(value);
322
- }
323
- inline bool has_value_std__optional_std__string_(const std::optional<std::string>& optional) noexcept {
324
- return optional.has_value();
325
- }
326
- inline std::string get_std__optional_std__string_(const std::optional<std::string>& optional) noexcept {
327
- return optional.value();
328
- }
329
-
330
442
  // pragma MARK: std::vector<std::string>
331
443
  /**
332
444
  * Specialized version of `std::vector<std::string>`.
@@ -383,40 +495,6 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
383
495
  return vector;
384
496
  }
385
497
 
386
- // pragma MARK: std::shared_ptr<Promise<void>>
387
- /**
388
- * Specialized version of `std::shared_ptr<Promise<void>>`.
389
- */
390
- using std__shared_ptr_Promise_void__ = std::shared_ptr<Promise<void>>;
391
- inline std::shared_ptr<Promise<void>> create_std__shared_ptr_Promise_void__() noexcept {
392
- return Promise<void>::create();
393
- }
394
- inline PromiseHolder<void> wrap_std__shared_ptr_Promise_void__(std::shared_ptr<Promise<void>> promise) noexcept {
395
- return PromiseHolder<void>(std::move(promise));
396
- }
397
-
398
- // pragma MARK: std::function<void()>
399
- /**
400
- * Specialized version of `std::function<void()>`.
401
- */
402
- using Func_void = std::function<void()>;
403
- /**
404
- * Wrapper class for a `std::function<void()>`, this can be used from Swift.
405
- */
406
- class Func_void_Wrapper final {
407
- public:
408
- explicit Func_void_Wrapper(std::function<void()>&& func): _function(std::make_unique<std::function<void()>>(std::move(func))) {}
409
- inline void call() const noexcept {
410
- _function->operator()();
411
- }
412
- private:
413
- std::unique_ptr<std::function<void()>> _function;
414
- } SWIFT_NONCOPYABLE;
415
- Func_void create_Func_void(void* NON_NULL swiftClosureWrapper) noexcept;
416
- inline Func_void_Wrapper wrap_Func_void(Func_void value) noexcept {
417
- return Func_void_Wrapper(std::move(value));
418
- }
419
-
420
498
  // pragma MARK: std::variant<nitro::NullType, double>
421
499
  /**
422
500
  * Wrapper struct for `std::variant<nitro::NullType, double>`.
@@ -1017,15 +1095,6 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
1017
1095
  return Result<std::shared_ptr<Promise<std::vector<std::string>>>>::withError(error);
1018
1096
  }
1019
1097
 
1020
- // pragma MARK: Result<std::shared_ptr<Promise<void>>>
1021
- using Result_std__shared_ptr_Promise_void___ = Result<std::shared_ptr<Promise<void>>>;
1022
- inline Result_std__shared_ptr_Promise_void___ create_Result_std__shared_ptr_Promise_void___(const std::shared_ptr<Promise<void>>& value) noexcept {
1023
- return Result<std::shared_ptr<Promise<void>>>::withValue(value);
1024
- }
1025
- inline Result_std__shared_ptr_Promise_void___ create_Result_std__shared_ptr_Promise_void___(const std::exception_ptr& error) noexcept {
1026
- return Result<std::shared_ptr<Promise<void>>>::withError(error);
1027
- }
1028
-
1029
1098
  // pragma MARK: Result<std::variant<nitro::NullType, DownloadTask>>
1030
1099
  using Result_std__variant_nitro__NullType__DownloadTask__ = Result<std::variant<nitro::NullType, DownloadTask>>;
1031
1100
  inline Result_std__variant_nitro__NullType__DownloadTask__ create_Result_std__variant_nitro__NullType__DownloadTask__(const std::variant<nitro::NullType, DownloadTask>& value) noexcept {
@@ -1053,15 +1122,6 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
1053
1122
  return Result<DownloadQueueStatus>::withError(error);
1054
1123
  }
1055
1124
 
1056
- // pragma MARK: Result<bool>
1057
- using Result_bool_ = Result<bool>;
1058
- inline Result_bool_ create_Result_bool_(bool value) noexcept {
1059
- return Result<bool>::withValue(std::move(value));
1060
- }
1061
- inline Result_bool_ create_Result_bool_(const std::exception_ptr& error) noexcept {
1062
- return Result<bool>::withError(error);
1063
- }
1064
-
1065
1125
  // pragma MARK: Result<DownloadState>
1066
1126
  using Result_DownloadState_ = Result<DownloadState>;
1067
1127
  inline Result_DownloadState_ create_Result_DownloadState_(DownloadState value) noexcept {
@@ -1314,15 +1374,6 @@ namespace margelo::nitro::nitroplayer::bridge::swift {
1314
1374
  return Result<std::vector<EqualizerPreset>>::withError(error);
1315
1375
  }
1316
1376
 
1317
- // pragma MARK: Result<std::variant<nitro::NullType, std::string>>
1318
- using Result_std__variant_nitro__NullType__std__string__ = Result<std::variant<nitro::NullType, std::string>>;
1319
- inline Result_std__variant_nitro__NullType__std__string__ create_Result_std__variant_nitro__NullType__std__string__(const std::variant<nitro::NullType, std::string>& value) noexcept {
1320
- return Result<std::variant<nitro::NullType, std::string>>::withValue(value);
1321
- }
1322
- inline Result_std__variant_nitro__NullType__std__string__ create_Result_std__variant_nitro__NullType__std__string__(const std::exception_ptr& error) noexcept {
1323
- return Result<std::variant<nitro::NullType, std::string>>::withError(error);
1324
- }
1325
-
1326
1377
  // pragma MARK: Result<std::shared_ptr<Promise<EqualizerState>>>
1327
1378
  using Result_std__shared_ptr_Promise_EqualizerState___ = Result<std::shared_ptr<Promise<EqualizerState>>>;
1328
1379
  inline Result_std__shared_ptr_Promise_EqualizerState___ create_Result_std__shared_ptr_Promise_EqualizerState___(const std::shared_ptr<Promise<EqualizerState>>& value) noexcept {