react-native-audio-browser 0.2.0-next.2 → 0.2.0-next.21

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 (660) hide show
  1. package/README.md +35 -21
  2. package/android/build.gradle +35 -12
  3. package/android/gradle.properties +2 -2
  4. package/android/src/main/AndroidManifest.xml +3 -1
  5. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +389 -164
  6. package/android/src/main/java/com/audiobrowser/AudioBrowserLifecycleModule.kt +38 -0
  7. package/android/src/main/java/com/audiobrowser/AudioBrowserPackage.kt +18 -2
  8. package/android/src/main/java/com/audiobrowser/ServiceBinding.kt +48 -0
  9. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +315 -213
  10. package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +24 -5
  11. package/android/src/main/java/com/audiobrowser/browser/InertStyleDiagnostic.kt +267 -0
  12. package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +97 -58
  13. package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +70 -29
  14. package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +60 -0
  15. package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +20 -7
  16. package/android/src/main/java/com/audiobrowser/extension/TappedTrack.kt +20 -0
  17. package/android/src/main/java/com/audiobrowser/extension/TrackIdentity.kt +15 -0
  18. package/android/src/main/java/com/audiobrowser/http/HttpClient.kt +20 -3
  19. package/android/src/main/java/com/audiobrowser/model/IcyTitle.kt +24 -0
  20. package/android/src/main/java/com/audiobrowser/model/PlaybackMetadata.kt +10 -6
  21. package/android/src/main/java/com/audiobrowser/model/PlayerUpdateOptions.kt +12 -12
  22. package/android/src/main/java/com/audiobrowser/player/CapabilityControls.kt +111 -58
  23. package/android/src/main/java/com/audiobrowser/player/CrossOriginHeaderStripper.kt +77 -0
  24. package/android/src/main/java/com/audiobrowser/player/MediaFactory.kt +28 -10
  25. package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +509 -230
  26. package/android/src/main/java/com/audiobrowser/player/MediaSessionCommandManager.kt +218 -252
  27. package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -25
  28. package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +113 -78
  29. package/android/src/main/java/com/audiobrowser/player/Player.kt +81 -38
  30. package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
  31. package/android/src/main/java/com/audiobrowser/player/PlayerListener.kt +1 -1
  32. package/android/src/main/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicy.kt +2 -1
  33. package/android/src/main/java/com/audiobrowser/player/ShuffleOrderLedBy.kt +30 -0
  34. package/android/src/main/java/com/audiobrowser/tls/AiaCertChaser.kt +67 -11
  35. package/android/src/main/java/com/audiobrowser/tls/AiaChasingExtendedTrustManager.kt +168 -0
  36. package/android/src/main/java/com/audiobrowser/tls/AiaChasingTrustManager.kt +58 -14
  37. package/android/src/main/java/com/audiobrowser/tls/AiaTls.kt +35 -7
  38. package/android/src/main/java/com/audiobrowser/tls/CachingCertificateFetcher.kt +278 -59
  39. package/android/src/main/java/com/audiobrowser/util/ArtworkVariant.kt +7 -9
  40. package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +56 -40
  41. package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +28 -23
  42. package/android/src/main/java/com/audiobrowser/util/StyleWire.kt +108 -0
  43. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +56 -52
  44. package/android/src/main/res/values/strings.xml +25 -5
  45. package/android/src/test/java/com/audiobrowser/ServiceBindingTest.kt +87 -0
  46. package/android/src/test/java/com/audiobrowser/TestFixtures.kt +119 -33
  47. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
  48. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +15 -0
  49. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +346 -8
  50. package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
  51. package/android/src/test/java/com/audiobrowser/browser/InertStyleDiagnosticTest.kt +277 -0
  52. package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +3 -2
  53. package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +147 -0
  54. package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -55
  55. package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +154 -0
  56. package/android/src/test/java/com/audiobrowser/extension/TappedTrackTest.kt +43 -0
  57. package/android/src/test/java/com/audiobrowser/extension/TrackIdentityTest.kt +41 -0
  58. package/android/src/test/java/com/audiobrowser/model/IcyTitleTest.kt +49 -0
  59. package/android/src/test/java/com/audiobrowser/player/BrowseTilesTest.kt +385 -0
  60. package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +101 -58
  61. package/android/src/test/java/com/audiobrowser/player/CrossOriginHeaderStripperTest.kt +94 -0
  62. package/android/src/test/java/com/audiobrowser/player/MediaSessionSlotMappingTest.kt +45 -0
  63. package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
  64. package/android/src/test/java/com/audiobrowser/player/PlaybackErrorClassifierTest.kt +3 -4
  65. package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
  66. package/android/src/test/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicyTest.kt +3 -3
  67. package/android/src/test/java/com/audiobrowser/player/ShuffleOrderLedByTest.kt +79 -0
  68. package/android/src/test/java/com/audiobrowser/tls/AiaCertChaserTest.kt +197 -7
  69. package/android/src/test/java/com/audiobrowser/tls/AiaChasingTrustManagerTest.kt +325 -4
  70. package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherCallSiteTest.kt +322 -0
  71. package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherTest.kt +83 -0
  72. package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
  73. package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +162 -0
  74. package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +7 -7
  75. package/ios/Browser/BrowserConfig.swift +102 -5
  76. package/ios/Browser/BrowserManager+URLResolution.swift +18 -14
  77. package/ios/Browser/BrowserManager.swift +230 -205
  78. package/ios/Browser/BrowserPathHelper.swift +44 -44
  79. package/ios/Browser/InertStyleDiagnostic.swift +279 -0
  80. package/ios/Browser/JsonModels.swift +264 -106
  81. package/ios/Browser/SearchDrillIn.swift +7 -7
  82. package/ios/Browser/SectionPresentation.swift +64 -0
  83. package/ios/Browser/SectionScope.swift +58 -24
  84. package/ios/Browser/StyleResolver.swift +58 -0
  85. package/ios/Browser/TabBarEntries.swift +9 -3
  86. package/ios/Browser/TrackIdTemplate.swift +37 -0
  87. package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
  88. package/ios/CarPlay/CarPlayController.swift +227 -85
  89. package/ios/CarPlay/CarPlayImageLoader.swift +42 -20
  90. package/ios/CarPlay/CarPlayListItemFactory.swift +289 -84
  91. package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
  92. package/ios/CarPlay/RNABMediaAddHandler.swift +6 -6
  93. package/ios/CarPlay/RNABMediaAffinityHandler.swift +2 -2
  94. package/ios/CarPlay/RNABMediaIntentHandler.swift +16 -16
  95. package/ios/Extension/Capability+RemoteCommand.swift +1 -1
  96. package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
  97. package/ios/Extension/ResolvedTrack+Copying.swift +13 -15
  98. package/ios/Extension/Section+Copying.swift +29 -0
  99. package/ios/Extension/String+IcyCharset.swift +21 -0
  100. package/ios/Extension/TimedMetadata+AVFoundation.swift +6 -4
  101. package/ios/Extension/Track+Copying.swift +8 -12
  102. package/ios/Extension/Track+Identity.swift +18 -0
  103. package/ios/Extension/UIApplication+ActiveScene.swift +27 -0
  104. package/ios/Http/HttpClient.swift +8 -2
  105. package/ios/HybridAudioBrowser.swift +253 -100
  106. package/ios/Model/NitroTypeStubs.swift +125 -23
  107. package/ios/Model/PlayerUpdateOptions.swift +7 -0
  108. package/ios/Model/RemoteCommand.swift +18 -0
  109. package/ios/Model/TrackPlayerError.swift +2 -2
  110. package/ios/Option/SessionCategories.swift +3 -2
  111. package/ios/Player/MediaIntentCriteria.swift +17 -9
  112. package/ios/Player/MediaLoader.swift +33 -9
  113. package/ios/Player/NowPlayingUpdater.swift +54 -6
  114. package/ios/Player/PlaybackCoordinator.swift +13 -6
  115. package/ios/Player/PlaybackErrorHandler.swift +4 -4
  116. package/ios/Player/PlaybackTimer.swift +8 -2
  117. package/ios/Player/QueueManager.swift +46 -13
  118. package/ios/Player/RetryManager.swift +80 -18
  119. package/ios/Player/SeekCompletionHandler.swift +3 -1
  120. package/ios/Player/ShuffleOrder.swift +33 -0
  121. package/ios/Player/SleepTimerHandling.swift +13 -0
  122. package/ios/RemoteCommand/RemoteCommandCallbacks.swift +47 -0
  123. package/ios/RemoteCommand/RemoteCommandController.swift +62 -24
  124. package/ios/Tests/BrowserPathHelperTests.swift +50 -20
  125. package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
  126. package/ios/Tests/InertStyleDiagnosticTests.swift +200 -0
  127. package/ios/Tests/JsonModelsTests.swift +150 -1
  128. package/ios/Tests/LRUCacheTests.swift +111 -0
  129. package/ios/Tests/LoadSeekCoordinatorTests.swift +3 -1
  130. package/ios/Tests/MediaIntentCriteriaTests.swift +2 -2
  131. package/ios/Tests/PlaybackCoordinatorTests.swift +1 -1
  132. package/ios/Tests/PlaybackErrorHandlerTests.swift +3 -1
  133. package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
  134. package/ios/Tests/PlayerTimeObserverTests.swift +37 -0
  135. package/ios/Tests/QueueManagerTests.swift +122 -10
  136. package/ios/Tests/RemoteCommandControllerTests.swift +172 -0
  137. package/ios/Tests/RemoteCommandTests.swift +67 -0
  138. package/ios/Tests/ResolvedTrackCopyingTests.swift +39 -35
  139. package/ios/Tests/RetryManagerTests.swift +89 -0
  140. package/ios/Tests/SearchDrillInTests.swift +16 -16
  141. package/ios/Tests/SectionPresentationTests.swift +90 -0
  142. package/ios/Tests/SectionScopeTests.swift +87 -55
  143. package/ios/Tests/StyleResolverTests.swift +127 -0
  144. package/ios/Tests/Support/TestTypes.swift +8 -1
  145. package/ios/Tests/TabBarEntriesTests.swift +19 -19
  146. package/ios/Tests/TimedMetadataAVFoundationTests.swift +42 -0
  147. package/ios/Tests/TrackIdTemplateTests.swift +67 -0
  148. package/ios/Tests/TrackIdentityTests.swift +20 -0
  149. package/ios/Tests/TrackSelectorTests.swift +168 -33
  150. package/ios/TrackPlayer.swift +63 -35
  151. package/ios/TrackPlayerCallbacks.swift +5 -38
  152. package/ios/TrackSelector.swift +45 -30
  153. package/ios/Util/ArtworkImageFetcher.swift +16 -1
  154. package/ios/Util/LRUCache.swift +4 -1
  155. package/ios/Util/NetworkMonitor.swift +43 -26
  156. package/ios/Util/SFSymbolRenderer.swift +24 -2
  157. package/ios/Util/SVGProcessor.swift +9 -2
  158. package/lib/commonjs/AudioBrowser.js +8 -8
  159. package/lib/commonjs/AudioBrowser.js.map +1 -1
  160. package/lib/commonjs/CLAUDE.md +52 -0
  161. package/lib/commonjs/features/browser-config.js +12 -8
  162. package/lib/commonjs/features/browser-config.js.map +1 -1
  163. package/lib/commonjs/features/browser.js +11 -3
  164. package/lib/commonjs/features/browser.js.map +1 -1
  165. package/lib/commonjs/features/carConnection.js +1 -1
  166. package/lib/commonjs/features/equalizer.js +1 -1
  167. package/lib/commonjs/features/errors.js +3 -3
  168. package/lib/commonjs/features/favorites.js +14 -11
  169. package/lib/commonjs/features/favorites.js.map +1 -1
  170. package/lib/commonjs/features/gate.js +16 -1
  171. package/lib/commonjs/features/gate.js.map +1 -1
  172. package/lib/commonjs/features/metadata.js +20 -3
  173. package/lib/commonjs/features/metadata.js.map +1 -1
  174. package/lib/commonjs/features/network.js +1 -1
  175. package/lib/commonjs/features/nowPlaying.js +1 -1
  176. package/lib/commonjs/features/output.js +1 -1
  177. package/lib/commonjs/features/playback/controls.js +4 -2
  178. package/lib/commonjs/features/playback/controls.js.map +1 -1
  179. package/lib/commonjs/features/playback/playWhenReady.js +1 -1
  180. package/lib/commonjs/features/playback/playing.js +1 -1
  181. package/lib/commonjs/features/playback/progress.js +3 -2
  182. package/lib/commonjs/features/playback/progress.js.map +1 -1
  183. package/lib/commonjs/features/playback/rate.js +8 -1
  184. package/lib/commonjs/features/playback/rate.js.map +1 -1
  185. package/lib/commonjs/features/playback/state.js +3 -4
  186. package/lib/commonjs/features/playback/state.js.map +1 -1
  187. package/lib/commonjs/features/playback/trackPlaybackTime.js +0 -6
  188. package/lib/commonjs/features/playback/trackPlaybackTime.js.map +1 -1
  189. package/lib/commonjs/features/playback/volume.js +1 -1
  190. package/lib/commonjs/features/player/options.js +48 -34
  191. package/lib/commonjs/features/player/options.js.map +1 -1
  192. package/lib/commonjs/features/player/setup.js +18 -9
  193. package/lib/commonjs/features/player/setup.js.map +1 -1
  194. package/lib/commonjs/features/player/validateOptions.js +23 -0
  195. package/lib/commonjs/features/player/validateOptions.js.map +1 -0
  196. package/lib/commonjs/features/queue/activeTrack.js +15 -4
  197. package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
  198. package/lib/commonjs/features/queue/queue.js +13 -6
  199. package/lib/commonjs/features/queue/queue.js.map +1 -1
  200. package/lib/commonjs/features/queue/repeatMode.js +1 -1
  201. package/lib/commonjs/features/queue/shuffle.js +1 -1
  202. package/lib/commonjs/features/remoteControls.js +13 -92
  203. package/lib/commonjs/features/remoteControls.js.map +1 -1
  204. package/lib/commonjs/features/sleepTimer.js +13 -1
  205. package/lib/commonjs/features/sleepTimer.js.map +1 -1
  206. package/lib/commonjs/test-utils/reactNativeStub.js +65 -0
  207. package/lib/commonjs/test-utils/reactNativeStub.js.map +1 -0
  208. package/lib/commonjs/utils/LazyNativeEmitter.js +28 -14
  209. package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
  210. package/lib/commonjs/utils/NativeUpdatedValue.js +31 -13
  211. package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
  212. package/lib/commonjs/utils/getTrackIdentity.js +24 -0
  213. package/lib/commonjs/utils/getTrackIdentity.js.map +1 -0
  214. package/lib/commonjs/utils/useNativeValueRefreshedBy.js +33 -0
  215. package/lib/commonjs/utils/useNativeValueRefreshedBy.js.map +1 -0
  216. package/lib/commonjs/web/NativeAudioBrowser.js +200 -75
  217. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
  218. package/lib/commonjs/web/TrackPlayer/LoadAttempt.js +37 -0
  219. package/lib/commonjs/web/TrackPlayer/LoadAttempt.js.map +1 -0
  220. package/lib/commonjs/web/TrackPlayer/PlaybackStateMachine.js +18 -2
  221. package/lib/commonjs/web/TrackPlayer/PlaybackStateMachine.js.map +1 -1
  222. package/lib/commonjs/web/TrackPlayer/Player.js +254 -39
  223. package/lib/commonjs/web/TrackPlayer/Player.js.map +1 -1
  224. package/lib/commonjs/web/TrackPlayer/QueueManager.js +14 -0
  225. package/lib/commonjs/web/TrackPlayer/QueueManager.js.map +1 -1
  226. package/lib/commonjs/web/TrackPlayer/QueuePlayer.js +33 -12
  227. package/lib/commonjs/web/TrackPlayer/QueuePlayer.js.map +1 -1
  228. package/lib/commonjs/web/browser/BrowserManager.js +175 -100
  229. package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
  230. package/lib/commonjs/web/browser/FavoriteManager.js +30 -21
  231. package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
  232. package/lib/commonjs/web/browser/SearchManager.js +18 -23
  233. package/lib/commonjs/web/browser/SearchManager.js.map +1 -1
  234. package/lib/commonjs/web/browser/assertBrowsePageShape.js +2 -2
  235. package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +1 -1
  236. package/lib/commonjs/web/browser/classifyTrackNavigation.js +9 -9
  237. package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +1 -1
  238. package/lib/commonjs/web/browser/sections.js +89 -0
  239. package/lib/commonjs/web/browser/sections.js.map +1 -0
  240. package/lib/commonjs/web/http/RequestConfigBuilder.js +110 -27
  241. package/lib/commonjs/web/http/RequestConfigBuilder.js.map +1 -1
  242. package/lib/commonjs/web/http/followMediaRedirect.js +219 -0
  243. package/lib/commonjs/web/http/followMediaRedirect.js.map +1 -0
  244. package/lib/commonjs/web/player/NowPlayingManager.js +4 -3
  245. package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
  246. package/lib/commonjs/web/util/BrowserPathHelper.js +56 -11
  247. package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
  248. package/lib/module/AudioBrowser.js +2 -1
  249. package/lib/module/AudioBrowser.js.map +1 -1
  250. package/lib/module/CLAUDE.md +52 -0
  251. package/lib/module/features/browser-config.js +12 -8
  252. package/lib/module/features/browser-config.js.map +1 -1
  253. package/lib/module/features/browser.js +11 -3
  254. package/lib/module/features/browser.js.map +1 -1
  255. package/lib/module/features/carConnection.js +1 -1
  256. package/lib/module/features/equalizer.js +1 -1
  257. package/lib/module/features/errors.js +3 -3
  258. package/lib/module/features/favorites.js +14 -11
  259. package/lib/module/features/favorites.js.map +1 -1
  260. package/lib/module/features/gate.js +16 -1
  261. package/lib/module/features/gate.js.map +1 -1
  262. package/lib/module/features/metadata.js +20 -3
  263. package/lib/module/features/metadata.js.map +1 -1
  264. package/lib/module/features/network.js +1 -1
  265. package/lib/module/features/nowPlaying.js +1 -1
  266. package/lib/module/features/output.js +1 -1
  267. package/lib/module/features/playback/controls.js +4 -2
  268. package/lib/module/features/playback/controls.js.map +1 -1
  269. package/lib/module/features/playback/playWhenReady.js +1 -1
  270. package/lib/module/features/playback/playing.js +1 -1
  271. package/lib/module/features/playback/progress.js +3 -2
  272. package/lib/module/features/playback/progress.js.map +1 -1
  273. package/lib/module/features/playback/rate.js +8 -1
  274. package/lib/module/features/playback/rate.js.map +1 -1
  275. package/lib/module/features/playback/state.js +3 -4
  276. package/lib/module/features/playback/state.js.map +1 -1
  277. package/lib/module/features/playback/trackPlaybackTime.js +0 -5
  278. package/lib/module/features/playback/trackPlaybackTime.js.map +1 -1
  279. package/lib/module/features/playback/volume.js +1 -1
  280. package/lib/module/features/player/options.js +47 -32
  281. package/lib/module/features/player/options.js.map +1 -1
  282. package/lib/module/features/player/setup.js +17 -8
  283. package/lib/module/features/player/setup.js.map +1 -1
  284. package/lib/module/features/player/validateOptions.js +19 -0
  285. package/lib/module/features/player/validateOptions.js.map +1 -0
  286. package/lib/module/features/queue/activeTrack.js +15 -4
  287. package/lib/module/features/queue/activeTrack.js.map +1 -1
  288. package/lib/module/features/queue/queue.js +13 -6
  289. package/lib/module/features/queue/queue.js.map +1 -1
  290. package/lib/module/features/queue/repeatMode.js +1 -1
  291. package/lib/module/features/queue/shuffle.js +1 -1
  292. package/lib/module/features/remoteControls.js +13 -92
  293. package/lib/module/features/remoteControls.js.map +1 -1
  294. package/lib/module/features/sleepTimer.js +13 -1
  295. package/lib/module/features/sleepTimer.js.map +1 -1
  296. package/lib/module/test-utils/reactNativeStub.js +58 -0
  297. package/lib/module/test-utils/reactNativeStub.js.map +1 -0
  298. package/lib/module/utils/LazyNativeEmitter.js +28 -14
  299. package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
  300. package/lib/module/utils/NativeUpdatedValue.js +31 -13
  301. package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
  302. package/lib/module/utils/getTrackIdentity.js +20 -0
  303. package/lib/module/utils/getTrackIdentity.js.map +1 -0
  304. package/lib/module/utils/useNativeValueRefreshedBy.js +29 -0
  305. package/lib/module/utils/useNativeValueRefreshedBy.js.map +1 -0
  306. package/lib/module/web/NativeAudioBrowser.js +200 -75
  307. package/lib/module/web/NativeAudioBrowser.js.map +1 -1
  308. package/lib/module/web/TrackPlayer/LoadAttempt.js +32 -0
  309. package/lib/module/web/TrackPlayer/LoadAttempt.js.map +1 -0
  310. package/lib/module/web/TrackPlayer/PlaybackStateMachine.js +18 -2
  311. package/lib/module/web/TrackPlayer/PlaybackStateMachine.js.map +1 -1
  312. package/lib/module/web/TrackPlayer/Player.js +254 -39
  313. package/lib/module/web/TrackPlayer/Player.js.map +1 -1
  314. package/lib/module/web/TrackPlayer/QueueManager.js +14 -0
  315. package/lib/module/web/TrackPlayer/QueueManager.js.map +1 -1
  316. package/lib/module/web/TrackPlayer/QueuePlayer.js +33 -12
  317. package/lib/module/web/TrackPlayer/QueuePlayer.js.map +1 -1
  318. package/lib/module/web/browser/BrowserManager.js +175 -100
  319. package/lib/module/web/browser/BrowserManager.js.map +1 -1
  320. package/lib/module/web/browser/FavoriteManager.js +31 -21
  321. package/lib/module/web/browser/FavoriteManager.js.map +1 -1
  322. package/lib/module/web/browser/SearchManager.js +18 -23
  323. package/lib/module/web/browser/SearchManager.js.map +1 -1
  324. package/lib/module/web/browser/assertBrowsePageShape.js +2 -2
  325. package/lib/module/web/browser/assertBrowsePageShape.js.map +1 -1
  326. package/lib/module/web/browser/classifyTrackNavigation.js +9 -9
  327. package/lib/module/web/browser/classifyTrackNavigation.js.map +1 -1
  328. package/lib/module/web/browser/sections.js +83 -0
  329. package/lib/module/web/browser/sections.js.map +1 -0
  330. package/lib/module/web/http/RequestConfigBuilder.js +110 -27
  331. package/lib/module/web/http/RequestConfigBuilder.js.map +1 -1
  332. package/lib/module/web/http/followMediaRedirect.js +215 -0
  333. package/lib/module/web/http/followMediaRedirect.js.map +1 -0
  334. package/lib/module/web/player/NowPlayingManager.js +4 -3
  335. package/lib/module/web/player/NowPlayingManager.js.map +1 -1
  336. package/lib/module/web/util/BrowserPathHelper.js +56 -11
  337. package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
  338. package/lib/typescript/package.json +1 -0
  339. package/lib/typescript/src/AudioBrowser.d.ts +1 -1
  340. package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
  341. package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
  342. package/lib/typescript/src/features/browser.d.ts +10 -2
  343. package/lib/typescript/src/features/browser.d.ts.map +1 -1
  344. package/lib/typescript/src/features/carConnection.d.ts +1 -1
  345. package/lib/typescript/src/features/equalizer.d.ts +1 -1
  346. package/lib/typescript/src/features/errors.d.ts +3 -3
  347. package/lib/typescript/src/features/favorites.d.ts +14 -11
  348. package/lib/typescript/src/features/favorites.d.ts.map +1 -1
  349. package/lib/typescript/src/features/gate.d.ts +18 -2
  350. package/lib/typescript/src/features/gate.d.ts.map +1 -1
  351. package/lib/typescript/src/features/metadata.d.ts +20 -3
  352. package/lib/typescript/src/features/metadata.d.ts.map +1 -1
  353. package/lib/typescript/src/features/network.d.ts +1 -1
  354. package/lib/typescript/src/features/nowPlaying.d.ts +1 -1
  355. package/lib/typescript/src/features/output.d.ts +1 -1
  356. package/lib/typescript/src/features/playback/controls.d.ts +4 -2
  357. package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
  358. package/lib/typescript/src/features/playback/playWhenReady.d.ts +1 -1
  359. package/lib/typescript/src/features/playback/playing.d.ts +1 -1
  360. package/lib/typescript/src/features/playback/progress.d.ts +1 -1
  361. package/lib/typescript/src/features/playback/progress.d.ts.map +1 -1
  362. package/lib/typescript/src/features/playback/rate.d.ts +8 -1
  363. package/lib/typescript/src/features/playback/rate.d.ts.map +1 -1
  364. package/lib/typescript/src/features/playback/state.d.ts +3 -4
  365. package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
  366. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +1 -1
  367. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +1 -1
  368. package/lib/typescript/src/features/playback/volume.d.ts +1 -1
  369. package/lib/typescript/src/features/player/options.d.ts +108 -56
  370. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  371. package/lib/typescript/src/features/player/setup.d.ts +14 -4
  372. package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
  373. package/lib/typescript/src/features/player/validateOptions.d.ts +2 -0
  374. package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -0
  375. package/lib/typescript/src/features/queue/activeTrack.d.ts +9 -2
  376. package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
  377. package/lib/typescript/src/features/queue/queue.d.ts +7 -4
  378. package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
  379. package/lib/typescript/src/features/queue/repeatMode.d.ts +1 -1
  380. package/lib/typescript/src/features/queue/shuffle.d.ts +1 -1
  381. package/lib/typescript/src/features/remoteControls.d.ts +23 -22
  382. package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
  383. package/lib/typescript/src/features/sleepTimer.d.ts +1 -1
  384. package/lib/typescript/src/features/sleepTimer.d.ts.map +1 -1
  385. package/lib/typescript/src/test-utils/reactNativeStub.d.ts +36 -0
  386. package/lib/typescript/src/test-utils/reactNativeStub.d.ts.map +1 -0
  387. package/lib/typescript/src/types/browser-native.d.ts +3 -2
  388. package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
  389. package/lib/typescript/src/types/browser-nodes.d.ts +380 -126
  390. package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
  391. package/lib/typescript/src/types/browser.d.ts +82 -57
  392. package/lib/typescript/src/types/browser.d.ts.map +1 -1
  393. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +19 -16
  394. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
  395. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +24 -19
  396. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
  397. package/lib/typescript/src/utils/getTrackIdentity.d.ts +18 -0
  398. package/lib/typescript/src/utils/getTrackIdentity.d.ts.map +1 -0
  399. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts +21 -0
  400. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts.map +1 -0
  401. package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +1 -2
  402. package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +2 -0
  403. package/nitrogen/generated/android/c++/JAndroidOptions.hpp +10 -10
  404. package/nitrogen/generated/android/c++/{JFavoritesMatchMode.hpp → JArtworkRendering.hpp} +15 -15
  405. package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +8 -3
  406. package/nitrogen/generated/android/c++/JBrowseResult.hpp +16 -4
  407. package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
  408. package/nitrogen/generated/android/c++/JCardImage.hpp +58 -0
  409. package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +8 -3
  410. package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +8 -3
  411. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +8 -3
  412. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +8 -3
  413. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +8 -3
  414. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +8 -3
  415. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +8 -2
  416. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +8 -2
  417. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__string__.hpp +102 -0
  418. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.hpp +16 -4
  419. package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +8 -3
  420. package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +7 -10
  421. package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +8 -3
  422. package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +15 -3
  423. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +8 -2
  424. package/nitrogen/generated/android/c++/JGridTile.hpp +61 -0
  425. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +45 -25
  426. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.hpp +1 -1
  427. package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
  428. package/nitrogen/generated/android/c++/JImageShape.hpp +58 -0
  429. package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +8 -3
  430. package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +36 -11
  431. package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +14 -2
  432. package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +15 -12
  433. package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +7 -10
  434. package/nitrogen/generated/android/c++/JNitroAndroidUpdateOptions.hpp +10 -10
  435. package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
  436. package/nitrogen/generated/android/c++/JOptions.hpp +7 -10
  437. package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +8 -3
  438. package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
  439. package/nitrogen/generated/android/c++/{JNotificationButton.hpp → JRemoteButton.hpp} +19 -19
  440. package/nitrogen/generated/android/c++/JRemoteButtonLayout.hpp +86 -0
  441. package/nitrogen/generated/android/c++/JResolvedTrack.hpp +57 -49
  442. package/nitrogen/generated/android/c++/JSection.hpp +116 -0
  443. package/nitrogen/generated/android/c++/JSectionStyle.hpp +96 -0
  444. package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
  445. package/nitrogen/generated/android/c++/JTrack.hpp +25 -46
  446. package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +8 -2
  447. package/nitrogen/generated/android/c++/JTrackStyle.hpp +46 -18
  448. package/nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.cpp +26 -0
  449. package/nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.hpp +75 -0
  450. package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +16 -4
  451. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidOptions.kt +3 -3
  452. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → ArtworkRendering.kt} +5 -5
  453. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation.kt +23 -0
  454. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CardImage.kt +23 -0
  455. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__string__.kt +80 -0
  456. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/GridTile.kt +24 -0
  457. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HybridAudioBrowserSpec.kt +1 -1
  458. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +6 -3
  459. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageShape.kt +23 -0
  460. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +8 -5
  461. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroAndroidUpdateOptions.kt +3 -3
  462. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +6 -3
  463. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
  464. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{NotificationButton.kt → RemoteButton.kt} +3 -3
  465. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteButtonLayout.kt +44 -0
  466. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -15
  467. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → Section.kt} +15 -6
  468. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SectionStyle.kt +59 -0
  469. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StyleDisplay.kt +23 -0
  470. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +6 -12
  471. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +35 -5
  472. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Variant_NullType_NotificationButtonLayout.kt → Variant_NullType_RemoteButtonLayout.kt} +9 -9
  473. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.cpp +9 -0
  474. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +244 -133
  475. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +31 -16
  476. package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +33 -18
  477. package/nitrogen/generated/ios/swift/AndroidOptions.swift +12 -12
  478. package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
  479. package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
  480. package/nitrogen/generated/ios/swift/CardImage.swift +40 -0
  481. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__string__.swift +54 -0
  482. package/nitrogen/generated/ios/swift/GridTile.swift +44 -0
  483. package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec.swift +1 -1
  484. package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec_cxx.swift +2 -2
  485. package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
  486. package/nitrogen/generated/ios/swift/ImageShape.swift +40 -0
  487. package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +52 -5
  488. package/nitrogen/generated/ios/swift/NitroAndroidUpdateOptions.swift +12 -12
  489. package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
  490. package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
  491. package/nitrogen/generated/ios/swift/{NotificationButton.swift → RemoteButton.swift} +6 -6
  492. package/nitrogen/generated/ios/swift/RemoteButtonLayout.swift +57 -0
  493. package/nitrogen/generated/ios/swift/ResolvedTrack.swift +62 -73
  494. package/nitrogen/generated/ios/swift/Section.swift +82 -0
  495. package/nitrogen/generated/ios/swift/SectionStyle.swift +133 -0
  496. package/nitrogen/generated/ios/swift/StyleDisplay.swift +40 -0
  497. package/nitrogen/generated/ios/swift/Track.swift +28 -63
  498. package/nitrogen/generated/ios/swift/TrackStyle.swift +86 -22
  499. package/nitrogen/generated/ios/swift/{Variant_NullType_NotificationButtonLayout.swift → Variant_NullType_RemoteButtonLayout.swift} +3 -3
  500. package/nitrogen/generated/shared/c++/AndroidOptions.hpp +8 -8
  501. package/nitrogen/generated/shared/c++/{FavoritesMatchMode.hpp → ArtworkRendering.hpp} +17 -17
  502. package/nitrogen/generated/shared/c++/CarPlayPlayingIndicatorLocation.hpp +76 -0
  503. package/nitrogen/generated/shared/c++/CardImage.hpp +76 -0
  504. package/nitrogen/generated/shared/c++/GridTile.hpp +80 -0
  505. package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.cpp +1 -1
  506. package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.hpp +1 -1
  507. package/nitrogen/generated/shared/c++/IOSOptions.hpp +9 -2
  508. package/nitrogen/generated/shared/c++/ImageShape.hpp +76 -0
  509. package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +10 -6
  510. package/nitrogen/generated/shared/c++/NitroAndroidUpdateOptions.hpp +8 -8
  511. package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
  512. package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
  513. package/nitrogen/generated/shared/c++/{NotificationButton.hpp → RemoteButton.hpp} +19 -19
  514. package/nitrogen/generated/shared/c++/RemoteButtonLayout.hpp +94 -0
  515. package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +33 -37
  516. package/nitrogen/generated/shared/c++/Section.hpp +102 -0
  517. package/nitrogen/generated/shared/c++/SectionStyle.hpp +126 -0
  518. package/nitrogen/generated/shared/c++/StyleDisplay.hpp +76 -0
  519. package/nitrogen/generated/shared/c++/Track.hpp +18 -30
  520. package/nitrogen/generated/shared/c++/TrackStyle.hpp +73 -34
  521. package/package.json +24 -11
  522. package/src/AudioBrowser.ts +2 -1
  523. package/src/CLAUDE.md +52 -0
  524. package/src/features/battery.test.ts +79 -0
  525. package/src/features/browser-config.test.ts +21 -6
  526. package/src/features/browser-config.ts +12 -8
  527. package/src/features/browser.test.ts +1 -1
  528. package/src/features/browser.ts +11 -3
  529. package/src/features/carConnection.ts +1 -1
  530. package/src/features/equalizer.ts +1 -1
  531. package/src/features/errors.ts +3 -3
  532. package/src/features/favorites.ts +14 -11
  533. package/src/features/gate.ts +16 -1
  534. package/src/features/hook-wiring.test.ts +302 -0
  535. package/src/features/metadata.ts +20 -3
  536. package/src/features/network.ts +1 -1
  537. package/src/features/nowPlaying.ts +1 -1
  538. package/src/features/output.ts +1 -1
  539. package/src/features/playback/controls.ts +4 -2
  540. package/src/features/playback/playWhenReady.ts +1 -1
  541. package/src/features/playback/playing.ts +1 -1
  542. package/src/features/playback/progress.test.ts +169 -0
  543. package/src/features/playback/progress.ts +3 -2
  544. package/src/features/playback/rate.ts +8 -1
  545. package/src/features/playback/state.ts +3 -4
  546. package/src/features/playback/trackPlaybackTime.test.ts +16 -6
  547. package/src/features/playback/trackPlaybackTime.ts +1 -6
  548. package/src/features/playback/volume.ts +1 -1
  549. package/src/features/player/options.ts +126 -76
  550. package/src/features/player/setup.test.ts +24 -7
  551. package/src/features/player/setup.ts +22 -10
  552. package/src/features/player/validateOptions.ts +21 -0
  553. package/src/features/queue/activeTrack.ts +15 -4
  554. package/src/features/queue/queue.ts +13 -6
  555. package/src/features/queue/repeatMode.ts +1 -1
  556. package/src/features/queue/shuffle.ts +1 -1
  557. package/src/features/remoteControls.ts +13 -92
  558. package/src/features/sleepTimer.test.ts +172 -0
  559. package/src/features/sleepTimer.ts +9 -1
  560. package/src/nitro-stub-drift.test.ts +277 -0
  561. package/src/public-surface.test.ts +147 -0
  562. package/src/specs/audio-browser.nitro.ts +5 -4
  563. package/src/style-resolution.test.ts +210 -0
  564. package/src/test-utils/reactNativeStub.ts +60 -0
  565. package/src/types/browser-native.ts +7 -3
  566. package/src/types/browser-nodes.ts +396 -134
  567. package/src/types/browser.ts +85 -59
  568. package/src/utils/LazyNativeEmitter.ts +28 -15
  569. package/src/utils/NativeUpdatedValue.ts +29 -13
  570. package/src/utils/getTrackIdentity.ts +20 -0
  571. package/src/utils/useDebug.test.ts +182 -0
  572. package/src/utils/useNativeUpdatedValue.test.ts +103 -0
  573. package/src/utils/useNativeValueRefreshedBy.ts +38 -0
  574. package/src/web/NativeAudioBrowser.playWhenReady.test.ts +232 -2
  575. package/src/web/NativeAudioBrowser.ts +239 -82
  576. package/src/web/TrackPlayer/LoadAttempt.ts +29 -0
  577. package/src/web/TrackPlayer/PlaybackStateMachine.test.ts +60 -13
  578. package/src/web/TrackPlayer/PlaybackStateMachine.ts +22 -6
  579. package/src/web/TrackPlayer/Player.dispatch.test.ts +5 -3
  580. package/src/web/TrackPlayer/Player.load.test.ts +137 -1
  581. package/src/web/TrackPlayer/Player.ts +284 -37
  582. package/src/web/TrackPlayer/QueueManager.test.ts +29 -0
  583. package/src/web/TrackPlayer/QueueManager.ts +14 -0
  584. package/src/web/TrackPlayer/QueuePlayer.ts +33 -14
  585. package/src/web/__tests__/lifecycle.test.ts +345 -0
  586. package/src/web/__tests__/lifecycleHarness.ts +351 -0
  587. package/src/web/__tests__/loadEdgeCases.test.ts +246 -0
  588. package/src/web/__tests__/loadSupersession.test.ts +175 -0
  589. package/src/web/__tests__/retry.test.ts +169 -0
  590. package/src/web/browser/BrowserManager.ts +209 -111
  591. package/src/web/browser/FavoriteManager.test.ts +84 -0
  592. package/src/web/browser/FavoriteManager.ts +28 -23
  593. package/src/web/browser/SearchManager.test.ts +75 -0
  594. package/src/web/browser/SearchManager.ts +25 -28
  595. package/src/web/browser/__tests__/artwork-resolution.test.ts +117 -0
  596. package/src/web/browser/__tests__/layer-resolver.test.ts +35 -0
  597. package/src/web/browser/__tests__/search-artwork.test.ts +46 -0
  598. package/src/web/browser/__tests__/search-navigation.test.ts +76 -0
  599. package/src/web/browser/assertBrowsePageShape.test.ts +1 -1
  600. package/src/web/browser/assertBrowsePageShape.ts +5 -3
  601. package/src/web/browser/classifyTrackNavigation.test.ts +10 -8
  602. package/src/web/browser/classifyTrackNavigation.ts +9 -9
  603. package/src/web/browser/parseSearchResponse.test.ts +8 -2
  604. package/src/web/browser/sections.test.ts +91 -0
  605. package/src/web/browser/sections.ts +72 -0
  606. package/src/web/http/RequestConfigBuilder.test.ts +241 -1
  607. package/src/web/http/RequestConfigBuilder.ts +140 -33
  608. package/src/web/http/followMediaRedirect.test.ts +289 -0
  609. package/src/web/http/followMediaRedirect.ts +253 -0
  610. package/src/web/player/NowPlayingManager.ts +4 -3
  611. package/src/web/util/BrowserPathHelper.test.ts +52 -0
  612. package/src/web/util/BrowserPathHelper.ts +61 -13
  613. package/website/guide/android-auto.md +114 -0
  614. package/website/guide/android-certificates.md +409 -0
  615. package/website/guide/artwork.md +255 -0
  616. package/website/guide/audio-output.md +135 -0
  617. package/website/guide/automotive.md +86 -0
  618. package/website/guide/basic-usage.md +151 -0
  619. package/website/guide/battery.md +115 -0
  620. package/website/guide/browser.md +581 -0
  621. package/website/guide/carplay.md +620 -0
  622. package/website/guide/configuration.md +173 -0
  623. package/website/guide/equalizer.md +231 -0
  624. package/website/guide/errors.md +310 -0
  625. package/website/guide/favorites.md +154 -0
  626. package/website/guide/gate.md +143 -0
  627. package/website/guide/getting-started.md +46 -0
  628. package/website/guide/hooks.md +238 -0
  629. package/website/guide/live-streams.md +125 -0
  630. package/website/guide/metadata.md +239 -0
  631. package/website/guide/migrating-from-track-player.md +244 -0
  632. package/website/guide/native-callback-fetch.md +127 -0
  633. package/website/guide/network.md +86 -0
  634. package/website/guide/now-playing.md +175 -0
  635. package/website/guide/playback.md +328 -0
  636. package/website/guide/queue.md +300 -0
  637. package/website/guide/remote-controls.md +256 -0
  638. package/website/guide/search.md +255 -0
  639. package/website/guide/sleep-timer.md +268 -0
  640. package/website/guide/track.md +247 -0
  641. package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
  642. package/ios/Model/MediaURL.swift +0 -67
  643. package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
  644. package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
  645. package/nitrogen/generated/android/c++/JNotificationButtonLayout.hpp +0 -94
  646. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
  647. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
  648. package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.cpp +0 -26
  649. package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.hpp +0 -75
  650. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
  651. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NotificationButtonLayout.kt +0 -50
  652. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
  653. package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
  654. package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
  655. package/nitrogen/generated/ios/swift/ImageRowItem.swift +0 -195
  656. package/nitrogen/generated/ios/swift/NotificationButtonLayout.swift +0 -92
  657. package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
  658. package/nitrogen/generated/shared/c++/FavoriteConfig.hpp +0 -84
  659. package/nitrogen/generated/shared/c++/ImageRowItem.hpp +0 -129
  660. package/nitrogen/generated/shared/c++/NotificationButtonLayout.hpp +0 -102
