react-native-nitro-player 0.3.0-alpha.9 → 0.4.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 (257) hide show
  1. package/README.md +444 -4
  2. package/android/build.gradle +4 -1
  3. package/android/src/main/AndroidManifest.xml +16 -1
  4. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +2 -0
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +8 -0
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridDownloadManager.kt +225 -0
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridEqualizer.kt +105 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +6 -6
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +37 -12
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +970 -213
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +475 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadFileManager.kt +159 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadManagerCore.kt +489 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadWorker.kt +209 -0
  15. package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +486 -0
  16. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaBrowserService.kt +3 -1
  17. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +14 -6
  18. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +27 -0
  19. package/ios/HybridDownloadManager.swift +226 -0
  20. package/ios/HybridEqualizer.swift +111 -0
  21. package/ios/HybridTrackPlayer.swift +36 -8
  22. package/ios/core/TrackPlayerCore.swift +998 -276
  23. package/ios/download/DownloadDatabase.swift +493 -0
  24. package/ios/download/DownloadFileManager.swift +241 -0
  25. package/ios/download/DownloadManagerCore.swift +923 -0
  26. package/ios/equalizer/EqualizerCore.swift +685 -0
  27. package/ios/media/MediaSessionManager.swift +40 -28
  28. package/ios/playlist/PlaylistManager.swift +40 -9
  29. package/ios/queue/HybridPlayerQueue.swift +33 -13
  30. package/lib/hooks/downloadCallbackManager.d.ts +36 -0
  31. package/lib/hooks/downloadCallbackManager.js +108 -0
  32. package/lib/hooks/equalizerCallbackManager.d.ts +37 -0
  33. package/lib/hooks/equalizerCallbackManager.js +109 -0
  34. package/lib/hooks/index.d.ts +16 -0
  35. package/lib/hooks/index.js +10 -0
  36. package/lib/hooks/useActualQueue.d.ts +48 -0
  37. package/lib/hooks/useActualQueue.js +98 -0
  38. package/lib/hooks/useDownloadActions.d.ts +26 -0
  39. package/lib/hooks/useDownloadActions.js +117 -0
  40. package/lib/hooks/useDownloadProgress.d.ts +25 -0
  41. package/lib/hooks/useDownloadProgress.js +79 -0
  42. package/lib/hooks/useDownloadStorage.d.ts +19 -0
  43. package/lib/hooks/useDownloadStorage.js +60 -0
  44. package/lib/hooks/useDownloadedTracks.d.ts +25 -0
  45. package/lib/hooks/useDownloadedTracks.js +69 -0
  46. package/lib/hooks/useEqualizer.d.ts +25 -0
  47. package/lib/hooks/useEqualizer.js +124 -0
  48. package/lib/hooks/useEqualizerPresets.d.ts +22 -0
  49. package/lib/hooks/useEqualizerPresets.js +96 -0
  50. package/lib/hooks/useNowPlaying.js +3 -2
  51. package/lib/hooks/useOnChangeTrack.js +15 -12
  52. package/lib/hooks/useOnPlaybackStateChange.js +16 -13
  53. package/lib/hooks/usePlaylist.d.ts +48 -0
  54. package/lib/hooks/usePlaylist.js +136 -0
  55. package/lib/index.d.ts +6 -0
  56. package/lib/index.js +6 -0
  57. package/lib/specs/DownloadManager.nitro.d.ts +152 -0
  58. package/lib/specs/DownloadManager.nitro.js +1 -0
  59. package/lib/specs/Equalizer.nitro.d.ts +43 -0
  60. package/lib/specs/Equalizer.nitro.js +1 -0
  61. package/lib/specs/TrackPlayer.nitro.d.ts +6 -2
  62. package/lib/types/DownloadTypes.d.ts +110 -0
  63. package/lib/types/DownloadTypes.js +1 -0
  64. package/lib/types/EqualizerTypes.d.ts +52 -0
  65. package/lib/types/EqualizerTypes.js +1 -0
  66. package/lib/types/PlayerQueue.d.ts +4 -0
  67. package/nitro.json +8 -0
  68. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +10 -1
  69. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +32 -2
  70. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +65 -0
  71. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +92 -0
  72. package/nitrogen/generated/android/c++/JDownloadError.hpp +71 -0
  73. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +74 -0
  74. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +79 -0
  75. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +81 -0
  76. package/nitrogen/generated/android/c++/JDownloadState.hpp +71 -0
  77. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +73 -0
  78. package/nitrogen/generated/android/c++/JDownloadTask.hpp +108 -0
  79. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +111 -0
  80. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +92 -0
  81. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +69 -0
  82. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +78 -0
  83. package/nitrogen/generated/android/c++/JEqualizerState.hpp +91 -0
  84. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +80 -0
  85. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +89 -0
  86. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -0
  87. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +81 -0
  88. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -0
  89. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +83 -0
  90. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +97 -0
  91. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -0
  92. package/nitrogen/generated/android/c++/JGainRange.hpp +61 -0
  93. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +470 -0
  94. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +99 -0
  95. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +204 -0
  96. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +82 -0
  97. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +2 -0
  98. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +117 -15
  99. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +6 -2
  100. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +62 -0
  101. package/nitrogen/generated/android/c++/JPlayerState.hpp +11 -3
  102. package/nitrogen/generated/android/c++/JPlaylist.hpp +2 -0
  103. package/nitrogen/generated/android/c++/JPresetType.hpp +59 -0
  104. package/nitrogen/generated/android/c++/JStorageLocation.hpp +59 -0
  105. package/nitrogen/generated/android/c++/JTrackItem.hpp +9 -3
  106. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +3 -3
  107. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  108. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  109. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.cpp +26 -0
  110. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +74 -0
  111. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.cpp +26 -0
  112. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +84 -0
  113. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.cpp +26 -0
  114. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +85 -0
  115. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.cpp +26 -0
  116. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +80 -0
  117. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +2 -0
  118. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +2 -0
  119. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CurrentPlayingType.kt +23 -0
  120. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadConfig.kt +59 -0
  121. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadError.kt +47 -0
  122. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadErrorReason.kt +26 -0
  123. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadProgress.kt +53 -0
  124. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadQueueStatus.kt +56 -0
  125. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadState.kt +25 -0
  126. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadStorageInfo.kt +50 -0
  127. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadTask.kt +65 -0
  128. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedPlaylist.kt +53 -0
  129. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedTrack.kt +56 -0
  130. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerBand.kt +47 -0
  131. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerPreset.kt +44 -0
  132. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerState.kt +44 -0
  133. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadProgress.kt +80 -0
  134. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadedTrack.kt +80 -0
  135. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__optional_std__variant_nitro__NullType__std__string__.kt +80 -0
  136. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.kt +80 -0
  137. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_.kt +80 -0
  138. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/GainRange.kt +41 -0
  139. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +210 -0
  140. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +141 -0
  141. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +19 -2
  142. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlaybackSource.kt +22 -0
  143. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerState.kt +6 -3
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PresetType.kt +21 -0
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/StorageLocation.kt +21 -0
  146. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackItem.kt +7 -3
  147. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackPlayerState.kt +2 -2
  148. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +59 -0
  149. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +59 -0
  150. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +59 -0
  151. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +59 -0
  152. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +59 -0
  153. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +138 -8
  154. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +1046 -121
  155. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +66 -0
  156. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +16 -0
  157. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +30 -0
  158. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.cpp +11 -0
  159. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +386 -0
  160. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.cpp +11 -0
  161. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +223 -0
  162. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +1 -0
  163. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +46 -6
  164. package/nitrogen/generated/ios/swift/CurrentPlayingType.swift +48 -0
  165. package/nitrogen/generated/ios/swift/DownloadConfig.swift +270 -0
  166. package/nitrogen/generated/ios/swift/DownloadError.swift +69 -0
  167. package/nitrogen/generated/ios/swift/DownloadErrorReason.swift +60 -0
  168. package/nitrogen/generated/ios/swift/DownloadProgress.swift +91 -0
  169. package/nitrogen/generated/ios/swift/DownloadQueueStatus.swift +102 -0
  170. package/nitrogen/generated/ios/swift/DownloadState.swift +56 -0
  171. package/nitrogen/generated/ios/swift/DownloadStorageInfo.swift +80 -0
  172. package/nitrogen/generated/ios/swift/DownloadTask.swift +315 -0
  173. package/nitrogen/generated/ios/swift/DownloadedPlaylist.swift +103 -0
  174. package/nitrogen/generated/ios/swift/DownloadedTrack.swift +147 -0
  175. package/nitrogen/generated/ios/swift/EqualizerBand.swift +69 -0
  176. package/nitrogen/generated/ios/swift/EqualizerPreset.swift +70 -0
  177. package/nitrogen/generated/ios/swift/EqualizerState.swift +115 -0
  178. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  179. package/nitrogen/generated/ios/swift/Func_void_DownloadProgress.swift +47 -0
  180. package/nitrogen/generated/ios/swift/Func_void_DownloadStorageInfo.swift +47 -0
  181. package/nitrogen/generated/ios/swift/Func_void_DownloadedTrack.swift +47 -0
  182. package/nitrogen/generated/ios/swift/Func_void_PlayerState.swift +47 -0
  183. package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
  184. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  185. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__std__string__.swift +66 -0
  186. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  187. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.swift +47 -0
  188. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +47 -0
  189. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem_.swift +47 -0
  190. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +47 -0
  191. package/nitrogen/generated/ios/swift/GainRange.swift +47 -0
  192. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +90 -0
  193. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +705 -0
  194. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +73 -0
  195. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +396 -0
  196. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +6 -2
  197. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +105 -8
  198. package/nitrogen/generated/ios/swift/PlaybackSource.swift +44 -0
  199. package/nitrogen/generated/ios/swift/PlayerState.swift +13 -2
  200. package/nitrogen/generated/ios/swift/PresetType.swift +40 -0
  201. package/nitrogen/generated/ios/swift/StorageLocation.swift +40 -0
  202. package/nitrogen/generated/ios/swift/TrackItem.swift +31 -1
  203. package/nitrogen/generated/ios/swift/TrackPlayerState.swift +4 -4
  204. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +18 -0
  205. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadError.swift +18 -0
  206. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadTask.swift +18 -0
  207. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedPlaylist.swift +18 -0
  208. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedTrack.swift +18 -0
  209. package/nitrogen/generated/shared/c++/CurrentPlayingType.hpp +84 -0
  210. package/nitrogen/generated/shared/c++/DownloadConfig.hpp +108 -0
  211. package/nitrogen/generated/shared/c++/DownloadError.hpp +89 -0
  212. package/nitrogen/generated/shared/c++/DownloadErrorReason.hpp +96 -0
  213. package/nitrogen/generated/shared/c++/DownloadProgress.hpp +97 -0
  214. package/nitrogen/generated/shared/c++/DownloadQueueStatus.hpp +99 -0
  215. package/nitrogen/generated/shared/c++/DownloadState.hpp +92 -0
  216. package/nitrogen/generated/shared/c++/DownloadStorageInfo.hpp +91 -0
  217. package/nitrogen/generated/shared/c++/DownloadTask.hpp +122 -0
  218. package/nitrogen/generated/shared/c++/DownloadedPlaylist.hpp +101 -0
  219. package/nitrogen/generated/shared/c++/DownloadedTrack.hpp +107 -0
  220. package/nitrogen/generated/shared/c++/EqualizerBand.hpp +87 -0
  221. package/nitrogen/generated/shared/c++/EqualizerPreset.hpp +86 -0
  222. package/nitrogen/generated/shared/c++/EqualizerState.hpp +89 -0
  223. package/nitrogen/generated/shared/c++/GainRange.hpp +79 -0
  224. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.cpp +55 -0
  225. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +134 -0
  226. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp +38 -0
  227. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +95 -0
  228. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +4 -0
  229. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +11 -5
  230. package/nitrogen/generated/shared/c++/PlaybackSource.hpp +80 -0
  231. package/nitrogen/generated/shared/c++/PlayerState.hpp +9 -2
  232. package/nitrogen/generated/shared/c++/PresetType.hpp +76 -0
  233. package/nitrogen/generated/shared/c++/StorageLocation.hpp +76 -0
  234. package/nitrogen/generated/shared/c++/TrackItem.hpp +7 -2
  235. package/nitrogen/generated/shared/c++/TrackPlayerState.hpp +5 -5
  236. package/package.json +1 -1
  237. package/src/hooks/downloadCallbackManager.ts +149 -0
  238. package/src/hooks/equalizerCallbackManager.ts +138 -0
  239. package/src/hooks/index.ts +23 -0
  240. package/src/hooks/useActualQueue.ts +116 -0
  241. package/src/hooks/useDownloadActions.ts +179 -0
  242. package/src/hooks/useDownloadProgress.ts +126 -0
  243. package/src/hooks/useDownloadStorage.ts +84 -0
  244. package/src/hooks/useDownloadedTracks.ts +138 -0
  245. package/src/hooks/useEqualizer.ts +173 -0
  246. package/src/hooks/useEqualizerPresets.ts +140 -0
  247. package/src/hooks/useNowPlaying.ts +3 -2
  248. package/src/hooks/useOnChangeTrack.ts +15 -11
  249. package/src/hooks/useOnPlaybackStateChange.ts +19 -15
  250. package/src/hooks/usePlaylist.ts +161 -0
  251. package/src/index.ts +12 -0
  252. package/src/specs/DownloadManager.nitro.ts +203 -0
  253. package/src/specs/Equalizer.nitro.ts +69 -0
  254. package/src/specs/TrackPlayer.nitro.ts +6 -2
  255. package/src/types/DownloadTypes.ts +135 -0
  256. package/src/types/EqualizerTypes.ts +72 -0
  257. package/src/types/PlayerQueue.ts +9 -0
