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.
@@ -108,10 +112,6 @@ namespace margelo::nitro::audiobrowser { struct NavigationError; }
108
112
  namespace margelo::nitro::audiobrowser { struct NitroAndroidUpdateOptions; }
109
113
  // Forward declaration of `NitroIOSUpdateOptions` to properly resolve imports.
110
114
  namespace margelo::nitro::audiobrowser { struct NitroIOSUpdateOptions; }
111
- // Forward declaration of `NotificationButtonLayout` to properly resolve imports.
112
- namespace margelo::nitro::audiobrowser { struct NotificationButtonLayout; }
113
- // Forward declaration of `NotificationButton` to properly resolve imports.
114
- namespace margelo::nitro::audiobrowser { enum class NotificationButton; }
115
115
  // Forward declaration of `NowPlayingMetadata` to properly resolve imports.
116
116
  namespace margelo::nitro::audiobrowser { struct NowPlayingMetadata; }
117
117
  // Forward declaration of `NowPlayingUpdate` to properly resolve imports.
@@ -146,6 +146,10 @@ namespace margelo::nitro::audiobrowser { struct PlayerCapabilities; }
146
146
  namespace margelo::nitro::audiobrowser { struct PlayingState; }
147
147
  // Forward declaration of `Progress` to properly resolve imports.
148
148
  namespace margelo::nitro::audiobrowser { struct Progress; }
149
+ // Forward declaration of `RemoteButtonLayout` to properly resolve imports.
150
+ namespace margelo::nitro::audiobrowser { struct RemoteButtonLayout; }
151
+ // Forward declaration of `RemoteButton` to properly resolve imports.
152
+ namespace margelo::nitro::audiobrowser { enum class RemoteButton; }
149
153
  // Forward declaration of `RemoteJumpBackwardEvent` to properly resolve imports.
150
154
  namespace margelo::nitro::audiobrowser { struct RemoteJumpBackwardEvent; }
151
155
  // Forward declaration of `RemoteJumpForwardEvent` to properly resolve imports.
@@ -172,12 +176,18 @@ namespace margelo::nitro::audiobrowser { struct RetryConfig; }
172
176
  namespace margelo::nitro::audiobrowser { enum class SearchMode; }
173
177
  // Forward declaration of `SearchParams` to properly resolve imports.
174
178
  namespace margelo::nitro::audiobrowser { struct SearchParams; }
179
+ // Forward declaration of `SectionStyle` to properly resolve imports.
180
+ namespace margelo::nitro::audiobrowser { struct SectionStyle; }
181
+ // Forward declaration of `Section` to properly resolve imports.
182
+ namespace margelo::nitro::audiobrowser { struct Section; }
175
183
  // Forward declaration of `SleepTimerEndOfTrack` to properly resolve imports.
176
184
  namespace margelo::nitro::audiobrowser { struct SleepTimerEndOfTrack; }
177
185
  // Forward declaration of `SleepTimerTime` to properly resolve imports.
178
186
  namespace margelo::nitro::audiobrowser { struct SleepTimerTime; }
179
187
  // Forward declaration of `StallReason` to properly resolve imports.
180
188
  namespace margelo::nitro::audiobrowser { enum class StallReason; }
189
+ // Forward declaration of `StyleDisplay` to properly resolve imports.
190
+ namespace margelo::nitro::audiobrowser { enum class StyleDisplay; }
181
191
  // Forward declaration of `TimedMetadata` to properly resolve imports.
182
192
  namespace margelo::nitro::audiobrowser { struct TimedMetadata; }
183
193
  // Forward declaration of `TrackLoadEvent` to properly resolve imports.
@@ -187,7 +197,7 @@ namespace margelo::nitro::audiobrowser { struct TrackMetadata; }
187
197
  // Forward declaration of `TrackRequest` to properly resolve imports.
188
198
  namespace margelo::nitro::audiobrowser { struct TrackRequest; }
189
199
  // Forward declaration of `TrackStyle` to properly resolve imports.
190
- namespace margelo::nitro::audiobrowser { enum class TrackStyle; }
200
+ namespace margelo::nitro::audiobrowser { struct TrackStyle; }
191
201
  // Forward declaration of `Track` to properly resolve imports.
192
202
  namespace margelo::nitro::audiobrowser { struct Track; }
193
203
  // Forward declaration of `TransformableRequestConfig` to properly resolve imports.
@@ -203,6 +213,7 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
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 AudioBrowser { class HybridAudioBrowserSpec_cxx; }
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 AudioBrowser { class HybridAudioBrowserSpec_cxx; }
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 AudioBrowser { class HybridAudioBrowserSpec_cxx; }
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"
@@ -248,8 +260,6 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
248
260
  #include "NavigationErrorType.hpp"
249
261
  #include "NitroAndroidUpdateOptions.hpp"
250
262
  #include "NitroIOSUpdateOptions.hpp"
251
- #include "NotificationButton.hpp"
252
- #include "NotificationButtonLayout.hpp"
253
263
  #include "NowPlayingMetadata.hpp"
254
264
  #include "NowPlayingUpdate.hpp"
255
265
  #include "Options.hpp"
@@ -267,6 +277,8 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
267
277
  #include "PlayerCapabilities.hpp"
268
278
  #include "PlayingState.hpp"
269
279
  #include "Progress.hpp"
280
+ #include "RemoteButton.hpp"
281
+ #include "RemoteButtonLayout.hpp"
270
282
  #include "RemoteJumpBackwardEvent.hpp"
271
283
  #include "RemoteJumpForwardEvent.hpp"
272
284
  #include "RemotePlayIdEvent.hpp"
@@ -280,9 +292,12 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
280
292
  #include "RetryConfig.hpp"
281
293
  #include "SearchMode.hpp"
282
294
  #include "SearchParams.hpp"
295
+ #include "Section.hpp"
296
+ #include "SectionStyle.hpp"
283
297
  #include "SleepTimerEndOfTrack.hpp"
284
298
  #include "SleepTimerTime.hpp"
285
299
  #include "StallReason.hpp"
300
+ #include "StyleDisplay.hpp"
286
301
  #include "TimedMetadata.hpp"
287
302
  #include "Track.hpp"
288
303
  #include "TrackLoadEvent.hpp"
@@ -453,21 +468,6 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
453
468
  return optional.value();
454
469
  }
455
470
 
456
- // pragma MARK: std::optional<bool>
457
- /**
458
- * Specialized version of `std::optional<bool>`.
459
- */
460
- using std__optional_bool_ = std::optional<bool>;
461
- inline std::optional<bool> create_std__optional_bool_(const bool& value) noexcept {
462
- return std::optional<bool>(value);
463
- }
464
- inline bool has_value_std__optional_bool_(const std::optional<bool>& optional) noexcept {
465
- return optional.has_value();
466
- }
467
- inline bool get_std__optional_bool_(const std::optional<bool>& optional) noexcept {
468
- return optional.value();
469
- }
470
-
471
471
  // pragma MARK: std::optional<double>
472
472
  /**
473
473
  * Specialized version of `std::optional<double>`.
@@ -498,30 +498,79 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
498
498
  return optional.value();
499
499
  }
500
500
 
501
- // pragma MARK: std::optional<std::vector<ImageRowItem>>
501
+ // pragma MARK: std::optional<StyleDisplay>
502
502
  /**
503
- * Specialized version of `std::optional<std::vector<ImageRowItem>>`.
503
+ * Specialized version of `std::optional<StyleDisplay>`.
504
504
  */
505
- using std__optional_std__vector_ImageRowItem__ = std::optional<std::vector<ImageRowItem>>;
506
- inline std::optional<std::vector<ImageRowItem>> create_std__optional_std__vector_ImageRowItem__(const std::vector<ImageRowItem>& value) noexcept {
507
- return std::optional<std::vector<ImageRowItem>>(value);
505
+ using std__optional_StyleDisplay_ = std::optional<StyleDisplay>;
506
+ inline std::optional<StyleDisplay> create_std__optional_StyleDisplay_(const StyleDisplay& value) noexcept {
507
+ return std::optional<StyleDisplay>(value);
508
508
  }
509
- inline bool has_value_std__optional_std__vector_ImageRowItem__(const std::optional<std::vector<ImageRowItem>>& optional) noexcept {
509
+ inline bool has_value_std__optional_StyleDisplay_(const std::optional<StyleDisplay>& optional) noexcept {
510
510
  return optional.has_value();
511
511
  }
512
- inline std::vector<ImageRowItem> get_std__optional_std__vector_ImageRowItem__(const std::optional<std::vector<ImageRowItem>>& optional) noexcept {
512
+ inline StyleDisplay get_std__optional_StyleDisplay_(const std::optional<StyleDisplay>& optional) noexcept {
513
513
  return optional.value();
514
514
  }
515
515
 
516
- // pragma MARK: std::vector<ImageRowItem>
516
+ // pragma MARK: std::optional<ArtworkRendering>
517
517
  /**
518
- * Specialized version of `std::vector<ImageRowItem>`.
518
+ * Specialized version of `std::optional<ArtworkRendering>`.
519
519
  */
520
- using std__vector_ImageRowItem_ = std::vector<ImageRowItem>;
521
- inline std::vector<ImageRowItem> create_std__vector_ImageRowItem_(size_t size) noexcept {
522
- std::vector<ImageRowItem> vector;
523
- vector.reserve(size);
524
- return vector;
520
+ using std__optional_ArtworkRendering_ = std::optional<ArtworkRendering>;
521
+ inline std::optional<ArtworkRendering> create_std__optional_ArtworkRendering_(const ArtworkRendering& value) noexcept {
522
+ return std::optional<ArtworkRendering>(value);
523
+ }
524
+ inline bool has_value_std__optional_ArtworkRendering_(const std::optional<ArtworkRendering>& optional) noexcept {
525
+ return optional.has_value();
526
+ }
527
+ inline ArtworkRendering get_std__optional_ArtworkRendering_(const std::optional<ArtworkRendering>& optional) noexcept {
528
+ return optional.value();
529
+ }
530
+
531
+ // pragma MARK: std::optional<ImageShape>
532
+ /**
533
+ * Specialized version of `std::optional<ImageShape>`.
534
+ */
535
+ using std__optional_ImageShape_ = std::optional<ImageShape>;
536
+ inline std::optional<ImageShape> create_std__optional_ImageShape_(const ImageShape& value) noexcept {
537
+ return std::optional<ImageShape>(value);
538
+ }
539
+ inline bool has_value_std__optional_ImageShape_(const std::optional<ImageShape>& optional) noexcept {
540
+ return optional.has_value();
541
+ }
542
+ inline ImageShape get_std__optional_ImageShape_(const std::optional<ImageShape>& optional) noexcept {
543
+ return optional.value();
544
+ }
545
+
546
+ // pragma MARK: std::optional<CardImage>
547
+ /**
548
+ * Specialized version of `std::optional<CardImage>`.
549
+ */
550
+ using std__optional_CardImage_ = std::optional<CardImage>;
551
+ inline std::optional<CardImage> create_std__optional_CardImage_(const CardImage& value) noexcept {
552
+ return std::optional<CardImage>(value);
553
+ }
554
+ inline bool has_value_std__optional_CardImage_(const std::optional<CardImage>& optional) noexcept {
555
+ return optional.has_value();
556
+ }
557
+ inline CardImage get_std__optional_CardImage_(const std::optional<CardImage>& optional) noexcept {
558
+ return optional.value();
559
+ }
560
+
561
+ // pragma MARK: std::optional<bool>
562
+ /**
563
+ * Specialized version of `std::optional<bool>`.
564
+ */
565
+ using std__optional_bool_ = std::optional<bool>;
566
+ inline std::optional<bool> create_std__optional_bool_(const bool& value) noexcept {
567
+ return std::optional<bool>(value);
568
+ }
569
+ inline bool has_value_std__optional_bool_(const std::optional<bool>& optional) noexcept {
570
+ return optional.has_value();
571
+ }
572
+ inline bool get_std__optional_bool_(const std::optional<bool>& optional) noexcept {
573
+ return optional.value();
525
574
  }
526
575
 
527
576
  // pragma MARK: std::vector<Track>
@@ -606,6 +655,62 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
606
655
  return Func_void_std__exception_ptr_Wrapper(std::move(value));
607
656
  }
608
657
 
658
+ // pragma MARK: std::optional<SectionStyle>
659
+ /**
660
+ * Specialized version of `std::optional<SectionStyle>`.
661
+ */
662
+ using std__optional_SectionStyle_ = std::optional<SectionStyle>;
663
+ inline std::optional<SectionStyle> create_std__optional_SectionStyle_(const SectionStyle& value) noexcept {
664
+ return std::optional<SectionStyle>(value);
665
+ }
666
+ inline bool has_value_std__optional_SectionStyle_(const std::optional<SectionStyle>& optional) noexcept {
667
+ return optional.has_value();
668
+ }
669
+ inline SectionStyle get_std__optional_SectionStyle_(const std::optional<SectionStyle>& optional) noexcept {
670
+ return optional.value();
671
+ }
672
+
673
+ // pragma MARK: std::optional<GridTile>
674
+ /**
675
+ * Specialized version of `std::optional<GridTile>`.
676
+ */
677
+ using std__optional_GridTile_ = std::optional<GridTile>;
678
+ inline std::optional<GridTile> create_std__optional_GridTile_(const GridTile& value) noexcept {
679
+ return std::optional<GridTile>(value);
680
+ }
681
+ inline bool has_value_std__optional_GridTile_(const std::optional<GridTile>& optional) noexcept {
682
+ return optional.has_value();
683
+ }
684
+ inline GridTile get_std__optional_GridTile_(const std::optional<GridTile>& optional) noexcept {
685
+ return optional.value();
686
+ }
687
+
688
+ // pragma MARK: std::optional<std::vector<Section>>
689
+ /**
690
+ * Specialized version of `std::optional<std::vector<Section>>`.
691
+ */
692
+ using std__optional_std__vector_Section__ = std::optional<std::vector<Section>>;
693
+ inline std::optional<std::vector<Section>> create_std__optional_std__vector_Section__(const std::vector<Section>& value) noexcept {
694
+ return std::optional<std::vector<Section>>(value);
695
+ }
696
+ inline bool has_value_std__optional_std__vector_Section__(const std::optional<std::vector<Section>>& optional) noexcept {
697
+ return optional.has_value();
698
+ }
699
+ inline std::vector<Section> get_std__optional_std__vector_Section__(const std::optional<std::vector<Section>>& optional) noexcept {
700
+ return optional.value();
701
+ }
702
+
703
+ // pragma MARK: std::vector<Section>
704
+ /**
705
+ * Specialized version of `std::vector<Section>`.
706
+ */
707
+ using std__vector_Section_ = std::vector<Section>;
708
+ inline std::vector<Section> create_std__vector_Section_(size_t size) noexcept {
709
+ std::vector<Section> vector;
710
+ vector.reserve(size);
711
+ return vector;
712
+ }
713
+
609
714
  // pragma MARK: std::optional<CarPlaySiriListButtonPosition>
610
715
  /**
611
716
  * Specialized version of `std::optional<CarPlaySiriListButtonPosition>`.
@@ -1631,6 +1736,56 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
1631
1736
  return Func_void_Wrapper(std::move(value));
1632
1737
  }
1633
1738
 
1739
+ // pragma MARK: std::optional<std::function<std::shared_ptr<Promise<std::string>>()>>
1740
+ /**
1741
+ * Specialized version of `std::optional<std::function<std::shared_ptr<Promise<std::string>>()>>`.
1742
+ */
1743
+ using std__optional_std__function_std__shared_ptr_Promise_std__string______ = std::optional<std::function<std::shared_ptr<Promise<std::string>>()>>;
1744
+ inline std::optional<std::function<std::shared_ptr<Promise<std::string>>()>> create_std__optional_std__function_std__shared_ptr_Promise_std__string______(const std::function<std::shared_ptr<Promise<std::string>>()>& value) noexcept {
1745
+ return std::optional<std::function<std::shared_ptr<Promise<std::string>>()>>(value);
1746
+ }
1747
+ inline bool has_value_std__optional_std__function_std__shared_ptr_Promise_std__string______(const std::optional<std::function<std::shared_ptr<Promise<std::string>>()>>& optional) noexcept {
1748
+ return optional.has_value();
1749
+ }
1750
+ inline std::function<std::shared_ptr<Promise<std::string>>()> get_std__optional_std__function_std__shared_ptr_Promise_std__string______(const std::optional<std::function<std::shared_ptr<Promise<std::string>>()>>& optional) noexcept {
1751
+ return optional.value();
1752
+ }
1753
+
1754
+ // pragma MARK: std::function<std::shared_ptr<Promise<std::string>>()>
1755
+ /**
1756
+ * Specialized version of `std::function<std::shared_ptr<Promise<std::string>>()>`.
1757
+ */
1758
+ using Func_std__shared_ptr_Promise_std__string__ = std::function<std::shared_ptr<Promise<std::string>>()>;
1759
+ /**
1760
+ * Wrapper class for a `std::function<std::shared_ptr<Promise<std::string>>()>`, this can be used from Swift.
1761
+ */
1762
+ class Func_std__shared_ptr_Promise_std__string___Wrapper final {
1763
+ public:
1764
+ explicit Func_std__shared_ptr_Promise_std__string___Wrapper(std::function<std::shared_ptr<Promise<std::string>>()>&& func): _function(std::make_unique<std::function<std::shared_ptr<Promise<std::string>>()>>(std::move(func))) {}
1765
+ inline std::shared_ptr<Promise<std::string>> call() const noexcept {
1766
+ auto __result = _function->operator()();
1767
+ return __result;
1768
+ }
1769
+ private:
1770
+ std::unique_ptr<std::function<std::shared_ptr<Promise<std::string>>()>> _function;
1771
+ } SWIFT_NONCOPYABLE;
1772
+ Func_std__shared_ptr_Promise_std__string__ create_Func_std__shared_ptr_Promise_std__string__(void* NON_NULL swiftClosureWrapper) noexcept;
1773
+ inline Func_std__shared_ptr_Promise_std__string___Wrapper wrap_Func_std__shared_ptr_Promise_std__string__(Func_std__shared_ptr_Promise_std__string__ value) noexcept {
1774
+ return Func_std__shared_ptr_Promise_std__string___Wrapper(std::move(value));
1775
+ }
1776
+
1777
+ // pragma MARK: std::shared_ptr<Promise<std::string>>
1778
+ /**
1779
+ * Specialized version of `std::shared_ptr<Promise<std::string>>`.
1780
+ */
1781
+ using std__shared_ptr_Promise_std__string__ = std::shared_ptr<Promise<std::string>>;
1782
+ inline std::shared_ptr<Promise<std::string>> create_std__shared_ptr_Promise_std__string__() noexcept {
1783
+ return Promise<std::string>::create();
1784
+ }
1785
+ inline PromiseHolder<std::string> wrap_std__shared_ptr_Promise_std__string__(std::shared_ptr<Promise<std::string>> promise) noexcept {
1786
+ return PromiseHolder<std::string>(std::move(promise));
1787
+ }
1788
+
1634
1789
  // pragma MARK: std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const Track& /* track */)>>
1635
1790
  /**
1636
1791
  * Specialized version of `std::optional<std::function<std::shared_ptr<Promise<std::optional<std::string>>>(const Track& / * track * /)>>`.
@@ -2182,31 +2337,31 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
2182
2337
  return optional.value();
2183
2338
  }
2184
2339
 
2185
- // pragma MARK: std::optional<std::variant<nitro::NullType, NotificationButtonLayout>>
2340
+ // pragma MARK: std::optional<std::variant<nitro::NullType, RemoteButtonLayout>>
2186
2341
  /**
2187
- * Specialized version of `std::optional<std::variant<nitro::NullType, NotificationButtonLayout>>`.
2342
+ * Specialized version of `std::optional<std::variant<nitro::NullType, RemoteButtonLayout>>`.
2188
2343
  */
2189
- using std__optional_std__variant_nitro__NullType__NotificationButtonLayout__ = std::optional<std::variant<nitro::NullType, NotificationButtonLayout>>;
2190
- inline std::optional<std::variant<nitro::NullType, NotificationButtonLayout>> create_std__optional_std__variant_nitro__NullType__NotificationButtonLayout__(const std::variant<nitro::NullType, NotificationButtonLayout>& value) noexcept {
2191
- return std::optional<std::variant<nitro::NullType, NotificationButtonLayout>>(value);
2344
+ using std__optional_std__variant_nitro__NullType__RemoteButtonLayout__ = std::optional<std::variant<nitro::NullType, RemoteButtonLayout>>;
2345
+ inline std::optional<std::variant<nitro::NullType, RemoteButtonLayout>> create_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__(const std::variant<nitro::NullType, RemoteButtonLayout>& value) noexcept {
2346
+ return std::optional<std::variant<nitro::NullType, RemoteButtonLayout>>(value);
2192
2347
  }
2193
- inline bool has_value_std__optional_std__variant_nitro__NullType__NotificationButtonLayout__(const std::optional<std::variant<nitro::NullType, NotificationButtonLayout>>& optional) noexcept {
2348
+ inline bool has_value_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__(const std::optional<std::variant<nitro::NullType, RemoteButtonLayout>>& optional) noexcept {
2194
2349
  return optional.has_value();
2195
2350
  }
2196
- inline std::variant<nitro::NullType, NotificationButtonLayout> get_std__optional_std__variant_nitro__NullType__NotificationButtonLayout__(const std::optional<std::variant<nitro::NullType, NotificationButtonLayout>>& optional) noexcept {
2351
+ inline std::variant<nitro::NullType, RemoteButtonLayout> get_std__optional_std__variant_nitro__NullType__RemoteButtonLayout__(const std::optional<std::variant<nitro::NullType, RemoteButtonLayout>>& optional) noexcept {
2197
2352
  return optional.value();
2198
2353
  }
2199
2354
 
2200
- // pragma MARK: std::variant<nitro::NullType, NotificationButtonLayout>
2355
+ // pragma MARK: std::variant<nitro::NullType, RemoteButtonLayout>
2201
2356
  /**
2202
- * Wrapper struct for `std::variant<nitro::NullType, NotificationButtonLayout>`.
2357
+ * Wrapper struct for `std::variant<nitro::NullType, RemoteButtonLayout>`.
2203
2358
  * std::variant cannot be used in Swift because of a Swift bug.
2204
2359
  * Not even specializing it works. So we create a wrapper struct.
2205
2360
  */
2206
- struct std__variant_nitro__NullType__NotificationButtonLayout_ final {
2207
- std::variant<nitro::NullType, NotificationButtonLayout> variant;
2208
- std__variant_nitro__NullType__NotificationButtonLayout_(std::variant<nitro::NullType, NotificationButtonLayout> variant): variant(variant) { }
2209
- operator std::variant<nitro::NullType, NotificationButtonLayout>() const noexcept {
2361
+ struct std__variant_nitro__NullType__RemoteButtonLayout_ final {
2362
+ std::variant<nitro::NullType, RemoteButtonLayout> variant;
2363
+ std__variant_nitro__NullType__RemoteButtonLayout_(std::variant<nitro::NullType, RemoteButtonLayout> variant): variant(variant) { }
2364
+ operator std::variant<nitro::NullType, RemoteButtonLayout>() const noexcept {
2210
2365
  return variant;
2211
2366
  }
2212
2367
  inline size_t index() const noexcept {
@@ -2215,54 +2370,39 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
2215
2370
  inline nitro::NullType get_0() const noexcept {
2216
2371
  return std::get<0>(variant);
2217
2372
  }
2218
- inline NotificationButtonLayout get_1() const noexcept {
2373
+ inline RemoteButtonLayout get_1() const noexcept {
2219
2374
  return std::get<1>(variant);
2220
2375
  }
2221
2376
  };
2222
- inline std__variant_nitro__NullType__NotificationButtonLayout_ create_std__variant_nitro__NullType__NotificationButtonLayout_(nitro::NullType value) noexcept {
2223
- return std__variant_nitro__NullType__NotificationButtonLayout_(value);
2377
+ inline std__variant_nitro__NullType__RemoteButtonLayout_ create_std__variant_nitro__NullType__RemoteButtonLayout_(nitro::NullType value) noexcept {
2378
+ return std__variant_nitro__NullType__RemoteButtonLayout_(value);
2224
2379
  }
2225
- inline std__variant_nitro__NullType__NotificationButtonLayout_ create_std__variant_nitro__NullType__NotificationButtonLayout_(const NotificationButtonLayout& value) noexcept {
2226
- return std__variant_nitro__NullType__NotificationButtonLayout_(value);
2380
+ inline std__variant_nitro__NullType__RemoteButtonLayout_ create_std__variant_nitro__NullType__RemoteButtonLayout_(const RemoteButtonLayout& value) noexcept {
2381
+ return std__variant_nitro__NullType__RemoteButtonLayout_(value);
2227
2382
  }
2228
2383
 
2229
- // pragma MARK: std::optional<NotificationButton>
2384
+ // pragma MARK: std::optional<RemoteButton>
2230
2385
  /**
2231
- * Specialized version of `std::optional<NotificationButton>`.
2386
+ * Specialized version of `std::optional<RemoteButton>`.
2232
2387
  */
2233
- using std__optional_NotificationButton_ = std::optional<NotificationButton>;
2234
- inline std::optional<NotificationButton> create_std__optional_NotificationButton_(const NotificationButton& value) noexcept {
2235
- return std::optional<NotificationButton>(value);
2388
+ using std__optional_RemoteButton_ = std::optional<RemoteButton>;
2389
+ inline std::optional<RemoteButton> create_std__optional_RemoteButton_(const RemoteButton& value) noexcept {
2390
+ return std::optional<RemoteButton>(value);
2236
2391
  }
2237
- inline bool has_value_std__optional_NotificationButton_(const std::optional<NotificationButton>& optional) noexcept {
2392
+ inline bool has_value_std__optional_RemoteButton_(const std::optional<RemoteButton>& optional) noexcept {
2238
2393
  return optional.has_value();
2239
2394
  }
2240
- inline NotificationButton get_std__optional_NotificationButton_(const std::optional<NotificationButton>& optional) noexcept {
2395
+ inline RemoteButton get_std__optional_RemoteButton_(const std::optional<RemoteButton>& optional) noexcept {
2241
2396
  return optional.value();
2242
2397
  }
2243
2398
 
2244
- // pragma MARK: std::optional<std::vector<NotificationButton>>
2399
+ // pragma MARK: std::vector<RemoteButton>
2245
2400
  /**
2246
- * Specialized version of `std::optional<std::vector<NotificationButton>>`.
2401
+ * Specialized version of `std::vector<RemoteButton>`.
2247
2402
  */
2248
- using std__optional_std__vector_NotificationButton__ = std::optional<std::vector<NotificationButton>>;
2249
- inline std::optional<std::vector<NotificationButton>> create_std__optional_std__vector_NotificationButton__(const std::vector<NotificationButton>& value) noexcept {
2250
- return std::optional<std::vector<NotificationButton>>(value);
2251
- }
2252
- inline bool has_value_std__optional_std__vector_NotificationButton__(const std::optional<std::vector<NotificationButton>>& optional) noexcept {
2253
- return optional.has_value();
2254
- }
2255
- inline std::vector<NotificationButton> get_std__optional_std__vector_NotificationButton__(const std::optional<std::vector<NotificationButton>>& optional) noexcept {
2256
- return optional.value();
2257
- }
2258
-
2259
- // pragma MARK: std::vector<NotificationButton>
2260
- /**
2261
- * Specialized version of `std::vector<NotificationButton>`.
2262
- */
2263
- using std__vector_NotificationButton_ = std::vector<NotificationButton>;
2264
- inline std::vector<NotificationButton> create_std__vector_NotificationButton_(size_t size) noexcept {
2265
- std::vector<NotificationButton> vector;
2403
+ using std__vector_RemoteButton_ = std::vector<RemoteButton>;
2404
+ inline std::vector<RemoteButton> create_std__vector_RemoteButton_(size_t size) noexcept {
2405
+ std::vector<RemoteButton> vector;
2266
2406
  vector.reserve(size);
2267
2407
  return vector;
2268
2408
  }
@@ -2334,65 +2474,36 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
2334
2474
  return vector;
2335
2475
  }
2336
2476
 
2337
- // pragma MARK: std::optional<PlayerCapabilities>
2477
+ // pragma MARK: std::optional<CarPlayPlayingIndicatorLocation>
2338
2478
  /**
2339
- * Specialized version of `std::optional<PlayerCapabilities>`.
2479
+ * Specialized version of `std::optional<CarPlayPlayingIndicatorLocation>`.
2340
2480
  */
2341
- using std__optional_PlayerCapabilities_ = std::optional<PlayerCapabilities>;
2342
- inline std::optional<PlayerCapabilities> create_std__optional_PlayerCapabilities_(const PlayerCapabilities& value) noexcept {
2343
- return std::optional<PlayerCapabilities>(value);
2481
+ using std__optional_CarPlayPlayingIndicatorLocation_ = std::optional<CarPlayPlayingIndicatorLocation>;
2482
+ inline std::optional<CarPlayPlayingIndicatorLocation> create_std__optional_CarPlayPlayingIndicatorLocation_(const CarPlayPlayingIndicatorLocation& value) noexcept {
2483
+ return std::optional<CarPlayPlayingIndicatorLocation>(value);
2344
2484
  }
2345
- inline bool has_value_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2485
+ inline bool has_value_std__optional_CarPlayPlayingIndicatorLocation_(const std::optional<CarPlayPlayingIndicatorLocation>& optional) noexcept {
2346
2486
  return optional.has_value();
2347
2487
  }
2348
- inline PlayerCapabilities get_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2488
+ inline CarPlayPlayingIndicatorLocation get_std__optional_CarPlayPlayingIndicatorLocation_(const std::optional<CarPlayPlayingIndicatorLocation>& optional) noexcept {
2349
2489
  return optional.value();
2350
2490
  }
2351
2491
 
2352
- // pragma MARK: std::optional<std::variant<bool, FavoriteConfig>>
2492
+ // pragma MARK: std::optional<PlayerCapabilities>
2353
2493
  /**
2354
- * Specialized version of `std::optional<std::variant<bool, FavoriteConfig>>`.
2494
+ * Specialized version of `std::optional<PlayerCapabilities>`.
2355
2495
  */
2356
- using std__optional_std__variant_bool__FavoriteConfig__ = std::optional<std::variant<bool, FavoriteConfig>>;
2357
- inline std::optional<std::variant<bool, FavoriteConfig>> create_std__optional_std__variant_bool__FavoriteConfig__(const std::variant<bool, FavoriteConfig>& value) noexcept {
2358
- return std::optional<std::variant<bool, FavoriteConfig>>(value);
2496
+ using std__optional_PlayerCapabilities_ = std::optional<PlayerCapabilities>;
2497
+ inline std::optional<PlayerCapabilities> create_std__optional_PlayerCapabilities_(const PlayerCapabilities& value) noexcept {
2498
+ return std::optional<PlayerCapabilities>(value);
2359
2499
  }
2360
- inline bool has_value_std__optional_std__variant_bool__FavoriteConfig__(const std::optional<std::variant<bool, FavoriteConfig>>& optional) noexcept {
2500
+ inline bool has_value_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2361
2501
  return optional.has_value();
2362
2502
  }
2363
- inline std::variant<bool, FavoriteConfig> get_std__optional_std__variant_bool__FavoriteConfig__(const std::optional<std::variant<bool, FavoriteConfig>>& optional) noexcept {
2503
+ inline PlayerCapabilities get_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2364
2504
  return optional.value();
2365
2505
  }
2366
2506
 
2367
- // pragma MARK: std::variant<bool, FavoriteConfig>
2368
- /**
2369
- * Wrapper struct for `std::variant<bool, FavoriteConfig>`.
2370
- * std::variant cannot be used in Swift because of a Swift bug.
2371
- * Not even specializing it works. So we create a wrapper struct.
2372
- */
2373
- struct std__variant_bool__FavoriteConfig_ final {
2374
- std::variant<bool, FavoriteConfig> variant;
2375
- std__variant_bool__FavoriteConfig_(std::variant<bool, FavoriteConfig> variant): variant(variant) { }
2376
- operator std::variant<bool, FavoriteConfig>() const noexcept {
2377
- return variant;
2378
- }
2379
- inline size_t index() const noexcept {
2380
- return variant.index();
2381
- }
2382
- inline bool get_0() const noexcept {
2383
- return std::get<0>(variant);
2384
- }
2385
- inline FavoriteConfig get_1() const noexcept {
2386
- return std::get<1>(variant);
2387
- }
2388
- };
2389
- inline std__variant_bool__FavoriteConfig_ create_std__variant_bool__FavoriteConfig_(bool value) noexcept {
2390
- return std__variant_bool__FavoriteConfig_(value);
2391
- }
2392
- inline std__variant_bool__FavoriteConfig_ create_std__variant_bool__FavoriteConfig_(const FavoriteConfig& value) noexcept {
2393
- return std__variant_bool__FavoriteConfig_(value);
2394
- }
2395
-
2396
2507
  // pragma MARK: std::optional<std::function<std::shared_ptr<Promise<std::optional<NowPlayingUpdate>>>(const FormatNowPlayingParams& /* params */)>>
2397
2508
  /**
2398
2509
  * Specialized version of `std::optional<std::function<std::shared_ptr<Promise<std::optional<NowPlayingUpdate>>>(const FormatNowPlayingParams& / * params * /)>>`.