@5stones/react-native-audio-browser 0.1.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 (1065) hide show
  1. package/AudioBrowser.podspec +43 -0
  2. package/LICENSE +21 -0
  3. package/README.md +5 -0
  4. package/android/CMakeLists.txt +32 -0
  5. package/android/build.gradle +210 -0
  6. package/android/fix-prefab.gradle +51 -0
  7. package/android/gradle.properties +5 -0
  8. package/android/src/main/AndroidManifest.xml +36 -0
  9. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  10. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +1191 -0
  11. package/android/src/main/java/com/audiobrowser/AudioBrowserPackage.kt +21 -0
  12. package/android/src/main/java/com/audiobrowser/Callbacks.kt +92 -0
  13. package/android/src/main/java/com/audiobrowser/HeadlessTaskService.kt +59 -0
  14. package/android/src/main/java/com/audiobrowser/Service.kt +336 -0
  15. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +1169 -0
  16. package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +103 -0
  17. package/android/src/main/java/com/audiobrowser/browser/RouteMatch.kt +9 -0
  18. package/android/src/main/java/com/audiobrowser/browser/SimpleRouter.kt +150 -0
  19. package/android/src/main/java/com/audiobrowser/extension/EnumExtensions.kt +5 -0
  20. package/android/src/main/java/com/audiobrowser/extension/NumberExt.kt +13 -0
  21. package/android/src/main/java/com/audiobrowser/http/HttpClient.kt +171 -0
  22. package/android/src/main/java/com/audiobrowser/http/RequestConfigBuilder.kt +251 -0
  23. package/android/src/main/java/com/audiobrowser/model/PlaybackMetadata.kt +80 -0
  24. package/android/src/main/java/com/audiobrowser/model/PlayerSetupOptions.kt +101 -0
  25. package/android/src/main/java/com/audiobrowser/model/PlayerUpdateOptions.kt +125 -0
  26. package/android/src/main/java/com/audiobrowser/player/AutomaticBufferManager.kt +256 -0
  27. package/android/src/main/java/com/audiobrowser/player/DynamicLoadControl.kt +163 -0
  28. package/android/src/main/java/com/audiobrowser/player/MediaFactory.kt +177 -0
  29. package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +580 -0
  30. package/android/src/main/java/com/audiobrowser/player/MediaSessionCommandManager.kt +578 -0
  31. package/android/src/main/java/com/audiobrowser/player/PlaybackProgressUpdateManager.kt +58 -0
  32. package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +245 -0
  33. package/android/src/main/java/com/audiobrowser/player/Player.kt +1509 -0
  34. package/android/src/main/java/com/audiobrowser/player/PlayerListener.kt +230 -0
  35. package/android/src/main/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicy.kt +191 -0
  36. package/android/src/main/java/com/audiobrowser/player/SleepTimer.kt +80 -0
  37. package/android/src/main/java/com/audiobrowser/util/AndroidAudioContentTypeFactory.kt +17 -0
  38. package/android/src/main/java/com/audiobrowser/util/BatteryOptimizationHelper.kt +95 -0
  39. package/android/src/main/java/com/audiobrowser/util/BatteryWarningStore.kt +38 -0
  40. package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +155 -0
  41. package/android/src/main/java/com/audiobrowser/util/CoilBitmapLoader.kt +390 -0
  42. package/android/src/main/java/com/audiobrowser/util/EqualizerManager.kt +197 -0
  43. package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +75 -0
  44. package/android/src/main/java/com/audiobrowser/util/MetadataAdapter.kt +97 -0
  45. package/android/src/main/java/com/audiobrowser/util/NetworkConnectivityMonitor.kt +121 -0
  46. package/android/src/main/java/com/audiobrowser/util/PlayingStateFactory.kt +25 -0
  47. package/android/src/main/java/com/audiobrowser/util/RatingFactory.kt +72 -0
  48. package/android/src/main/java/com/audiobrowser/util/RepeatModeFactory.kt +22 -0
  49. package/android/src/main/java/com/audiobrowser/util/ResolvedTrackFactory.kt +36 -0
  50. package/android/src/main/java/com/audiobrowser/util/SvgArtworkRenderer.kt +130 -0
  51. package/android/src/main/java/com/audiobrowser/util/SystemVolumeMonitor.kt +50 -0
  52. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +125 -0
  53. package/android/src/main/res/values/strings.xml +6 -0
  54. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +273 -0
  55. package/android/src/test/java/com/audiobrowser/browser/SimpleBrowserTest.kt +33 -0
  56. package/android/src/test/java/com/audiobrowser/browser/SimpleRouterTest.kt +156 -0
  57. package/android/src/test/java/com/audiobrowser/http/RequestConfigBuilderTest.kt +240 -0
  58. package/ios/Bridge.h +8 -0
  59. package/ios/Browser/BrowserConfig.swift +85 -0
  60. package/ios/Browser/BrowserManager.swift +985 -0
  61. package/ios/Browser/BrowserPathHelper.swift +156 -0
  62. package/ios/Browser/JsonModels.swift +165 -0
  63. package/ios/Browser/SimpleRouter.swift +184 -0
  64. package/ios/CarPlay/CarPlayController.swift +1342 -0
  65. package/ios/CarPlay/RNABCarPlaySceneDelegate.h +15 -0
  66. package/ios/CarPlay/RNABCarPlaySceneDelegate.m +59 -0
  67. package/ios/CarPlay/Track+CarPlay.swift +49 -0
  68. package/ios/Extension/Capability+RemoteCommand.swift +76 -0
  69. package/ios/Extension/ChapterMetadata+AVFoundation.swift +37 -0
  70. package/ios/Extension/TimedMetadata+AVFoundation.swift +126 -0
  71. package/ios/Extension/Track+AVPlayer.swift +68 -0
  72. package/ios/Extension/TrackMetadata+AVFoundation.swift +128 -0
  73. package/ios/Http/HttpClient.swift +237 -0
  74. package/ios/HybridAudioBrowser.swift +1309 -0
  75. package/ios/Model/MediaURL.swift +66 -0
  76. package/ios/Model/PlayerUpdateOptions.swift +116 -0
  77. package/ios/Model/RemoteCommand.swift +71 -0
  78. package/ios/Model/SourceType.swift +6 -0
  79. package/ios/Model/TrackPlayerError.swift +69 -0
  80. package/ios/NowPlayingInfo/MediaItemProperty.swift +78 -0
  81. package/ios/NowPlayingInfo/NowPlayingInfoCenter.swift +9 -0
  82. package/ios/NowPlayingInfo/NowPlayingInfoController.swift +283 -0
  83. package/ios/NowPlayingInfo/NowPlayingInfoKeyValue.swift +6 -0
  84. package/ios/NowPlayingInfo/NowPlayingInfoProperty.swift +220 -0
  85. package/ios/Observer/PlayerItemNotificationObserver.swift +83 -0
  86. package/ios/Observer/PlayerItemPropertyObserver.swift +110 -0
  87. package/ios/Observer/PlayerStateObserver.swift +52 -0
  88. package/ios/Observer/PlayerTimeObserver.swift +109 -0
  89. package/ios/Option/PitchAlgorithms.swift +17 -0
  90. package/ios/Option/SessionCategories.swift +100 -0
  91. package/ios/Option/TimeEventFrequency.swift +18 -0
  92. package/ios/Player/PlaybackProgressUpdateManager.swift +60 -0
  93. package/ios/Player/PlayingStateManager.swift +29 -0
  94. package/ios/Player/RetryManager.swift +281 -0
  95. package/ios/Player/ShuffleOrder.swift +191 -0
  96. package/ios/Player/SleepTimerManager.swift +137 -0
  97. package/ios/RemoteCommand/RemoteCommandController.swift +400 -0
  98. package/ios/Support/RNTrackPlayer-Bridging-Header.h +7 -0
  99. package/ios/TrackPlayer.swift +1590 -0
  100. package/ios/TrackPlayerCallbacks.swift +121 -0
  101. package/ios/Util/Emitter.swift +46 -0
  102. package/ios/Util/LRUCache.swift +182 -0
  103. package/ios/Util/MetadataAdapter.swift +131 -0
  104. package/ios/Util/NetworkMonitor.swift +68 -0
  105. package/ios/Util/OnceValue.swift +70 -0
  106. package/ios/Util/SVGProcessor.swift +56 -0
  107. package/lib/commonjs/AudioBrowser.js +50 -0
  108. package/lib/commonjs/AudioBrowser.js.map +1 -0
  109. package/lib/commonjs/features/battery.js +154 -0
  110. package/lib/commonjs/features/battery.js.map +1 -0
  111. package/lib/commonjs/features/browser.js +271 -0
  112. package/lib/commonjs/features/browser.js.map +1 -0
  113. package/lib/commonjs/features/equalizer.js +69 -0
  114. package/lib/commonjs/features/equalizer.js.map +1 -0
  115. package/lib/commonjs/features/errors.js +165 -0
  116. package/lib/commonjs/features/errors.js.map +1 -0
  117. package/lib/commonjs/features/favorites.js +101 -0
  118. package/lib/commonjs/features/favorites.js.map +1 -0
  119. package/lib/commonjs/features/index.js +160 -0
  120. package/lib/commonjs/features/index.js.map +1 -0
  121. package/lib/commonjs/features/metadata.js +54 -0
  122. package/lib/commonjs/features/metadata.js.map +1 -0
  123. package/lib/commonjs/features/network.js +40 -0
  124. package/lib/commonjs/features/network.js.map +1 -0
  125. package/lib/commonjs/features/nowPlaying.js +61 -0
  126. package/lib/commonjs/features/nowPlaying.js.map +1 -0
  127. package/lib/commonjs/features/output.js +54 -0
  128. package/lib/commonjs/features/output.js.map +1 -0
  129. package/lib/commonjs/features/playback/controls.js +79 -0
  130. package/lib/commonjs/features/playback/controls.js.map +1 -0
  131. package/lib/commonjs/features/playback/index.js +83 -0
  132. package/lib/commonjs/features/playback/index.js.map +1 -0
  133. package/lib/commonjs/features/playback/playWhenReady.js +55 -0
  134. package/lib/commonjs/features/playback/playWhenReady.js.map +1 -0
  135. package/lib/commonjs/features/playback/playing.js +41 -0
  136. package/lib/commonjs/features/playback/playing.js.map +1 -0
  137. package/lib/commonjs/features/playback/progress.js +104 -0
  138. package/lib/commonjs/features/playback/progress.js.map +1 -0
  139. package/lib/commonjs/features/playback/rate.js +29 -0
  140. package/lib/commonjs/features/playback/rate.js.map +1 -0
  141. package/lib/commonjs/features/playback/state.js +62 -0
  142. package/lib/commonjs/features/playback/state.js.map +1 -0
  143. package/lib/commonjs/features/playback/volume.js +68 -0
  144. package/lib/commonjs/features/playback/volume.js.map +1 -0
  145. package/lib/commonjs/features/player/index.js +28 -0
  146. package/lib/commonjs/features/player/index.js.map +1 -0
  147. package/lib/commonjs/features/player/options.js +182 -0
  148. package/lib/commonjs/features/player/options.js.map +1 -0
  149. package/lib/commonjs/features/player/setup.js +143 -0
  150. package/lib/commonjs/features/player/setup.js.map +1 -0
  151. package/lib/commonjs/features/queue/activeTrack.js +52 -0
  152. package/lib/commonjs/features/queue/activeTrack.js.map +1 -0
  153. package/lib/commonjs/features/queue/index.js +50 -0
  154. package/lib/commonjs/features/queue/index.js.map +1 -0
  155. package/lib/commonjs/features/queue/queue.js +177 -0
  156. package/lib/commonjs/features/queue/queue.js.map +1 -0
  157. package/lib/commonjs/features/queue/repeatMode.js +58 -0
  158. package/lib/commonjs/features/queue/repeatMode.js.map +1 -0
  159. package/lib/commonjs/features/queue/shuffle.js +57 -0
  160. package/lib/commonjs/features/queue/shuffle.js.map +1 -0
  161. package/lib/commonjs/features/rating.js +2 -0
  162. package/lib/commonjs/features/rating.js.map +1 -0
  163. package/lib/commonjs/features/remoteControls.js +286 -0
  164. package/lib/commonjs/features/remoteControls.js.map +1 -0
  165. package/lib/commonjs/features/sleepTimer.js +164 -0
  166. package/lib/commonjs/features/sleepTimer.js.map +1 -0
  167. package/lib/commonjs/index.js +22 -0
  168. package/lib/commonjs/index.js.map +1 -0
  169. package/lib/commonjs/native.js +9 -0
  170. package/lib/commonjs/native.js.map +1 -0
  171. package/lib/commonjs/native.web.js +10 -0
  172. package/lib/commonjs/native.web.js.map +1 -0
  173. package/lib/commonjs/package.json +1 -0
  174. package/lib/commonjs/specs/audio-browser.nitro.js +6 -0
  175. package/lib/commonjs/specs/audio-browser.nitro.js.map +1 -0
  176. package/lib/commonjs/types/browser-native.js +6 -0
  177. package/lib/commonjs/types/browser-native.js.map +1 -0
  178. package/lib/commonjs/types/browser-nodes.js +6 -0
  179. package/lib/commonjs/types/browser-nodes.js.map +1 -0
  180. package/lib/commonjs/types/browser.js +6 -0
  181. package/lib/commonjs/types/browser.js.map +1 -0
  182. package/lib/commonjs/types/index.js +28 -0
  183. package/lib/commonjs/types/index.js.map +1 -0
  184. package/lib/commonjs/types/player.js +2 -0
  185. package/lib/commonjs/types/player.js.map +1 -0
  186. package/lib/commonjs/utils/LazyNativeEmitter.js +58 -0
  187. package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -0
  188. package/lib/commonjs/utils/NativeUpdatedValue.js +59 -0
  189. package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -0
  190. package/lib/commonjs/utils/resolveAssetSource.js +11 -0
  191. package/lib/commonjs/utils/resolveAssetSource.js.map +1 -0
  192. package/lib/commonjs/utils/useDebug.js +221 -0
  193. package/lib/commonjs/utils/useDebug.js.map +1 -0
  194. package/lib/commonjs/utils/useNativeUpdatedValue.js +44 -0
  195. package/lib/commonjs/utils/useNativeUpdatedValue.js.map +1 -0
  196. package/lib/commonjs/web/NativeAudioBrowser.js +668 -0
  197. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -0
  198. package/lib/commonjs/web/SimpleRouter.js +144 -0
  199. package/lib/commonjs/web/SimpleRouter.js.map +1 -0
  200. package/lib/commonjs/web/TrackPlayer/Event.js +19 -0
  201. package/lib/commonjs/web/TrackPlayer/Event.js.map +1 -0
  202. package/lib/commonjs/web/TrackPlayer/Player.js +276 -0
  203. package/lib/commonjs/web/TrackPlayer/Player.js.map +1 -0
  204. package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js +284 -0
  205. package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js.map +1 -0
  206. package/lib/commonjs/web/TrackPlayer/RepeatMode.js +12 -0
  207. package/lib/commonjs/web/TrackPlayer/RepeatMode.js.map +1 -0
  208. package/lib/commonjs/web/TrackPlayer/SetupNotCalledError.js +13 -0
  209. package/lib/commonjs/web/TrackPlayer/SetupNotCalledError.js.map +1 -0
  210. package/lib/commonjs/web/TrackPlayer/SleepTimer.js +75 -0
  211. package/lib/commonjs/web/TrackPlayer/SleepTimer.js.map +1 -0
  212. package/lib/commonjs/web/TrackPlayer/State.js +18 -0
  213. package/lib/commonjs/web/TrackPlayer/State.js.map +1 -0
  214. package/lib/commonjs/web/TrackPlayer/index.js +52 -0
  215. package/lib/commonjs/web/TrackPlayer/index.js.map +1 -0
  216. package/lib/commonjs/web/browser/BrowserManager.js +594 -0
  217. package/lib/commonjs/web/browser/BrowserManager.js.map +1 -0
  218. package/lib/commonjs/web/browser/FavoriteManager.js +80 -0
  219. package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -0
  220. package/lib/commonjs/web/browser/NavigationErrorManager.js +106 -0
  221. package/lib/commonjs/web/browser/NavigationErrorManager.js.map +1 -0
  222. package/lib/commonjs/web/browser/SearchManager.js +80 -0
  223. package/lib/commonjs/web/browser/SearchManager.js.map +1 -0
  224. package/lib/commonjs/web/http/HttpClient.js +81 -0
  225. package/lib/commonjs/web/http/HttpClient.js.map +1 -0
  226. package/lib/commonjs/web/http/RequestConfigBuilder.js +294 -0
  227. package/lib/commonjs/web/http/RequestConfigBuilder.js.map +1 -0
  228. package/lib/commonjs/web/player/NowPlayingManager.js +70 -0
  229. package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -0
  230. package/lib/commonjs/web/player/OptionsManager.js +88 -0
  231. package/lib/commonjs/web/player/OptionsManager.js.map +1 -0
  232. package/lib/commonjs/web/util/BrowserPathHelper.js +138 -0
  233. package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -0
  234. package/lib/commonjs/web/util/shuffle.js +21 -0
  235. package/lib/commonjs/web/util/shuffle.js.map +1 -0
  236. package/lib/module/AudioBrowser.js +7 -0
  237. package/lib/module/AudioBrowser.js.map +1 -0
  238. package/lib/module/features/battery.js +144 -0
  239. package/lib/module/features/battery.js.map +1 -0
  240. package/lib/module/features/browser.js +257 -0
  241. package/lib/module/features/browser.js.map +1 -0
  242. package/lib/module/features/equalizer.js +60 -0
  243. package/lib/module/features/equalizer.js.map +1 -0
  244. package/lib/module/features/errors.js +156 -0
  245. package/lib/module/features/errors.js.map +1 -0
  246. package/lib/module/features/favorites.js +95 -0
  247. package/lib/module/features/favorites.js.map +1 -0
  248. package/lib/module/features/index.js +26 -0
  249. package/lib/module/features/index.js.map +1 -0
  250. package/lib/module/features/metadata.js +51 -0
  251. package/lib/module/features/metadata.js.map +1 -0
  252. package/lib/module/features/network.js +35 -0
  253. package/lib/module/features/network.js.map +1 -0
  254. package/lib/module/features/nowPlaying.js +54 -0
  255. package/lib/module/features/nowPlaying.js.map +1 -0
  256. package/lib/module/features/output.js +47 -0
  257. package/lib/module/features/output.js.map +1 -0
  258. package/lib/module/features/playback/controls.js +69 -0
  259. package/lib/module/features/playback/controls.js.map +1 -0
  260. package/lib/module/features/playback/index.js +10 -0
  261. package/lib/module/features/playback/index.js.map +1 -0
  262. package/lib/module/features/playback/playWhenReady.js +49 -0
  263. package/lib/module/features/playback/playWhenReady.js.map +1 -0
  264. package/lib/module/features/playback/playing.js +36 -0
  265. package/lib/module/features/playback/playing.js.map +1 -0
  266. package/lib/module/features/playback/progress.js +98 -0
  267. package/lib/module/features/playback/progress.js.map +1 -0
  268. package/lib/module/features/playback/rate.js +25 -0
  269. package/lib/module/features/playback/rate.js.map +1 -0
  270. package/lib/module/features/playback/state.js +57 -0
  271. package/lib/module/features/playback/state.js.map +1 -0
  272. package/lib/module/features/playback/volume.js +60 -0
  273. package/lib/module/features/playback/volume.js.map +1 -0
  274. package/lib/module/features/player/index.js +5 -0
  275. package/lib/module/features/player/index.js.map +1 -0
  276. package/lib/module/features/player/options.js +176 -0
  277. package/lib/module/features/player/options.js.map +1 -0
  278. package/lib/module/features/player/setup.js +140 -0
  279. package/lib/module/features/player/setup.js.map +1 -0
  280. package/lib/module/features/queue/activeTrack.js +46 -0
  281. package/lib/module/features/queue/activeTrack.js.map +1 -0
  282. package/lib/module/features/queue/index.js +7 -0
  283. package/lib/module/features/queue/index.js.map +1 -0
  284. package/lib/module/features/queue/queue.js +162 -0
  285. package/lib/module/features/queue/queue.js.map +1 -0
  286. package/lib/module/features/queue/repeatMode.js +52 -0
  287. package/lib/module/features/queue/repeatMode.js.map +1 -0
  288. package/lib/module/features/queue/shuffle.js +50 -0
  289. package/lib/module/features/queue/shuffle.js.map +1 -0
  290. package/lib/module/features/rating.js +2 -0
  291. package/lib/module/features/rating.js.map +1 -0
  292. package/lib/module/features/remoteControls.js +275 -0
  293. package/lib/module/features/remoteControls.js.map +1 -0
  294. package/lib/module/features/sleepTimer.js +155 -0
  295. package/lib/module/features/sleepTimer.js.map +1 -0
  296. package/lib/module/index.js +6 -0
  297. package/lib/module/index.js.map +1 -0
  298. package/lib/module/native.js +5 -0
  299. package/lib/module/native.js.map +1 -0
  300. package/lib/module/native.web.js +7 -0
  301. package/lib/module/native.web.js.map +1 -0
  302. package/lib/module/package.json +1 -0
  303. package/lib/module/specs/audio-browser.nitro.js +4 -0
  304. package/lib/module/specs/audio-browser.nitro.js.map +1 -0
  305. package/lib/module/types/browser-native.js +4 -0
  306. package/lib/module/types/browser-native.js.map +1 -0
  307. package/lib/module/types/browser-nodes.js +4 -0
  308. package/lib/module/types/browser-nodes.js.map +1 -0
  309. package/lib/module/types/browser.js +4 -0
  310. package/lib/module/types/browser.js.map +1 -0
  311. package/lib/module/types/index.js +5 -0
  312. package/lib/module/types/index.js.map +1 -0
  313. package/lib/module/types/player.js +2 -0
  314. package/lib/module/types/player.js.map +1 -0
  315. package/lib/module/utils/LazyNativeEmitter.js +53 -0
  316. package/lib/module/utils/LazyNativeEmitter.js.map +1 -0
  317. package/lib/module/utils/NativeUpdatedValue.js +54 -0
  318. package/lib/module/utils/NativeUpdatedValue.js.map +1 -0
  319. package/lib/module/utils/resolveAssetSource.js +7 -0
  320. package/lib/module/utils/resolveAssetSource.js.map +1 -0
  321. package/lib/module/utils/useDebug.js +218 -0
  322. package/lib/module/utils/useDebug.js.map +1 -0
  323. package/lib/module/utils/useNativeUpdatedValue.js +40 -0
  324. package/lib/module/utils/useNativeUpdatedValue.js.map +1 -0
  325. package/lib/module/web/NativeAudioBrowser.js +664 -0
  326. package/lib/module/web/NativeAudioBrowser.js.map +1 -0
  327. package/lib/module/web/SimpleRouter.js +139 -0
  328. package/lib/module/web/SimpleRouter.js.map +1 -0
  329. package/lib/module/web/TrackPlayer/Event.js +15 -0
  330. package/lib/module/web/TrackPlayer/Event.js.map +1 -0
  331. package/lib/module/web/TrackPlayer/Player.js +271 -0
  332. package/lib/module/web/TrackPlayer/Player.js.map +1 -0
  333. package/lib/module/web/TrackPlayer/PlaylistPlayer.js +279 -0
  334. package/lib/module/web/TrackPlayer/PlaylistPlayer.js.map +1 -0
  335. package/lib/module/web/TrackPlayer/RepeatMode.js +8 -0
  336. package/lib/module/web/TrackPlayer/RepeatMode.js.map +1 -0
  337. package/lib/module/web/TrackPlayer/SetupNotCalledError.js +8 -0
  338. package/lib/module/web/TrackPlayer/SetupNotCalledError.js.map +1 -0
  339. package/lib/module/web/TrackPlayer/SleepTimer.js +70 -0
  340. package/lib/module/web/TrackPlayer/SleepTimer.js.map +1 -0
  341. package/lib/module/web/TrackPlayer/State.js +14 -0
  342. package/lib/module/web/TrackPlayer/State.js.map +1 -0
  343. package/lib/module/web/TrackPlayer/index.js +7 -0
  344. package/lib/module/web/TrackPlayer/index.js.map +1 -0
  345. package/lib/module/web/browser/BrowserManager.js +590 -0
  346. package/lib/module/web/browser/BrowserManager.js.map +1 -0
  347. package/lib/module/web/browser/FavoriteManager.js +75 -0
  348. package/lib/module/web/browser/FavoriteManager.js.map +1 -0
  349. package/lib/module/web/browser/NavigationErrorManager.js +101 -0
  350. package/lib/module/web/browser/NavigationErrorManager.js.map +1 -0
  351. package/lib/module/web/browser/SearchManager.js +76 -0
  352. package/lib/module/web/browser/SearchManager.js.map +1 -0
  353. package/lib/module/web/http/HttpClient.js +76 -0
  354. package/lib/module/web/http/HttpClient.js.map +1 -0
  355. package/lib/module/web/http/RequestConfigBuilder.js +291 -0
  356. package/lib/module/web/http/RequestConfigBuilder.js.map +1 -0
  357. package/lib/module/web/player/NowPlayingManager.js +65 -0
  358. package/lib/module/web/player/NowPlayingManager.js.map +1 -0
  359. package/lib/module/web/player/OptionsManager.js +83 -0
  360. package/lib/module/web/player/OptionsManager.js.map +1 -0
  361. package/lib/module/web/util/BrowserPathHelper.js +134 -0
  362. package/lib/module/web/util/BrowserPathHelper.js.map +1 -0
  363. package/lib/module/web/util/shuffle.js +17 -0
  364. package/lib/module/web/util/shuffle.js.map +1 -0
  365. package/lib/typescript/src/AudioBrowser.d.ts +5 -0
  366. package/lib/typescript/src/AudioBrowser.d.ts.map +1 -0
  367. package/lib/typescript/src/features/battery.d.ts +112 -0
  368. package/lib/typescript/src/features/battery.d.ts.map +1 -0
  369. package/lib/typescript/src/features/browser.d.ts +68 -0
  370. package/lib/typescript/src/features/browser.d.ts.map +1 -0
  371. package/lib/typescript/src/features/equalizer.d.ts +35 -0
  372. package/lib/typescript/src/features/equalizer.d.ts.map +1 -0
  373. package/lib/typescript/src/features/errors.d.ts +136 -0
  374. package/lib/typescript/src/features/errors.d.ts.map +1 -0
  375. package/lib/typescript/src/features/favorites.d.ts +84 -0
  376. package/lib/typescript/src/features/favorites.d.ts.map +1 -0
  377. package/lib/typescript/src/features/index.d.ts +23 -0
  378. package/lib/typescript/src/features/index.d.ts.map +1 -0
  379. package/lib/typescript/src/features/metadata.d.ts +103 -0
  380. package/lib/typescript/src/features/metadata.d.ts.map +1 -0
  381. package/lib/typescript/src/features/network.d.ts +18 -0
  382. package/lib/typescript/src/features/network.d.ts.map +1 -0
  383. package/lib/typescript/src/features/nowPlaying.d.ts +36 -0
  384. package/lib/typescript/src/features/nowPlaying.d.ts.map +1 -0
  385. package/lib/typescript/src/features/output.d.ts +28 -0
  386. package/lib/typescript/src/features/output.d.ts.map +1 -0
  387. package/lib/typescript/src/features/playback/controls.d.ts +40 -0
  388. package/lib/typescript/src/features/playback/controls.d.ts.map +1 -0
  389. package/lib/typescript/src/features/playback/index.d.ts +8 -0
  390. package/lib/typescript/src/features/playback/index.d.ts.map +1 -0
  391. package/lib/typescript/src/features/playback/playWhenReady.d.ts +30 -0
  392. package/lib/typescript/src/features/playback/playWhenReady.d.ts.map +1 -0
  393. package/lib/typescript/src/features/playback/playing.d.ts +21 -0
  394. package/lib/typescript/src/features/playback/playing.d.ts.map +1 -0
  395. package/lib/typescript/src/features/playback/progress.d.ts +51 -0
  396. package/lib/typescript/src/features/playback/progress.d.ts.map +1 -0
  397. package/lib/typescript/src/features/playback/rate.d.ts +12 -0
  398. package/lib/typescript/src/features/playback/rate.d.ts.map +1 -0
  399. package/lib/typescript/src/features/playback/state.d.ts +43 -0
  400. package/lib/typescript/src/features/playback/state.d.ts.map +1 -0
  401. package/lib/typescript/src/features/playback/volume.d.ts +32 -0
  402. package/lib/typescript/src/features/playback/volume.d.ts.map +1 -0
  403. package/lib/typescript/src/features/player/index.d.ts +3 -0
  404. package/lib/typescript/src/features/player/index.d.ts.map +1 -0
  405. package/lib/typescript/src/features/player/options.d.ts +413 -0
  406. package/lib/typescript/src/features/player/options.d.ts.map +1 -0
  407. package/lib/typescript/src/features/player/setup.d.ts +471 -0
  408. package/lib/typescript/src/features/player/setup.d.ts.map +1 -0
  409. package/lib/typescript/src/features/queue/activeTrack.d.ts +38 -0
  410. package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -0
  411. package/lib/typescript/src/features/queue/index.d.ts +5 -0
  412. package/lib/typescript/src/features/queue/index.d.ts.map +1 -0
  413. package/lib/typescript/src/features/queue/queue.d.ts +111 -0
  414. package/lib/typescript/src/features/queue/queue.d.ts.map +1 -0
  415. package/lib/typescript/src/features/queue/repeatMode.d.ts +34 -0
  416. package/lib/typescript/src/features/queue/repeatMode.d.ts.map +1 -0
  417. package/lib/typescript/src/features/queue/shuffle.d.ts +27 -0
  418. package/lib/typescript/src/features/queue/shuffle.d.ts.map +1 -0
  419. package/lib/typescript/src/features/rating.d.ts +14 -0
  420. package/lib/typescript/src/features/rating.d.ts.map +1 -0
  421. package/lib/typescript/src/features/remoteControls.d.ts +164 -0
  422. package/lib/typescript/src/features/remoteControls.d.ts.map +1 -0
  423. package/lib/typescript/src/features/sleepTimer.d.ts +80 -0
  424. package/lib/typescript/src/features/sleepTimer.d.ts.map +1 -0
  425. package/lib/typescript/src/index.d.ts +4 -0
  426. package/lib/typescript/src/index.d.ts.map +1 -0
  427. package/lib/typescript/src/native.d.ts +3 -0
  428. package/lib/typescript/src/native.d.ts.map +1 -0
  429. package/lib/typescript/src/native.web.d.ts +3 -0
  430. package/lib/typescript/src/native.web.d.ts.map +1 -0
  431. package/lib/typescript/src/specs/audio-browser.nitro.d.ts +242 -0
  432. package/lib/typescript/src/specs/audio-browser.nitro.d.ts.map +1 -0
  433. package/lib/typescript/src/types/browser-native.d.ts +39 -0
  434. package/lib/typescript/src/types/browser-native.d.ts.map +1 -0
  435. package/lib/typescript/src/types/browser-nodes.d.ts +153 -0
  436. package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -0
  437. package/lib/typescript/src/types/browser.d.ts +710 -0
  438. package/lib/typescript/src/types/browser.d.ts.map +1 -0
  439. package/lib/typescript/src/types/index.d.ts +3 -0
  440. package/lib/typescript/src/types/index.d.ts.map +1 -0
  441. package/lib/typescript/src/types/player.d.ts +64 -0
  442. package/lib/typescript/src/types/player.d.ts.map +1 -0
  443. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +35 -0
  444. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -0
  445. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +39 -0
  446. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -0
  447. package/lib/typescript/src/utils/resolveAssetSource.d.ts +4 -0
  448. package/lib/typescript/src/utils/resolveAssetSource.d.ts.map +1 -0
  449. package/lib/typescript/src/utils/useDebug.d.ts +65 -0
  450. package/lib/typescript/src/utils/useDebug.d.ts.map +1 -0
  451. package/lib/typescript/src/utils/useNativeUpdatedValue.d.ts +14 -0
  452. package/lib/typescript/src/utils/useNativeUpdatedValue.d.ts.map +1 -0
  453. package/lib/typescript/src/web/NativeAudioBrowser.d.ts +176 -0
  454. package/lib/typescript/src/web/NativeAudioBrowser.d.ts.map +1 -0
  455. package/lib/typescript/src/web/SimpleRouter.d.ts +40 -0
  456. package/lib/typescript/src/web/SimpleRouter.d.ts.map +1 -0
  457. package/lib/typescript/src/web/TrackPlayer/Event.d.ts +11 -0
  458. package/lib/typescript/src/web/TrackPlayer/Event.d.ts.map +1 -0
  459. package/lib/typescript/src/web/TrackPlayer/Player.d.ts +71 -0
  460. package/lib/typescript/src/web/TrackPlayer/Player.d.ts.map +1 -0
  461. package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts +39 -0
  462. package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts.map +1 -0
  463. package/lib/typescript/src/web/TrackPlayer/RepeatMode.d.ts +6 -0
  464. package/lib/typescript/src/web/TrackPlayer/RepeatMode.d.ts.map +1 -0
  465. package/lib/typescript/src/web/TrackPlayer/SetupNotCalledError.d.ts +4 -0
  466. package/lib/typescript/src/web/TrackPlayer/SetupNotCalledError.d.ts.map +1 -0
  467. package/lib/typescript/src/web/TrackPlayer/SleepTimer.d.ts +34 -0
  468. package/lib/typescript/src/web/TrackPlayer/SleepTimer.d.ts.map +1 -0
  469. package/lib/typescript/src/web/TrackPlayer/State.d.ts +13 -0
  470. package/lib/typescript/src/web/TrackPlayer/State.d.ts.map +1 -0
  471. package/lib/typescript/src/web/TrackPlayer/index.d.ts +5 -0
  472. package/lib/typescript/src/web/TrackPlayer/index.d.ts.map +1 -0
  473. package/lib/typescript/src/web/browser/BrowserManager.d.ts +154 -0
  474. package/lib/typescript/src/web/browser/BrowserManager.d.ts.map +1 -0
  475. package/lib/typescript/src/web/browser/FavoriteManager.d.ts +42 -0
  476. package/lib/typescript/src/web/browser/FavoriteManager.d.ts.map +1 -0
  477. package/lib/typescript/src/web/browser/NavigationErrorManager.d.ts +40 -0
  478. package/lib/typescript/src/web/browser/NavigationErrorManager.d.ts.map +1 -0
  479. package/lib/typescript/src/web/browser/SearchManager.d.ts +22 -0
  480. package/lib/typescript/src/web/browser/SearchManager.d.ts.map +1 -0
  481. package/lib/typescript/src/web/http/HttpClient.d.ts +25 -0
  482. package/lib/typescript/src/web/http/HttpClient.d.ts.map +1 -0
  483. package/lib/typescript/src/web/http/RequestConfigBuilder.d.ts +98 -0
  484. package/lib/typescript/src/web/http/RequestConfigBuilder.d.ts.map +1 -0
  485. package/lib/typescript/src/web/player/NowPlayingManager.d.ts +34 -0
  486. package/lib/typescript/src/web/player/NowPlayingManager.d.ts.map +1 -0
  487. package/lib/typescript/src/web/player/OptionsManager.d.ts +32 -0
  488. package/lib/typescript/src/web/player/OptionsManager.d.ts.map +1 -0
  489. package/lib/typescript/src/web/util/BrowserPathHelper.d.ts +69 -0
  490. package/lib/typescript/src/web/util/BrowserPathHelper.d.ts.map +1 -0
  491. package/lib/typescript/src/web/util/shuffle.d.ts +8 -0
  492. package/lib/typescript/src/web/util/shuffle.d.ts.map +1 -0
  493. package/nitro.json +24 -0
  494. package/nitrogen/generated/.gitattributes +1 -0
  495. package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +88 -0
  496. package/nitrogen/generated/android/AudioBrowser+autolinking.gradle +27 -0
  497. package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +124 -0
  498. package/nitrogen/generated/android/AudioBrowserOnLoad.hpp +25 -0
  499. package/nitrogen/generated/android/c++/JAndroidAudioContentType.hpp +68 -0
  500. package/nitrogen/generated/android/c++/JAndroidAudioOffloadSettings.hpp +61 -0
  501. package/nitrogen/generated/android/c++/JAndroidOptions.hpp +86 -0
  502. package/nitrogen/generated/android/c++/JAndroidPlayerWakeMode.hpp +62 -0
  503. package/nitrogen/generated/android/c++/JAndroidUpdateOptions.hpp +86 -0
  504. package/nitrogen/generated/android/c++/JAppKilledPlaybackBehavior.hpp +62 -0
  505. package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +163 -0
  506. package/nitrogen/generated/android/c++/JBatteryOptimizationStatus.hpp +62 -0
  507. package/nitrogen/generated/android/c++/JBatteryOptimizationStatusChangedEvent.hpp +58 -0
  508. package/nitrogen/generated/android/c++/JBatteryWarningPendingChangedEvent.hpp +57 -0
  509. package/nitrogen/generated/android/c++/JBrowseError.hpp +57 -0
  510. package/nitrogen/generated/android/c++/JBrowseResult.cpp +26 -0
  511. package/nitrogen/generated/android/c++/JBrowseResult.hpp +83 -0
  512. package/nitrogen/generated/android/c++/JBrowserSourceCallbackParam.hpp +76 -0
  513. package/nitrogen/generated/android/c++/JCarPlayNowPlayingButton.hpp +65 -0
  514. package/nitrogen/generated/android/c++/JChapterMetadata.hpp +70 -0
  515. package/nitrogen/generated/android/c++/JEqualizerSettings.hpp +125 -0
  516. package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +71 -0
  517. package/nitrogen/generated/android/c++/JFormatNavigationErrorParams.hpp +72 -0
  518. package/nitrogen/generated/android/c++/JFormattedNavigationError.hpp +61 -0
  519. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.hpp +111 -0
  520. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.hpp +134 -0
  521. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.hpp +143 -0
  522. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +136 -0
  523. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.hpp +143 -0
  524. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +157 -0
  525. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  526. package/nitrogen/generated/android/c++/JFunc_void_BatteryOptimizationStatusChangedEvent.hpp +79 -0
  527. package/nitrogen/generated/android/c++/JFunc_void_BatteryWarningPendingChangedEvent.hpp +77 -0
  528. package/nitrogen/generated/android/c++/JFunc_void_EqualizerSettings.hpp +80 -0
  529. package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +88 -0
  530. package/nitrogen/generated/android/c++/JFunc_void_IosOutput.hpp +80 -0
  531. package/nitrogen/generated/android/c++/JFunc_void_NavigationErrorEvent.hpp +83 -0
  532. package/nitrogen/generated/android/c++/JFunc_void_NowPlayingMetadata.hpp +89 -0
  533. package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +98 -0
  534. package/nitrogen/generated/android/c++/JFunc_void_Playback.hpp +83 -0
  535. package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +88 -0
  536. package/nitrogen/generated/android/c++/JFunc_void_PlaybackErrorEvent.hpp +81 -0
  537. package/nitrogen/generated/android/c++/JFunc_void_PlaybackPlayWhenReadyChangedEvent.hpp +77 -0
  538. package/nitrogen/generated/android/c++/JFunc_void_PlaybackProgressUpdatedEvent.hpp +77 -0
  539. package/nitrogen/generated/android/c++/JFunc_void_PlaybackQueueEndedEvent.hpp +77 -0
  540. package/nitrogen/generated/android/c++/JFunc_void_PlayingState.hpp +77 -0
  541. package/nitrogen/generated/android/c++/JFunc_void_RemoteJumpBackwardEvent.hpp +77 -0
  542. package/nitrogen/generated/android/c++/JFunc_void_RemoteJumpForwardEvent.hpp +77 -0
  543. package/nitrogen/generated/android/c++/JFunc_void_RemotePlayIdEvent.hpp +79 -0
  544. package/nitrogen/generated/android/c++/JFunc_void_RemotePlaySearchEvent.hpp +78 -0
  545. package/nitrogen/generated/android/c++/JFunc_void_RemoteSeekEvent.hpp +77 -0
  546. package/nitrogen/generated/android/c++/JFunc_void_RemoteSetRatingEvent.hpp +87 -0
  547. package/nitrogen/generated/android/c++/JFunc_void_RemoteSkipEvent.hpp +77 -0
  548. package/nitrogen/generated/android/c++/JFunc_void_RepeatModeChangedEvent.hpp +79 -0
  549. package/nitrogen/generated/android/c++/JFunc_void_TimedMetadata.hpp +79 -0
  550. package/nitrogen/generated/android/c++/JFunc_void_TrackMetadata.hpp +79 -0
  551. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  552. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
  553. package/nitrogen/generated/android/c++/JFunc_void_std__optional_FormattedNavigationError_.hpp +79 -0
  554. package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +89 -0
  555. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.hpp +84 -0
  556. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  557. package/nitrogen/generated/android/c++/JFunc_void_std__vector_ChapterMetadata_.hpp +98 -0
  558. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +105 -0
  559. package/nitrogen/generated/android/c++/JHeartRating.hpp +57 -0
  560. package/nitrogen/generated/android/c++/JHttpMethod.hpp +74 -0
  561. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +1811 -0
  562. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.hpp +250 -0
  563. package/nitrogen/generated/android/c++/JIOSCategory.hpp +71 -0
  564. package/nitrogen/generated/android/c++/JIOSCategoryMode.hpp +80 -0
  565. package/nitrogen/generated/android/c++/JIOSCategoryOptions.hpp +74 -0
  566. package/nitrogen/generated/android/c++/JIOSCategoryPolicy.hpp +62 -0
  567. package/nitrogen/generated/android/c++/JImageContext.hpp +61 -0
  568. package/nitrogen/generated/android/c++/JImageQueryParams.hpp +62 -0
  569. package/nitrogen/generated/android/c++/JImageSource.hpp +86 -0
  570. package/nitrogen/generated/android/c++/JIosOutput.hpp +67 -0
  571. package/nitrogen/generated/android/c++/JIosOutputType.hpp +86 -0
  572. package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +153 -0
  573. package/nitrogen/generated/android/c++/JMediaTransformParams.hpp +69 -0
  574. package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +196 -0
  575. package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +147 -0
  576. package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +105 -0
  577. package/nitrogen/generated/android/c++/JNavigationError.hpp +72 -0
  578. package/nitrogen/generated/android/c++/JNavigationErrorEvent.hpp +62 -0
  579. package/nitrogen/generated/android/c++/JNavigationErrorType.hpp +68 -0
  580. package/nitrogen/generated/android/c++/JNitroAndroidUpdateOptions.hpp +86 -0
  581. package/nitrogen/generated/android/c++/JNotificationButton.hpp +68 -0
  582. package/nitrogen/generated/android/c++/JNotificationButtonLayout.hpp +94 -0
  583. package/nitrogen/generated/android/c++/JNowPlayingMetadata.hpp +104 -0
  584. package/nitrogen/generated/android/c++/JNowPlayingUpdate.hpp +62 -0
  585. package/nitrogen/generated/android/c++/JOptions.hpp +97 -0
  586. package/nitrogen/generated/android/c++/JPartialAndroidSetupPlayerOptions.hpp +104 -0
  587. package/nitrogen/generated/android/c++/JPartialIOSSetupPlayerOptions.hpp +100 -0
  588. package/nitrogen/generated/android/c++/JPartialSetupPlayerOptions.hpp +96 -0
  589. package/nitrogen/generated/android/c++/JPercentageRating.hpp +57 -0
  590. package/nitrogen/generated/android/c++/JPlayback.hpp +66 -0
  591. package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +83 -0
  592. package/nitrogen/generated/android/c++/JPlaybackError.hpp +61 -0
  593. package/nitrogen/generated/android/c++/JPlaybackErrorEvent.hpp +60 -0
  594. package/nitrogen/generated/android/c++/JPlaybackPlayWhenReadyChangedEvent.hpp +57 -0
  595. package/nitrogen/generated/android/c++/JPlaybackProgressUpdatedEvent.hpp +69 -0
  596. package/nitrogen/generated/android/c++/JPlaybackQueueEndedEvent.hpp +61 -0
  597. package/nitrogen/generated/android/c++/JPlaybackState.hpp +80 -0
  598. package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +101 -0
  599. package/nitrogen/generated/android/c++/JPlayingState.hpp +61 -0
  600. package/nitrogen/generated/android/c++/JProgress.hpp +65 -0
  601. package/nitrogen/generated/android/c++/JRatingType.hpp +74 -0
  602. package/nitrogen/generated/android/c++/JRemoteJumpBackwardEvent.hpp +57 -0
  603. package/nitrogen/generated/android/c++/JRemoteJumpForwardEvent.hpp +57 -0
  604. package/nitrogen/generated/android/c++/JRemotePlayIdEvent.hpp +62 -0
  605. package/nitrogen/generated/android/c++/JRemotePlaySearchEvent.hpp +57 -0
  606. package/nitrogen/generated/android/c++/JRemoteSeekEvent.hpp +57 -0
  607. package/nitrogen/generated/android/c++/JRemoteSetRatingEvent.hpp +66 -0
  608. package/nitrogen/generated/android/c++/JRemoteSkipEvent.hpp +57 -0
  609. package/nitrogen/generated/android/c++/JRepeatMode.hpp +62 -0
  610. package/nitrogen/generated/android/c++/JRepeatModeChangedEvent.hpp +58 -0
  611. package/nitrogen/generated/android/c++/JRequestConfig.hpp +115 -0
  612. package/nitrogen/generated/android/c++/JResolvedTrack.hpp +154 -0
  613. package/nitrogen/generated/android/c++/JRetryConfig.hpp +61 -0
  614. package/nitrogen/generated/android/c++/JSearchMode.hpp +71 -0
  615. package/nitrogen/generated/android/c++/JSearchParams.hpp +84 -0
  616. package/nitrogen/generated/android/c++/JSleepTimer.cpp +30 -0
  617. package/nitrogen/generated/android/c++/JSleepTimer.hpp +88 -0
  618. package/nitrogen/generated/android/c++/JSleepTimerEndOfTrack.hpp +57 -0
  619. package/nitrogen/generated/android/c++/JSleepTimerTime.hpp +57 -0
  620. package/nitrogen/generated/android/c++/JStarRating.hpp +57 -0
  621. package/nitrogen/generated/android/c++/JThumbsRating.hpp +57 -0
  622. package/nitrogen/generated/android/c++/JTimedMetadata.hpp +74 -0
  623. package/nitrogen/generated/android/c++/JTrack.hpp +129 -0
  624. package/nitrogen/generated/android/c++/JTrackMetadata.hpp +118 -0
  625. package/nitrogen/generated/android/c++/JTrackStyle.hpp +59 -0
  626. package/nitrogen/generated/android/c++/JTransformableRequestConfig.hpp +134 -0
  627. package/nitrogen/generated/android/c++/JUpdateOptions.hpp +105 -0
  628. package/nitrogen/generated/android/c++/JVariant_Boolean_AndroidAudioOffloadSettings.cpp +26 -0
  629. package/nitrogen/generated/android/c++/JVariant_Boolean_AndroidAudioOffloadSettings.hpp +70 -0
  630. package/nitrogen/generated/android/c++/JVariant_Boolean_RetryConfig.cpp +26 -0
  631. package/nitrogen/generated/android/c++/JVariant_Boolean_RetryConfig.hpp +70 -0
  632. package/nitrogen/generated/android/c++/JVariant_HeartRating_ThumbsRating_StarRating_PercentageRating.cpp +34 -0
  633. package/nitrogen/generated/android/c++/JVariant_HeartRating_ThumbsRating_StarRating_PercentageRating.hpp +105 -0
  634. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  635. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  636. package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.cpp +26 -0
  637. package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.hpp +75 -0
  638. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidAudioContentType.kt +24 -0
  639. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidAudioOffloadSettings.kt +41 -0
  640. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidOptions.kt +50 -0
  641. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidPlayerWakeMode.kt +22 -0
  642. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidUpdateOptions.kt +50 -0
  643. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AppKilledPlaybackBehavior.kt +22 -0
  644. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ArtworkRequestConfig.kt +72 -0
  645. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AudioBrowserOnLoad.kt +35 -0
  646. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryOptimizationStatus.kt +22 -0
  647. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryOptimizationStatusChangedEvent.kt +38 -0
  648. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BatteryWarningPendingChangedEvent.kt +38 -0
  649. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowseError.kt +38 -0
  650. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowseResult.kt +59 -0
  651. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/BrowserSourceCallbackParam.kt +41 -0
  652. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayNowPlayingButton.kt +23 -0
  653. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ChapterMetadata.kt +47 -0
  654. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/EqualizerSettings.kt +59 -0
  655. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FavoriteChangedEvent.kt +41 -0
  656. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormatNavigationErrorParams.kt +44 -0
  657. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormattedNavigationError.kt +41 -0
  658. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.kt +80 -0
  659. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.kt +80 -0
  660. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.kt +80 -0
  661. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.kt +80 -0
  662. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.kt +80 -0
  663. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.kt +80 -0
  664. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void.kt +80 -0
  665. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_BatteryOptimizationStatusChangedEvent.kt +80 -0
  666. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_BatteryWarningPendingChangedEvent.kt +80 -0
  667. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_EqualizerSettings.kt +80 -0
  668. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_FavoriteChangedEvent.kt +80 -0
  669. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_IosOutput.kt +80 -0
  670. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_NavigationErrorEvent.kt +80 -0
  671. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_NowPlayingMetadata.kt +80 -0
  672. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_Options.kt +80 -0
  673. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_Playback.kt +80 -0
  674. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackActiveTrackChangedEvent.kt +80 -0
  675. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackErrorEvent.kt +80 -0
  676. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackPlayWhenReadyChangedEvent.kt +80 -0
  677. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackProgressUpdatedEvent.kt +80 -0
  678. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlaybackQueueEndedEvent.kt +80 -0
  679. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_PlayingState.kt +80 -0
  680. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteJumpBackwardEvent.kt +80 -0
  681. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteJumpForwardEvent.kt +80 -0
  682. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemotePlayIdEvent.kt +80 -0
  683. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemotePlaySearchEvent.kt +80 -0
  684. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSeekEvent.kt +80 -0
  685. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSetRatingEvent.kt +80 -0
  686. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RemoteSkipEvent.kt +80 -0
  687. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_RepeatModeChangedEvent.kt +80 -0
  688. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_TimedMetadata.kt +80 -0
  689. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_TrackMetadata.kt +80 -0
  690. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_bool.kt +80 -0
  691. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_double.kt +80 -0
  692. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_FormattedNavigationError_.kt +80 -0
  693. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_ResolvedTrack_.kt +80 -0
  694. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.kt +80 -0
  695. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__string.kt +80 -0
  696. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__vector_ChapterMetadata_.kt +80 -0
  697. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_std__vector_Track_.kt +80 -0
  698. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HeartRating.kt +38 -0
  699. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HttpMethod.kt +26 -0
  700. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HybridAudioBrowserSpec.kt +1137 -0
  701. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategory.kt +25 -0
  702. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategoryMode.kt +28 -0
  703. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategoryOptions.kt +26 -0
  704. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSCategoryPolicy.kt +22 -0
  705. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageContext.kt +41 -0
  706. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageQueryParams.kt +41 -0
  707. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageSource.kt +47 -0
  708. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IosOutput.kt +44 -0
  709. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IosOutputType.kt +30 -0
  710. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaRequestConfig.kt +69 -0
  711. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaTransformParams.kt +41 -0
  712. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +69 -0
  713. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeRouteEntry.kt +63 -0
  714. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeUpdateOptions.kt +53 -0
  715. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationError.kt +47 -0
  716. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationErrorEvent.kt +38 -0
  717. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationErrorType.kt +24 -0
  718. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroAndroidUpdateOptions.kt +50 -0
  719. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NotificationButton.kt +24 -0
  720. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NotificationButtonLayout.kt +50 -0
  721. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingMetadata.kt +65 -0
  722. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingUpdate.kt +41 -0
  723. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Options.kt +53 -0
  724. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PartialAndroidSetupPlayerOptions.kt +65 -0
  725. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PartialIOSSetupPlayerOptions.kt +50 -0
  726. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PartialSetupPlayerOptions.kt +47 -0
  727. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PercentageRating.kt +38 -0
  728. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Playback.kt +41 -0
  729. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackActiveTrackChangedEvent.kt +50 -0
  730. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackError.kt +41 -0
  731. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackErrorEvent.kt +38 -0
  732. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackPlayWhenReadyChangedEvent.kt +38 -0
  733. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackProgressUpdatedEvent.kt +47 -0
  734. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackQueueEndedEvent.kt +41 -0
  735. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackState.kt +28 -0
  736. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +71 -0
  737. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayingState.kt +41 -0
  738. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Progress.kt +44 -0
  739. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RatingType.kt +26 -0
  740. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteJumpBackwardEvent.kt +38 -0
  741. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteJumpForwardEvent.kt +38 -0
  742. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemotePlayIdEvent.kt +41 -0
  743. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemotePlaySearchEvent.kt +38 -0
  744. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSeekEvent.kt +38 -0
  745. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSetRatingEvent.kt +38 -0
  746. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteSkipEvent.kt +38 -0
  747. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RepeatMode.kt +22 -0
  748. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RepeatModeChangedEvent.kt +38 -0
  749. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RequestConfig.kt +59 -0
  750. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +89 -0
  751. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RetryConfig.kt +41 -0
  752. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SearchMode.kt +25 -0
  753. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SearchParams.kt +56 -0
  754. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimer.kt +72 -0
  755. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimerEndOfTrack.kt +38 -0
  756. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SleepTimerTime.kt +38 -0
  757. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StarRating.kt +38 -0
  758. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ThumbsRating.kt +38 -0
  759. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TimedMetadata.kt +50 -0
  760. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +86 -0
  761. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackMetadata.kt +83 -0
  762. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +21 -0
  763. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TransformableRequestConfig.kt +66 -0
  764. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/UpdateOptions.kt +53 -0
  765. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_AndroidAudioOffloadSettings.kt +59 -0
  766. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_RetryConfig.kt +59 -0
  767. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_HeartRating_ThumbsRating_StarRating_PercentageRating.kt +85 -0
  768. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_NullType_Double.kt +59 -0
  769. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_NullType_NotificationButtonLayout.kt +59 -0
  770. package/nitrogen/generated/ios/AudioBrowser+autolinking.rb +60 -0
  771. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.cpp +407 -0
  772. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +2822 -0
  773. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +300 -0
  774. package/nitrogen/generated/ios/AudioBrowserAutolinking.mm +33 -0
  775. package/nitrogen/generated/ios/AudioBrowserAutolinking.swift +25 -0
  776. package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.cpp +11 -0
  777. package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +1190 -0
  778. package/nitrogen/generated/ios/swift/AndroidAudioContentType.swift +52 -0
  779. package/nitrogen/generated/ios/swift/AndroidAudioOffloadSettings.swift +85 -0
  780. package/nitrogen/generated/ios/swift/AndroidOptions.swift +125 -0
  781. package/nitrogen/generated/ios/swift/AndroidPlayerWakeMode.swift +44 -0
  782. package/nitrogen/generated/ios/swift/AndroidUpdateOptions.swift +187 -0
  783. package/nitrogen/generated/ios/swift/AppKilledPlaybackBehavior.swift +44 -0
  784. package/nitrogen/generated/ios/swift/ArtworkRequestConfig.swift +445 -0
  785. package/nitrogen/generated/ios/swift/BatteryOptimizationStatus.swift +44 -0
  786. package/nitrogen/generated/ios/swift/BatteryOptimizationStatusChangedEvent.swift +36 -0
  787. package/nitrogen/generated/ios/swift/BatteryWarningPendingChangedEvent.swift +36 -0
  788. package/nitrogen/generated/ios/swift/BrowseError.swift +36 -0
  789. package/nitrogen/generated/ios/swift/BrowseResult.swift +18 -0
  790. package/nitrogen/generated/ios/swift/BrowserSourceCallbackParam.swift +86 -0
  791. package/nitrogen/generated/ios/swift/CarPlayNowPlayingButton.swift +48 -0
  792. package/nitrogen/generated/ios/swift/ChapterMetadata.swift +107 -0
  793. package/nitrogen/generated/ios/swift/EqualizerSettings.swift +168 -0
  794. package/nitrogen/generated/ios/swift/FavoriteChangedEvent.swift +47 -0
  795. package/nitrogen/generated/ios/swift/FormatNavigationErrorParams.swift +58 -0
  796. package/nitrogen/generated/ios/swift/FormattedNavigationError.swift +47 -0
  797. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__optional_FormattedNavigationError____FormatNavigationErrorParams.swift +61 -0
  798. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____MediaTransformParams.swift +62 -0
  799. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____RequestConfig_std__optional_std__unordered_map_std__string__std__string__.swift +77 -0
  800. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.swift +62 -0
  801. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.swift +69 -0
  802. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.swift +68 -0
  803. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  804. package/nitrogen/generated/ios/swift/Func_void_BatteryOptimizationStatusChangedEvent.swift +47 -0
  805. package/nitrogen/generated/ios/swift/Func_void_BatteryWarningPendingChangedEvent.swift +47 -0
  806. package/nitrogen/generated/ios/swift/Func_void_EqualizerSettings.swift +47 -0
  807. package/nitrogen/generated/ios/swift/Func_void_FavoriteChangedEvent.swift +47 -0
  808. package/nitrogen/generated/ios/swift/Func_void_IosOutput.swift +47 -0
  809. package/nitrogen/generated/ios/swift/Func_void_NavigationErrorEvent.swift +47 -0
  810. package/nitrogen/generated/ios/swift/Func_void_NowPlayingMetadata.swift +47 -0
  811. package/nitrogen/generated/ios/swift/Func_void_Options.swift +47 -0
  812. package/nitrogen/generated/ios/swift/Func_void_Playback.swift +47 -0
  813. package/nitrogen/generated/ios/swift/Func_void_PlaybackActiveTrackChangedEvent.swift +47 -0
  814. package/nitrogen/generated/ios/swift/Func_void_PlaybackErrorEvent.swift +47 -0
  815. package/nitrogen/generated/ios/swift/Func_void_PlaybackPlayWhenReadyChangedEvent.swift +47 -0
  816. package/nitrogen/generated/ios/swift/Func_void_PlaybackProgressUpdatedEvent.swift +47 -0
  817. package/nitrogen/generated/ios/swift/Func_void_PlaybackQueueEndedEvent.swift +47 -0
  818. package/nitrogen/generated/ios/swift/Func_void_PlayingState.swift +47 -0
  819. package/nitrogen/generated/ios/swift/Func_void_RemoteJumpBackwardEvent.swift +47 -0
  820. package/nitrogen/generated/ios/swift/Func_void_RemoteJumpForwardEvent.swift +47 -0
  821. package/nitrogen/generated/ios/swift/Func_void_RemotePlayIdEvent.swift +47 -0
  822. package/nitrogen/generated/ios/swift/Func_void_RemotePlaySearchEvent.swift +47 -0
  823. package/nitrogen/generated/ios/swift/Func_void_RemoteSeekEvent.swift +47 -0
  824. package/nitrogen/generated/ios/swift/Func_void_RemoteSetRatingEvent.swift +47 -0
  825. package/nitrogen/generated/ios/swift/Func_void_RemoteSkipEvent.swift +47 -0
  826. package/nitrogen/generated/ios/swift/Func_void_RepeatModeChangedEvent.swift +47 -0
  827. package/nitrogen/generated/ios/swift/Func_void_RequestConfig.swift +47 -0
  828. package/nitrogen/generated/ios/swift/Func_void_TimedMetadata.swift +47 -0
  829. package/nitrogen/generated/ios/swift/Func_void_TrackMetadata.swift +47 -0
  830. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  831. package/nitrogen/generated/ios/swift/Func_void_double.swift +47 -0
  832. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  833. package/nitrogen/generated/ios/swift/Func_void_std__optional_FormattedNavigationError_.swift +47 -0
  834. package/nitrogen/generated/ios/swift/Func_void_std__optional_ResolvedTrack_.swift +47 -0
  835. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__SleepTimerTime__SleepTimerEndOfTrack__.swift +69 -0
  836. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_RequestConfig__.swift +67 -0
  837. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError___.swift +67 -0
  838. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__vector_Track___.swift +67 -0
  839. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  840. package/nitrogen/generated/ios/swift/Func_void_std__variant_ResolvedTrack__BrowseError_.swift +59 -0
  841. package/nitrogen/generated/ios/swift/Func_void_std__vector_ChapterMetadata_.swift +47 -0
  842. package/nitrogen/generated/ios/swift/Func_void_std__vector_Track_.swift +47 -0
  843. package/nitrogen/generated/ios/swift/HeartRating.swift +36 -0
  844. package/nitrogen/generated/ios/swift/HttpMethod.swift +60 -0
  845. package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec.swift +181 -0
  846. package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec_cxx.swift +2352 -0
  847. package/nitrogen/generated/ios/swift/IOSCategory.swift +56 -0
  848. package/nitrogen/generated/ios/swift/IOSCategoryMode.swift +68 -0
  849. package/nitrogen/generated/ios/swift/IOSCategoryOptions.swift +60 -0
  850. package/nitrogen/generated/ios/swift/IOSCategoryPolicy.swift +44 -0
  851. package/nitrogen/generated/ios/swift/ImageContext.swift +71 -0
  852. package/nitrogen/generated/ios/swift/ImageQueryParams.swift +85 -0
  853. package/nitrogen/generated/ios/swift/ImageSource.swift +139 -0
  854. package/nitrogen/generated/ios/swift/IosOutput.swift +58 -0
  855. package/nitrogen/generated/ios/swift/IosOutputType.swift +76 -0
  856. package/nitrogen/generated/ios/swift/MediaRequestConfig.swift +434 -0
  857. package/nitrogen/generated/ios/swift/MediaTransformParams.swift +59 -0
  858. package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +360 -0
  859. package/nitrogen/generated/ios/swift/NativeRouteEntry.swift +275 -0
  860. package/nitrogen/generated/ios/swift/NativeUpdateOptions.swift +215 -0
  861. package/nitrogen/generated/ios/swift/NavigationError.swift +100 -0
  862. package/nitrogen/generated/ios/swift/NavigationErrorEvent.swift +48 -0
  863. package/nitrogen/generated/ios/swift/NavigationErrorType.swift +52 -0
  864. package/nitrogen/generated/ios/swift/NitroAndroidUpdateOptions.swift +187 -0
  865. package/nitrogen/generated/ios/swift/NotificationButton.swift +52 -0
  866. package/nitrogen/generated/ios/swift/NotificationButtonLayout.swift +159 -0
  867. package/nitrogen/generated/ios/swift/NowPlayingMetadata.swift +351 -0
  868. package/nitrogen/generated/ios/swift/NowPlayingUpdate.swift +85 -0
  869. package/nitrogen/generated/ios/swift/Options.swift +148 -0
  870. package/nitrogen/generated/ios/swift/PartialAndroidSetupPlayerOptions.swift +328 -0
  871. package/nitrogen/generated/ios/swift/PartialIOSSetupPlayerOptions.swift +159 -0
  872. package/nitrogen/generated/ios/swift/PartialSetupPlayerOptions.swift +157 -0
  873. package/nitrogen/generated/ios/swift/PercentageRating.swift +36 -0
  874. package/nitrogen/generated/ios/swift/Playback.swift +59 -0
  875. package/nitrogen/generated/ios/swift/PlaybackActiveTrackChangedEvent.swift +128 -0
  876. package/nitrogen/generated/ios/swift/PlaybackError.swift +47 -0
  877. package/nitrogen/generated/ios/swift/PlaybackErrorEvent.swift +48 -0
  878. package/nitrogen/generated/ios/swift/PlaybackPlayWhenReadyChangedEvent.swift +36 -0
  879. package/nitrogen/generated/ios/swift/PlaybackProgressUpdatedEvent.swift +69 -0
  880. package/nitrogen/generated/ios/swift/PlaybackQueueEndedEvent.swift +47 -0
  881. package/nitrogen/generated/ios/swift/PlaybackState.swift +68 -0
  882. package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +385 -0
  883. package/nitrogen/generated/ios/swift/PlayingState.swift +47 -0
  884. package/nitrogen/generated/ios/swift/Progress.swift +58 -0
  885. package/nitrogen/generated/ios/swift/RatingType.swift +60 -0
  886. package/nitrogen/generated/ios/swift/RemoteJumpBackwardEvent.swift +36 -0
  887. package/nitrogen/generated/ios/swift/RemoteJumpForwardEvent.swift +36 -0
  888. package/nitrogen/generated/ios/swift/RemotePlayIdEvent.swift +59 -0
  889. package/nitrogen/generated/ios/swift/RemotePlaySearchEvent.swift +36 -0
  890. package/nitrogen/generated/ios/swift/RemoteSeekEvent.swift +36 -0
  891. package/nitrogen/generated/ios/swift/RemoteSetRatingEvent.swift +76 -0
  892. package/nitrogen/generated/ios/swift/RemoteSkipEvent.swift +36 -0
  893. package/nitrogen/generated/ios/swift/RepeatMode.swift +44 -0
  894. package/nitrogen/generated/ios/swift/RepeatModeChangedEvent.swift +36 -0
  895. package/nitrogen/generated/ios/swift/RequestConfig.swift +298 -0
  896. package/nitrogen/generated/ios/swift/ResolvedTrack.swift +511 -0
  897. package/nitrogen/generated/ios/swift/RetryConfig.swift +59 -0
  898. package/nitrogen/generated/ios/swift/SearchMode.swift +56 -0
  899. package/nitrogen/generated/ios/swift/SearchParams.swift +209 -0
  900. package/nitrogen/generated/ios/swift/SleepTimer.swift +19 -0
  901. package/nitrogen/generated/ios/swift/SleepTimerEndOfTrack.swift +36 -0
  902. package/nitrogen/generated/ios/swift/SleepTimerTime.swift +36 -0
  903. package/nitrogen/generated/ios/swift/StarRating.swift +36 -0
  904. package/nitrogen/generated/ios/swift/ThumbsRating.swift +36 -0
  905. package/nitrogen/generated/ios/swift/TimedMetadata.swift +175 -0
  906. package/nitrogen/generated/ios/swift/Track.swift +488 -0
  907. package/nitrogen/generated/ios/swift/TrackMetadata.swift +505 -0
  908. package/nitrogen/generated/ios/swift/TrackStyle.swift +40 -0
  909. package/nitrogen/generated/ios/swift/TransformableRequestConfig.swift +372 -0
  910. package/nitrogen/generated/ios/swift/UpdateOptions.swift +215 -0
  911. package/nitrogen/generated/ios/swift/Variant_Bool_AndroidAudioOffloadSettings.swift +18 -0
  912. package/nitrogen/generated/ios/swift/Variant_Bool_RetryConfig.swift +18 -0
  913. package/nitrogen/generated/ios/swift/Variant_HeartRating_ThumbsRating_StarRating_PercentageRating.swift +20 -0
  914. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +18 -0
  915. package/nitrogen/generated/ios/swift/Variant_NullType_NotificationButtonLayout.swift +18 -0
  916. package/nitrogen/generated/shared/c++/AndroidAudioContentType.hpp +88 -0
  917. package/nitrogen/generated/shared/c++/AndroidAudioOffloadSettings.hpp +79 -0
  918. package/nitrogen/generated/shared/c++/AndroidOptions.hpp +101 -0
  919. package/nitrogen/generated/shared/c++/AndroidPlayerWakeMode.hpp +80 -0
  920. package/nitrogen/generated/shared/c++/AndroidUpdateOptions.hpp +101 -0
  921. package/nitrogen/generated/shared/c++/AppKilledPlaybackBehavior.hpp +80 -0
  922. package/nitrogen/generated/shared/c++/ArtworkRequestConfig.hpp +133 -0
  923. package/nitrogen/generated/shared/c++/BatteryOptimizationStatus.hpp +80 -0
  924. package/nitrogen/generated/shared/c++/BatteryOptimizationStatusChangedEvent.hpp +76 -0
  925. package/nitrogen/generated/shared/c++/BatteryWarningPendingChangedEvent.hpp +75 -0
  926. package/nitrogen/generated/shared/c++/BrowseError.hpp +75 -0
  927. package/nitrogen/generated/shared/c++/BrowserSourceCallbackParam.hpp +81 -0
  928. package/nitrogen/generated/shared/c++/CarPlayNowPlayingButton.hpp +84 -0
  929. package/nitrogen/generated/shared/c++/ChapterMetadata.hpp +88 -0
  930. package/nitrogen/generated/shared/c++/EqualizerSettings.hpp +105 -0
  931. package/nitrogen/generated/shared/c++/FavoriteChangedEvent.hpp +80 -0
  932. package/nitrogen/generated/shared/c++/FormatNavigationErrorParams.hpp +88 -0
  933. package/nitrogen/generated/shared/c++/FormattedNavigationError.hpp +79 -0
  934. package/nitrogen/generated/shared/c++/HeartRating.hpp +75 -0
  935. package/nitrogen/generated/shared/c++/HttpMethod.hpp +96 -0
  936. package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.cpp +207 -0
  937. package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.hpp +375 -0
  938. package/nitrogen/generated/shared/c++/IOSCategory.hpp +92 -0
  939. package/nitrogen/generated/shared/c++/IOSCategoryMode.hpp +104 -0
  940. package/nitrogen/generated/shared/c++/IOSCategoryOptions.hpp +96 -0
  941. package/nitrogen/generated/shared/c++/IOSCategoryPolicy.hpp +80 -0
  942. package/nitrogen/generated/shared/c++/ImageContext.hpp +79 -0
  943. package/nitrogen/generated/shared/c++/ImageQueryParams.hpp +80 -0
  944. package/nitrogen/generated/shared/c++/ImageSource.hpp +91 -0
  945. package/nitrogen/generated/shared/c++/IosOutput.hpp +85 -0
  946. package/nitrogen/generated/shared/c++/IosOutputType.hpp +112 -0
  947. package/nitrogen/generated/shared/c++/MediaRequestConfig.hpp +123 -0
  948. package/nitrogen/generated/shared/c++/MediaTransformParams.hpp +84 -0
  949. package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +135 -0
  950. package/nitrogen/generated/shared/c++/NativeRouteEntry.hpp +131 -0
  951. package/nitrogen/generated/shared/c++/NativeUpdateOptions.hpp +103 -0
  952. package/nitrogen/generated/shared/c++/NavigationError.hpp +90 -0
  953. package/nitrogen/generated/shared/c++/NavigationErrorEvent.hpp +77 -0
  954. package/nitrogen/generated/shared/c++/NavigationErrorType.hpp +88 -0
  955. package/nitrogen/generated/shared/c++/NitroAndroidUpdateOptions.hpp +101 -0
  956. package/nitrogen/generated/shared/c++/NotificationButton.hpp +88 -0
  957. package/nitrogen/generated/shared/c++/NotificationButtonLayout.hpp +94 -0
  958. package/nitrogen/generated/shared/c++/NowPlayingMetadata.hpp +124 -0
  959. package/nitrogen/generated/shared/c++/NowPlayingUpdate.hpp +80 -0
  960. package/nitrogen/generated/shared/c++/Options.hpp +105 -0
  961. package/nitrogen/generated/shared/c++/PartialAndroidSetupPlayerOptions.hpp +121 -0
  962. package/nitrogen/generated/shared/c++/PartialIOSSetupPlayerOptions.hpp +103 -0
  963. package/nitrogen/generated/shared/c++/PartialSetupPlayerOptions.hpp +96 -0
  964. package/nitrogen/generated/shared/c++/PercentageRating.hpp +75 -0
  965. package/nitrogen/generated/shared/c++/Playback.hpp +84 -0
  966. package/nitrogen/generated/shared/c++/PlaybackActiveTrackChangedEvent.hpp +93 -0
  967. package/nitrogen/generated/shared/c++/PlaybackError.hpp +79 -0
  968. package/nitrogen/generated/shared/c++/PlaybackErrorEvent.hpp +77 -0
  969. package/nitrogen/generated/shared/c++/PlaybackPlayWhenReadyChangedEvent.hpp +75 -0
  970. package/nitrogen/generated/shared/c++/PlaybackProgressUpdatedEvent.hpp +87 -0
  971. package/nitrogen/generated/shared/c++/PlaybackQueueEndedEvent.hpp +79 -0
  972. package/nitrogen/generated/shared/c++/PlaybackState.hpp +104 -0
  973. package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +119 -0
  974. package/nitrogen/generated/shared/c++/PlayingState.hpp +79 -0
  975. package/nitrogen/generated/shared/c++/Progress.hpp +83 -0
  976. package/nitrogen/generated/shared/c++/RatingType.hpp +96 -0
  977. package/nitrogen/generated/shared/c++/RemoteJumpBackwardEvent.hpp +75 -0
  978. package/nitrogen/generated/shared/c++/RemoteJumpForwardEvent.hpp +75 -0
  979. package/nitrogen/generated/shared/c++/RemotePlayIdEvent.hpp +80 -0
  980. package/nitrogen/generated/shared/c++/RemotePlaySearchEvent.hpp +75 -0
  981. package/nitrogen/generated/shared/c++/RemoteSeekEvent.hpp +75 -0
  982. package/nitrogen/generated/shared/c++/RemoteSetRatingEvent.hpp +86 -0
  983. package/nitrogen/generated/shared/c++/RemoteSkipEvent.hpp +75 -0
  984. package/nitrogen/generated/shared/c++/RepeatMode.hpp +80 -0
  985. package/nitrogen/generated/shared/c++/RepeatModeChangedEvent.hpp +76 -0
  986. package/nitrogen/generated/shared/c++/RequestConfig.hpp +107 -0
  987. package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +153 -0
  988. package/nitrogen/generated/shared/c++/RetryConfig.hpp +79 -0
  989. package/nitrogen/generated/shared/c++/SearchMode.hpp +92 -0
  990. package/nitrogen/generated/shared/c++/SearchParams.hpp +102 -0
  991. package/nitrogen/generated/shared/c++/SleepTimerEndOfTrack.hpp +75 -0
  992. package/nitrogen/generated/shared/c++/SleepTimerTime.hpp +75 -0
  993. package/nitrogen/generated/shared/c++/StarRating.hpp +75 -0
  994. package/nitrogen/generated/shared/c++/ThumbsRating.hpp +75 -0
  995. package/nitrogen/generated/shared/c++/TimedMetadata.hpp +92 -0
  996. package/nitrogen/generated/shared/c++/Track.hpp +145 -0
  997. package/nitrogen/generated/shared/c++/TrackMetadata.hpp +136 -0
  998. package/nitrogen/generated/shared/c++/TrackStyle.hpp +76 -0
  999. package/nitrogen/generated/shared/c++/TransformableRequestConfig.hpp +116 -0
  1000. package/nitrogen/generated/shared/c++/UpdateOptions.hpp +103 -0
  1001. package/package.json +120 -0
  1002. package/src/AudioBrowser.ts +4 -0
  1003. package/src/features/battery.ts +176 -0
  1004. package/src/features/browser.ts +315 -0
  1005. package/src/features/equalizer.ts +64 -0
  1006. package/src/features/errors.ts +196 -0
  1007. package/src/features/favorites.ts +102 -0
  1008. package/src/features/index.ts +23 -0
  1009. package/src/features/metadata.ts +130 -0
  1010. package/src/features/network.ts +34 -0
  1011. package/src/features/nowPlaying.ts +56 -0
  1012. package/src/features/output.ts +50 -0
  1013. package/src/features/playback/controls.ts +66 -0
  1014. package/src/features/playback/index.ts +7 -0
  1015. package/src/features/playback/playWhenReady.ts +57 -0
  1016. package/src/features/playback/playing.ts +40 -0
  1017. package/src/features/playback/progress.ts +122 -0
  1018. package/src/features/playback/rate.ts +22 -0
  1019. package/src/features/playback/state.ts +72 -0
  1020. package/src/features/playback/volume.ts +59 -0
  1021. package/src/features/player/index.ts +2 -0
  1022. package/src/features/player/options.ts +479 -0
  1023. package/src/features/player/setup.ts +551 -0
  1024. package/src/features/queue/activeTrack.ts +59 -0
  1025. package/src/features/queue/index.ts +4 -0
  1026. package/src/features/queue/queue.ts +173 -0
  1027. package/src/features/queue/repeatMode.ts +58 -0
  1028. package/src/features/queue/shuffle.ts +49 -0
  1029. package/src/features/rating.ts +17 -0
  1030. package/src/features/remoteControls.ts +341 -0
  1031. package/src/features/sleepTimer.ts +186 -0
  1032. package/src/index.ts +5 -0
  1033. package/src/native.ts +5 -0
  1034. package/src/native.web.ts +4 -0
  1035. package/src/specs/audio-browser.nitro.ts +326 -0
  1036. package/src/types/browser-native.ts +66 -0
  1037. package/src/types/browser-nodes.ts +174 -0
  1038. package/src/types/browser.ts +792 -0
  1039. package/src/types/index.ts +2 -0
  1040. package/src/types/player.ts +69 -0
  1041. package/src/utils/LazyNativeEmitter.ts +58 -0
  1042. package/src/utils/NativeUpdatedValue.ts +56 -0
  1043. package/src/utils/resolveAssetSource.ts +4 -0
  1044. package/src/utils/useDebug.ts +283 -0
  1045. package/src/utils/useNativeUpdatedValue.ts +41 -0
  1046. package/src/web/NativeAudioBrowser.ts +781 -0
  1047. package/src/web/SimpleRouter.ts +177 -0
  1048. package/src/web/TrackPlayer/Event.ts +11 -0
  1049. package/src/web/TrackPlayer/Player.ts +323 -0
  1050. package/src/web/TrackPlayer/PlaylistPlayer.ts +337 -0
  1051. package/src/web/TrackPlayer/RepeatMode.ts +7 -0
  1052. package/src/web/TrackPlayer/SetupNotCalledError.ts +5 -0
  1053. package/src/web/TrackPlayer/SleepTimer.ts +71 -0
  1054. package/src/web/TrackPlayer/State.ts +15 -0
  1055. package/src/web/TrackPlayer/index.ts +4 -0
  1056. package/src/web/browser/BrowserManager.ts +642 -0
  1057. package/src/web/browser/FavoriteManager.ts +77 -0
  1058. package/src/web/browser/NavigationErrorManager.ts +112 -0
  1059. package/src/web/browser/SearchManager.ts +82 -0
  1060. package/src/web/http/HttpClient.ts +107 -0
  1061. package/src/web/http/RequestConfigBuilder.ts +347 -0
  1062. package/src/web/player/NowPlayingManager.ts +83 -0
  1063. package/src/web/player/OptionsManager.ts +101 -0
  1064. package/src/web/util/BrowserPathHelper.ts +147 -0
  1065. package/src/web/util/shuffle.ts +14 -0