@@ -18,6 +18,8 @@ namespace margelo::nitro::audiobrowser { struct AndroidOptions; }
18
18
  namespace margelo::nitro::audiobrowser { enum class AndroidPlayerWakeMode; }
19
19
  // Forward declaration of `AppKilledPlaybackBehavior` to properly resolve imports.
20
20
  namespace margelo::nitro::audiobrowser { enum class AppKilledPlaybackBehavior; }
21
+ // Forward declaration of `ArtworkRendering` to properly resolve imports.
22
+ namespace margelo::nitro::audiobrowser { enum class ArtworkRendering; }
21
23
  // Forward declaration of `ArtworkRequestConfig` to properly resolve imports.
22
24
  namespace margelo::nitro::audiobrowser { struct ArtworkRequestConfig; }
23
25
  // Forward declaration of `ArtworkVariants` to properly resolve imports.
@@ -34,18 +36,18 @@ namespace margelo::nitro::audiobrowser { struct BrowseError; }
34
36
  namespace margelo::nitro::audiobrowser { struct BrowserSourceCallbackParam; }
35
37
  // Forward declaration of `CarPlayNowPlayingButton` to properly resolve imports.
36
38
  namespace margelo::nitro::audiobrowser { enum class CarPlayNowPlayingButton; }
39
+ // Forward declaration of `CarPlayPlayingIndicatorLocation` to properly resolve imports.
40
+ namespace margelo::nitro::audiobrowser { enum class CarPlayPlayingIndicatorLocation; }
37
41
  // Forward declaration of `CarPlaySiriListButtonPosition` to properly resolve imports.
