react-native-nitro-player 0.0.1

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 (191) hide show
  1. package/NitroPlayer.podspec +31 -0
  2. package/README.md +610 -0
  3. package/android/CMakeLists.txt +29 -0
  4. package/android/build.gradle +147 -0
  5. package/android/fix-prefab.gradle +51 -0
  6. package/android/gradle.properties +5 -0
  7. package/android/src/main/AndroidManifest.xml +2 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +7 -0
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +29 -0
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +116 -0
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +167 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +93 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/NitroPlayerPackage.kt +21 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/connection/AndroidAutoConnectionDetector.kt +171 -0
  15. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +639 -0
  16. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaBrowserService.kt +352 -0
  17. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaLibrary.kt +58 -0
  18. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaLibraryManager.kt +77 -0
  19. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaLibraryParser.kt +73 -0
  20. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +506 -0
  21. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/Playlist.kt +21 -0
  22. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +454 -0
  23. package/android/src/main/java/com/margelo/nitro/nitroplayer/queue/Queue.kt +94 -0
  24. package/android/src/main/java/com/margelo/nitro/nitroplayer/queue/QueueManager.kt +143 -0
  25. package/ios/HybridAudioRoutePicker.swift +53 -0
  26. package/ios/HybridTrackPlayer.swift +100 -0
  27. package/ios/core/TrackPlayerCore.swift +1040 -0
  28. package/ios/media/MediaSessionManager.swift +230 -0
  29. package/ios/playlist/PlaylistManager.swift +446 -0
  30. package/ios/playlist/PlaylistModel.swift +49 -0
  31. package/ios/queue/HybridPlayerQueue.swift +95 -0
  32. package/ios/queue/Queue.swift +126 -0
  33. package/ios/queue/QueueManager.swift +157 -0
  34. package/lib/hooks/index.d.ts +6 -0
  35. package/lib/hooks/index.js +6 -0
  36. package/lib/hooks/useAndroidAutoConnection.d.ts +13 -0
  37. package/lib/hooks/useAndroidAutoConnection.js +26 -0
  38. package/lib/hooks/useAudioDevices.d.ts +26 -0
  39. package/lib/hooks/useAudioDevices.js +55 -0
  40. package/lib/hooks/useOnChangeTrack.d.ts +9 -0
  41. package/lib/hooks/useOnChangeTrack.js +17 -0
  42. package/lib/hooks/useOnPlaybackProgressChange.d.ts +9 -0
  43. package/lib/hooks/useOnPlaybackProgressChange.js +19 -0
  44. package/lib/hooks/useOnPlaybackStateChange.d.ts +9 -0
  45. package/lib/hooks/useOnPlaybackStateChange.js +17 -0
  46. package/lib/hooks/useOnSeek.d.ts +8 -0
  47. package/lib/hooks/useOnSeek.js +17 -0
  48. package/lib/index.d.ts +14 -0
  49. package/lib/index.js +24 -0
  50. package/lib/specs/AndroidAutoMediaLibrary.nitro.d.ts +21 -0
  51. package/lib/specs/AndroidAutoMediaLibrary.nitro.js +1 -0
  52. package/lib/specs/AudioDevices.nitro.d.ts +24 -0
  53. package/lib/specs/AudioDevices.nitro.js +1 -0
  54. package/lib/specs/AudioRoutePicker.nitro.d.ts +10 -0
  55. package/lib/specs/AudioRoutePicker.nitro.js +1 -0
  56. package/lib/specs/TrackPlayer.nitro.d.ts +39 -0
  57. package/lib/specs/TrackPlayer.nitro.js +1 -0
  58. package/lib/types/AndroidAutoMediaLibrary.d.ts +44 -0
  59. package/lib/types/AndroidAutoMediaLibrary.js +1 -0
  60. package/lib/types/PlayerQueue.d.ts +32 -0
  61. package/lib/types/PlayerQueue.js +1 -0
  62. package/lib/utils/androidAutoMediaLibrary.d.ts +47 -0
  63. package/lib/utils/androidAutoMediaLibrary.js +62 -0
  64. package/nitro.json +31 -0
  65. package/nitrogen/generated/.gitattributes +1 -0
  66. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +91 -0
  67. package/nitrogen/generated/android/NitroPlayer+autolinking.gradle +27 -0
  68. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +88 -0
  69. package/nitrogen/generated/android/NitroPlayerOnLoad.hpp +25 -0
  70. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +85 -0
  71. package/nitrogen/generated/android/c++/JFunc_void_TrackPlayerState_std__optional_Reason_.hpp +80 -0
  72. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  73. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
  74. package/nitrogen/generated/android/c++/JFunc_void_double_double_std__optional_bool_.hpp +76 -0
  75. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +88 -0
  76. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +106 -0
  77. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +55 -0
  78. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +66 -0
  79. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +70 -0
  80. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +66 -0
  81. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +143 -0
  82. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +77 -0
  83. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +137 -0
  84. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +78 -0
  85. package/nitrogen/generated/android/c++/JPlayerConfig.hpp +65 -0
  86. package/nitrogen/generated/android/c++/JPlayerState.hpp +87 -0
  87. package/nitrogen/generated/android/c++/JPlaylist.hpp +99 -0
  88. package/nitrogen/generated/android/c++/JQueueOperation.hpp +65 -0
  89. package/nitrogen/generated/android/c++/JReason.hpp +65 -0
  90. package/nitrogen/generated/android/c++/JTAudioDevice.hpp +69 -0
  91. package/nitrogen/generated/android/c++/JTrackItem.hpp +86 -0
  92. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +62 -0
  93. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.cpp +26 -0
  94. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +77 -0
  95. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  96. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  97. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.cpp +26 -0
  98. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +74 -0
  99. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_TrackItem_std__optional_Reason_.kt +80 -0
  100. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_TrackPlayerState_std__optional_Reason_.kt +80 -0
  101. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_bool.kt +80 -0
  102. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_double_double.kt +80 -0
  103. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_double_double_std__optional_bool_.kt +80 -0
  104. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_Playlist_std__optional_QueueOperation_.kt +80 -0
  105. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_Playlist__std__optional_QueueOperation_.kt +80 -0
  106. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +61 -0
  107. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +61 -0
  108. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +116 -0
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +134 -0
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/NitroPlayerOnLoad.kt +35 -0
  111. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerConfig.kt +44 -0
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerState.kt +53 -0
  113. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Playlist.kt +50 -0
  114. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/QueueOperation.kt +23 -0
  115. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Reason.kt +23 -0
  116. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TAudioDevice.kt +47 -0
  117. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackItem.kt +56 -0
  118. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackPlayerState.kt +22 -0
  119. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Playlist.kt +59 -0
  120. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_String.kt +59 -0
  121. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_TrackItem.kt +59 -0
  122. package/nitrogen/generated/ios/NitroPlayer+autolinking.rb +60 -0
  123. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +123 -0
  124. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +531 -0
  125. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +80 -0
  126. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +49 -0
  127. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +55 -0
  128. package/nitrogen/generated/ios/c++/HybridAudioRoutePickerSpecSwift.cpp +11 -0
  129. package/nitrogen/generated/ios/c++/HybridAudioRoutePickerSpecSwift.hpp +74 -0
  130. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.cpp +11 -0
  131. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +167 -0
  132. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.cpp +11 -0
  133. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +174 -0
  134. package/nitrogen/generated/ios/swift/Func_void_TrackItem_std__optional_Reason_.swift +47 -0
  135. package/nitrogen/generated/ios/swift/Func_void_TrackPlayerState_std__optional_Reason_.swift +47 -0
  136. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  137. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +47 -0
  138. package/nitrogen/generated/ios/swift/Func_void_double_double_std__optional_bool_.swift +54 -0
  139. package/nitrogen/generated/ios/swift/Func_void_std__string_Playlist_std__optional_QueueOperation_.swift +47 -0
  140. package/nitrogen/generated/ios/swift/Func_void_std__vector_Playlist__std__optional_QueueOperation_.swift +47 -0
  141. package/nitrogen/generated/ios/swift/HybridAudioRoutePickerSpec.swift +56 -0
  142. package/nitrogen/generated/ios/swift/HybridAudioRoutePickerSpec_cxx.swift +130 -0
  143. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec.swift +68 -0
  144. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec_cxx.swift +349 -0
  145. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +69 -0
  146. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +325 -0
  147. package/nitrogen/generated/ios/swift/PlayerConfig.swift +115 -0
  148. package/nitrogen/generated/ios/swift/PlayerState.swift +181 -0
  149. package/nitrogen/generated/ios/swift/Playlist.swift +182 -0
  150. package/nitrogen/generated/ios/swift/QueueOperation.swift +48 -0
  151. package/nitrogen/generated/ios/swift/Reason.swift +48 -0
  152. package/nitrogen/generated/ios/swift/TrackItem.swift +147 -0
  153. package/nitrogen/generated/ios/swift/TrackPlayerState.swift +44 -0
  154. package/nitrogen/generated/ios/swift/Variant_NullType_Playlist.swift +18 -0
  155. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +18 -0
  156. package/nitrogen/generated/ios/swift/Variant_NullType_TrackItem.swift +18 -0
  157. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.cpp +22 -0
  158. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.hpp +63 -0
  159. package/nitrogen/generated/shared/c++/HybridAudioDevicesSpec.cpp +22 -0
  160. package/nitrogen/generated/shared/c++/HybridAudioDevicesSpec.hpp +65 -0
  161. package/nitrogen/generated/shared/c++/HybridAudioRoutePickerSpec.cpp +21 -0
  162. package/nitrogen/generated/shared/c++/HybridAudioRoutePickerSpec.hpp +62 -0
  163. package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.cpp +33 -0
  164. package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.hpp +87 -0
  165. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +34 -0
  166. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +91 -0
  167. package/nitrogen/generated/shared/c++/PlayerConfig.hpp +83 -0
  168. package/nitrogen/generated/shared/c++/PlayerState.hpp +103 -0
  169. package/nitrogen/generated/shared/c++/Playlist.hpp +97 -0
  170. package/nitrogen/generated/shared/c++/QueueOperation.hpp +84 -0
  171. package/nitrogen/generated/shared/c++/Reason.hpp +84 -0
  172. package/nitrogen/generated/shared/c++/TAudioDevice.hpp +87 -0
  173. package/nitrogen/generated/shared/c++/TrackItem.hpp +102 -0
  174. package/nitrogen/generated/shared/c++/TrackPlayerState.hpp +80 -0
  175. package/package.json +172 -0
  176. package/react-native.config.js +16 -0
  177. package/src/hooks/index.ts +6 -0
  178. package/src/hooks/useAndroidAutoConnection.ts +30 -0
  179. package/src/hooks/useAudioDevices.ts +64 -0
  180. package/src/hooks/useOnChangeTrack.ts +24 -0
  181. package/src/hooks/useOnPlaybackProgressChange.ts +30 -0
  182. package/src/hooks/useOnPlaybackStateChange.ts +24 -0
  183. package/src/hooks/useOnSeek.ts +25 -0
  184. package/src/index.ts +47 -0
  185. package/src/specs/AndroidAutoMediaLibrary.nitro.ts +22 -0
  186. package/src/specs/AudioDevices.nitro.ts +25 -0
  187. package/src/specs/AudioRoutePicker.nitro.ts +9 -0
  188. package/src/specs/TrackPlayer.nitro.ts +81 -0
  189. package/src/types/AndroidAutoMediaLibrary.ts +58 -0
  190. package/src/types/PlayerQueue.ts +38 -0
  191. package/src/utils/androidAutoMediaLibrary.ts +66 -0