@@ -0,0 +1,792 @@
1
+ import type { NavigationError } from '../features/errors'
2
+ import type { ResolvedTrack, Track } from './browser-nodes.ts'
3
+
4
+ export type BrowserSourceCallbackParam = {
5
+ path: string
6
+ routeParams?: Record<string, string>
7
+ }
8
+
9
+ /**
10
+ * Return BrowseError from a browse callback to display an error to the user.
11
+ * The error message will be shown in an error dialog in CarPlay and Android Auto.
12
+ *
13
+ * On the app side, the error is surfaced as a `NavigationError` with
14
+ * `code: 'callback-error'`. Use `useNavigationError()` to get the error details,
15
+ * or `useFormattedNavigationError()` for a display-friendly version.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * browse: async ({ path }) => {
20
+ * if (!user.subscribed) {
21
+ * return { error: 'Please subscribe to access this content' }
22
+ * }
23
+ * return fetchContent(path)
24
+ * }
25
+ * ```
26
+ */
27
+ export type BrowseError = {
28
+ error: string
29
+ }
30
+
31
+ /**
32
+ * Result type for browse callbacks.
33
+ * Can be either a ResolvedTrack (success) or BrowseError (failure).
34
+ */
35
+ export type BrowseResult = ResolvedTrack | BrowseError
36
+
37
+ export type BrowserSourceCallback = (
38
+ param: BrowserSourceCallbackParam
39
+ ) => Promise<BrowseResult>
40
+
41
+ /**
42
+ * Search mode types for structured voice search.
43
+ *
44
+ * - `any`: Play any content - smart shuffle or last playlist (query will be empty string)
45
+ * - `genre`: Search by genre
46
+ * - `artist`: Search by artist
47
+ * - `album`: Search by album
48
+ * - `song`: Search by song/track title
49
+ * - `playlist`: Search by playlist name
50
+ *
51
+ * @see BrowserConfiguration.search
52
+ * @see SearchParams
53
+ */
54
+ export type SearchMode =
55
+ | 'any'
56
+ | 'genre'
57
+ | 'artist'
58
+ | 'album'
59
+ | 'song'
60
+ | 'playlist'
61
+
62
+ /**
63
+ * Structured search parameters from voice commands.
64
+ *
65
+ * Voice commands are parsed by Android into structured parameters:
66
+ * - "play something" → mode=null, query="something"
67
+ * - "play music" → mode='any', query=""
68
+ * - "play jazz" → mode='genre', genre="jazz", query="jazz"
69
+ * - "play michael jackson" → mode='artist', artist="michael jackson", query="michael jackson"
70
+ * - "play thriller by michael jackson" → mode='album', album="thriller", artist="michael jackson"
71
+ * - "play billie jean" → mode='song', title="billie jean", query="billie jean"
72
+ */
73
+ export interface SearchParams {
74
+ /** The search mode indicating what type of search is being performed, or null for unstructured search */
75
+ mode?: SearchMode
76
+ /**
77
+ * The original search query string (always present, but may be empty string "").
78
+ * When mode='any' with empty string query, return any content you think the user would like
79
+ * (e.g., recently played, favorites, or smart shuffle).
80
+ */
81
+ query: string
82
+ /** Genre name for genre-specific search */
83
+ genre?: string
84
+ /** Artist name for artist/album/song search */
85
+ artist?: string
86
+ /** Album name for album-specific search */
87
+ album?: string
88
+ /** Song title for song-specific search */
89
+ title?: string
90
+ /** Playlist name for playlist-specific search */
91
+ playlist?: string
92
+ }
93
+
94
+ export type SearchSourceCallback = (params: SearchParams) => Promise<Track[]>
95
+ export type RequestConfigTransformer = (
96
+ request: RequestConfig,
97
+ routeParams?: Record<string, string>
98
+ ) => Promise<RequestConfig>
99
+
100
+ export type HttpMethod =
101
+ | 'GET'
102
+ | 'POST'
103
+ | 'PUT'
104
+ | 'DELETE'
105
+ | 'PATCH'
106
+ | 'HEAD'
107
+ | 'OPTIONS'
108
+
109
+ export interface RequestConfig {
110
+ method?: HttpMethod
111
+ /**
112
+ * The request path.
113
+ * - For browser requests, this is the track's `url`
114
+ * - For media requests, this is the track's `src` value
115
+ * - For artwork requests, this is the track's `artwork` URL
116
+ */
117
+ path?: string
118
+ baseUrl?: string
119
+ headers?: Record<string, string>
120
+ query?: Record<string, string>
121
+ body?: string
122
+ contentType?: string
123
+ userAgent?: string
124
+ }
125
+
126
+ /**
127
+ * Context for image loading requests.
128
+ * Provides pixel dimensions and appearance info from Android Auto/CarPlay.
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * // Use transform for custom URL manipulation
133
+ * transform: async ({ request, context }) => ({
134
+ * ...request,
135
+ * query: {
136
+ * ...request.query,
137
+ * variant: context?.width && context.width < 200 ? 'thumb' : 'full'
138
+ * }
139
+ * })
140
+ *
141
+ * // Or use imageQueryParams for simple declarative mapping
142
+ * artwork: {
143
+ * imageQueryParams: { width: 'w', height: 'h' }
144
+ * }
145
+ * ```
146
+ */
147
+ export interface ImageContext {
148
+ /**
149
+ * Requested image width in pixels.
150
+ * Only provided when the display size is known (e.g., CarPlay, Android Auto, Now Playing).
151
+ * Undefined at browse-time when display size is unknown.
152
+ */
153
+ width?: number
154
+ /**
155
+ * Requested image height in pixels.
156
+ * Only provided when the display size is known (e.g., CarPlay, Android Auto, Now Playing).
157
+ * Undefined at browse-time when display size is unknown.
158
+ */
159
+ height?: number
160
+ }
161
+
162
+ /**
163
+ * Parameters for the media request transform callback.
164
+ */
165
+ export interface MediaTransformParams {
166
+ /** The merged request configuration to transform */
167
+ request: RequestConfig
168
+ /** Optional image context with size hints from Android Auto/CarPlay */
169
+ context?: ImageContext
170
+ }
171
+
172
+ /**
173
+ * Transform callback for media/artwork requests.
174
+ * Unlike the route-based RequestConfigTransformer, this receives ImageContext
175
+ * for size-aware transformations instead of route parameters.
176
+ *
177
+ * Use this when your CDN uses named variants or size presets. For simple
178
+ * pixel-based query params, use `imageQueryParams` instead.
179
+ *
180
+ * @param params - The transform parameters containing request and optional context
181
+ * @returns Modified request configuration
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * artwork: {
186
+ * transform: async ({ request, context }) => ({
187
+ * ...request,
188
+ * query: {
189
+ * ...request.query,
190
+ * // Use semantic size for CDN variant selection
191
+ * variant: context?.width && context.width < 200 ? 'thumb' : 'full',
192
+ * sig: await signUrl(request.path)
193
+ * }
194
+ * })
195
+ * }
196
+ * ```
197
+ */
198
+ export type MediaRequestConfigTransformer = (
199
+ params: MediaTransformParams
200
+ ) => Promise<RequestConfig>
201
+
202
+ /**
203
+ * Request configuration that supports async transformation.
204
+ * Extends RequestConfig with a transform callback for dynamic request modification.
205
+ *
206
+ * The transform callback receives the merged request config and can modify it
207
+ * before the request is made. This is useful for adding dynamic headers,
208
+ * signing URLs, or other request-time modifications.
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * const config: TransformableRequestConfig = {
213
+ * baseUrl: 'https://api.example.com',
214
+ * transform: async (request) => ({
215
+ * ...request,
216
+ * headers: {
217
+ * ...request.headers,
218
+ * 'Authorization': `Bearer ${await getAccessToken()}`
219
+ * }
220
+ * })
221
+ * }
222
+ * ```
223
+ */
224
+ export interface TransformableRequestConfig extends RequestConfig {
225
+ transform?: RequestConfigTransformer
226
+ }
227
+
228
+ /**
229
+ * Configuration for artwork image requests
230
+ *
231
+ * ## Configuration Hierarchy
232
+ *
233
+ * When a request is made, configs are merged in this order (later overrides earlier):
234
+ * 1. `request` (base config) - shared settings like user agent, common headers
235
+ * 2. `artwork` config - resource-specific settings
236
+ * 3. `resolve(track)` result - per-track overrides (if provided)
237
+ * 4. `imageQueryParams` - automatic size query param injection (if configured)
238
+ * 5. `transform(request, context)` result - final modifications (if provided)
239
+ *
240
+ * ## Usage Patterns
241
+ *
242
+ * **Simple CDN configuration:**
243
+ * ```typescript
244
+ * media: {
245
+ * baseUrl: 'https://audio.cdn.example.com',
246
+ * headers: { 'X-API-Key': 'your-api-key' }
247
+ * }
248
+ * ```
249
+ *
250
+ * **Per-track URL resolution:**
251
+ * ```typescript
252
+ * media: {
253
+ * resolve: async (track) => ({
254
+ * baseUrl: 'https://audio.cdn.example.com',
255
+ * path: `/streams/${track.src}`,
256
+ * query: { token: await getSignedToken(track.src) }
257
+ * })
258
+ * }
259
+ * ```
260
+ *
261
+ * **Size-aware transformation (for artwork):**
262
+ * ```typescript
263
+ * artwork: {
264
+ * baseUrl: 'https://images.cdn.example.com',
265
+ * transform: async ({ request, context }) => ({
266
+ * ...request,
267
+ * query: {
268
+ * ...request.query,
269
+ * w: context?.width ? String(context.width) : '600',
270
+ * sig: await signUrl(request.path)
271
+ * }
272
+ * })
273
+ * }
274
+ * ```
275
+ *
276
+ * **Simple size params (declarative alternative):**
277
+ * ```typescript
278
+ * artwork: {
279
+ * baseUrl: 'https://images.cdn.example.com',
280
+ * imageQueryParams: { width: 'w', height: 'h' }
281
+ * }
282
+ * ```
283
+ *
284
+ * @see BrowserConfiguration.media - Audio stream configuration
285
+ * @see BrowserConfiguration.artwork - Image/artwork configuration
286
+ */
287
+
288
+ /**
289
+ * Query parameter names for automatic context injection from CarPlay/Android Auto.
290
+ * Maps ImageContext fields to query parameter names for your CDN.
291
+ */
292
+ export interface ImageQueryParams {
293
+ /** Query parameter name for width (e.g., 'w', 'width', 'size') */
294
+ width?: string
295
+ /** Query parameter name for height (e.g., 'h', 'height'). If omitted, only width is added. */
296
+ height?: string
297
+ }
298
+
299
+ /**
300
+ * Configuration for media resource requests (audio streams, artwork images).
301
+ * Extends TransformableRequestConfig with per-track resolution capabilities.
302
+ *
303
+ * Used for both `media` (audio streaming) and `artwork` (image loading) configuration
304
+ * in BrowserConfiguration.
305
+ *
306
+ * ## Configuration Hierarchy
307
+ *
308
+ * When a request is made, configs are merged in this order (later overrides earlier):
309
+ * 1. `request` (base config) - shared settings like user agent, common headers
310
+ * 2. `media`/`artwork` config - resource-specific settings
311
+ * 3. `resolve(track)` result - per-track overrides (if provided)
312
+ * 4. `transform(request)` result - final modifications (if provided)
313
+ *
314
+ * ## Usage Patterns
315
+ *
316
+ * **Simple CDN configuration:**
317
+ * ```typescript
318
+ * media: {
319
+ * baseUrl: 'https://audio.cdn.example.com',
320
+ * headers: { 'X-API-Key': 'your-api-key' }
321
+ * }
322
+ * ```
323
+ *
324
+ * **Per-track URL resolution:**
325
+ * ```typescript
326
+ * media: {
327
+ * resolve: async (track) => ({
328
+ * baseUrl: 'https://audio.cdn.example.com',
329
+ * path: `/streams/${track.src}`,
330
+ * query: { token: await getSignedToken(track.src) }
331
+ * })
332
+ * }
333
+ * ```
334
+ *
335
+ * **Dynamic request signing:**
336
+ * ```typescript
337
+ * artwork: {
338
+ * baseUrl: 'https://images.cdn.example.com',
339
+ * transform: async (request) => ({
340
+ * ...request,
341
+ * query: { ...request.query, sig: await signUrl(request.path) }
342
+ * })
343
+ * }
344
+ * ```
345
+ *
346
+ * @see BrowserConfiguration.media - Audio stream configuration
347
+ * @see BrowserConfiguration.artwork - Image/artwork configuration
348
+ */
349
+ export interface MediaRequestConfig extends TransformableRequestConfig {
350
+ /**
351
+ * Per-track request resolution callback.
352
+ *
353
+ * Called for each track to generate the final request configuration.
354
+ * Receives the full Track object, allowing URL generation based on
355
+ * track metadata (artist, album, src, etc.).
356
+ *
357
+ * The returned config is merged with base configs, then passed to
358
+ * `transform` if provided.
359
+ *
360
+ * @param track - The track being requested
361
+ * @returns Request configuration for this specific track
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * resolve: async (track) => ({
366
+ * path: `/audio/${track.artist}/${track.album}/${track.src}`,
367
+ * query: { quality: 'high' }
368
+ * })
369
+ * ```
370
+ */
371
+ resolve?: (track: Track) => Promise<RequestConfig>
372
+ }
373
+
374
+ export interface ArtworkRequestConfig extends RequestConfig {
375
+ /**
376
+ * Per-track request resolution callback.
377
+ *
378
+ * Called for each track to generate the request configuration based on
379
+ * track metadata (artist, album, src, etc.).
380
+ *
381
+ * The returned config is merged with base configs, then passed to
382
+ * `transform` if provided.
383
+ *
384
+ * @param track - The track being requested
385
+ * @returns Request configuration for this specific track
386
+ *
387
+ * @example
388
+ * ```typescript
389
+ * artwork: {
390
+ * resolve: async (track) => ({
391
+ * path: `/covers/${track.artist}/${track.album}.jpg`,
392
+ * query: { quality: 'high' }
393
+ * })
394
+ * }
395
+ * ```
396
+ */
397
+ resolve?: (track: Track) => Promise<RequestConfig>
398
+
399
+ /**
400
+ * Final transformation callback for media/artwork requests.
401
+ *
402
+ * Called after `resolve` (if provided) with the merged request config.
403
+ * Receives optional ImageContext with size hints from Android Auto/CarPlay.
404
+ *
405
+ * Use this for:
406
+ * - Adding size query params dynamically
407
+ * - URL signing
408
+ * - Adding authentication tokens
409
+ *
410
+ * @param request - The merged request configuration
411
+ * @param context - Optional image context with size hints
412
+ * @returns Modified request configuration
413
+ *
414
+ * @example
415
+ * ```typescript
416
+ * artwork: {
417
+ * transform: async ({ request, context }) => ({
418
+ * ...request,
419
+ * query: {
420
+ * ...request.query,
421
+ * w: context?.width ? String(context.width) : '600',
422
+ * sig: await signUrl(request.path)
423
+ * }
424
+ * })
425
+ * }
426
+ * ```
427
+ */
428
+ transform?: MediaRequestConfigTransformer
429
+
430
+ /**
431
+ * Query parameter names for automatic context injection from CarPlay/Android Auto.
432
+ *
433
+ * When configured, the image context (size, color scheme) from CarPlay/Android Auto
434
+ * is automatically added as query parameters to artwork URLs.
435
+ *
436
+ * This is a simpler alternative to using `transform` for context-aware URLs.
437
+ *
438
+ * @example
439
+ * ```typescript
440
+ * // CDN expects ?w=400&h=400
441
+ * artwork: {
442
+ * baseUrl: 'https://images.cdn.com',
443
+ * imageQueryParams: { width: 'w', height: 'h' }
444
+ * }
445
+ *
446
+ * // CDN expects single size param ?size=400
447
+ * artwork: {
448
+ * baseUrl: 'https://images.cdn.com',
449
+ * imageQueryParams: { width: 'size' }
450
+ * }
451
+ * ```
452
+ */
453
+ imageQueryParams?: ImageQueryParams
454
+ }
455
+
456
+ export type BrowserSource =
457
+ | ResolvedTrack
458
+ | BrowserSourceCallback
459
+ | TransformableRequestConfig
460
+
461
+ export type RouteSource = BrowserSourceCallback | TransformableRequestConfig
462
+
463
+ /**
464
+ * Route configuration with per-route media and artwork overrides.
465
+ *
466
+ * @example
467
+ * ```typescript
468
+ * routes: {
469
+ * '/premium': {
470
+ * browse: async () => fetchPremiumContent(),
471
+ * media: { baseUrl: 'https://premium-audio.cdn.com' },
472
+ * artwork: { baseUrl: 'https://premium-images.cdn.com' }
473
+ * }
474
+ * }
475
+ * ```
476
+ */
477
+ export type RouteConfig = {
478
+ /** Override browse config for this route. */
479
+ browse?: BrowserSource
480
+ /** Override media config for this route. */
481
+ media?: MediaRequestConfig
482
+ /** Override artwork config for this route. */
483
+ artwork?: ArtworkRequestConfig
484
+ }
485
+
486
+ export type TabsSourceCallback = () => Promise<Track[]>
487
+ /**
488
+ * Tab source configuration for navigation tabs.
489
+ *
490
+ * When using API configuration (TransformableRequestConfig), the request path defaults to '/'
491
+ * and should return an array of Track objects with urls representing the tabs.
492
+ */
493
+ export type TabsSource =
494
+ | Track[]
495
+ | TabsSourceCallback
496
+ | TransformableRequestConfig
497
+
498
+ /**
499
+ * Search source configuration for handling search requests.
500
+ *
501
+ * @see BrowserConfiguration.search
502
+ */
503
+ export type SearchSource = SearchSourceCallback | TransformableRequestConfig
504
+
505
+ export type BrowserConfiguration = {
506
+ /**
507
+ * Initial navigation path. Setting this triggers initial navigation to the specified path.
508
+ */
509
+ path?: string | undefined
510
+
511
+ // ─── Request Defaults (applied to all requests) ────────────────────────────
512
+
513
+ /**
514
+ * Shared request settings applied to all HTTP requests (browse, search, media, artwork).
515
+ * Specific configs override these defaults.
516
+ */
517
+ request?: TransformableRequestConfig
518
+
519
+ // ─── Content Configuration ─────────────────────────────────────────────────
520
+
521
+ /** Default browse source when no matching route is found. */
522
+ browse?: BrowserSource
523
+
524
+ /** Media/audio stream request configuration. */
525
+ media?: MediaRequestConfig
526
+
527
+ /**
528
+ * Configuration for artwork/image requests.
529
+ * Used to transform artwork URLs for CDNs that require different authentication tokens,
530
+ * base URLs, or query parameters than audio requests.
531
+ *
532
+ * Artwork URLs are transformed when tracks are processed (before being passed to media controllers
533
+ * like Android Auto). This is different from media requests which are transformed at playback time.
534
+ *
535
+ * Note: Since media controllers load images directly from URLs, HTTP headers cannot be applied
536
+ * to artwork requests. Use query parameters for authentication tokens if your CDN supports it.
537
+ *
538
+ * @example
539
+ * ```typescript
540
+ * // Different CDN for images with signed URL parameters
541
+ * artwork: {
542
+ * baseUrl: 'https://images.cdn.example.com',
543
+ * query: { token: 'image-auth-token' }
544
+ * }
545
+ *
546
+ * // Per-track artwork URL resolution using track metadata
547
+ * artwork: {
548
+ * resolve: async (track) => ({
549
+ * baseUrl: 'https://images.cdn.example.com',
550
+ * path: `/covers/${track.artist}/${track.album}.jpg`,
551
+ * query: { token: await getSignedToken(track) }
552
+ * })
553
+ * }
554
+ * ```
555
+ */
556
+ artwork?: ArtworkRequestConfig
557
+
558
+ // ─── Navigation ────────────────────────────────────────────────────────────
559
+
560
+ /**
561
+ * Configuration for search functionality.
562
+ * Enables search capabilities in the media browser, typically accessed through voice commands or search UI.
563
+ *
564
+ * Optional - if not provided, search functionality will be disabled.
565
+ * Required for Android Auto/CarPlay voice search integration with support for structured voice commands.
566
+ *
567
+ * Search receives structured parameters from voice commands like:
568
+ * - "play music" → mode='any', query=""
569
+ * - "play jazz" → mode='genre', genre="jazz", query="jazz"
570
+ * - "play michael jackson" → mode='artist', artist="michael jackson", query="michael jackson"
571
+ * - "play thriller by michael jackson" → mode='album', album="thriller", artist="michael jackson"
572
+ * - "play billie jean" → mode='song', title="billie jean", query="billie jean"
573
+ *
574
+ * Can be either:
575
+ * - SearchSourceCallback: Receives SearchParams with query, and optional mode/artist/album/genre/title/playlist fields
576
+ * - TransformableRequestConfig: API endpoint where all search parameters are automatically added to request.query:
577
+ * - q: search query string (always present)
578
+ * - mode: search mode (any/genre/artist/album/song/playlist) - omitted for unstructured search
579
+ * - artist, album, genre, title, playlist: included when present
580
+ *
581
+ * @example
582
+ * ```typescript
583
+ * // Callback approach - direct access to structured parameters
584
+ * search: async (params) => {
585
+ * // Use structured fields for precise searches
586
+ * if (params.mode === 'artist' && params.artist) {
587
+ * return await db.query('SELECT * FROM tracks WHERE artist = ?', [params.artist]);
588
+ * }
589
+ * if (params.mode === 'album' && params.album && params.artist) {
590
+ * return await db.query('SELECT * FROM tracks WHERE album = ? AND artist = ?',
591
+ * [params.album, params.artist]);
592
+ * }
593
+ * // Fall back to full-text search
594
+ * return await searchByQuery(params.query);
595
+ * }
596
+ *
597
+ * // API configuration - parameters automatically added to query string
598
+ * search: {
599
+ * baseUrl: 'https://api.example.com/search',
600
+ * // GET /search?q=thriller&mode=album&album=thriller&artist=michael+jackson&limit=20
601
+ * transform(request) {
602
+ * return {
603
+ * ...request,
604
+ * query: { ...request.query, limit: 20 }
605
+ * };
606
+ * }
607
+ * }
608
+ * ```
609
+ */
610
+ search?: SearchSource
611
+
612
+ /**
613
+ * Configuration for navigation tabs in the media browser.
614
+ * The first tab's URL is automatically loaded when the browser starts.
615
+ *
616
+ * Optional - if not provided, no tab navigation will be available.
617
+ * Limited to maximum 4 tabs for automotive platform compatibility (Android Auto/CarPlay).
618
+ *
619
+ * Can provide static array of Track objects with urls as tabs, API configuration, or custom callback.
620
+ */
621
+ tabs?: TabsSource
622
+
623
+ /**
624
+ * Route-specific configurations. Maps URL paths to browse sources.
625
+ * Routes match by prefix, most specific (most slashes) wins.
626
+ *
627
+ * Can be a simple `BrowserSource` or extended `RouteConfig` with media/artwork overrides.
628
+ *
629
+ * @example
630
+ * ```typescript
631
+ * routes: {
632
+ * '/favorites': async () => getFavorites(),
633
+ * '/artists': { baseUrl: 'https://music-api.com' },
634
+ * '/premium': {
635
+ * browse: { baseUrl: 'https://premium-api.com' },
636
+ * artwork: { baseUrl: 'https://premium-images.cdn.com' }
637
+ * }
638
+ * }
639
+ * ```
640
+ */
641
+ routes?: Record<string, BrowserSource | RouteConfig>
642
+
643
+ // ─── Behavior ──────────────────────────────────────────────────────────────
644
+
645
+ /**
646
+ * When true, only play the selected track without queuing siblings.
647
+ * When false (default), replace queue with all tracks from parent context and start at selected track.
648
+ *
649
+ * @default false
650
+ */
651
+ singleTrack?: boolean
652
+
653
+ /**
654
+ * Show an offline error message in external controllers (Android Auto, Wear OS, Automotive)
655
+ * when network connectivity is lost.
656
+ *
657
+ * When enabled, displays a standard offline error item in the media browser
658
+ * instead of the normal content when the network is offline.
659
+ *
660
+ * Only applies to external Media3 controllers, not in-app browsing.
661
+ *
662
+ * @default true
663
+ * @platform android
664
+ */
665
+ androidControllerOfflineError?: boolean
666
+
667
+ // ─── CarPlay Options ──────────────────────────────────────────────────────────
668
+
669
+ /**
670
+ * Enable the "Up Next" button on the CarPlay Now Playing screen.
671
+ *
672
+ * When enabled, tapping "Up Next" shows the current playback queue,
673
+ * allowing users to see upcoming tracks and jump to a specific position.
674
+ *
675
+ * The button is automatically hidden when the queue has only one track.
676
+ *
677
+ * @default true
678
+ * @platform ios
679
+ */
680
+ carPlayUpNextButton?: boolean
681
+
682
+ /**
683
+ * Configure up to 5 buttons on the CarPlay Now Playing screen. These buttons
684
+ * are arranged using the array order from left to right.
685
+ *
686
+ * @example
687
+ * ```typescript
688
+ * carPlayNowPlayingButtons: ['repeat']
689
+ * ```
690
+ *
691
+ * @default []
692
+ * @platform ios
693
+ */
694
+ carPlayNowPlayingButtons?: CarPlayNowPlayingButton[]
695
+
696
+ /**
697
+ * Callback to customize error messages for navigation errors.
698
+ * Used by CarPlay and available via `useFormattedNavigationError()` for app UI.
699
+ *
700
+ * If not provided or returns undefined, default English messages are used.
701
+ *
702
+ * @example
703
+ * ```typescript
704
+ * formatNavigationError: (error) => ({
705
+ * title: t(`error.${error.code}`),
706
+ * message: error.code === 'http-error'
707
+ * ? t('error.httpMessage', { status: error.statusCode })
708
+ * : error.message
709
+ * })
710
+ * ```
711
+ */
712
+ formatNavigationError?: FormatNavigationErrorCallback
713
+ }
714
+
715
+ /**
716
+ * Custom button types for CarPlay Now Playing screen.
717
+ *
718
+ * - `'shuffle'`: Shuffle button that toggles shuffle mode on/off
719
+ * - `'repeat'`: Repeat button that cycles through off → track → queue → off
720
+ * - `'favorite'`: Heart button to toggle favorite state of current track
721
+ * - `'playback-rate'`: Playback speed button that cycles through rate options
722
+ *
723
+ * @platform ios
724
+ */
725
+ export type CarPlayNowPlayingButton =
726
+ | 'shuffle'
727
+ | 'repeat'
728
+ | 'favorite'
729
+ | 'playback-rate'
730
+
731
+ /**
732
+ * Formatted navigation error for display in UI.
733
+ * Used by CarPlay/Android Auto and available via `useFormattedNavigationError()` for app UI.
734
+ */
735
+ export type FormattedNavigationError = {
736
+ /**
737
+ * Title shown in the error action sheet header.
738
+ *
739
+ * Default values:
740
+ * - `'content-not-found'`: "Content Not Found" (English)
741
+ * - `'network-error'`: "Network Error" (English)
742
+ * - `'http-error'`: System-localized status text (e.g., "Not Found", "Service Unavailable")
743
+ * - `'callback-error'`: "Error" (English)
744
+ * - `'unknown-error'`: "Error" (English)
745
+ */
746
+ title: string
747
+ /**
748
+ * Message body shown below the title in the error action sheet.
749
+ *
750
+ * Default value: `error.message`
751
+ */
752
+ message: string
753
+ }
754
+
755
+ /**
756
+ * Parameters passed to the formatNavigationError callback.
757
+ */
758
+ export type FormatNavigationErrorParams = {
759
+ /** The navigation error that occurred */
760
+ error: NavigationError
761
+ /** The default formatted error (useful for selective overrides) */
762
+ defaultFormatted: FormattedNavigationError
763
+ /** The path that was being navigated to when the error occurred */
764
+ path: string
765
+ }
766
+
767
+ /**
768
+ * Callback to customize navigation error display.
769
+ * Return localized title and message for error presentation.
770
+ *
771
+ * @param params - Object containing error details and context
772
+ * @returns Display information for the error, or undefined to use defaults
773
+ *
774
+ * @example
775
+ * ```typescript
776
+ * // Override only specific error types or routes
777
+ * formatNavigationError: ({ error, defaultFormatted, path }) => {
778
+ * // Custom message for local server routes
779
+ * if (error.code === 'network-error' && path.startsWith('/errors')) {
780
+ * return {
781
+ * title: 'Server Not Running',
782
+ * message: 'Start the local server with: yarn server'
783
+ * }
784
+ * }
785
+ * // Use default for other errors
786
+ * return defaultFormatted
787
+ * }
788
+ * ```
789
+ */
790
+ export type FormatNavigationErrorCallback = (
791
+ params: FormatNavigationErrorParams
792
+ ) => FormattedNavigationError | undefined