38
42
  namespace margelo::nitro::audiobrowser { enum class CarPlaySiriListButtonPosition; }
43
+ // Forward declaration of `CardImage` to properly resolve imports.
44
+ namespace margelo::nitro::audiobrowser { enum class CardImage; }
39
45
  // Forward declaration of `ChapterMetadata` to properly resolve imports.
40
46
  namespace margelo::nitro::audiobrowser { struct ChapterMetadata; }
41
47
  // Forward declaration of `EqualizerSettings` to properly resolve imports.
42
48
  namespace margelo::nitro::audiobrowser { struct EqualizerSettings; }
43
49
  // Forward declaration of `FavoriteChangedEvent` to properly resolve imports.
44
50
  namespace margelo::nitro::audiobrowser { struct FavoriteChangedEvent; }
45
- // Forward declaration of `FavoriteConfig` to properly resolve imports.
46
- namespace margelo::nitro::audiobrowser { struct FavoriteConfig; }
47
- // Forward declaration of `FavoritesMatchMode` to properly resolve imports.
48
- namespace margelo::nitro::audiobrowser { enum class FavoritesMatchMode; }
49
51
  // Forward declaration of `FormatNavigationErrorParams` to properly resolve imports.
50
52
  namespace margelo::nitro::audiobrowser { struct FormatNavigationErrorParams; }