@@ -0,0 +1,55 @@
1
+ ///
2
+ /// NitroPlayerAutolinking.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ public final class NitroPlayerAutolinking {
9
+ public typealias bridge = margelo.nitro.nitroplayer.bridge.swift
10
+
11
+ /**
12
+ * Creates an instance of a Swift class that implements `HybridPlayerQueueSpec`,
13
+ * and wraps it in a Swift class that can directly interop with C++ (`HybridPlayerQueueSpec_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, `HybridPlayerQueue`).
17
+ */
18
+ public static func createPlayerQueue() -> bridge.std__shared_ptr_HybridPlayerQueueSpec_ {
19
+ let hybridObject = HybridPlayerQueue()
20
+ return { () -> bridge.std__shared_ptr_HybridPlayerQueueSpec_ in
21
+ let __cxxWrapped = hybridObject.getCxxWrapper()
22
+ return __cxxWrapped.getCxxPart()
23
+ }()
24
+ }
25
+
26
+ /**
27
+ * Creates an instance of a Swift class that implements `HybridTrackPlayerSpec`,
28
+ * and wraps it in a Swift class that can directly interop with C++ (`HybridTrackPlayerSpec_cxx`)
29
+ *
30
+ * This is generated by Nitrogen and will initialize the class specified
31
+ * in the `"autolinking"` property of `nitro.json` (in this case, `HybridTrackPlayer`).
32
+ */
33
+ public static func createTrackPlayer() -> bridge.std__shared_ptr_HybridTrackPlayerSpec_ {
34
+ let hybridObject = HybridTrackPlayer()
35
+ return { () -> bridge.std__shared_ptr_HybridTrackPlayerSpec_ in
36
+ let __cxxWrapped = hybridObject.getCxxWrapper()
37
+ return __cxxWrapped.getCxxPart()
38
+ }()
39
+ }
40
+
41
+ /**
42
+ * Creates an instance of a Swift class that implements `HybridAudioRoutePickerSpec`,
43
+ * and wraps it in a Swift class that can directly interop with C++ (`HybridAudioRoutePickerSpec_cxx`)
44
+ *
45
+ * This is generated by Nitrogen and will initialize the class specified
46
+ * in the `"autolinking"` property of `nitro.json` (in this case, `HybridAudioRoutePicker`).
47
+ */
48
+ public static func createAudioRoutePicker() -> bridge.std__shared_ptr_HybridAudioRoutePickerSpec_ {
49
+ let hybridObject = HybridAudioRoutePicker()
50
+ return { () -> bridge.std__shared_ptr_HybridAudioRoutePickerSpec_ in
51
+ let __cxxWrapped = hybridObject.getCxxWrapper()
52
+ return __cxxWrapped.getCxxPart()
53
+ }()
54
+ }
55
+ }
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridAudioRoutePickerSpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridAudioRoutePickerSpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::nitroplayer {
11
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,74 @@
1
+ ///
2
+ /// HybridAudioRoutePickerSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridAudioRoutePickerSpec.hpp"
11
+
12
+ // Forward declaration of `HybridAudioRoutePickerSpec_cxx` to properly resolve imports.
13
+ namespace NitroPlayer { class HybridAudioRoutePickerSpec_cxx; }
14
+
15
+
16
+
17
+
18
+
19
+ #include "NitroPlayer-Swift-Cxx-Umbrella.hpp"
20
+
21
+ namespace margelo::nitro::nitroplayer {
22
+
23
+ /**
24
+ * The C++ part of HybridAudioRoutePickerSpec_cxx.swift.
25
+ *
26
+ * HybridAudioRoutePickerSpecSwift (C++) accesses HybridAudioRoutePickerSpec_cxx (Swift), and might
27
+ * contain some additional bridging code for C++ <> Swift interop.
28
+ *
29
+ * Since this obviously introduces an overhead, I hope at some point in
30
+ * the future, HybridAudioRoutePickerSpec_cxx can directly inherit from the C++ class HybridAudioRoutePickerSpec
31
+ * to simplify the whole structure and memory management.
32
+ */
33
+ class HybridAudioRoutePickerSpecSwift: public virtual HybridAudioRoutePickerSpec {
34
+ public:
35
+ // Constructor from a Swift instance
36
+ explicit HybridAudioRoutePickerSpecSwift(const NitroPlayer::HybridAudioRoutePickerSpec_cxx& swiftPart):
37
+ HybridObject(HybridAudioRoutePickerSpec::TAG),
38
+ _swiftPart(swiftPart) { }
39
+
40
+ public:
41
+ // Get the Swift part
42
+ inline NitroPlayer::HybridAudioRoutePickerSpec_cxx& getSwiftPart() noexcept {
43
+ return _swiftPart;
44
+ }
45
+
46
+ public:
47
+ inline size_t getExternalMemorySize() noexcept override {
48
+ return _swiftPart.getMemorySize();
49
+ }
50
+ void dispose() noexcept override {
51
+ _swiftPart.dispose();
52
+ }
53
+ std::string toString() override {
54
+ return _swiftPart.toString();
55
+ }
56
+
57
+ public:
58
+ // Properties
59
+
60
+
61
+ public:
62
+ // Methods
63
+ inline void showRoutePicker() override {
64
+ auto __result = _swiftPart.showRoutePicker();
65
+ if (__result.hasError()) [[unlikely]] {
66
+ std::rethrow_exception(__result.error());
67
+ }
68
+ }
69
+
70
+ private:
71
+ NitroPlayer::HybridAudioRoutePickerSpec_cxx _swiftPart;
72
+ };
73
+
74
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridPlayerQueueSpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridPlayerQueueSpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::nitroplayer {
11
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,167 @@
1
+ ///
2
+ /// HybridPlayerQueueSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridPlayerQueueSpec.hpp"
11
+
12
+ // Forward declaration of `HybridPlayerQueueSpec_cxx` to properly resolve imports.
13
+ namespace NitroPlayer { class HybridPlayerQueueSpec_cxx; }
14
+
15
+ // Forward declaration of `Playlist` to properly resolve imports.
16
+ namespace margelo::nitro::nitroplayer { struct Playlist; }
17
+ // Forward declaration of `TrackItem` to properly resolve imports.
18
+ namespace margelo::nitro::nitroplayer { struct TrackItem; }
19
+ // Forward declaration of `QueueOperation` to properly resolve imports.
20
+ namespace margelo::nitro::nitroplayer { enum class QueueOperation; }
21
+
22
+ #include <string>
23
+ #include <optional>
24
+ #include <NitroModules/Null.hpp>
25
+ #include "Playlist.hpp"
26
+ #include <variant>
27
+ #include "TrackItem.hpp"
28
+ #include <vector>
29
+ #include "QueueOperation.hpp"
30
+ #include <functional>
31
+
32
+ #include "NitroPlayer-Swift-Cxx-Umbrella.hpp"
33
+
34
+ namespace margelo::nitro::nitroplayer {
35
+
36
+ /**
37
+ * The C++ part of HybridPlayerQueueSpec_cxx.swift.
38
+ *
39
+ * HybridPlayerQueueSpecSwift (C++) accesses HybridPlayerQueueSpec_cxx (Swift), and might
40
+ * contain some additional bridging code for C++ <> Swift interop.
41
+ *
42
+ * Since this obviously introduces an overhead, I hope at some point in
43
+ * the future, HybridPlayerQueueSpec_cxx can directly inherit from the C++ class HybridPlayerQueueSpec
44
+ * to simplify the whole structure and memory management.
45
+ */
46
+ class HybridPlayerQueueSpecSwift: public virtual HybridPlayerQueueSpec {
47
+ public:
48
+ // Constructor from a Swift instance
49
+ explicit HybridPlayerQueueSpecSwift(const NitroPlayer::HybridPlayerQueueSpec_cxx& swiftPart):
50
+ HybridObject(HybridPlayerQueueSpec::TAG),
51
+ _swiftPart(swiftPart) { }
52
+
53
+ public:
54
+ // Get the Swift part
55
+ inline NitroPlayer::HybridPlayerQueueSpec_cxx& getSwiftPart() noexcept {
56
+ return _swiftPart;
57
+ }
58
+
59
+ public:
60
+ inline size_t getExternalMemorySize() noexcept override {
61
+ return _swiftPart.getMemorySize();
62
+ }
63
+ void dispose() noexcept override {
64
+ _swiftPart.dispose();
65
+ }
66
+ std::string toString() override {
67
+ return _swiftPart.toString();
68
+ }
69
+
70
+ public:
71
+ // Properties
72
+
73
+
74
+ public:
75
+ // Methods
76
+ inline std::string createPlaylist(const std::string& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) override {
77
+ auto __result = _swiftPart.createPlaylist(name, description, artwork);
78
+ if (__result.hasError()) [[unlikely]] {
79
+ std::rethrow_exception(__result.error());
80
+ }
81
+ auto __value = std::move(__result.value());
82
+ return __value;
83
+ }
84
+ inline void deletePlaylist(const std::string& playlistId) override {
85
+ auto __result = _swiftPart.deletePlaylist(playlistId);
86
+ if (__result.hasError()) [[unlikely]] {
87
+ std::rethrow_exception(__result.error());
88
+ }
89
+ }
90
+ inline void updatePlaylist(const std::string& playlistId, const std::optional<std::string>& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) override {
91
+ auto __result = _swiftPart.updatePlaylist(playlistId, name, description, artwork);
92
+ if (__result.hasError()) [[unlikely]] {
93
+ std::rethrow_exception(__result.error());
94
+ }
95
+ }
96
+ inline std::variant<nitro::NullType, Playlist> getPlaylist(const std::string& playlistId) override {
97
+ auto __result = _swiftPart.getPlaylist(playlistId);
98
+ if (__result.hasError()) [[unlikely]] {
99
+ std::rethrow_exception(__result.error());
100
+ }
101
+ auto __value = std::move(__result.value());
102
+ return __value;
103
+ }
104
+ inline std::vector<Playlist> getAllPlaylists() override {
105
+ auto __result = _swiftPart.getAllPlaylists();
106
+ if (__result.hasError()) [[unlikely]] {
107
+ std::rethrow_exception(__result.error());
108
+ }
109
+ auto __value = std::move(__result.value());
110
+ return __value;
111
+ }
112
+ inline void addTrackToPlaylist(const std::string& playlistId, const TrackItem& track, std::optional<double> index) override {
113
+ auto __result = _swiftPart.addTrackToPlaylist(playlistId, std::forward<decltype(track)>(track), index);
114
+ if (__result.hasError()) [[unlikely]] {
115
+ std::rethrow_exception(__result.error());
116
+ }
117
+ }
118
+ inline void addTracksToPlaylist(const std::string& playlistId, const std::vector<TrackItem>& tracks, std::optional<double> index) override {
119
+ auto __result = _swiftPart.addTracksToPlaylist(playlistId, tracks, index);
120
+ if (__result.hasError()) [[unlikely]] {
121
+ std::rethrow_exception(__result.error());
122
+ }
123
+ }
124
+ inline void removeTrackFromPlaylist(const std::string& playlistId, const std::string& trackId) override {
125
+ auto __result = _swiftPart.removeTrackFromPlaylist(playlistId, trackId);
126
+ if (__result.hasError()) [[unlikely]] {
127
+ std::rethrow_exception(__result.error());
128
+ }
129
+ }
130
+ inline void reorderTrackInPlaylist(const std::string& playlistId, const std::string& trackId, double newIndex) override {
131
+ auto __result = _swiftPart.reorderTrackInPlaylist(playlistId, trackId, std::forward<decltype(newIndex)>(newIndex));
132
+ if (__result.hasError()) [[unlikely]] {
133
+ std::rethrow_exception(__result.error());
134
+ }
135
+ }
136
+ inline void loadPlaylist(const std::string& playlistId) override {
137
+ auto __result = _swiftPart.loadPlaylist(playlistId);
138
+ if (__result.hasError()) [[unlikely]] {
139
+ std::rethrow_exception(__result.error());
140
+ }
141
+ }
142
+ inline std::variant<nitro::NullType, std::string> getCurrentPlaylistId() override {
143
+ auto __result = _swiftPart.getCurrentPlaylistId();
144
+ if (__result.hasError()) [[unlikely]] {
145
+ std::rethrow_exception(__result.error());
146
+ }
147
+ auto __value = std::move(__result.value());
148
+ return __value;
149
+ }
150
+ inline void onPlaylistsChanged(const std::function<void(const std::vector<Playlist>& /* playlists */, std::optional<QueueOperation> /* operation */)>& callback) override {
151
+ auto __result = _swiftPart.onPlaylistsChanged(callback);
152
+ if (__result.hasError()) [[unlikely]] {
153
+ std::rethrow_exception(__result.error());
154
+ }
155
+ }
156
+ inline void onPlaylistChanged(const std::function<void(const std::string& /* playlistId */, const Playlist& /* playlist */, std::optional<QueueOperation> /* operation */)>& callback) override {
157
+ auto __result = _swiftPart.onPlaylistChanged(callback);
158
+ if (__result.hasError()) [[unlikely]] {
159
+ std::rethrow_exception(__result.error());
160
+ }
161
+ }
162
+
163
+ private:
164
+ NitroPlayer::HybridPlayerQueueSpec_cxx _swiftPart;
165
+ };
166
+
167
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridTrackPlayerSpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridTrackPlayerSpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::nitroplayer {
11
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,174 @@
1
+ ///
2
+ /// HybridTrackPlayerSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridTrackPlayerSpec.hpp"
11
+
12
+ // Forward declaration of `HybridTrackPlayerSpec_cxx` to properly resolve imports.
13
+ namespace NitroPlayer { class HybridTrackPlayerSpec_cxx; }
14
+
15
+ // Forward declaration of `PlayerState` to properly resolve imports.
16
+ namespace margelo::nitro::nitroplayer { struct PlayerState; }
17
+ // Forward declaration of `TrackItem` to properly resolve imports.
18
+ namespace margelo::nitro::nitroplayer { struct TrackItem; }
19
+ // Forward declaration of `TrackPlayerState` to properly resolve imports.
20
+ namespace margelo::nitro::nitroplayer { enum class TrackPlayerState; }
21
+ // Forward declaration of `PlayerConfig` to properly resolve imports.
22
+ namespace margelo::nitro::nitroplayer { struct PlayerConfig; }
23
+ // Forward declaration of `Reason` to properly resolve imports.
24
+ namespace margelo::nitro::nitroplayer { enum class Reason; }
25
+
26
+ #include <string>
27
+ #include <optional>
28
+ #include "PlayerState.hpp"
29
+ #include <NitroModules/Null.hpp>
30
+ #include "TrackItem.hpp"
31
+ #include <variant>
32
+ #include "TrackPlayerState.hpp"
33
+ #include "PlayerConfig.hpp"
34
+ #include "Reason.hpp"
35
+ #include <functional>
36
+
37
+ #include "NitroPlayer-Swift-Cxx-Umbrella.hpp"
38
+
39
+ namespace margelo::nitro::nitroplayer {
40
+
41
+ /**
42
+ * The C++ part of HybridTrackPlayerSpec_cxx.swift.
43
+ *
44
+ * HybridTrackPlayerSpecSwift (C++) accesses HybridTrackPlayerSpec_cxx (Swift), and might
45
+ * contain some additional bridging code for C++ <> Swift interop.
46
+ *
47
+ * Since this obviously introduces an overhead, I hope at some point in
48
+ * the future, HybridTrackPlayerSpec_cxx can directly inherit from the C++ class HybridTrackPlayerSpec
49
+ * to simplify the whole structure and memory management.
50
+ */
51
+ class HybridTrackPlayerSpecSwift: public virtual HybridTrackPlayerSpec {
52
+ public:
53
+ // Constructor from a Swift instance
54
+ explicit HybridTrackPlayerSpecSwift(const NitroPlayer::HybridTrackPlayerSpec_cxx& swiftPart):
55
+ HybridObject(HybridTrackPlayerSpec::TAG),
56
+ _swiftPart(swiftPart) { }
57
+
58
+ public:
59
+ // Get the Swift part
60
+ inline NitroPlayer::HybridTrackPlayerSpec_cxx& getSwiftPart() noexcept {
61
+ return _swiftPart;
62
+ }
63
+
64
+ public:
65
+ inline size_t getExternalMemorySize() noexcept override {
66
+ return _swiftPart.getMemorySize();
67
+ }
68
+ void dispose() noexcept override {
69
+ _swiftPart.dispose();
70
+ }
71
+ std::string toString() override {
72
+ return _swiftPart.toString();
73
+ }
74
+
75
+ public:
76
+ // Properties
77
+
78
+
79
+ public:
80
+ // Methods
81
+ inline void play() override {
82
+ auto __result = _swiftPart.play();
83
+ if (__result.hasError()) [[unlikely]] {
84
+ std::rethrow_exception(__result.error());
85
+ }
86
+ }
87
+ inline void pause() override {
88
+ auto __result = _swiftPart.pause();
89
+ if (__result.hasError()) [[unlikely]] {
90
+ std::rethrow_exception(__result.error());
91
+ }
92
+ }
93
+ inline void playSong(const std::string& songId, const std::optional<std::string>& fromPlaylist) override {
94
+ auto __result = _swiftPart.playSong(songId, fromPlaylist);
95
+ if (__result.hasError()) [[unlikely]] {
96
+ std::rethrow_exception(__result.error());
97
+ }
98
+ }
99
+ inline void skipToNext() override {
100
+ auto __result = _swiftPart.skipToNext();
101
+ if (__result.hasError()) [[unlikely]] {
102
+ std::rethrow_exception(__result.error());
103
+ }
104
+ }
105
+ inline void skipToPrevious() override {
106
+ auto __result = _swiftPart.skipToPrevious();
107
+ if (__result.hasError()) [[unlikely]] {
108
+ std::rethrow_exception(__result.error());
109
+ }
110
+ }
111
+ inline void seek(double position) override {
112
+ auto __result = _swiftPart.seek(std::forward<decltype(position)>(position));
113
+ if (__result.hasError()) [[unlikely]] {
114
+ std::rethrow_exception(__result.error());
115
+ }
116
+ }
117
+ inline PlayerState getState() override {
118
+ auto __result = _swiftPart.getState();
119
+ if (__result.hasError()) [[unlikely]] {
120
+ std::rethrow_exception(__result.error());
121
+ }
122
+ auto __value = std::move(__result.value());
123
+ return __value;
124
+ }
125
+ inline void configure(const PlayerConfig& config) override {
126
+ auto __result = _swiftPart.configure(std::forward<decltype(config)>(config));
127
+ if (__result.hasError()) [[unlikely]] {
128
+ std::rethrow_exception(__result.error());
129
+ }
130
+ }
131
+ inline void onChangeTrack(const std::function<void(const TrackItem& /* track */, std::optional<Reason> /* reason */)>& callback) override {
132
+ auto __result = _swiftPart.onChangeTrack(callback);
133
+ if (__result.hasError()) [[unlikely]] {
134
+ std::rethrow_exception(__result.error());
135
+ }
136
+ }
137
+ inline void onPlaybackStateChange(const std::function<void(TrackPlayerState /* state */, std::optional<Reason> /* reason */)>& callback) override {
138
+ auto __result = _swiftPart.onPlaybackStateChange(callback);
139
+ if (__result.hasError()) [[unlikely]] {
140
+ std::rethrow_exception(__result.error());
141
+ }
142
+ }
143
+ inline void onSeek(const std::function<void(double /* position */, double /* totalDuration */)>& callback) override {
144
+ auto __result = _swiftPart.onSeek(callback);
145
+ if (__result.hasError()) [[unlikely]] {
146
+ std::rethrow_exception(__result.error());
147
+ }
148
+ }
149
+ inline void onPlaybackProgressChange(const std::function<void(double /* position */, double /* totalDuration */, std::optional<bool> /* isManuallySeeked */)>& callback) override {
150
+ auto __result = _swiftPart.onPlaybackProgressChange(callback);
151
+ if (__result.hasError()) [[unlikely]] {
152
+ std::rethrow_exception(__result.error());
153
+ }
154
+ }
155
+ inline void onAndroidAutoConnectionChange(const std::function<void(bool /* connected */)>& callback) override {
156
+ auto __result = _swiftPart.onAndroidAutoConnectionChange(callback);
157
+ if (__result.hasError()) [[unlikely]] {
158
+ std::rethrow_exception(__result.error());
159
+ }
160
+ }
161
+ inline bool isAndroidAutoConnected() override {
162
+ auto __result = _swiftPart.isAndroidAutoConnected();
163
+ if (__result.hasError()) [[unlikely]] {
164
+ std::rethrow_exception(__result.error());
165
+ }
166
+ auto __value = std::move(__result.value());
167
+ return __value;
168
+ }
169
+
170
+ private:
171
+ NitroPlayer::HybridTrackPlayerSpec_cxx _swiftPart;
172
+ };
173
+
174
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_void_TrackItem_std__optional_Reason_.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /**
12
+ * Wraps a Swift `(_ track: TrackItem, _ reason: Reason?) -> Void` as a class.
13
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
14
+ */
15
+ public final class Func_void_TrackItem_std__optional_Reason_ {
16
+ public typealias bridge = margelo.nitro.nitroplayer.bridge.swift
17
+
18
+ private let closure: (_ track: TrackItem, _ reason: Reason?) -> Void
19
+
20
+ public init(_ closure: @escaping (_ track: TrackItem, _ reason: Reason?) -> Void) {
21
+ self.closure = closure
22
+ }
23
+
24
+ @inline(__always)
25
+ public func call(track: TrackItem, reason: bridge.std__optional_Reason_) -> Void {
26
+ self.closure(track, reason.value)
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_void_TrackItem_std__optional_Reason_`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_void_TrackItem_std__optional_Reason_>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_TrackItem_std__optional_Reason_ {
45
+ return Unmanaged<Func_void_TrackItem_std__optional_Reason_>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_void_TrackPlayerState_std__optional_Reason_.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /**
12
+ * Wraps a Swift `(_ state: TrackPlayerState, _ reason: Reason?) -> Void` as a class.
13
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
14
+ */
15
+ public final class Func_void_TrackPlayerState_std__optional_Reason_ {
16
+ public typealias bridge = margelo.nitro.nitroplayer.bridge.swift
17
+
18
+ private let closure: (_ state: TrackPlayerState, _ reason: Reason?) -> Void
19
+
20
+ public init(_ closure: @escaping (_ state: TrackPlayerState, _ reason: Reason?) -> Void) {
21
+ self.closure = closure
22
+ }
23
+
24
+ @inline(__always)
25
+ public func call(state: Int32, reason: bridge.std__optional_Reason_) -> Void {
26
+ self.closure(margelo.nitro.nitroplayer.TrackPlayerState(rawValue: state)!, reason.value)
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_void_TrackPlayerState_std__optional_Reason_`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_void_TrackPlayerState_std__optional_Reason_>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_TrackPlayerState_std__optional_Reason_ {
45
+ return Unmanaged<Func_void_TrackPlayerState_std__optional_Reason_>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_void_bool.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /**
12
+ * Wraps a Swift `(_ connected: Bool) -> Void` as a class.
13
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
14
+ */
15
+ public final class Func_void_bool {
16
+ public typealias bridge = margelo.nitro.nitroplayer.bridge.swift
17
+
18
+ private let closure: (_ connected: Bool) -> Void
19
+
20
+ public init(_ closure: @escaping (_ connected: Bool) -> Void) {
21
+ self.closure = closure
22
+ }
23
+
24
+ @inline(__always)
25
+ public func call(connected: Bool) -> Void {
26
+ self.closure(connected)
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_void_bool`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_void_bool>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_bool {
45
+ return Unmanaged<Func_void_bool>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }