react-native-nitro-player 0.3.0-alpha.9 → 0.4.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) 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 +944 -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 +996 -288
  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/callbackManager.d.ts +18 -0
  31. package/lib/hooks/callbackManager.js +66 -0
  32. package/lib/hooks/downloadCallbackManager.d.ts +36 -0
  33. package/lib/hooks/downloadCallbackManager.js +108 -0
  34. package/lib/hooks/equalizerCallbackManager.d.ts +37 -0
  35. package/lib/hooks/equalizerCallbackManager.js +109 -0
  36. package/lib/hooks/index.d.ts +16 -0
  37. package/lib/hooks/index.js +10 -0
  38. package/lib/hooks/useActualQueue.d.ts +48 -0
  39. package/lib/hooks/useActualQueue.js +98 -0
  40. package/lib/hooks/useDownloadActions.d.ts +26 -0
  41. package/lib/hooks/useDownloadActions.js +117 -0
  42. package/lib/hooks/useDownloadProgress.d.ts +25 -0
  43. package/lib/hooks/useDownloadProgress.js +79 -0
  44. package/lib/hooks/useDownloadStorage.d.ts +19 -0
  45. package/lib/hooks/useDownloadStorage.js +60 -0
  46. package/lib/hooks/useDownloadedTracks.d.ts +25 -0
  47. package/lib/hooks/useDownloadedTracks.js +69 -0
  48. package/lib/hooks/useEqualizer.d.ts +25 -0
  49. package/lib/hooks/useEqualizer.js +124 -0
  50. package/lib/hooks/useEqualizerPresets.d.ts +22 -0
  51. package/lib/hooks/useEqualizerPresets.js +96 -0
  52. package/lib/hooks/useNowPlaying.js +32 -19
  53. package/lib/hooks/useOnChangeTrack.js +15 -12
  54. package/lib/hooks/useOnPlaybackProgressChange.js +2 -2
  55. package/lib/hooks/useOnPlaybackStateChange.js +16 -13
  56. package/lib/hooks/usePlaylist.d.ts +48 -0
  57. package/lib/hooks/usePlaylist.js +136 -0
  58. package/lib/index.d.ts +6 -0
  59. package/lib/index.js +6 -0
  60. package/lib/specs/DownloadManager.nitro.d.ts +152 -0
  61. package/lib/specs/DownloadManager.nitro.js +1 -0
  62. package/lib/specs/Equalizer.nitro.d.ts +43 -0
  63. package/lib/specs/Equalizer.nitro.js +1 -0
  64. package/lib/specs/TrackPlayer.nitro.d.ts +6 -2
  65. package/lib/types/DownloadTypes.d.ts +110 -0
  66. package/lib/types/DownloadTypes.js +1 -0
  67. package/lib/types/EqualizerTypes.d.ts +52 -0
  68. package/lib/types/EqualizerTypes.js +1 -0
  69. package/lib/types/PlayerQueue.d.ts +4 -0
  70. package/nitro.json +8 -0
  71. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +10 -1
  72. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +32 -2
  73. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +65 -0
  74. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +92 -0
  75. package/nitrogen/generated/android/c++/JDownloadError.hpp +71 -0
  76. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +74 -0
  77. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +79 -0
  78. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +81 -0
  79. package/nitrogen/generated/android/c++/JDownloadState.hpp +71 -0
  80. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +73 -0
  81. package/nitrogen/generated/android/c++/JDownloadTask.hpp +108 -0
  82. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +111 -0
  83. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +92 -0
  84. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +69 -0
  85. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +78 -0
  86. package/nitrogen/generated/android/c++/JEqualizerState.hpp +91 -0
  87. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +80 -0
  88. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +89 -0
  89. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -0
  90. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +81 -0
  91. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -0
  92. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +83 -0
  93. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +97 -0
  94. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -0
  95. package/nitrogen/generated/android/c++/JGainRange.hpp +61 -0
  96. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +470 -0
  97. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +99 -0
  98. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +204 -0
  99. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +82 -0
  100. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +2 -0
  101. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +117 -15
  102. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +6 -2
  103. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +62 -0
  104. package/nitrogen/generated/android/c++/JPlayerState.hpp +11 -3
  105. package/nitrogen/generated/android/c++/JPlaylist.hpp +2 -0
  106. package/nitrogen/generated/android/c++/JPresetType.hpp +59 -0
  107. package/nitrogen/generated/android/c++/JStorageLocation.hpp +59 -0
  108. package/nitrogen/generated/android/c++/JTrackItem.hpp +9 -3
  109. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +3 -3
  110. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  111. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  112. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.cpp +26 -0
  113. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +74 -0
  114. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.cpp +26 -0
  115. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +84 -0
  116. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.cpp +26 -0
  117. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +85 -0
  118. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.cpp +26 -0
  119. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +80 -0
  120. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +2 -0
  121. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +2 -0
  122. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CurrentPlayingType.kt +23 -0
  123. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadConfig.kt +59 -0
  124. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadError.kt +47 -0
  125. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadErrorReason.kt +26 -0
  126. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadProgress.kt +53 -0
  127. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadQueueStatus.kt +56 -0
  128. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadState.kt +25 -0
  129. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadStorageInfo.kt +50 -0
  130. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadTask.kt +65 -0
  131. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedPlaylist.kt +53 -0
  132. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedTrack.kt +56 -0
  133. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerBand.kt +47 -0
  134. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerPreset.kt +44 -0
  135. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerState.kt +44 -0
  136. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadProgress.kt +80 -0
  137. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadedTrack.kt +80 -0
  138. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__optional_std__variant_nitro__NullType__std__string__.kt +80 -0
  139. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.kt +80 -0
  140. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_.kt +80 -0
  141. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/GainRange.kt +41 -0
  142. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +210 -0
  143. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +141 -0
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +19 -2
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlaybackSource.kt +22 -0
  146. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerState.kt +6 -3
  147. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PresetType.kt +21 -0
  148. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/StorageLocation.kt +21 -0
  149. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackItem.kt +7 -3
  150. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackPlayerState.kt +2 -2
  151. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +59 -0
  152. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +59 -0
  153. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +59 -0
  154. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +59 -0
  155. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +59 -0
  156. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +138 -8
  157. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +1046 -121
  158. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +66 -0
  159. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +16 -0
  160. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +30 -0
  161. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.cpp +11 -0
  162. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +386 -0
  163. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.cpp +11 -0
  164. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +223 -0
  165. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +1 -0
  166. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +46 -6
  167. package/nitrogen/generated/ios/swift/CurrentPlayingType.swift +48 -0
  168. package/nitrogen/generated/ios/swift/DownloadConfig.swift +270 -0
  169. package/nitrogen/generated/ios/swift/DownloadError.swift +69 -0
  170. package/nitrogen/generated/ios/swift/DownloadErrorReason.swift +60 -0
  171. package/nitrogen/generated/ios/swift/DownloadProgress.swift +91 -0
  172. package/nitrogen/generated/ios/swift/DownloadQueueStatus.swift +102 -0
  173. package/nitrogen/generated/ios/swift/DownloadState.swift +56 -0
  174. package/nitrogen/generated/ios/swift/DownloadStorageInfo.swift +80 -0
  175. package/nitrogen/generated/ios/swift/DownloadTask.swift +315 -0
  176. package/nitrogen/generated/ios/swift/DownloadedPlaylist.swift +103 -0
  177. package/nitrogen/generated/ios/swift/DownloadedTrack.swift +147 -0
  178. package/nitrogen/generated/ios/swift/EqualizerBand.swift +69 -0
  179. package/nitrogen/generated/ios/swift/EqualizerPreset.swift +70 -0
  180. package/nitrogen/generated/ios/swift/EqualizerState.swift +115 -0
  181. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  182. package/nitrogen/generated/ios/swift/Func_void_DownloadProgress.swift +47 -0
  183. package/nitrogen/generated/ios/swift/Func_void_DownloadStorageInfo.swift +47 -0
  184. package/nitrogen/generated/ios/swift/Func_void_DownloadedTrack.swift +47 -0
  185. package/nitrogen/generated/ios/swift/Func_void_PlayerState.swift +47 -0
  186. package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
  187. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  188. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__std__string__.swift +66 -0
  189. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  190. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.swift +47 -0
  191. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +47 -0
  192. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem_.swift +47 -0
  193. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +47 -0
  194. package/nitrogen/generated/ios/swift/GainRange.swift +47 -0
  195. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +90 -0
  196. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +705 -0
  197. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +73 -0
  198. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +396 -0
  199. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +6 -2
  200. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +105 -8
  201. package/nitrogen/generated/ios/swift/PlaybackSource.swift +44 -0
  202. package/nitrogen/generated/ios/swift/PlayerState.swift +13 -2
  203. package/nitrogen/generated/ios/swift/PresetType.swift +40 -0
  204. package/nitrogen/generated/ios/swift/StorageLocation.swift +40 -0
  205. package/nitrogen/generated/ios/swift/TrackItem.swift +31 -1
  206. package/nitrogen/generated/ios/swift/TrackPlayerState.swift +4 -4
  207. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +18 -0
  208. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadError.swift +18 -0
  209. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadTask.swift +18 -0
  210. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedPlaylist.swift +18 -0
  211. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedTrack.swift +18 -0
  212. package/nitrogen/generated/shared/c++/CurrentPlayingType.hpp +84 -0
  213. package/nitrogen/generated/shared/c++/DownloadConfig.hpp +108 -0
  214. package/nitrogen/generated/shared/c++/DownloadError.hpp +89 -0
  215. package/nitrogen/generated/shared/c++/DownloadErrorReason.hpp +96 -0
  216. package/nitrogen/generated/shared/c++/DownloadProgress.hpp +97 -0
  217. package/nitrogen/generated/shared/c++/DownloadQueueStatus.hpp +99 -0
  218. package/nitrogen/generated/shared/c++/DownloadState.hpp +92 -0
  219. package/nitrogen/generated/shared/c++/DownloadStorageInfo.hpp +91 -0
  220. package/nitrogen/generated/shared/c++/DownloadTask.hpp +122 -0
  221. package/nitrogen/generated/shared/c++/DownloadedPlaylist.hpp +101 -0
  222. package/nitrogen/generated/shared/c++/DownloadedTrack.hpp +107 -0
  223. package/nitrogen/generated/shared/c++/EqualizerBand.hpp +87 -0
  224. package/nitrogen/generated/shared/c++/EqualizerPreset.hpp +86 -0
  225. package/nitrogen/generated/shared/c++/EqualizerState.hpp +89 -0
  226. package/nitrogen/generated/shared/c++/GainRange.hpp +79 -0
  227. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.cpp +55 -0
  228. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +134 -0
  229. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp +38 -0
  230. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +95 -0
  231. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +4 -0
  232. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +11 -5
  233. package/nitrogen/generated/shared/c++/PlaybackSource.hpp +80 -0
  234. package/nitrogen/generated/shared/c++/PlayerState.hpp +9 -2
  235. package/nitrogen/generated/shared/c++/PresetType.hpp +76 -0
  236. package/nitrogen/generated/shared/c++/StorageLocation.hpp +76 -0
  237. package/nitrogen/generated/shared/c++/TrackItem.hpp +7 -2
  238. package/nitrogen/generated/shared/c++/TrackPlayerState.hpp +5 -5
  239. package/package.json +1 -1
  240. package/src/hooks/callbackManager.ts +87 -0
  241. package/src/hooks/downloadCallbackManager.ts +149 -0
  242. package/src/hooks/equalizerCallbackManager.ts +138 -0
  243. package/src/hooks/index.ts +23 -0
  244. package/src/hooks/useActualQueue.ts +116 -0
  245. package/src/hooks/useDownloadActions.ts +179 -0
  246. package/src/hooks/useDownloadProgress.ts +126 -0
  247. package/src/hooks/useDownloadStorage.ts +84 -0
  248. package/src/hooks/useDownloadedTracks.ts +138 -0
  249. package/src/hooks/useEqualizer.ts +173 -0
  250. package/src/hooks/useEqualizerPresets.ts +140 -0
  251. package/src/hooks/useNowPlaying.ts +33 -20
  252. package/src/hooks/useOnChangeTrack.ts +15 -11
  253. package/src/hooks/useOnPlaybackProgressChange.ts +2 -2
  254. package/src/hooks/useOnPlaybackStateChange.ts +19 -15
  255. package/src/hooks/usePlaylist.ts +161 -0
  256. package/src/index.ts +12 -0
  257. package/src/specs/DownloadManager.nitro.ts +203 -0
  258. package/src/specs/Equalizer.nitro.ts +69 -0
  259. package/src/specs/TrackPlayer.nitro.ts +6 -2
  260. package/src/types/DownloadTypes.ts +135 -0
  261. package/src/types/EqualizerTypes.ts +72 -0
  262. package/src/types/PlayerQueue.ts +9 -0
@@ -0,0 +1,203 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules'
2
+ import type { TrackItem } from '../types/PlayerQueue'
3
+ import type {
4
+ DownloadConfig,
5
+ DownloadTask,
6
+ DownloadProgress,
7
+ DownloadedTrack,
8
+ DownloadedPlaylist,
9
+ DownloadState,
10
+ DownloadStorageInfo,
11
+ DownloadQueueStatus,
12
+ DownloadError,
13
+ PlaybackSource,
14
+ } from '../types/DownloadTypes'
15
+
16
+ export interface DownloadManager
17
+ extends HybridObject<{ android: 'kotlin'; ios: 'swift' }> {
18
+ /**
19
+ * Configure the download manager
20
+ */
21
+ configure(config: DownloadConfig): void
22
+
23
+ /**
24
+ * Get current configuration
25
+ */
26
+ getConfig(): DownloadConfig
27
+
28
+ /**
29
+ * Download a single track
30
+ * @returns downloadId for tracking
31
+ */
32
+ downloadTrack(track: TrackItem, playlistId?: string): Promise<string>
33
+
34
+ // =====================================
35
+ // PLAYLIST DOWNLOADS
36
+ // =====================================
37
+
38
+ /**
39
+ * Download an entire playlist
40
+ * @returns downloadId array for each track
41
+ */
42
+ downloadPlaylist(playlistId: string, tracks: TrackItem[]): Promise<string[]>
43
+ /**
44
+ * Pause a download
45
+ */
46
+ pauseDownload(downloadId: string): Promise<void>
47
+
48
+ /**
49
+ * Resume a paused download
50
+ */
51
+ resumeDownload(downloadId: string): Promise<void>
52
+
53
+ /**
54
+ * Cancel a download
55
+ */
56
+ cancelDownload(downloadId: string): Promise<void>
57
+
58
+ /**
59
+ * Retry a failed download
60
+ */
61
+ retryDownload(downloadId: string): Promise<void>
62
+
63
+ /**
64
+ * Pause all downloads
65
+ */
66
+ pauseAllDownloads(): Promise<void>
67
+
68
+ /**
69
+ * Resume all paused downloads
70
+ */
71
+ resumeAllDownloads(): Promise<void>
72
+
73
+ /**
74
+ * Cancel all downloads
75
+ */
76
+ cancelAllDownloads(): Promise<void>
77
+ /**
78
+ * Get download task by ID
79
+ */
80
+ getDownloadTask(downloadId: string): DownloadTask | null
81
+
82
+ /**
83
+ * Get all active download tasks
84
+ */
85
+ getActiveDownloads(): DownloadTask[]
86
+
87
+ /**
88
+ * Get download queue status
89
+ */
90
+ getQueueStatus(): DownloadQueueStatus
91
+
92
+ /**
93
+ * Check if a track is currently downloading
94
+ */
95
+ isDownloading(trackId: string): boolean
96
+
97
+ /**
98
+ * Get download state for a track
99
+ */
100
+ getDownloadState(trackId: string): DownloadState | null
101
+
102
+ /**
103
+ * Check if a track is downloaded
104
+ */
105
+ isTrackDownloaded(trackId: string): boolean
106
+
107
+ /**
108
+ * Check if a playlist is fully downloaded
109
+ */
110
+ isPlaylistDownloaded(playlistId: string): boolean
111
+
112
+ /**
113
+ * Check if a playlist is partially downloaded
114
+ */
115
+ isPlaylistPartiallyDownloaded(playlistId: string): boolean
116
+
117
+ /**
118
+ * Get downloaded track by track ID
119
+ */
120
+ getDownloadedTrack(trackId: string): DownloadedTrack | null
121
+
122
+ /**
123
+ * Get all downloaded tracks
124
+ */
125
+ getAllDownloadedTracks(): DownloadedTrack[]
126
+
127
+ /**
128
+ * Get downloaded playlist by playlist ID
129
+ */
130
+ getDownloadedPlaylist(playlistId: string): DownloadedPlaylist | null
131
+
132
+ /**
133
+ * Get all downloaded playlists
134
+ */
135
+ getAllDownloadedPlaylists(): DownloadedPlaylist[]
136
+
137
+ /**
138
+ * Get local file path for a downloaded track
139
+ */
140
+ getLocalPath(trackId: string): string | null
141
+
142
+ /**
143
+ * Delete a downloaded track
144
+ */
145
+ deleteDownloadedTrack(trackId: string): Promise<void>
146
+
147
+ /**
148
+ * Delete a downloaded playlist (all its tracks)
149
+ */
150
+ deleteDownloadedPlaylist(playlistId: string): Promise<void>
151
+
152
+ /**
153
+ * Delete all downloaded content
154
+ */
155
+ deleteAllDownloads(): Promise<void>
156
+ /**
157
+ * Get storage information
158
+ */
159
+ getStorageInfo(): Promise<DownloadStorageInfo>
160
+
161
+ /**
162
+ * Sync downloads - validates all downloads and removes orphaned records
163
+ * Call this to clean up after manual file deletion
164
+ * @returns number of orphaned records that were cleaned up
165
+ */
166
+ syncDownloads(): number
167
+ /**
168
+ * Set playback source preference
169
+ */
170
+ setPlaybackSourcePreference(preference: PlaybackSource): void
171
+
172
+ /**
173
+ * Get current playback source preference
174
+ */
175
+ getPlaybackSourcePreference(): PlaybackSource
176
+
177
+ /**
178
+ * Get the effective URL for a track (local or network based on preference)
179
+ */
180
+ getEffectiveUrl(track: TrackItem): string
181
+
182
+ /**
183
+ * Called when download progress updates
184
+ */
185
+ onDownloadProgress(callback: (progress: DownloadProgress) => void): void
186
+
187
+ /**
188
+ * Called when download state changes
189
+ */
190
+ onDownloadStateChange(
191
+ callback: (
192
+ downloadId: string,
193
+ trackId: string,
194
+ state: DownloadState,
195
+ error?: DownloadError
196
+ ) => void
197
+ ): void
198
+
199
+ /**
200
+ * Called when a download completes
201
+ */
202
+ onDownloadComplete(callback: (downloadedTrack: DownloadedTrack) => void): void
203
+ }
@@ -0,0 +1,69 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules'
2
+ import type {
3
+ EqualizerBand,
4
+ EqualizerPreset,
5
+ EqualizerState,
6
+ GainRange,
7
+ } from '../types/EqualizerTypes'
8
+
9
+ export interface Equalizer
10
+ extends HybridObject<{ android: 'kotlin'; ios: 'swift' }> {
11
+ // === Enable/Disable ===
12
+ /** Enable or disable the equalizer */
13
+ setEnabled(enabled: boolean): boolean
14
+
15
+ /** Check if equalizer is currently enabled */
16
+ isEnabled(): boolean
17
+
18
+ // === Band Control ===
19
+ /** Get all equalizer bands with current gain values */
20
+ getBands(): EqualizerBand[]
21
+
22
+ /** Set gain for a specific band index (-12 to +12 dB) */
23
+ setBandGain(bandIndex: number, gainDb: number): boolean
24
+
25
+ /** Set gains for all bands at once (array of 5 values) */
26
+ setAllBandGains(gains: number[]): boolean
27
+
28
+ /** Get the valid gain range for bands */
29
+ getBandRange(): GainRange
30
+
31
+ // === Presets ===
32
+ /** Get all available presets (built-in + custom) */
33
+ getPresets(): EqualizerPreset[]
34
+
35
+ /** Get built-in presets only */
36
+ getBuiltInPresets(): EqualizerPreset[]
37
+
38
+ /** Get custom user presets only */
39
+ getCustomPresets(): EqualizerPreset[]
40
+
41
+ /** Apply a preset by name */
42
+ applyPreset(presetName: string): boolean
43
+
44
+ /** Get currently applied preset name (null if custom values) */
45
+ getCurrentPresetName(): string | null
46
+
47
+ /** Save current settings as a custom preset */
48
+ saveCustomPreset(name: string): boolean
49
+
50
+ /** Delete a custom preset by name */
51
+ deleteCustomPreset(name: string): boolean
52
+
53
+ // === State ===
54
+ /** Get complete equalizer state */
55
+ getState(): EqualizerState
56
+
57
+ /** Reset to flat response (all bands at 0 dB) */
58
+ reset(): void
59
+
60
+ // === Events ===
61
+ /** Called when equalizer enabled state changes */
62
+ onEnabledChange(callback: (enabled: boolean) => void): void
63
+
64
+ /** Called when any band gain changes */
65
+ onBandChange(callback: (bands: EqualizerBand[]) => void): void
66
+
67
+ /** Called when preset changes */
68
+ onPresetChange(callback: (presetName: string | null) => void): void
69
+ }
@@ -60,11 +60,15 @@ export interface TrackPlayer
60
60
  extends HybridObject<{ android: 'kotlin'; ios: 'swift' }> {
61
61
  play(): void
62
62
  pause(): void
63
- playSong(songId: string, fromPlaylist?: string): void
63
+ playSong(songId: string, fromPlaylist?: string): Promise<void>
64
64
  skipToNext(): void
65
+ skipToIndex(index: number): Promise<boolean>
65
66
  skipToPrevious(): void
66
67
  seek(position: number): void
67
- getState(): PlayerState
68
+ addToUpNext(trackId: string): Promise<void>
69
+ playNext(trackId: string): Promise<void>
70
+ getActualQueue(): Promise<TrackItem[]>
71
+ getState(): Promise<PlayerState>
68
72
  setRepeatMode(mode: RepeatMode): boolean
69
73
  configure(config: PlayerConfig): void
70
74
  onChangeTrack(callback: (track: TrackItem, reason?: Reason) => void): void
@@ -0,0 +1,135 @@
1
+ import type { TrackItem, Playlist } from './PlayerQueue'
2
+
3
+ /**
4
+ * Storage location options for downloads
5
+ */
6
+ export type StorageLocation = 'private' | 'public'
7
+
8
+ /**
9
+ * Current state of a download task
10
+ */
11
+ export type DownloadState =
12
+ | 'pending'
13
+ | 'downloading'
14
+ | 'paused'
15
+ | 'completed'
16
+ | 'failed'
17
+ | 'cancelled'
18
+
19
+ /**
20
+ * Reason for download failure
21
+ */
22
+ export type DownloadErrorReason =
23
+ | 'network_error'
24
+ | 'storage_full'
25
+ | 'file_not_found'
26
+ | 'permission_denied'
27
+ | 'invalid_url'
28
+ | 'timeout'
29
+ | 'unknown'
30
+
31
+ /**
32
+ * Source preference for playback
33
+ */
34
+ export type PlaybackSource = 'auto' | 'download' | 'network'
35
+
36
+ /**
37
+ * Progress information for a download
38
+ */
39
+ export interface DownloadProgress {
40
+ trackId: string
41
+ downloadId: string
42
+ bytesDownloaded: number
43
+ totalBytes: number
44
+ progress: number // 0.0 to 1.0
45
+ state: DownloadState
46
+ }
47
+
48
+ /**
49
+ * Download error information
50
+ */
51
+ export interface DownloadError {
52
+ code: string
53
+ message: string
54
+ reason: DownloadErrorReason
55
+ isRetryable: boolean
56
+ }
57
+
58
+ /**
59
+ * A downloaded track with local file information
60
+ */
61
+ export interface DownloadedTrack {
62
+ trackId: string
63
+ originalTrack: TrackItem
64
+ localPath: string
65
+ localArtworkPath?: string | null
66
+ downloadedAt: number // Unix timestamp
67
+ fileSize: number // bytes
68
+ storageLocation: StorageLocation
69
+ }
70
+
71
+ /**
72
+ * A playlist with download information
73
+ */
74
+ export interface DownloadedPlaylist {
75
+ playlistId: string
76
+ originalPlaylist: Playlist
77
+ downloadedTracks: DownloadedTrack[]
78
+ totalSize: number // bytes
79
+ downloadedAt: number // Unix timestamp
80
+ isComplete: boolean // All tracks downloaded
81
+ }
82
+
83
+ /**
84
+ * Download task information
85
+ */
86
+ export interface DownloadTask {
87
+ downloadId: string
88
+ trackId: string
89
+ playlistId?: string | null
90
+ state: DownloadState
91
+ progress: DownloadProgress
92
+ createdAt: number // Unix timestamp
93
+ startedAt?: number | null
94
+ completedAt?: number | null
95
+ error?: DownloadError | null
96
+ retryCount: number
97
+ }
98
+
99
+ /**
100
+ * Configuration for the DownloadManager
101
+ */
102
+ export interface DownloadConfig {
103
+ storageLocation?: StorageLocation
104
+ maxConcurrentDownloads?: number
105
+ autoRetry?: boolean
106
+ maxRetryAttempts?: number
107
+ backgroundDownloadsEnabled?: boolean
108
+ downloadArtwork?: boolean
109
+ customDownloadPath?: string | null
110
+ wifiOnlyDownloads?: boolean
111
+ }
112
+
113
+ /**
114
+ * Summary of download storage usage
115
+ */
116
+ export interface DownloadStorageInfo {
117
+ totalDownloadedSize: number // bytes
118
+ trackCount: number
119
+ playlistCount: number
120
+ availableSpace: number // bytes
121
+ totalSpace: number // bytes
122
+ }
123
+
124
+ /**
125
+ * Download queue status
126
+ */
127
+ export interface DownloadQueueStatus {
128
+ pendingCount: number
129
+ activeCount: number
130
+ completedCount: number
131
+ failedCount: number
132
+ totalBytesToDownload: number
133
+ totalBytesDownloaded: number
134
+ overallProgress: number // 0.0 to 1.0
135
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Represents a single equalizer frequency band
3
+ */
4
+ export interface EqualizerBand {
5
+ /** Band index (0-4) */
6
+ index: number
7
+ /** Center frequency in Hz */
8
+ centerFrequency: number
9
+ /** Current gain in dB (-12 to +12) */
10
+ gainDb: number
11
+ /** Human-readable frequency label (e.g., "60 Hz", "3.6 kHz") */
12
+ frequencyLabel: string
13
+ }
14
+
15
+ /**
16
+ * Preset type identifier
17
+ */
18
+ export type PresetType = 'built-in' | 'custom'
19
+
20
+ /**
21
+ * Represents an equalizer preset (built-in or custom)
22
+ */
23
+ export interface EqualizerPreset {
24
+ /** Unique preset name */
25
+ name: string
26
+ /** Array of 5 gain values in dB for each band */
27
+ gains: number[]
28
+ /** Whether this is a built-in or custom preset */
29
+ type: PresetType
30
+ }
31
+
32
+ /**
33
+ * Complete equalizer state
34
+ */
35
+ export interface EqualizerState {
36
+ /** Whether equalizer is enabled */
37
+ enabled: boolean
38
+ /** Current band settings */
39
+ bands: EqualizerBand[]
40
+ /** Currently applied preset name (null if custom values) */
41
+ currentPreset: string | null
42
+ }
43
+
44
+ /**
45
+ * Gain range for equalizer bands
46
+ */
47
+ export interface GainRange {
48
+ /** Minimum gain in dB */
49
+ min: number
50
+ /** Maximum gain in dB */
51
+ max: number
52
+ }
53
+
54
+ /**
55
+ * Built-in preset names
56
+ */
57
+ export type BuiltInPresetName =
58
+ | 'Flat'
59
+ | 'Bass Boost'
60
+ | 'Bass Reducer'
61
+ | 'Treble Boost'
62
+ | 'Treble Reducer'
63
+ | 'Vocal Boost'
64
+ | 'Rock'
65
+ | 'Pop'
66
+ | 'Jazz'
67
+ | 'Classical'
68
+ | 'Hip Hop'
69
+ | 'Electronic'
70
+ | 'Acoustic'
71
+ | 'R&B'
72
+ | 'Loudness'
@@ -1,3 +1,10 @@
1
+ import type { AnyMap } from 'react-native-nitro-modules'
2
+
3
+ export type CurrentPlayingType =
4
+ | 'playlist'
5
+ | 'up-next'
6
+ | 'play-next'
7
+ | 'not-playing'
1
8
  export interface TrackItem {
2
9
  id: string
3
10
  title: string
@@ -6,6 +13,7 @@ export interface TrackItem {
6
13
  duration: number
7
14
  url: string
8
15
  artwork?: string | null
16
+ extraPayload?: AnyMap
9
17
  }
10
18
 
11
19
  export interface Playlist {
@@ -29,6 +37,7 @@ export interface PlayerState {
29
37
  currentState: TrackPlayerState
30
38
  currentPlaylistId: string | null
31
39
  currentIndex: number
40
+ currentPlayingType: CurrentPlayingType
32
41
  }
33
42
 
34
43
  export interface PlayerConfig {