51
53
  // Forward declaration of `FormatNowPlayingParams` to properly resolve imports.
@@ -60,6 +62,8 @@ namespace margelo::nitro::audiobrowser { struct GateEvent; }
60
62
  namespace margelo::nitro::audiobrowser { enum class GateReason; }
61
63
  // Forward declaration of `Gate` to properly resolve imports.
62
64
  namespace margelo::nitro::audiobrowser { struct Gate; }
65
+ // Forward declaration of `GridTile` to properly resolve imports.
66
+ namespace margelo::nitro::audiobrowser { enum class GridTile; }
63
67
  // Forward declaration of `HttpMethod` to properly resolve imports.
64
68
  namespace margelo::nitro::audiobrowser { enum class HttpMethod; }
65
69
  // Forward declaration of `HybridAudioBrowserSpec` to properly resolve imports.
@@ -78,8 +82,8 @@ namespace margelo::nitro::audiobrowser { struct IOSOptions; }
78
82
  namespace margelo::nitro::audiobrowser { struct ImageContext; }
79
83
  // Forward declaration of `ImageQueryParams` to properly resolve imports.
80
84
  namespace margelo::nitro::audiobrowser { struct ImageQueryParams; }
81
- // Forward declaration of `ImageRowItem` to properly resolve imports.
82
- namespace margelo::nitro::audiobrowser { struct ImageRowItem; }
85
+ // Forward declaration of `ImageShape` to properly resolve imports.
86
+ namespace margelo::nitro::audiobrowser { enum class ImageShape; }
83
87
  // Forward declaration of `ImageSource` to properly resolve imports.
