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
@@ -0,0 +1,107 @@
1
+ ///
2
+ /// DownloadedTrack.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 `TrackItem` to properly resolve imports.
27
+ namespace margelo::nitro::nitroplayer { struct TrackItem; }
28
+ // Forward declaration of `StorageLocation` to properly resolve imports.
29
+ namespace margelo::nitro::nitroplayer { enum class StorageLocation; }
30
+
31
+ #include <string>
32
+ #include "TrackItem.hpp"
33
+ #include <NitroModules/Null.hpp>
34
+ #include <variant>
35
+ #include <optional>
36
+ #include "StorageLocation.hpp"
37
+
38
+ namespace margelo::nitro::nitroplayer {
39
+
40
+ /**
41
+ * A struct which can be represented as a JavaScript object (DownloadedTrack).
42
+ */
43
+ struct DownloadedTrack {
44
+ public:
45
+ std::string trackId SWIFT_PRIVATE;
46
+ TrackItem originalTrack SWIFT_PRIVATE;
47
+ std::string localPath SWIFT_PRIVATE;
48
+ std::optional<std::variant<nitro::NullType, std::string>> localArtworkPath SWIFT_PRIVATE;
49
+ double downloadedAt SWIFT_PRIVATE;
50
+ double fileSize SWIFT_PRIVATE;
51
+ StorageLocation storageLocation SWIFT_PRIVATE;
52
+
53
+ public:
54
+ DownloadedTrack() = default;
55
+ explicit DownloadedTrack(std::string trackId, TrackItem originalTrack, std::string localPath, std::optional<std::variant<nitro::NullType, std::string>> localArtworkPath, double downloadedAt, double fileSize, StorageLocation storageLocation): trackId(trackId), originalTrack(originalTrack), localPath(localPath), localArtworkPath(localArtworkPath), downloadedAt(downloadedAt), fileSize(fileSize), storageLocation(storageLocation) {}
56
+ };
57
+
58
+ } // namespace margelo::nitro::nitroplayer
59
+
60
+ namespace margelo::nitro {
61
+
62
+ // C++ DownloadedTrack <> JS DownloadedTrack (object)
63
+ template <>
64
+ struct JSIConverter<margelo::nitro::nitroplayer::DownloadedTrack> final {
65
+ static inline margelo::nitro::nitroplayer::DownloadedTrack fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
66
+ jsi::Object obj = arg.asObject(runtime);
67
+ return margelo::nitro::nitroplayer::DownloadedTrack(
68
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "trackId")),
69
+ JSIConverter<margelo::nitro::nitroplayer::TrackItem>::fromJSI(runtime, obj.getProperty(runtime, "originalTrack")),
70
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "localPath")),
71
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, "localArtworkPath")),
72
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "downloadedAt")),
73
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "fileSize")),
74
+ JSIConverter<margelo::nitro::nitroplayer::StorageLocation>::fromJSI(runtime, obj.getProperty(runtime, "storageLocation"))
75
+ );
76
+ }
77
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::DownloadedTrack& arg) {
78
+ jsi::Object obj(runtime);
79
+ obj.setProperty(runtime, "trackId", JSIConverter<std::string>::toJSI(runtime, arg.trackId));
80
+ obj.setProperty(runtime, "originalTrack", JSIConverter<margelo::nitro::nitroplayer::TrackItem>::toJSI(runtime, arg.originalTrack));
81
+ obj.setProperty(runtime, "localPath", JSIConverter<std::string>::toJSI(runtime, arg.localPath));
82
+ obj.setProperty(runtime, "localArtworkPath", JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.localArtworkPath));
83
+ obj.setProperty(runtime, "downloadedAt", JSIConverter<double>::toJSI(runtime, arg.downloadedAt));
84
+ obj.setProperty(runtime, "fileSize", JSIConverter<double>::toJSI(runtime, arg.fileSize));
85
+ obj.setProperty(runtime, "storageLocation", JSIConverter<margelo::nitro::nitroplayer::StorageLocation>::toJSI(runtime, arg.storageLocation));
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::string>::canConvert(runtime, obj.getProperty(runtime, "trackId"))) return false;
97
+ if (!JSIConverter<margelo::nitro::nitroplayer::TrackItem>::canConvert(runtime, obj.getProperty(runtime, "originalTrack"))) return false;
98
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "localPath"))) return false;
99
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, "localArtworkPath"))) return false;
100
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "downloadedAt"))) return false;
101
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "fileSize"))) return false;
102
+ if (!JSIConverter<margelo::nitro::nitroplayer::StorageLocation>::canConvert(runtime, obj.getProperty(runtime, "storageLocation"))) return false;
103
+ return true;
104
+ }
105
+ };
106
+
107
+ } // namespace margelo::nitro
@@ -0,0 +1,87 @@
1
+ ///
2
+ /// EqualizerBand.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
+
27
+
28
+ #include <string>
29
+
30
+ namespace margelo::nitro::nitroplayer {
31
+
32
+ /**
33
+ * A struct which can be represented as a JavaScript object (EqualizerBand).
34
+ */
35
+ struct EqualizerBand {
36
+ public:
37
+ double index SWIFT_PRIVATE;
38
+ double centerFrequency SWIFT_PRIVATE;
39
+ double gainDb SWIFT_PRIVATE;
40
+ std::string frequencyLabel SWIFT_PRIVATE;
41
+
42
+ public:
43
+ EqualizerBand() = default;
44
+ explicit EqualizerBand(double index, double centerFrequency, double gainDb, std::string frequencyLabel): index(index), centerFrequency(centerFrequency), gainDb(gainDb), frequencyLabel(frequencyLabel) {}
45
+ };
46
+
47
+ } // namespace margelo::nitro::nitroplayer
48
+
49
+ namespace margelo::nitro {
50
+
51
+ // C++ EqualizerBand <> JS EqualizerBand (object)
52
+ template <>
53
+ struct JSIConverter<margelo::nitro::nitroplayer::EqualizerBand> final {
54
+ static inline margelo::nitro::nitroplayer::EqualizerBand fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
55
+ jsi::Object obj = arg.asObject(runtime);
56
+ return margelo::nitro::nitroplayer::EqualizerBand(
57
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "index")),
58
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "centerFrequency")),
59
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "gainDb")),
60
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "frequencyLabel"))
61
+ );
62
+ }
63
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::EqualizerBand& arg) {
64
+ jsi::Object obj(runtime);
65
+ obj.setProperty(runtime, "index", JSIConverter<double>::toJSI(runtime, arg.index));
66
+ obj.setProperty(runtime, "centerFrequency", JSIConverter<double>::toJSI(runtime, arg.centerFrequency));
67
+ obj.setProperty(runtime, "gainDb", JSIConverter<double>::toJSI(runtime, arg.gainDb));
68
+ obj.setProperty(runtime, "frequencyLabel", JSIConverter<std::string>::toJSI(runtime, arg.frequencyLabel));
69
+ return obj;
70
+ }
71
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
72
+ if (!value.isObject()) {
73
+ return false;
74
+ }
75
+ jsi::Object obj = value.getObject(runtime);
76
+ if (!nitro::isPlainObject(runtime, obj)) {
77
+ return false;
78
+ }
79
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "index"))) return false;
80
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "centerFrequency"))) return false;
81
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "gainDb"))) return false;
82
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "frequencyLabel"))) return false;
83
+ return true;
84
+ }
85
+ };
86
+
87
+ } // namespace margelo::nitro
@@ -0,0 +1,86 @@
1
+ ///
2
+ /// EqualizerPreset.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 `PresetType` to properly resolve imports.
27
+ namespace margelo::nitro::nitroplayer { enum class PresetType; }
28
+
29
+ #include <string>
30
+ #include <vector>
31
+ #include "PresetType.hpp"
32
+
33
+ namespace margelo::nitro::nitroplayer {
34
+
35
+ /**
36
+ * A struct which can be represented as a JavaScript object (EqualizerPreset).
37
+ */
38
+ struct EqualizerPreset {
39
+ public:
40
+ std::string name SWIFT_PRIVATE;
41
+ std::vector<double> gains SWIFT_PRIVATE;
42
+ PresetType type SWIFT_PRIVATE;
43
+
44
+ public:
45
+ EqualizerPreset() = default;
46
+ explicit EqualizerPreset(std::string name, std::vector<double> gains, PresetType type): name(name), gains(gains), type(type) {}
47
+ };
48
+
49
+ } // namespace margelo::nitro::nitroplayer
50
+
51
+ namespace margelo::nitro {
52
+
53
+ // C++ EqualizerPreset <> JS EqualizerPreset (object)
54
+ template <>
55
+ struct JSIConverter<margelo::nitro::nitroplayer::EqualizerPreset> final {
56
+ static inline margelo::nitro::nitroplayer::EqualizerPreset fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
57
+ jsi::Object obj = arg.asObject(runtime);
58
+ return margelo::nitro::nitroplayer::EqualizerPreset(
59
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "name")),
60
+ JSIConverter<std::vector<double>>::fromJSI(runtime, obj.getProperty(runtime, "gains")),
61
+ JSIConverter<margelo::nitro::nitroplayer::PresetType>::fromJSI(runtime, obj.getProperty(runtime, "type"))
62
+ );
63
+ }
64
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::EqualizerPreset& arg) {
65
+ jsi::Object obj(runtime);
66
+ obj.setProperty(runtime, "name", JSIConverter<std::string>::toJSI(runtime, arg.name));
67
+ obj.setProperty(runtime, "gains", JSIConverter<std::vector<double>>::toJSI(runtime, arg.gains));
68
+ obj.setProperty(runtime, "type", JSIConverter<margelo::nitro::nitroplayer::PresetType>::toJSI(runtime, arg.type));
69
+ return obj;
70
+ }
71
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
72
+ if (!value.isObject()) {
73
+ return false;
74
+ }
75
+ jsi::Object obj = value.getObject(runtime);
76
+ if (!nitro::isPlainObject(runtime, obj)) {
77
+ return false;
78
+ }
79
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "name"))) return false;
80
+ if (!JSIConverter<std::vector<double>>::canConvert(runtime, obj.getProperty(runtime, "gains"))) return false;
81
+ if (!JSIConverter<margelo::nitro::nitroplayer::PresetType>::canConvert(runtime, obj.getProperty(runtime, "type"))) return false;
82
+ return true;
83
+ }
84
+ };
85
+
86
+ } // namespace margelo::nitro
@@ -0,0 +1,89 @@
1
+ ///
2
+ /// EqualizerState.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 `EqualizerBand` to properly resolve imports.
27
+ namespace margelo::nitro::nitroplayer { struct EqualizerBand; }
28
+
29
+ #include "EqualizerBand.hpp"
30
+ #include <vector>
31
+ #include <NitroModules/Null.hpp>
32
+ #include <string>
33
+ #include <variant>
34
+ #include <optional>
35
+
36
+ namespace margelo::nitro::nitroplayer {
37
+
38
+ /**
39
+ * A struct which can be represented as a JavaScript object (EqualizerState).
40
+ */
41
+ struct EqualizerState {
42
+ public:
43
+ bool enabled SWIFT_PRIVATE;
44
+ std::vector<EqualizerBand> bands SWIFT_PRIVATE;
45
+ std::optional<std::variant<nitro::NullType, std::string>> currentPreset SWIFT_PRIVATE;
46
+
47
+ public:
48
+ EqualizerState() = default;
49
+ explicit EqualizerState(bool enabled, std::vector<EqualizerBand> bands, std::optional<std::variant<nitro::NullType, std::string>> currentPreset): enabled(enabled), bands(bands), currentPreset(currentPreset) {}
50
+ };
51
+
52
+ } // namespace margelo::nitro::nitroplayer
53
+
54
+ namespace margelo::nitro {
55
+
56
+ // C++ EqualizerState <> JS EqualizerState (object)
57
+ template <>
58
+ struct JSIConverter<margelo::nitro::nitroplayer::EqualizerState> final {
59
+ static inline margelo::nitro::nitroplayer::EqualizerState fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
60
+ jsi::Object obj = arg.asObject(runtime);
61
+ return margelo::nitro::nitroplayer::EqualizerState(
62
+ JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, "enabled")),
63
+ JSIConverter<std::vector<margelo::nitro::nitroplayer::EqualizerBand>>::fromJSI(runtime, obj.getProperty(runtime, "bands")),
64
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, "currentPreset"))
65
+ );
66
+ }
67
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::EqualizerState& arg) {
68
+ jsi::Object obj(runtime);
69
+ obj.setProperty(runtime, "enabled", JSIConverter<bool>::toJSI(runtime, arg.enabled));
70
+ obj.setProperty(runtime, "bands", JSIConverter<std::vector<margelo::nitro::nitroplayer::EqualizerBand>>::toJSI(runtime, arg.bands));
71
+ obj.setProperty(runtime, "currentPreset", JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.currentPreset));
72
+ return obj;
73
+ }
74
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
75
+ if (!value.isObject()) {
76
+ return false;
77
+ }
78
+ jsi::Object obj = value.getObject(runtime);
79
+ if (!nitro::isPlainObject(runtime, obj)) {
80
+ return false;
81
+ }
82
+ if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, "enabled"))) return false;
83
+ if (!JSIConverter<std::vector<margelo::nitro::nitroplayer::EqualizerBand>>::canConvert(runtime, obj.getProperty(runtime, "bands"))) return false;
84
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, "currentPreset"))) return false;
85
+ return true;
86
+ }
87
+ };
88
+
89
+ } // namespace margelo::nitro
@@ -0,0 +1,79 @@
1
+ ///
2
+ /// GainRange.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
+
27
+
28
+
29
+
30
+ namespace margelo::nitro::nitroplayer {
31
+
32
+ /**
33
+ * A struct which can be represented as a JavaScript object (GainRange).
34
+ */
35
+ struct GainRange {
36
+ public:
37
+ double min SWIFT_PRIVATE;
38
+ double max SWIFT_PRIVATE;
39
+
40
+ public:
41
+ GainRange() = default;
42
+ explicit GainRange(double min, double max): min(min), max(max) {}
43
+ };
44
+
45
+ } // namespace margelo::nitro::nitroplayer
46
+
47
+ namespace margelo::nitro {
48
+
49
+ // C++ GainRange <> JS GainRange (object)
50
+ template <>
51
+ struct JSIConverter<margelo::nitro::nitroplayer::GainRange> final {
52
+ static inline margelo::nitro::nitroplayer::GainRange fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
53
+ jsi::Object obj = arg.asObject(runtime);
54
+ return margelo::nitro::nitroplayer::GainRange(
55
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "min")),
56
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "max"))
57
+ );
58
+ }
59
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::GainRange& arg) {
60
+ jsi::Object obj(runtime);
61
+ obj.setProperty(runtime, "min", JSIConverter<double>::toJSI(runtime, arg.min));
62
+ obj.setProperty(runtime, "max", JSIConverter<double>::toJSI(runtime, arg.max));
63
+ return obj;
64
+ }
65
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
66
+ if (!value.isObject()) {
67
+ return false;
68
+ }
69
+ jsi::Object obj = value.getObject(runtime);
70
+ if (!nitro::isPlainObject(runtime, obj)) {
71
+ return false;
72
+ }
73
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "min"))) return false;
74
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "max"))) return false;
75
+ return true;
76
+ }
77
+ };
78
+
79
+ } // namespace margelo::nitro
@@ -0,0 +1,55 @@
1
+ ///
2
+ /// HybridDownloadManagerSpec.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 "HybridDownloadManagerSpec.hpp"
9
+
10
+ namespace margelo::nitro::nitroplayer {
11
+
12
+ void HybridDownloadManagerSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridMethod("configure", &HybridDownloadManagerSpec::configure);
18
+ prototype.registerHybridMethod("getConfig", &HybridDownloadManagerSpec::getConfig);
19
+ prototype.registerHybridMethod("downloadTrack", &HybridDownloadManagerSpec::downloadTrack);
20
+ prototype.registerHybridMethod("downloadPlaylist", &HybridDownloadManagerSpec::downloadPlaylist);
21
+ prototype.registerHybridMethod("pauseDownload", &HybridDownloadManagerSpec::pauseDownload);
22
+ prototype.registerHybridMethod("resumeDownload", &HybridDownloadManagerSpec::resumeDownload);
23
+ prototype.registerHybridMethod("cancelDownload", &HybridDownloadManagerSpec::cancelDownload);
24
+ prototype.registerHybridMethod("retryDownload", &HybridDownloadManagerSpec::retryDownload);
25
+ prototype.registerHybridMethod("pauseAllDownloads", &HybridDownloadManagerSpec::pauseAllDownloads);
26
+ prototype.registerHybridMethod("resumeAllDownloads", &HybridDownloadManagerSpec::resumeAllDownloads);
27
+ prototype.registerHybridMethod("cancelAllDownloads", &HybridDownloadManagerSpec::cancelAllDownloads);
28
+ prototype.registerHybridMethod("getDownloadTask", &HybridDownloadManagerSpec::getDownloadTask);
29
+ prototype.registerHybridMethod("getActiveDownloads", &HybridDownloadManagerSpec::getActiveDownloads);
30
+ prototype.registerHybridMethod("getQueueStatus", &HybridDownloadManagerSpec::getQueueStatus);
31
+ prototype.registerHybridMethod("isDownloading", &HybridDownloadManagerSpec::isDownloading);
32
+ prototype.registerHybridMethod("getDownloadState", &HybridDownloadManagerSpec::getDownloadState);
33
+ prototype.registerHybridMethod("isTrackDownloaded", &HybridDownloadManagerSpec::isTrackDownloaded);
34
+ prototype.registerHybridMethod("isPlaylistDownloaded", &HybridDownloadManagerSpec::isPlaylistDownloaded);
35
+ prototype.registerHybridMethod("isPlaylistPartiallyDownloaded", &HybridDownloadManagerSpec::isPlaylistPartiallyDownloaded);
36
+ prototype.registerHybridMethod("getDownloadedTrack", &HybridDownloadManagerSpec::getDownloadedTrack);
37
+ prototype.registerHybridMethod("getAllDownloadedTracks", &HybridDownloadManagerSpec::getAllDownloadedTracks);
38
+ prototype.registerHybridMethod("getDownloadedPlaylist", &HybridDownloadManagerSpec::getDownloadedPlaylist);
39
+ prototype.registerHybridMethod("getAllDownloadedPlaylists", &HybridDownloadManagerSpec::getAllDownloadedPlaylists);
40
+ prototype.registerHybridMethod("getLocalPath", &HybridDownloadManagerSpec::getLocalPath);
41
+ prototype.registerHybridMethod("deleteDownloadedTrack", &HybridDownloadManagerSpec::deleteDownloadedTrack);
42
+ prototype.registerHybridMethod("deleteDownloadedPlaylist", &HybridDownloadManagerSpec::deleteDownloadedPlaylist);
43
+ prototype.registerHybridMethod("deleteAllDownloads", &HybridDownloadManagerSpec::deleteAllDownloads);
44
+ prototype.registerHybridMethod("getStorageInfo", &HybridDownloadManagerSpec::getStorageInfo);
45
+ prototype.registerHybridMethod("syncDownloads", &HybridDownloadManagerSpec::syncDownloads);
46
+ prototype.registerHybridMethod("setPlaybackSourcePreference", &HybridDownloadManagerSpec::setPlaybackSourcePreference);
47
+ prototype.registerHybridMethod("getPlaybackSourcePreference", &HybridDownloadManagerSpec::getPlaybackSourcePreference);
48
+ prototype.registerHybridMethod("getEffectiveUrl", &HybridDownloadManagerSpec::getEffectiveUrl);
49
+ prototype.registerHybridMethod("onDownloadProgress", &HybridDownloadManagerSpec::onDownloadProgress);
50
+ prototype.registerHybridMethod("onDownloadStateChange", &HybridDownloadManagerSpec::onDownloadStateChange);
51
+ prototype.registerHybridMethod("onDownloadComplete", &HybridDownloadManagerSpec::onDownloadComplete);
52
+ });
53
+ }
54
+
55
+ } // namespace margelo::nitro::nitroplayer
@@ -0,0 +1,134 @@
1
+ ///
2
+ /// HybridDownloadManagerSpec.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
+ // Forward declaration of `DownloadConfig` to properly resolve imports.
17
+ namespace margelo::nitro::nitroplayer { struct DownloadConfig; }
18
+ // Forward declaration of `TrackItem` to properly resolve imports.
19
+ namespace margelo::nitro::nitroplayer { struct TrackItem; }
20
+ // Forward declaration of `DownloadTask` to properly resolve imports.
21
+ namespace margelo::nitro::nitroplayer { struct DownloadTask; }
22
+ // Forward declaration of `DownloadQueueStatus` to properly resolve imports.
23
+ namespace margelo::nitro::nitroplayer { struct DownloadQueueStatus; }
24
+ // Forward declaration of `DownloadState` to properly resolve imports.
25
+ namespace margelo::nitro::nitroplayer { enum class DownloadState; }
26
+ // Forward declaration of `DownloadedTrack` to properly resolve imports.
27
+ namespace margelo::nitro::nitroplayer { struct DownloadedTrack; }
28
+ // Forward declaration of `DownloadedPlaylist` to properly resolve imports.
29
+ namespace margelo::nitro::nitroplayer { struct DownloadedPlaylist; }
30
+ // Forward declaration of `DownloadStorageInfo` to properly resolve imports.
31
+ namespace margelo::nitro::nitroplayer { struct DownloadStorageInfo; }
32
+ // Forward declaration of `PlaybackSource` to properly resolve imports.
33
+ namespace margelo::nitro::nitroplayer { enum class PlaybackSource; }
34
+ // Forward declaration of `DownloadProgress` to properly resolve imports.
35
+ namespace margelo::nitro::nitroplayer { struct DownloadProgress; }
36
+ // Forward declaration of `DownloadError` to properly resolve imports.
37
+ namespace margelo::nitro::nitroplayer { struct DownloadError; }
38
+
39
+ #include "DownloadConfig.hpp"
40
+ #include <string>
41
+ #include <NitroModules/Promise.hpp>
42
+ #include "TrackItem.hpp"
43
+ #include <optional>
44
+ #include <vector>
45
+ #include <NitroModules/Null.hpp>
46
+ #include "DownloadTask.hpp"
47
+ #include <variant>
48
+ #include "DownloadQueueStatus.hpp"
49
+ #include "DownloadState.hpp"
50
+ #include "DownloadedTrack.hpp"
51
+ #include "DownloadedPlaylist.hpp"
52
+ #include "DownloadStorageInfo.hpp"
53
+ #include "PlaybackSource.hpp"
54
+ #include "DownloadProgress.hpp"
55
+ #include <functional>
56
+ #include "DownloadError.hpp"
57
+
58
+ namespace margelo::nitro::nitroplayer {
59
+
60
+ using namespace margelo::nitro;
61
+
62
+ /**
63
+ * An abstract base class for `DownloadManager`
64
+ * Inherit this class to create instances of `HybridDownloadManagerSpec` in C++.
65
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
66
+ * @example
67
+ * ```cpp
68
+ * class HybridDownloadManager: public HybridDownloadManagerSpec {
69
+ * public:
70
+ * HybridDownloadManager(...): HybridObject(TAG) { ... }
71
+ * // ...
72
+ * };
73
+ * ```
74
+ */
75
+ class HybridDownloadManagerSpec: public virtual HybridObject {
76
+ public:
77
+ // Constructor
78
+ explicit HybridDownloadManagerSpec(): HybridObject(TAG) { }
79
+
80
+ // Destructor
81
+ ~HybridDownloadManagerSpec() override = default;
82
+
83
+ public:
84
+ // Properties
85
+
86
+
87
+ public:
88
+ // Methods
89
+ virtual void configure(const DownloadConfig& config) = 0;
90
+ virtual DownloadConfig getConfig() = 0;
91
+ virtual std::shared_ptr<Promise<std::string>> downloadTrack(const TrackItem& track, const std::optional<std::string>& playlistId) = 0;
92
+ virtual std::shared_ptr<Promise<std::vector<std::string>>> downloadPlaylist(const std::string& playlistId, const std::vector<TrackItem>& tracks) = 0;
93
+ virtual std::shared_ptr<Promise<void>> pauseDownload(const std::string& downloadId) = 0;
94
+ virtual std::shared_ptr<Promise<void>> resumeDownload(const std::string& downloadId) = 0;
95
+ virtual std::shared_ptr<Promise<void>> cancelDownload(const std::string& downloadId) = 0;
96
+ virtual std::shared_ptr<Promise<void>> retryDownload(const std::string& downloadId) = 0;
97
+ virtual std::shared_ptr<Promise<void>> pauseAllDownloads() = 0;
98
+ virtual std::shared_ptr<Promise<void>> resumeAllDownloads() = 0;
99
+ virtual std::shared_ptr<Promise<void>> cancelAllDownloads() = 0;
100
+ virtual std::variant<nitro::NullType, DownloadTask> getDownloadTask(const std::string& downloadId) = 0;
101
+ virtual std::vector<DownloadTask> getActiveDownloads() = 0;
102
+ virtual DownloadQueueStatus getQueueStatus() = 0;
103
+ virtual bool isDownloading(const std::string& trackId) = 0;
104
+ virtual DownloadState getDownloadState(const std::string& trackId) = 0;
105
+ virtual bool isTrackDownloaded(const std::string& trackId) = 0;
106
+ virtual bool isPlaylistDownloaded(const std::string& playlistId) = 0;
107
+ virtual bool isPlaylistPartiallyDownloaded(const std::string& playlistId) = 0;
108
+ virtual std::variant<nitro::NullType, DownloadedTrack> getDownloadedTrack(const std::string& trackId) = 0;
109
+ virtual std::vector<DownloadedTrack> getAllDownloadedTracks() = 0;
110
+ virtual std::variant<nitro::NullType, DownloadedPlaylist> getDownloadedPlaylist(const std::string& playlistId) = 0;
111
+ virtual std::vector<DownloadedPlaylist> getAllDownloadedPlaylists() = 0;
112
+ virtual std::variant<nitro::NullType, std::string> getLocalPath(const std::string& trackId) = 0;
113
+ virtual std::shared_ptr<Promise<void>> deleteDownloadedTrack(const std::string& trackId) = 0;
114
+ virtual std::shared_ptr<Promise<void>> deleteDownloadedPlaylist(const std::string& playlistId) = 0;
115
+ virtual std::shared_ptr<Promise<void>> deleteAllDownloads() = 0;
116
+ virtual std::shared_ptr<Promise<DownloadStorageInfo>> getStorageInfo() = 0;
117
+ virtual double syncDownloads() = 0;
118
+ virtual void setPlaybackSourcePreference(PlaybackSource preference) = 0;
119
+ virtual PlaybackSource getPlaybackSourcePreference() = 0;
120
+ virtual std::string getEffectiveUrl(const TrackItem& track) = 0;
121
+ virtual void onDownloadProgress(const std::function<void(const DownloadProgress& /* progress */)>& callback) = 0;
122
+ virtual void onDownloadStateChange(const std::function<void(const std::string& /* downloadId */, const std::string& /* trackId */, DownloadState /* state */, const std::optional<DownloadError>& /* error */)>& callback) = 0;
123
+ virtual void onDownloadComplete(const std::function<void(const DownloadedTrack& /* downloadedTrack */)>& callback) = 0;
124
+
125
+ protected:
126
+ // Hybrid Setup
127
+ void loadHybridMethods() override;
128
+
129
+ protected:
130
+ // Tag for logging
131
+ static constexpr auto TAG = "DownloadManager";
132
+ };
133
+
134
+ } // namespace margelo::nitro::nitroplayer