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,182 @@
1
+ ///
2
+ /// Playlist.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
+ * Represents an instance of `Playlist`, backed by a C++ struct.
13
+ */
14
+ public typealias Playlist = margelo.nitro.nitroplayer.Playlist
15
+
16
+ public extension Playlist {
17
+ private typealias bridge = margelo.nitro.nitroplayer.bridge.swift
18
+
19
+ /**
20
+ * Create a new instance of `Playlist`.
21
+ */
22
+ init(id: String, name: String, description: Variant_NullType_String?, artwork: Variant_NullType_String?, tracks: [TrackItem]) {
23
+ self.init(std.string(id), std.string(name), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
24
+ if let __unwrappedValue = description {
25
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
26
+ switch __unwrappedValue {
27
+ case .first(let __value):
28
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
29
+ case .second(let __value):
30
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
31
+ }
32
+ }().variant)
33
+ } else {
34
+ return .init()
35
+ }
36
+ }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
37
+ if let __unwrappedValue = artwork {
38
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
39
+ switch __unwrappedValue {
40
+ case .first(let __value):
41
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
42
+ case .second(let __value):
43
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
44
+ }
45
+ }().variant)
46
+ } else {
47
+ return .init()
48
+ }
49
+ }(), { () -> bridge.std__vector_TrackItem_ in
50
+ var __vector = bridge.create_std__vector_TrackItem_(tracks.count)
51
+ for __item in tracks {
52
+ __vector.push_back(__item)
53
+ }
54
+ return __vector
55
+ }())
56
+ }
57
+
58
+ var id: String {
59
+ @inline(__always)
60
+ get {
61
+ return String(self.__id)
62
+ }
63
+ @inline(__always)
64
+ set {
65
+ self.__id = std.string(newValue)
66
+ }
67
+ }
68
+
69
+ var name: String {
70
+ @inline(__always)
71
+ get {
72
+ return String(self.__name)
73
+ }
74
+ @inline(__always)
75
+ set {
76
+ self.__name = std.string(newValue)
77
+ }
78
+ }
79
+
80
+ var description: Variant_NullType_String? {
81
+ @inline(__always)
82
+ get {
83
+ return { () -> Variant_NullType_String? in
84
+ if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__description) {
85
+ let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__description)
86
+ return { () -> Variant_NullType_String in
87
+ let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
88
+ switch __variant.index() {
89
+ case 0:
90
+ let __actual = __variant.get_0()
91
+ return .first(NullType.null)
92
+ case 1:
93
+ let __actual = __variant.get_1()
94
+ return .second(String(__actual))
95
+ default:
96
+ fatalError("Variant can never have index \(__variant.index())!")
97
+ }
98
+ }()
99
+ } else {
100
+ return nil
101
+ }
102
+ }()
103
+ }
104
+ @inline(__always)
105
+ set {
106
+ self.__description = { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
107
+ if let __unwrappedValue = newValue {
108
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
109
+ switch __unwrappedValue {
110
+ case .first(let __value):
111
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
112
+ case .second(let __value):
113
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
114
+ }
115
+ }().variant)
116
+ } else {
117
+ return .init()
118
+ }
119
+ }()
120
+ }
121
+ }
122
+
123
+ var artwork: Variant_NullType_String? {
124
+ @inline(__always)
125
+ get {
126
+ return { () -> Variant_NullType_String? in
127
+ if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__artwork) {
128
+ let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__artwork)
129
+ return { () -> Variant_NullType_String in
130
+ let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
131
+ switch __variant.index() {
132
+ case 0:
133
+ let __actual = __variant.get_0()
134
+ return .first(NullType.null)
135
+ case 1:
136
+ let __actual = __variant.get_1()
137
+ return .second(String(__actual))
138
+ default:
139
+ fatalError("Variant can never have index \(__variant.index())!")
140
+ }
141
+ }()
142
+ } else {
143
+ return nil
144
+ }
145
+ }()
146
+ }
147
+ @inline(__always)
148
+ set {
149
+ self.__artwork = { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
150
+ if let __unwrappedValue = newValue {
151
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
152
+ switch __unwrappedValue {
153
+ case .first(let __value):
154
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
155
+ case .second(let __value):
156
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
157
+ }
158
+ }().variant)
159
+ } else {
160
+ return .init()
161
+ }
162
+ }()
163
+ }
164
+ }
165
+
166
+ var tracks: [TrackItem] {
167
+ @inline(__always)
168
+ get {
169
+ return self.__tracks.map({ __item in __item })
170
+ }
171
+ @inline(__always)
172
+ set {
173
+ self.__tracks = { () -> bridge.std__vector_TrackItem_ in
174
+ var __vector = bridge.create_std__vector_TrackItem_(newValue.count)
175
+ for __item in newValue {
176
+ __vector.push_back(__item)
177
+ }
178
+ return __vector
179
+ }()
180
+ }
181
+ }
182
+ }
@@ -0,0 +1,48 @@
1
+ ///
2
+ /// QueueOperation.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
+ /**
9
+ * Represents the JS union `QueueOperation`, backed by a C++ enum.
10
+ */
11
+ public typealias QueueOperation = margelo.nitro.nitroplayer.QueueOperation
12
+
13
+ public extension QueueOperation {
14
+ /**
15
+ * Get a QueueOperation for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "add":
21
+ self = .add
22
+ case "remove":
23
+ self = .remove
24
+ case "clear":
25
+ self = .clear
26
+ case "update":
27
+ self = .update
28
+ default:
29
+ return nil
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Get the String value this QueueOperation represents.
35
+ */
36
+ var stringValue: String {
37
+ switch self {
38
+ case .add:
39
+ return "add"
40
+ case .remove:
41
+ return "remove"
42
+ case .clear:
43
+ return "clear"
44
+ case .update:
45
+ return "update"
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,48 @@
1
+ ///
2
+ /// 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
+ /**
9
+ * Represents the JS union `Reason`, backed by a C++ enum.
10
+ */
11
+ public typealias Reason = margelo.nitro.nitroplayer.Reason
12
+
13
+ public extension Reason {
14
+ /**
15
+ * Get a Reason for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "user_action":
21
+ self = .userAction
22
+ case "skip":
23
+ self = .skip
24
+ case "end":
25
+ self = .end
26
+ case "error":
27
+ self = .error
28
+ default:
29
+ return nil
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Get the String value this Reason represents.
35
+ */
36
+ var stringValue: String {
37
+ switch self {
38
+ case .userAction:
39
+ return "user_action"
40
+ case .skip:
41
+ return "skip"
42
+ case .end:
43
+ return "end"
44
+ case .error:
45
+ return "error"
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,147 @@
1
+ ///
2
+ /// TrackItem.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
+ * Represents an instance of `TrackItem`, backed by a C++ struct.
13
+ */
14
+ public typealias TrackItem = margelo.nitro.nitroplayer.TrackItem
15
+
16
+ public extension TrackItem {
17
+ private typealias bridge = margelo.nitro.nitroplayer.bridge.swift
18
+
19
+ /**
20
+ * Create a new instance of `TrackItem`.
21
+ */
22
+ init(id: String, title: String, artist: String, album: String, duration: Double, url: String, artwork: Variant_NullType_String?) {
23
+ self.init(std.string(id), std.string(title), std.string(artist), std.string(album), duration, std.string(url), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
24
+ if let __unwrappedValue = artwork {
25
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
26
+ switch __unwrappedValue {
27
+ case .first(let __value):
28
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
29
+ case .second(let __value):
30
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
31
+ }
32
+ }().variant)
33
+ } else {
34
+ return .init()
35
+ }
36
+ }())
37
+ }
38
+
39
+ var id: String {
40
+ @inline(__always)
41
+ get {
42
+ return String(self.__id)
43
+ }
44
+ @inline(__always)
45
+ set {
46
+ self.__id = std.string(newValue)
47
+ }
48
+ }
49
+
50
+ var title: String {
51
+ @inline(__always)
52
+ get {
53
+ return String(self.__title)
54
+ }
55
+ @inline(__always)
56
+ set {
57
+ self.__title = std.string(newValue)
58
+ }
59
+ }
60
+
61
+ var artist: String {
62
+ @inline(__always)
63
+ get {
64
+ return String(self.__artist)
65
+ }
66
+ @inline(__always)
67
+ set {
68
+ self.__artist = std.string(newValue)
69
+ }
70
+ }
71
+
72
+ var album: String {
73
+ @inline(__always)
74
+ get {
75
+ return String(self.__album)
76
+ }
77
+ @inline(__always)
78
+ set {
79
+ self.__album = std.string(newValue)
80
+ }
81
+ }
82
+
83
+ var duration: Double {
84
+ @inline(__always)
85
+ get {
86
+ return self.__duration
87
+ }
88
+ @inline(__always)
89
+ set {
90
+ self.__duration = newValue
91
+ }
92
+ }
93
+
94
+ var url: String {
95
+ @inline(__always)
96
+ get {
97
+ return String(self.__url)
98
+ }
99
+ @inline(__always)
100
+ set {
101
+ self.__url = std.string(newValue)
102
+ }
103
+ }
104
+
105
+ var artwork: Variant_NullType_String? {
106
+ @inline(__always)
107
+ get {
108
+ return { () -> Variant_NullType_String? in
109
+ if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__artwork) {
110
+ let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__artwork)
111
+ return { () -> Variant_NullType_String in
112
+ let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
113
+ switch __variant.index() {
114
+ case 0:
115
+ let __actual = __variant.get_0()
116
+ return .first(NullType.null)
117
+ case 1:
118
+ let __actual = __variant.get_1()
119
+ return .second(String(__actual))
120
+ default:
121
+ fatalError("Variant can never have index \(__variant.index())!")
122
+ }
123
+ }()
124
+ } else {
125
+ return nil
126
+ }
127
+ }()
128
+ }
129
+ @inline(__always)
130
+ set {
131
+ self.__artwork = { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
132
+ if let __unwrappedValue = newValue {
133
+ return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
134
+ switch __unwrappedValue {
135
+ case .first(let __value):
136
+ return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
137
+ case .second(let __value):
138
+ return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
139
+ }
140
+ }().variant)
141
+ } else {
142
+ return .init()
143
+ }
144
+ }()
145
+ }
146
+ }
147
+ }
@@ -0,0 +1,44 @@
1
+ ///
2
+ /// TrackPlayerState.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
+ /**
9
+ * Represents the JS union `TrackPlayerState`, backed by a C++ enum.
10
+ */
11
+ public typealias TrackPlayerState = margelo.nitro.nitroplayer.TrackPlayerState
12
+
13
+ public extension TrackPlayerState {
14
+ /**
15
+ * Get a TrackPlayerState for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "playing":
21
+ self = .playing
22
+ case "paused":
23
+ self = .paused
24
+ case "stopped":
25
+ self = .stopped
26
+ default:
27
+ return nil
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Get the String value this TrackPlayerState represents.
33
+ */
34
+ var stringValue: String {
35
+ switch self {
36
+ case .playing:
37
+ return "playing"
38
+ case .paused:
39
+ return "paused"
40
+ case .stopped:
41
+ return "stopped"
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_Playlist.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 NitroModules
9
+
10
+ /**
11
+ * An Swift enum with associated values representing a Variant/Union type.
12
+ * JS type: `null | struct`
13
+ */
14
+ @frozen
15
+ public indirect enum Variant_NullType_Playlist {
16
+ case first(NullType)
17
+ case second(Playlist)
18
+ }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_String.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 NitroModules
9
+
10
+ /**
11
+ * An Swift enum with associated values representing a Variant/Union type.
12
+ * JS type: `null | string`
13
+ */
14
+ @frozen
15
+ public enum Variant_NullType_String {
16
+ case first(NullType)
17
+ case second(String)
18
+ }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_TrackItem.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 NitroModules
9
+
10
+ /**
11
+ * An Swift enum with associated values representing a Variant/Union type.
12
+ * JS type: `null | struct`
13
+ */
14
+ @frozen
15
+ public indirect enum Variant_NullType_TrackItem {
16
+ case first(NullType)
17
+ case second(TrackItem)
18
+ }
@@ -0,0 +1,22 @@
1
+ ///
2
+ /// HybridAndroidAutoMediaLibrarySpec.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 "HybridAndroidAutoMediaLibrarySpec.hpp"
9
+
10
+ namespace margelo::nitro::nitroplayer {
11
+
12
+ void HybridAndroidAutoMediaLibrarySpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridMethod("setMediaLibrary", &HybridAndroidAutoMediaLibrarySpec::setMediaLibrary);
18
+ prototype.registerHybridMethod("clearMediaLibrary", &HybridAndroidAutoMediaLibrarySpec::clearMediaLibrary);
19
+ });
20
+ }
21
+
22
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,63 @@
1
+ ///
2
+ /// HybridAndroidAutoMediaLibrarySpec.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
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+
17
+
18
+ #include <string>
19
+
20
+ namespace margelo::nitro::nitroplayer {
21
+
22
+ using namespace margelo::nitro;
23
+
24
+ /**
25
+ * An abstract base class for `AndroidAutoMediaLibrary`
26
+ * Inherit this class to create instances of `HybridAndroidAutoMediaLibrarySpec` in C++.
27
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
28
+ * @example
29
+ * ```cpp
30
+ * class HybridAndroidAutoMediaLibrary: public HybridAndroidAutoMediaLibrarySpec {
31
+ * public:
32
+ * HybridAndroidAutoMediaLibrary(...): HybridObject(TAG) { ... }
33
+ * // ...
34
+ * };
35
+ * ```
36
+ */
37
+ class HybridAndroidAutoMediaLibrarySpec: public virtual HybridObject {
38
+ public:
39
+ // Constructor
40
+ explicit HybridAndroidAutoMediaLibrarySpec(): HybridObject(TAG) { }
41
+
42
+ // Destructor
43
+ ~HybridAndroidAutoMediaLibrarySpec() override = default;
44
+
45
+ public:
46
+ // Properties
47
+
48
+
49
+ public:
50
+ // Methods
51
+ virtual void setMediaLibrary(const std::string& libraryJson) = 0;
52
+ virtual void clearMediaLibrary() = 0;
53
+
54
+ protected:
55
+ // Hybrid Setup
56
+ void loadHybridMethods() override;
57
+
58
+ protected:
59
+ // Tag for logging
60
+ static constexpr auto TAG = "AndroidAutoMediaLibrary";
61
+ };
62
+
63
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,22 @@
1
+ ///
2
+ /// HybridAudioDevicesSpec.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 "HybridAudioDevicesSpec.hpp"
9
+
10
+ namespace margelo::nitro::nitroplayer {
11
+
12
+ void HybridAudioDevicesSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridMethod("getAudioDevices", &HybridAudioDevicesSpec::getAudioDevices);
18
+ prototype.registerHybridMethod("setAudioDevice", &HybridAudioDevicesSpec::setAudioDevice);
19
+ });
20
+ }
21
+
22
+ } // namespace margelo::nitro::nitroplayer