84
88
  namespace margelo::nitro::audiobrowser { struct ImageSource; }
85
89
  // Forward declaration of `MediaReference` to properly resolve imports.
@@ -112,10 +116,6 @@ namespace margelo::nitro::audiobrowser { struct NavigationError; }
112
116
  namespace margelo::nitro::audiobrowser { struct NitroAndroidUpdateOptions; }
113
117
  // Forward declaration of `NitroIOSUpdateOptions` to properly resolve imports.
114
118
  namespace margelo::nitro::audiobrowser { struct NitroIOSUpdateOptions; }
115
- // Forward declaration of `NotificationButtonLayout` to properly resolve imports.
116
- namespace margelo::nitro::audiobrowser { struct NotificationButtonLayout; }
117
- // Forward declaration of `NotificationButton` to properly resolve imports.
118
- namespace margelo::nitro::audiobrowser { enum class NotificationButton; }
119
119
  // Forward declaration of `NowPlayingMetadata` to properly resolve imports.
120
120
  namespace margelo::nitro::audiobrowser { struct NowPlayingMetadata; }
121
121
  // Forward declaration of `NowPlayingUpdate` to properly resolve imports.
@@ -150,6 +150,10 @@ namespace margelo::nitro::audiobrowser { struct PlayerCapabilities; }
150
150
  namespace margelo::nitro::audiobrowser { struct PlayingState; }