@@ -19,7 +19,7 @@ public extension PlayerState {
19
19
  /**
20
20
  * Create a new instance of `PlayerState`.
21
21
  */
22
- init(currentTrack: Variant_NullType_TrackItem?, currentPosition: Double, totalDuration: Double, currentState: TrackPlayerState, currentPlaylistId: Variant_NullType_String?, currentIndex: Double) {
22
+ init(currentTrack: Variant_NullType_TrackItem?, currentPosition: Double, totalDuration: Double, currentState: TrackPlayerState, currentPlaylistId: Variant_NullType_String?, currentIndex: Double, currentPlayingType: CurrentPlayingType) {
23
23
  self.init({ () -> bridge.std__optional_std__variant_nitro__NullType__TrackItem__ in
24
24
  if let __unwrappedValue = currentTrack {
25
25
  return bridge.create_std__optional_std__variant_nitro__NullType__TrackItem__({ () -> bridge.std__variant_nitro__NullType__TrackItem_ in
@@ -46,7 +46,7 @@ public extension PlayerState {
46
46
  } else {
47
47
  return .init()
48
48
  }
49
- }(), currentIndex)
49
+ }(), currentIndex, currentPlayingType)
50
50
  }
51
51
 
52
52
  var currentTrack: Variant_NullType_TrackItem? {
@@ -178,4 +178,15 @@ public extension PlayerState {
178
178
  self.__currentIndex = newValue
179
179
  }
180
180
  }
181
+
182
+ var currentPlayingType: CurrentPlayingType {
183
+ @inline(__always)
184
+ get {
185
+ return self.__currentPlayingType
186
+ }
187
+ @inline(__always)
188
+ set {
189
+ self.__currentPlayingType = newValue
190
+ }
191
+ }
181
192
  }
@@ -0,0 +1,40 @@
1
+ ///
2
+ /// PresetType.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 `PresetType`, backed by a C++ enum.
10
+ */
11
+ public typealias PresetType = margelo.nitro.nitroplayer.PresetType
12
+
13
+ public extension PresetType {
14
+ /**
15
+ * Get a PresetType 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 "built-in":
21
+ self = .builtIn
22
+ case "custom":
23
+ self = .custom
24
+ default:
25
+ return nil
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Get the String value this PresetType represents.
31
+ */
32
+ var stringValue: String {
33
+ switch self {
34
+ case .builtIn:
35
+ return "built-in"
36
+ case .custom:
37
+ return "custom"
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,40 @@
1
+ ///
2
+ /// StorageLocation.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 `StorageLocation`, backed by a C++ enum.
10
+ */
11
+ public typealias StorageLocation = margelo.nitro.nitroplayer.StorageLocation
12
+
13
+ public extension StorageLocation {
14
+ /**
15
+ * Get a StorageLocation 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 "private":
21
+ self = .private
22
+ case "public":
23
+ self = .public
24
+ default:
25
+ return nil
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Get the String value this StorageLocation represents.
31
+ */
32
+ var stringValue: String {
33
+ switch self {
34
+ case .private:
35
+ return "private"
36
+ case .public:
37
+ return "public"
38
+ }
39
+ }
40
+ }
@@ -19,7 +19,7 @@ public extension TrackItem {
19
19
  /**
20
20
  * Create a new instance of `TrackItem`.
21
21
  */
22
- init(id: String, title: String, artist: String, album: String, duration: Double, url: String, artwork: Variant_NullType_String?) {
22
+ init(id: String, title: String, artist: String, album: String, duration: Double, url: String, artwork: Variant_NullType_String?, extraPayload: AnyMap?) {
23
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
24
  if let __unwrappedValue = artwork {
25
25
  return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
@@ -33,6 +33,12 @@ public extension TrackItem {
33
33
  } else {
34
34
  return .init()
35
35
  }
36
+ }(), { () -> bridge.std__optional_std__shared_ptr_AnyMap__ in
37
+ if let __unwrappedValue = extraPayload {
38
+ return bridge.create_std__optional_std__shared_ptr_AnyMap__(__unwrappedValue.cppPart)
39
+ } else {
40
+ return .init()
41
+ }
36
42
  }())
37
43
  }
38
44
 
@@ -144,4 +150,28 @@ public extension TrackItem {
144
150
  }()
145
151
  }
146
152
  }
153
+
154
+ var extraPayload: AnyMap? {
155
+ @inline(__always)
156
+ get {
157
+ return { () -> AnyMap? in
158
+ if bridge.has_value_std__optional_std__shared_ptr_AnyMap__(self.__extraPayload) {
159
+ let __unwrapped = bridge.get_std__optional_std__shared_ptr_AnyMap__(self.__extraPayload)
160
+ return AnyMap(withCppPart: __unwrapped)
161
+ } else {
162
+ return nil
163
+ }
164
+ }()
165
+ }
166
+ @inline(__always)
167
+ set {
168
+ self.__extraPayload = { () -> bridge.std__optional_std__shared_ptr_AnyMap__ in
169
+ if let __unwrappedValue = newValue {
170
+ return bridge.create_std__optional_std__shared_ptr_AnyMap__(__unwrappedValue.cppPart)
171
+ } else {
172
+ return .init()
173
+ }
174
+ }()
175
+ }
176
+ }
147
177
  }
@@ -17,10 +17,10 @@ public extension TrackPlayerState {
17
17
  */
18
18
  init?(fromString string: String) {
19
19
  switch string {
20
- case "playing":
21
- self = .playing
22
20
  case "paused":
23
21
  self = .paused
22
+ case "playing":
23
+ self = .playing
24
24
  case "stopped":
25
25
  self = .stopped
26
26
  default:
@@ -33,10 +33,10 @@ public extension TrackPlayerState {
33
33
  */
34
34
  var stringValue: String {
35
35
  switch self {
36
- case .playing:
37
- return "playing"
38
36
  case .paused:
39
37
  return "paused"
38
+ case .playing:
39
+ return "playing"
40
40
  case .stopped:
41
41
  return "stopped"
42
42
  }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_Double.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 | number`
13
+ */
14
+ @frozen
15
+ public enum Variant_NullType_Double {
16
+ case first(NullType)
17
+ case second(Double)
18
+ }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_DownloadError.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_DownloadError {
16
+ case first(NullType)
17
+ case second(DownloadError)
18
+ }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_DownloadTask.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_DownloadTask {
16
+ case first(NullType)
17
+ case second(DownloadTask)
18
+ }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_DownloadedPlaylist.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_DownloadedPlaylist {
16
+ case first(NullType)
17
+ case second(DownloadedPlaylist)
18
+ }
@@ -0,0 +1,18 @@
1
+ ///
2
+ /// Variant_NullType_DownloadedTrack.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_DownloadedTrack {
16
+ case first(NullType)
17
+ case second(DownloadedTrack)
18
+ }
@@ -0,0 +1,84 @@
1
+ ///
2
+ /// CurrentPlayingType.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/NitroHash.hpp>)
11
+ #include <NitroModules/NitroHash.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
16
+ #include <NitroModules/JSIConverter.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
21
+ #include <NitroModules/NitroDefines.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+ namespace margelo::nitro::nitroplayer {
27
+
28
+ /**
29
+ * An enum which can be represented as a JavaScript union (CurrentPlayingType).
30
+ */
31
+ enum class CurrentPlayingType {
32
+ PLAYLIST SWIFT_NAME(playlist) = 0,
33
+ UP_NEXT SWIFT_NAME(upNext) = 1,
34
+ PLAY_NEXT SWIFT_NAME(playNext) = 2,
35
+ NOT_PLAYING SWIFT_NAME(notPlaying) = 3,
36
+ } CLOSED_ENUM;
37
+
38
+ } // namespace margelo::nitro::nitroplayer
39
+
40
+ namespace margelo::nitro {
41
+
42
+ // C++ CurrentPlayingType <> JS CurrentPlayingType (union)
43
+ template <>
44
+ struct JSIConverter<margelo::nitro::nitroplayer::CurrentPlayingType> final {
45
+ static inline margelo::nitro::nitroplayer::CurrentPlayingType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
46
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
47
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
48
+ case hashString("playlist"): return margelo::nitro::nitroplayer::CurrentPlayingType::PLAYLIST;
49
+ case hashString("up-next"): return margelo::nitro::nitroplayer::CurrentPlayingType::UP_NEXT;
50
+ case hashString("play-next"): return margelo::nitro::nitroplayer::CurrentPlayingType::PLAY_NEXT;
51
+ case hashString("not-playing"): return margelo::nitro::nitroplayer::CurrentPlayingType::NOT_PLAYING;
52
+ default: [[unlikely]]
53
+ throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum CurrentPlayingType - invalid value!");
54
+ }
55
+ }
56
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::nitroplayer::CurrentPlayingType arg) {
57
+ switch (arg) {
58
+ case margelo::nitro::nitroplayer::CurrentPlayingType::PLAYLIST: return JSIConverter<std::string>::toJSI(runtime, "playlist");
59
+ case margelo::nitro::nitroplayer::CurrentPlayingType::UP_NEXT: return JSIConverter<std::string>::toJSI(runtime, "up-next");
60
+ case margelo::nitro::nitroplayer::CurrentPlayingType::PLAY_NEXT: return JSIConverter<std::string>::toJSI(runtime, "play-next");
61
+ case margelo::nitro::nitroplayer::CurrentPlayingType::NOT_PLAYING: return JSIConverter<std::string>::toJSI(runtime, "not-playing");
62
+ default: [[unlikely]]
63
+ throw std::invalid_argument("Cannot convert CurrentPlayingType to JS - invalid value: "
64
+ + std::to_string(static_cast<int>(arg)) + "!");
65
+ }
66
+ }
67
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
68
+ if (!value.isString()) {
69
+ return false;
70
+ }
71
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
72
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
73
+ case hashString("playlist"):
74
+ case hashString("up-next"):
75
+ case hashString("play-next"):
76
+ case hashString("not-playing"):
77
+ return true;
78
+ default:
79
+ return false;
80
+ }
81
+ }
82
+ };
83
+
84
+ } // namespace margelo::nitro
@@ -0,0 +1,108 @@
1
+ ///
2
+ /// DownloadConfig.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/JSIConverter.hpp>)
11
+ #include <NitroModules/JSIConverter.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
16
+ #include <NitroModules/NitroDefines.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/JSIHelpers.hpp>)
21
+ #include <NitroModules/JSIHelpers.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+ // Forward declaration of `StorageLocation` to properly resolve imports.
27
+ namespace margelo::nitro::nitroplayer { enum class StorageLocation; }
28
+
29
+ #include "StorageLocation.hpp"
30
+ #include <optional>
31
+ #include <NitroModules/Null.hpp>
32
+ #include <string>
33
+ #include <variant>
34
+
35
+ namespace margelo::nitro::nitroplayer {
36
+
37
+ /**
38
+ * A struct which can be represented as a JavaScript object (DownloadConfig).
39
+ */
40
+ struct DownloadConfig {
41
+ public:
42
+ std::optional<StorageLocation> storageLocation SWIFT_PRIVATE;
43
+ std::optional<double> maxConcurrentDownloads SWIFT_PRIVATE;
44
+ std::optional<bool> autoRetry SWIFT_PRIVATE;
45
+ std::optional<double> maxRetryAttempts SWIFT_PRIVATE;
46
+ std::optional<bool> backgroundDownloadsEnabled SWIFT_PRIVATE;
47
+ std::optional<bool> downloadArtwork SWIFT_PRIVATE;
48
+ std::optional<std::variant<nitro::NullType, std::string>> customDownloadPath SWIFT_PRIVATE;
49
+ std::optional<bool> wifiOnlyDownloads SWIFT_PRIVATE;
50
+
51
+ public:
52
+ DownloadConfig() = default;
53
+ explicit DownloadConfig(std::optional<StorageLocation> storageLocation, std::optional<double> maxConcurrentDownloads, std::optional<bool> autoRetry, std::optional<double> maxRetryAttempts, std::optional<bool> backgroundDownloadsEnabled, std::optional<bool> downloadArtwork, std::optional<std::variant<nitro::NullType, std::string>> customDownloadPath, std::optional<bool> wifiOnlyDownloads): storageLocation(storageLocation), maxConcurrentDownloads(maxConcurrentDownloads), autoRetry(autoRetry), maxRetryAttempts(maxRetryAttempts), backgroundDownloadsEnabled(backgroundDownloadsEnabled), downloadArtwork(downloadArtwork), customDownloadPath(customDownloadPath), wifiOnlyDownloads(wifiOnlyDownloads) {}
54
+ };
55
+
56
+ } // namespace margelo::nitro::nitroplayer
57
+
58
+ namespace margelo::nitro {
59
+
60
+ // C++ DownloadConfig <> JS DownloadConfig (object)
61
+ template <>
62
+ struct JSIConverter<margelo::nitro::nitroplayer::DownloadConfig> final {
63
+ static inline margelo::nitro::nitroplayer::DownloadConfig fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
64
+ jsi::Object obj = arg.asObject(runtime);
65
+ return margelo::nitro::nitroplayer::DownloadConfig(
66
+ JSIConverter<std::optional<margelo::nitro::nitroplayer::StorageLocation>>::fromJSI(runtime, obj.getProperty(runtime, "storageLocation")),
67
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "maxConcurrentDownloads")),
68
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, "autoRetry")),
69
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "maxRetryAttempts")),
70
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, "backgroundDownloadsEnabled")),
71
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, "downloadArtwork")),
72
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, "customDownloadPath")),
73
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, "wifiOnlyDownloads"))
74
+ );
75
+ }
76
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::DownloadConfig& arg) {
77
+ jsi::Object obj(runtime);
78
+ obj.setProperty(runtime, "storageLocation", JSIConverter<std::optional<margelo::nitro::nitroplayer::StorageLocation>>::toJSI(runtime, arg.storageLocation));
79
+ obj.setProperty(runtime, "maxConcurrentDownloads", JSIConverter<std::optional<double>>::toJSI(runtime, arg.maxConcurrentDownloads));
80
+ obj.setProperty(runtime, "autoRetry", JSIConverter<std::optional<bool>>::toJSI(runtime, arg.autoRetry));
81
+ obj.setProperty(runtime, "maxRetryAttempts", JSIConverter<std::optional<double>>::toJSI(runtime, arg.maxRetryAttempts));
82
+ obj.setProperty(runtime, "backgroundDownloadsEnabled", JSIConverter<std::optional<bool>>::toJSI(runtime, arg.backgroundDownloadsEnabled));
83
+ obj.setProperty(runtime, "downloadArtwork", JSIConverter<std::optional<bool>>::toJSI(runtime, arg.downloadArtwork));
84
+ obj.setProperty(runtime, "customDownloadPath", JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.customDownloadPath));
85
+ obj.setProperty(runtime, "wifiOnlyDownloads", JSIConverter<std::optional<bool>>::toJSI(runtime, arg.wifiOnlyDownloads));
86
+ return obj;
87
+ }
88
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
89
+ if (!value.isObject()) {
90
+ return false;
91
+ }
92
+ jsi::Object obj = value.getObject(runtime);
93
+ if (!nitro::isPlainObject(runtime, obj)) {
94
+ return false;
95
+ }
96
+ if (!JSIConverter<std::optional<margelo::nitro::nitroplayer::StorageLocation>>::canConvert(runtime, obj.getProperty(runtime, "storageLocation"))) return false;
97
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "maxConcurrentDownloads"))) return false;
98
+ if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, "autoRetry"))) return false;
99
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "maxRetryAttempts"))) return false;
100
+ if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, "backgroundDownloadsEnabled"))) return false;
101
+ if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, "downloadArtwork"))) return false;
102
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, "customDownloadPath"))) return false;
103
+ if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, "wifiOnlyDownloads"))) return false;
104
+ return true;
105
+ }
106
+ };
107
+
108
+ } // namespace margelo::nitro
@@ -0,0 +1,89 @@
1
+ ///
2
+ /// DownloadError.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/JSIConverter.hpp>)
11
+ #include <NitroModules/JSIConverter.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
16
+ #include <NitroModules/NitroDefines.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/JSIHelpers.hpp>)
21
+ #include <NitroModules/JSIHelpers.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+ // Forward declaration of `DownloadErrorReason` to properly resolve imports.
27
+ namespace margelo::nitro::nitroplayer { enum class DownloadErrorReason; }
28
+
29
+ #include <string>
30
+ #include "DownloadErrorReason.hpp"
31
+
32
+ namespace margelo::nitro::nitroplayer {
33
+
34
+ /**
35
+ * A struct which can be represented as a JavaScript object (DownloadError).
36
+ */
37
+ struct DownloadError {
38
+ public:
39
+ std::string code SWIFT_PRIVATE;
40
+ std::string message SWIFT_PRIVATE;
41
+ DownloadErrorReason reason SWIFT_PRIVATE;
42
+ bool isRetryable SWIFT_PRIVATE;
43
+
44
+ public:
45
+ DownloadError() = default;
46
+ explicit DownloadError(std::string code, std::string message, DownloadErrorReason reason, bool isRetryable): code(code), message(message), reason(reason), isRetryable(isRetryable) {}
47
+ };
48
+
49
+ } // namespace margelo::nitro::nitroplayer
50
+
51
+ namespace margelo::nitro {
52
+
53
+ // C++ DownloadError <> JS DownloadError (object)
54
+ template <>
55
+ struct JSIConverter<margelo::nitro::nitroplayer::DownloadError> final {
56
+ static inline margelo::nitro::nitroplayer::DownloadError fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
57
+ jsi::Object obj = arg.asObject(runtime);
58
+ return margelo::nitro::nitroplayer::DownloadError(
59
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "code")),
60
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "message")),
61
+ JSIConverter<margelo::nitro::nitroplayer::DownloadErrorReason>::fromJSI(runtime, obj.getProperty(runtime, "reason")),
62
+ JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, "isRetryable"))
63
+ );
64
+ }
65
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::DownloadError& arg) {
66
+ jsi::Object obj(runtime);
67
+ obj.setProperty(runtime, "code", JSIConverter<std::string>::toJSI(runtime, arg.code));
68
+ obj.setProperty(runtime, "message", JSIConverter<std::string>::toJSI(runtime, arg.message));
69
+ obj.setProperty(runtime, "reason", JSIConverter<margelo::nitro::nitroplayer::DownloadErrorReason>::toJSI(runtime, arg.reason));
70
+ obj.setProperty(runtime, "isRetryable", JSIConverter<bool>::toJSI(runtime, arg.isRetryable));
71
+ return obj;
72
+ }
73
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
74
+ if (!value.isObject()) {
75
+ return false;
76
+ }
77
+ jsi::Object obj = value.getObject(runtime);
78
+ if (!nitro::isPlainObject(runtime, obj)) {
79
+ return false;
80
+ }
81
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "code"))) return false;
82
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "message"))) return false;
83
+ if (!JSIConverter<margelo::nitro::nitroplayer::DownloadErrorReason>::canConvert(runtime, obj.getProperty(runtime, "reason"))) return false;
84
+ if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, "isRetryable"))) return false;
85
+ return true;
86
+ }
87
+ };
88
+
89
+ } // namespace margelo::nitro
@@ -0,0 +1,96 @@
1
+ ///
2
+ /// DownloadErrorReason.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/NitroHash.hpp>)
11
+ #include <NitroModules/NitroHash.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
16
+ #include <NitroModules/JSIConverter.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
21
+ #include <NitroModules/NitroDefines.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+ namespace margelo::nitro::nitroplayer {
27
+
28
+ /**
29
+ * An enum which can be represented as a JavaScript union (DownloadErrorReason).
30
+ */
31
+ enum class DownloadErrorReason {
32
+ NETWORK_ERROR SWIFT_NAME(networkError) = 0,
33
+ STORAGE_FULL SWIFT_NAME(storageFull) = 1,
34
+ FILE_NOT_FOUND SWIFT_NAME(fileNotFound) = 2,
35
+ PERMISSION_DENIED SWIFT_NAME(permissionDenied) = 3,
36
+ INVALID_URL SWIFT_NAME(invalidUrl) = 4,
37
+ TIMEOUT SWIFT_NAME(timeout) = 5,
38
+ UNKNOWN SWIFT_NAME(unknown) = 6,
39
+ } CLOSED_ENUM;
40
+
41
+ } // namespace margelo::nitro::nitroplayer
42
+
43
+ namespace margelo::nitro {
44
+
45
+ // C++ DownloadErrorReason <> JS DownloadErrorReason (union)
46
+ template <>
47
+ struct JSIConverter<margelo::nitro::nitroplayer::DownloadErrorReason> final {
48
+ static inline margelo::nitro::nitroplayer::DownloadErrorReason fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
49
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
50
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
51
+ case hashString("network_error"): return margelo::nitro::nitroplayer::DownloadErrorReason::NETWORK_ERROR;
52
+ case hashString("storage_full"): return margelo::nitro::nitroplayer::DownloadErrorReason::STORAGE_FULL;
53
+ case hashString("file_not_found"): return margelo::nitro::nitroplayer::DownloadErrorReason::FILE_NOT_FOUND;
54
+ case hashString("permission_denied"): return margelo::nitro::nitroplayer::DownloadErrorReason::PERMISSION_DENIED;
55
+ case hashString("invalid_url"): return margelo::nitro::nitroplayer::DownloadErrorReason::INVALID_URL;
56
+ case hashString("timeout"): return margelo::nitro::nitroplayer::DownloadErrorReason::TIMEOUT;
57
+ case hashString("unknown"): return margelo::nitro::nitroplayer::DownloadErrorReason::UNKNOWN;
58
+ default: [[unlikely]]
59
+ throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum DownloadErrorReason - invalid value!");
60
+ }
61
+ }
62
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::nitroplayer::DownloadErrorReason arg) {
63
+ switch (arg) {
64
+ case margelo::nitro::nitroplayer::DownloadErrorReason::NETWORK_ERROR: return JSIConverter<std::string>::toJSI(runtime, "network_error");
65
+ case margelo::nitro::nitroplayer::DownloadErrorReason::STORAGE_FULL: return JSIConverter<std::string>::toJSI(runtime, "storage_full");
66
+ case margelo::nitro::nitroplayer::DownloadErrorReason::FILE_NOT_FOUND: return JSIConverter<std::string>::toJSI(runtime, "file_not_found");
67
+ case margelo::nitro::nitroplayer::DownloadErrorReason::PERMISSION_DENIED: return JSIConverter<std::string>::toJSI(runtime, "permission_denied");
68
+ case margelo::nitro::nitroplayer::DownloadErrorReason::INVALID_URL: return JSIConverter<std::string>::toJSI(runtime, "invalid_url");
69
+ case margelo::nitro::nitroplayer::DownloadErrorReason::TIMEOUT: return JSIConverter<std::string>::toJSI(runtime, "timeout");
70
+ case margelo::nitro::nitroplayer::DownloadErrorReason::UNKNOWN: return JSIConverter<std::string>::toJSI(runtime, "unknown");
71
+ default: [[unlikely]]
72
+ throw std::invalid_argument("Cannot convert DownloadErrorReason to JS - invalid value: "
73
+ + std::to_string(static_cast<int>(arg)) + "!");
74
+ }
75
+ }
76
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
77
+ if (!value.isString()) {
78
+ return false;
79
+ }
80
+ std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
81
+ switch (hashString(unionValue.c_str(), unionValue.size())) {
82
+ case hashString("network_error"):
83
+ case hashString("storage_full"):
84
+ case hashString("file_not_found"):
85
+ case hashString("permission_denied"):
86
+ case hashString("invalid_url"):
87
+ case hashString("timeout"):
88
+ case hashString("unknown"):
89
+ return true;
90
+ default:
91
+ return false;
92
+ }
93
+ }
94
+ };
95
+
96
+ } // namespace margelo::nitro