151
151
  // Forward declaration of `Progress` to properly resolve imports.
152
152
  namespace margelo::nitro::audiobrowser { struct Progress; }
153
+ // Forward declaration of `RemoteButtonLayout` to properly resolve imports.
154
+ namespace margelo::nitro::audiobrowser { struct RemoteButtonLayout; }
155
+ // Forward declaration of `RemoteButton` to properly resolve imports.
156
+ namespace margelo::nitro::audiobrowser { enum class RemoteButton; }
153
157
  // Forward declaration of `RemoteJumpBackwardEvent` to properly resolve imports.
154
158
  namespace margelo::nitro::audiobrowser { struct RemoteJumpBackwardEvent; }
155
159
  // Forward declaration of `RemoteJumpForwardEvent` to properly resolve imports.
@@ -176,12 +180,18 @@ namespace margelo::nitro::audiobrowser { struct RetryConfig; }
176
180
  namespace margelo::nitro::audiobrowser { enum class SearchMode; }
177
181
  // Forward declaration of `SearchParams` to properly resolve imports.
178
182
  namespace margelo::nitro::audiobrowser { struct SearchParams; }
183
+ // Forward declaration of `SectionStyle` to properly resolve imports.
184
+ namespace margelo::nitro::audiobrowser { struct SectionStyle; }
185
+ // Forward declaration of `Section` to properly resolve imports.
186
+ namespace margelo::nitro::audiobrowser { struct Section; }
179
187
  // Forward declaration of `SleepTimerEndOfTrack` to properly resolve imports.
180
188
  namespace margelo::nitro::audiobrowser { struct SleepTimerEndOfTrack; }
181
189
  // Forward declaration of `SleepTimerTime` to properly resolve imports.
182
190
  namespace margelo::nitro::audiobrowser { struct SleepTimerTime; }
183
191
  // Forward declaration of `StallReason` to properly resolve imports.
184
192
  namespace margelo::nitro::audiobrowser { enum class StallReason; }
193
+ // Forward declaration of `StyleDisplay` to properly resolve imports.
194
+ namespace margelo::nitro::audiobrowser { enum class StyleDisplay; }
185
195
  // Forward declaration of `TimedMetadata` to properly resolve imports.
186
196
  namespace margelo::nitro::audiobrowser { struct TimedMetadata; }
187
197
  // Forward declaration of `TrackLoadEvent` to properly resolve imports.
@@ -191,7 +201,7 @@ namespace margelo::nitro::audiobrowser { struct TrackMetadata; }
191
201
  // Forward declaration of `TrackRequest` to properly resolve imports.
192
202
  namespace margelo::nitro::audiobrowser { struct TrackRequest; }
193
203
  // Forward declaration of `TrackStyle` to properly resolve imports.
194
- namespace margelo::nitro::audiobrowser { enum class TrackStyle; }
204
+ namespace margelo::nitro::audiobrowser { struct TrackStyle; }
195
205
  // Forward declaration of `Track` to properly resolve imports.
196
206
  namespace margelo::nitro::audiobrowser { struct Track; }
197
207
  // Forward declaration of `TransformableRequestConfig` to properly resolve imports.
@@ -203,6 +213,7 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
203
213
  #include "AndroidOptions.hpp"
204
214
  #include "AndroidPlayerWakeMode.hpp"
205
215
  #include "AppKilledPlaybackBehavior.hpp"
216
+ #include "ArtworkRendering.hpp"
206
217
  #include "ArtworkRequestConfig.hpp"
207
218
  #include "ArtworkVariants.hpp"
208
219
  #include "BatteryOptimizationStatus.hpp"
@@ -211,12 +222,12 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
211
222
  #include "BrowseError.hpp"
212
223
  #include "BrowserSourceCallbackParam.hpp"
213
224
  #include "CarPlayNowPlayingButton.hpp"
225
+ #include "CarPlayPlayingIndicatorLocation.hpp"
214
226
  #include "CarPlaySiriListButtonPosition.hpp"
227
+ #include "CardImage.hpp"
215
228
  #include "ChapterMetadata.hpp"
216
229
  #include "EqualizerSettings.hpp"
217
230
  #include "FavoriteChangedEvent.hpp"
218
- #include "FavoriteConfig.hpp"
219
- #include "FavoritesMatchMode.hpp"
220
231
  #include "FormatNavigationErrorParams.hpp"
221
232
  #include "FormatNowPlayingParams.hpp"
222
233
  #include "FormattedNavigationError.hpp"
@@ -224,6 +235,7 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
224
235
  #include "GateDecision.hpp"
225
236
  #include "GateEvent.hpp"
226
237
  #include "GateReason.hpp"
238
+ #include "GridTile.hpp"
227
239
  #include "HttpMethod.hpp"
228
240
  #include "HybridAudioBrowserSpec.hpp"
229
241
  #include "IOSCategory.hpp"
@@ -233,7 +245,7 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
233
245
  #include "IOSOptions.hpp"
234
246
  #include "ImageContext.hpp"
235
247
  #include "ImageQueryParams.hpp"
236
- #include "ImageRowItem.hpp"
248
+ #include "ImageShape.hpp"
237
249
  #include "ImageSource.hpp"
238
250
  #include "MediaReference.hpp"
239
251
  #include "MediaRequestConfig.hpp"
@@ -250,8 +262,6 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
250
262
  #include "NavigationErrorType.hpp"
251
263
  #include "NitroAndroidUpdateOptions.hpp"
252
264
  #include "NitroIOSUpdateOptions.hpp"
253
- #include "NotificationButton.hpp"
254
- #include "NotificationButtonLayout.hpp"
255
265
  #include "NowPlayingMetadata.hpp"
256
266
  #include "NowPlayingUpdate.hpp"
257
267
  #include "Options.hpp"
@@ -269,6 +279,8 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
269
279
  #include "PlayerCapabilities.hpp"
270
280
  #include "PlayingState.hpp"
271
281
  #include "Progress.hpp"
282
+ #include "RemoteButton.hpp"
283
+ #include "RemoteButtonLayout.hpp"
272
284
  #include "RemoteJumpBackwardEvent.hpp"
273
285
  #include "RemoteJumpForwardEvent.hpp"
274
286
  #include "RemotePlayIdEvent.hpp"
@@ -282,9 +294,12 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
282
294
  #include "RetryConfig.hpp"
283
295
  #include "SearchMode.hpp"
284
296
  #include "SearchParams.hpp"
297
+ #include "Section.hpp"
298
+ #include "SectionStyle.hpp"
285
299
  #include "SleepTimerEndOfTrack.hpp"
286
300
  #include "SleepTimerTime.hpp"
287
301
  #include "StallReason.hpp"
302
+ #include "StyleDisplay.hpp"
288
303
  #include "TimedMetadata.hpp"
289
304
  #include "Track.hpp"
290
305
  #include "TrackLoadEvent.hpp"
@@ -23,11 +23,23 @@ namespace margelo::nitro::audiobrowser { enum class HttpMethod; }
23
23
  // Forward declaration of `TrackRequest` to properly resolve imports.
24
24
  namespace margelo::nitro::audiobrowser { struct TrackRequest; }
25
25
  // Forward declaration of `TrackStyle` to properly resolve imports.
26
- namespace margelo::nitro::audiobrowser { enum class TrackStyle; }
27
- // Forward declaration of `ImageRowItem` to properly resolve imports.
28
- namespace margelo::nitro::audiobrowser { struct ImageRowItem; }
26
+ namespace margelo::nitro::audiobrowser { struct TrackStyle; }
27
+ // Forward declaration of `StyleDisplay` to properly resolve imports.
28
+ namespace margelo::nitro::audiobrowser { enum class StyleDisplay; }
29
+ // Forward declaration of `ArtworkRendering` to properly resolve imports.
30
+ namespace margelo::nitro::audiobrowser { enum class ArtworkRendering; }
31
+ // Forward declaration of `ImageShape` to properly resolve imports.
32
+ namespace margelo::nitro::audiobrowser { enum class ImageShape; }
33
+ // Forward declaration of `CardImage` to properly resolve imports.
34
+ namespace margelo::nitro::audiobrowser { enum class CardImage; }
29
35
  // Forward declaration of `ResolvedTrack` to properly resolve imports.
30
36
  namespace margelo::nitro::audiobrowser { struct ResolvedTrack; }
37
+ // Forward declaration of `SectionStyle` to properly resolve imports.
38
+ namespace margelo::nitro::audiobrowser { struct SectionStyle; }
39
+ // Forward declaration of `GridTile` to properly resolve imports.
40
+ namespace margelo::nitro::audiobrowser { enum class GridTile; }
41
+ // Forward declaration of `Section` to properly resolve imports.
42
+ namespace margelo::nitro::audiobrowser { struct Section; }
31
43
  // Forward declaration of `CarPlaySiriListButtonPosition` to properly resolve imports.
32
44
  namespace margelo::nitro::audiobrowser { enum class CarPlaySiriListButtonPosition; }
33
45
  // Forward declaration of `NavigationErrorEvent` to properly resolve imports.
@@ -132,20 +144,18 @@ namespace margelo::nitro::audiobrowser { struct Options; }
132
144
  namespace margelo::nitro::audiobrowser { struct AndroidOptions; }
133
145
  // Forward declaration of `AppKilledPlaybackBehavior` to properly resolve imports.
134
146
  namespace margelo::nitro::audiobrowser { enum class AppKilledPlaybackBehavior; }
135
- // Forward declaration of `NotificationButtonLayout` to properly resolve imports.
136
- namespace margelo::nitro::audiobrowser { struct NotificationButtonLayout; }
137
- // Forward declaration of `NotificationButton` to properly resolve imports.
138
- namespace margelo::nitro::audiobrowser { enum class NotificationButton; }
147
+ // Forward declaration of `RemoteButtonLayout` to properly resolve imports.
148
+ namespace margelo::nitro::audiobrowser { struct RemoteButtonLayout; }
149
+ // Forward declaration of `RemoteButton` to properly resolve imports.
150
+ namespace margelo::nitro::audiobrowser { enum class RemoteButton; }
139
151
  // Forward declaration of `PlayerCapabilities` to properly resolve imports.
140
152
  namespace margelo::nitro::audiobrowser { struct PlayerCapabilities; }
141
- // Forward declaration of `FavoriteConfig` to properly resolve imports.
142
- namespace margelo::nitro::audiobrowser { struct FavoriteConfig; }
143
- // Forward declaration of `FavoritesMatchMode` to properly resolve imports.
144
- namespace margelo::nitro::audiobrowser { enum class FavoritesMatchMode; }
145
153
  // Forward declaration of `IOSOptions` to properly resolve imports.
146
154
  namespace margelo::nitro::audiobrowser { struct IOSOptions; }
147
155
  // Forward declaration of `CarPlayNowPlayingButton` to properly resolve imports.
148
156
  namespace margelo::nitro::audiobrowser { enum class CarPlayNowPlayingButton; }
157
+ // Forward declaration of `CarPlayPlayingIndicatorLocation` to properly resolve imports.
158
+ namespace margelo::nitro::audiobrowser { enum class CarPlayPlayingIndicatorLocation; }
149
159
  // Forward declaration of `FavoriteChangedEvent` to properly resolve imports.
150
160
  namespace margelo::nitro::audiobrowser { struct FavoriteChangedEvent; }
151
161
  // Forward declaration of `NowPlayingMetadata` to properly resolve imports.
@@ -210,9 +220,15 @@ namespace margelo::nitro::audiobrowser { struct Progress; }
210
220
  #include <unordered_map>
211
221
  #include "TrackRequest.hpp"
212
222
  #include "TrackStyle.hpp"
213
- #include "ImageRowItem.hpp"
223
+ #include "StyleDisplay.hpp"
224
+ #include "ArtworkRendering.hpp"
225
+ #include "ImageShape.hpp"
226
+ #include "CardImage.hpp"
214
227
  #include <functional>
215
228
  #include "ResolvedTrack.hpp"
229
+ #include "SectionStyle.hpp"
230
+ #include "GridTile.hpp"
231
+ #include "Section.hpp"
216
232
  #include "CarPlaySiriListButtonPosition.hpp"
217
233
  #include "NavigationErrorEvent.hpp"
218
234
  #include "NavigationError.hpp"
@@ -267,13 +283,12 @@ namespace margelo::nitro::audiobrowser { struct Progress; }
267
283
  #include "Options.hpp"
268
284
  #include "AndroidOptions.hpp"
269
285
  #include "AppKilledPlaybackBehavior.hpp"
270
- #include "NotificationButtonLayout.hpp"
271
- #include "NotificationButton.hpp"
286
+ #include "RemoteButtonLayout.hpp"
287
+ #include "RemoteButton.hpp"
272
288
  #include "PlayerCapabilities.hpp"
273
- #include "FavoriteConfig.hpp"
274
- #include "FavoritesMatchMode.hpp"
275
289
  #include "IOSOptions.hpp"
276
290
  #include "CarPlayNowPlayingButton.hpp"
291
+ #include "CarPlayPlayingIndicatorLocation.hpp"
277
292
  #include "FavoriteChangedEvent.hpp"
278
293
  #include "NowPlayingMetadata.hpp"
279
294
  #include "Output.hpp"
@@ -760,8 +775,8 @@ namespace margelo::nitro::audiobrowser {
760
775
  std::rethrow_exception(__result.error());
761
776
  }
762
777
  }
763
- inline std::shared_ptr<Promise<std::vector<Track>>> onSearch(const std::string& query) override {
764
- auto __result = _swiftPart.onSearch(query);
778
+ inline std::shared_ptr<Promise<std::vector<Track>>> search(const std::string& query) override {
779
+ auto __result = _swiftPart.search(query);
765
780
  if (__result.hasError()) [[unlikely]] {
766
781
  std::rethrow_exception(__result.error());
767
782
  }
@@ -18,15 +18,15 @@ public extension AndroidOptions {
18
18
  /**
19
19
  * Create a new instance of `AndroidOptions`.
20
20
  */
21
- init(appKilledPlaybackBehavior: AppKilledPlaybackBehavior, skipSilence: Bool, notificationButtons: Variant_NullType_NotificationButtonLayout?) {
22
- self.init(appKilledPlaybackBehavior, skipSilence, { () -> bridge.std__optional_std__variant_nitro__NullType__NotificationButtonLayout__ in
23
- if let __unwrappedValue = notificationButtons {
24
- return bridge.create_std__optional_std__variant_nitro__NullType__NotificationButtonLayout__({ () -> bridge.std__variant_nitro__NullType__NotificationButtonLayout_ in
21
+ init(appKilledPlaybackBehavior: AppKilledPlaybackBehavior, skipSilence: Bool, remoteButtonLayout: Variant_NullType_RemoteButtonLayout?) {
22
+ self.init(appKilledPlaybackBehavior, skipSilence, { () -> bridge.std__optional_std__variant_nitro__NullType__RemoteButtonLayout__ in
23
+ if let __unwrappedValue = remoteButtonLayout {
24
+ return bridge.create_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__({ () -> bridge.std__variant_nitro__NullType__RemoteButtonLayout_ in
25
25
  switch __unwrappedValue {
26
26
  case .first(let __value):
27
- return bridge.create_std__variant_nitro__NullType__NotificationButtonLayout_(margelo.nitro.NullType.null)
27
+ return bridge.create_std__variant_nitro__NullType__RemoteButtonLayout_(margelo.nitro.NullType.null)
28
28
  case .second(let __value):
29
- return bridge.create_std__variant_nitro__NullType__NotificationButtonLayout_(__value)
29
+ return bridge.create_std__variant_nitro__NullType__RemoteButtonLayout_(__value)
30
30
  }
31
31
  }().variant)
32
32
  } else {
@@ -46,12 +46,12 @@ public extension AndroidOptions {
46
46
  }
47
47
 
48
48
  @inline(__always)
49
- var notificationButtons: Variant_NullType_NotificationButtonLayout? {
50
- return { () -> Variant_NullType_NotificationButtonLayout? in
51
- if bridge.has_value_std__optional_std__variant_nitro__NullType__NotificationButtonLayout__(self.__notificationButtons) {
52
- let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__NotificationButtonLayout__(self.__notificationButtons)
53
- return { () -> Variant_NullType_NotificationButtonLayout in
54
- let __variant = bridge.std__variant_nitro__NullType__NotificationButtonLayout_(__unwrapped)
49
+ var remoteButtonLayout: Variant_NullType_RemoteButtonLayout? {
50
+ return { () -> Variant_NullType_RemoteButtonLayout? in
51
+ if bridge.has_value_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__(self.__remoteButtonLayout) {
52
+ let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__(self.__remoteButtonLayout)
53
+ return { () -> Variant_NullType_RemoteButtonLayout in
54
+ let __variant = bridge.std__variant_nitro__NullType__RemoteButtonLayout_(__unwrapped)
55
55
  switch __variant.index() {
56
56
  case 0:
57
57
  let __actual = __variant.get_0()
@@ -0,0 +1,40 @@
1
+ ///
2
+ /// ArtworkRendering.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `ArtworkRendering`, backed by a C++ enum.
10
+ */
11
+ public typealias ArtworkRendering = margelo.nitro.audiobrowser.ArtworkRendering
12
+
13
+ public extension ArtworkRendering {
14
+ /**
15
+ * Get a ArtworkRendering for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "original":
21
+ self = .original
22
+ case "stencil":
23
+ self = .stencil
24
+ default:
25
+ return nil
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Get the String value this ArtworkRendering represents.
31
+ */
32
+ var stringValue: String {
33
+ switch self {
34
+ case .original:
35
+ return "original"
36
+ case .stencil:
37
+ return "stencil"
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,40 @@
1
+ ///
2
+ /// CarPlayPlayingIndicatorLocation.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `CarPlayPlayingIndicatorLocation`, backed by a C++ enum.
10
+ */
11
+ public typealias CarPlayPlayingIndicatorLocation = margelo.nitro.audiobrowser.CarPlayPlayingIndicatorLocation
12
+
13
+ public extension CarPlayPlayingIndicatorLocation {
14
+ /**
15
+ * Get a CarPlayPlayingIndicatorLocation for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "leading":
21
+ self = .leading
22
+ case "trailing":
23
+ self = .trailing
24
+ default:
25
+ return nil
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Get the String value this CarPlayPlayingIndicatorLocation represents.
31
+ */
32
+ var stringValue: String {
33
+ switch self {
34
+ case .leading:
35
+ return "leading"
36
+ case .trailing:
37
+ return "trailing"
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,40 @@
1
+ ///
2
+ /// CardImage.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `CardImage`, backed by a C++ enum.
10
+ */
11
+ public typealias CardImage = margelo.nitro.audiobrowser.CardImage
12
+
13
+ public extension CardImage {
14
+ /**
15
+ * Get a CardImage for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "normal":
21
+ self = .normal
22
+ case "background":
23
+ self = .background
24
+ default:
25
+ return nil
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Get the String value this CardImage represents.
31
+ */
32
+ var stringValue: String {
33
+ switch self {
34
+ case .normal:
35
+ return "normal"
36
+ case .background:
37
+ return "background"
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,54 @@
1
+ ///
2
+ /// Func_std__shared_ptr_Promise_std__string__.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Wraps a Swift `() -> Promise<String>` as a class.
12
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
13
+ */
14
+ public final class Func_std__shared_ptr_Promise_std__string__ {
15
+ public typealias bridge = margelo.nitro.audiobrowser.bridge.swift
16
+
17
+ private let closure: () -> Promise<String>
18
+
19
+ public init(_ closure: @escaping () -> Promise<String>) {
20
+ self.closure = closure
21
+ }
22
+
23
+ @inline(__always)
24
+ public func call() -> bridge.std__shared_ptr_Promise_std__string__ {
25
+ let __result: Promise<String> = self.closure()
26
+ return { () -> bridge.std__shared_ptr_Promise_std__string__ in
27
+ let __promise = bridge.create_std__shared_ptr_Promise_std__string__()
28
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__string__(__promise)
29
+ __result
30
+ .then({ __result in __promiseHolder.resolve(std.string(__result)) })
31
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
32
+ return __promise
33
+ }()
34
+ }
35
+
36
+ /**
37
+ * Casts this instance to a retained unsafe raw pointer.
38
+ * This acquires one additional strong reference on the object!
39
+ */
40
+ @inline(__always)
41
+ public func toUnsafe() -> UnsafeMutableRawPointer {
42
+ return Unmanaged.passRetained(self).toOpaque()
43
+ }
44
+
45
+ /**
46
+ * Casts an unsafe pointer to a `Func_std__shared_ptr_Promise_std__string__`.
47
+ * The pointer has to be a retained opaque `Unmanaged<Func_std__shared_ptr_Promise_std__string__>`.
48
+ * This removes one strong reference from the object!
49
+ */
50
+ @inline(__always)
51
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_std__shared_ptr_Promise_std__string__ {
52
+ return Unmanaged<Func_std__shared_ptr_Promise_std__string__>.fromOpaque(pointer).takeRetainedValue()
53
+ }
54
+ }
@@ -0,0 +1,44 @@
1
+ ///
2
+ /// GridTile.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `GridTile`, backed by a C++ enum.
10
+ */
11
+ public typealias GridTile = margelo.nitro.audiobrowser.GridTile
12
+
13
+ public extension GridTile {
14
+ /**
15
+ * Get a GridTile for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "plain":
21
+ self = .plain
22
+ case "card":
23
+ self = .card
24
+ case "condensed":
25
+ self = .condensed
26
+ default:
27
+ return nil
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Get the String value this GridTile represents.
33
+ */
34
+ var stringValue: String {
35
+ switch self {
36
+ case .plain:
37
+ return "plain"
38
+ case .card:
39
+ return "card"
40
+ case .condensed:
41
+ return "condensed"
42
+ }
43
+ }
44
+ }
@@ -71,7 +71,7 @@ public protocol HybridAudioBrowserSpec_protocol: HybridObject {
71
71
  // Methods
72
72
  func navigatePath(path: String) throws -> Void
73
73
  func navigateTrack(track: Track) throws -> Void
74
- func onSearch(query: String) throws -> Promise<[Track]>
74
+ func search(query: String) throws -> Promise<[Track]>
75
75
  func getContent() throws -> ResolvedTrack?
76
76
  func getNavigationError() throws -> NavigationError?
77
77
  func getFormattedNavigationError() throws -> FormattedNavigationError?
@@ -1445,9 +1445,9 @@ open class HybridAudioBrowserSpec_cxx {
1445
1445
  }
1446
1446
 
1447
1447
  @inline(__always)
1448
- public final func onSearch(query: std.string) -> bridge.Result_std__shared_ptr_Promise_std__vector_Track____ {
1448
+ public final func search(query: std.string) -> bridge.Result_std__shared_ptr_Promise_std__vector_Track____ {
1449
1449
  do {
1450
- let __result = try self.__implementation.onSearch(query: String(query))
1450
+ let __result = try self.__implementation.search(query: String(query))
1451
1451
  let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__vector_Track___ in
1452
1452
  let __promise = bridge.create_std__shared_ptr_Promise_std__vector_Track___()
1453
1453
  let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__vector_Track___(__promise)
@@ -18,7 +18,7 @@ public extension IOSOptions {
18
18
  /**
19
19
  * Create a new instance of `IOSOptions`.
20
20
  */
21
- init(playbackRates: [Double], carPlayUpNextButton: Bool, carPlayNowPlayingButtons: [CarPlayNowPlayingButton]) {
21
+ init(playbackRates: [Double], carPlayUpNextButton: Bool, carPlayNowPlayingButtons: [CarPlayNowPlayingButton], carPlayPlayingIndicatorLocation: CarPlayPlayingIndicatorLocation) {
22
22
  self.init({ () -> bridge.std__vector_double_ in
23
23
  var __vector = bridge.create_std__vector_double_(playbackRates.count)
24
24
  for __item in playbackRates {
@@ -31,7 +31,7 @@ public extension IOSOptions {
31
31
  __vector.push_back(__item)
32
32
  }
33
33
  return __vector
34
- }())
34
+ }(), carPlayPlayingIndicatorLocation)
35
35
  }
36
36
 
37
37
  @inline(__always)
@@ -48,4 +48,9 @@ public extension IOSOptions {
48
48
  var carPlayNowPlayingButtons: [CarPlayNowPlayingButton] {
49
49
  return self.__carPlayNowPlayingButtons.map({ __item in __item })
50
50
  }
51
+
52
+ @inline(__always)
53
+ var carPlayPlayingIndicatorLocation: CarPlayPlayingIndicatorLocation {
54
+ return self.__carPlayPlayingIndicatorLocation
55
+ }
51
56
  }
@@ -0,0 +1,40 @@
1
+ ///
2
+ /// ImageShape.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /**
9
+ * Represents the JS union `ImageShape`, backed by a C++ enum.
10
+ */
11
+ public typealias ImageShape = margelo.nitro.audiobrowser.ImageShape
12
+
13
+ public extension ImageShape {
14
+ /**
15
+ * Get a ImageShape for the given String value, or
16
+ * return `nil` if the given value was invalid/unknown.
17
+ */
18
+ init?(fromString string: String) {
19
+ switch string {
20
+ case "circular":
21
+ self = .circular
22
+ case "rounded-rectangle":
23
+ self = .roundedRectangle
24
+ default:
25
+ return nil
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Get the String value this ImageShape represents.
31
+ */
32
+ var stringValue: String {
33
+ switch self {
34
+ case .circular:
35
+ return "circular"
36
+ case .roundedRectangle:
37
+ return "rounded-rectangle"
38
+ }
39
+ }
40
+ }