react-native-audio-browser 0.2.0-next.10 → 0.2.0-next.12

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 (345) hide show
  1. package/README.md +4 -4
  2. package/android/build.gradle +6 -5
  3. package/android/gradle.properties +1 -1
  4. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +110 -25
  5. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +254 -188
  6. package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +23 -3
  7. package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +77 -58
  8. package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +68 -26
  9. package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +49 -0
  10. package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +9 -7
  11. package/android/src/main/java/com/audiobrowser/extension/TappedTrack.kt +20 -0
  12. package/android/src/main/java/com/audiobrowser/extension/TrackIdentity.kt +15 -0
  13. package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +120 -67
  14. package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -24
  15. package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +93 -73
  16. package/android/src/main/java/com/audiobrowser/player/Player.kt +48 -30
  17. package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
  18. package/android/src/main/java/com/audiobrowser/tls/AiaCertChaser.kt +46 -5
  19. package/android/src/main/java/com/audiobrowser/tls/AiaChasingExtendedTrustManager.kt +86 -27
  20. package/android/src/main/java/com/audiobrowser/tls/AiaChasingTrustManager.kt +58 -14
  21. package/android/src/main/java/com/audiobrowser/tls/AiaTls.kt +20 -6
  22. package/android/src/main/java/com/audiobrowser/tls/CachingCertificateFetcher.kt +249 -86
  23. package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +44 -40
  24. package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +28 -23
  25. package/android/src/main/java/com/audiobrowser/util/StyleWire.kt +35 -0
  26. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +45 -53
  27. package/android/src/test/java/com/audiobrowser/TestFixtures.kt +69 -30
  28. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
  29. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +6 -0
  30. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +345 -8
  31. package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
  32. package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +1 -1
  33. package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +91 -0
  34. package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -53
  35. package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +87 -0
  36. package/android/src/test/java/com/audiobrowser/extension/TappedTrackTest.kt +43 -0
  37. package/android/src/test/java/com/audiobrowser/extension/TrackIdentityTest.kt +41 -0
  38. package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +1 -2
  39. package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
  40. package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
  41. package/android/src/test/java/com/audiobrowser/tls/AiaCertChaserTest.kt +152 -8
  42. package/android/src/test/java/com/audiobrowser/tls/AiaChasingTrustManagerTest.kt +218 -10
  43. package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherCallSiteTest.kt +322 -0
  44. package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
  45. package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +161 -0
  46. package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +7 -7
  47. package/ios/Browser/BrowserConfig.swift +102 -5
  48. package/ios/Browser/BrowserManager+URLResolution.swift +18 -14
  49. package/ios/Browser/BrowserManager.swift +131 -143
  50. package/ios/Browser/BrowserPathHelper.swift +44 -44
  51. package/ios/Browser/JsonModels.swift +187 -106
  52. package/ios/Browser/SearchDrillIn.swift +6 -6
  53. package/ios/Browser/SectionPresentation.swift +34 -0
  54. package/ios/Browser/SectionScope.swift +58 -24
  55. package/ios/Browser/StyleResolver.swift +47 -0
  56. package/ios/Browser/TabBarEntries.swift +2 -2
  57. package/ios/Browser/TrackIdTemplate.swift +37 -0
  58. package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
  59. package/ios/CarPlay/CarPlayController.swift +105 -67
  60. package/ios/CarPlay/CarPlayImageLoader.swift +38 -18
  61. package/ios/CarPlay/CarPlayListItemFactory.swift +217 -84
  62. package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
  63. package/ios/Extension/Capability+RemoteCommand.swift +1 -1
  64. package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
  65. package/ios/Extension/ResolvedTrack+Copying.swift +11 -15
  66. package/ios/Extension/Section+Copying.swift +31 -0
  67. package/ios/Extension/Track+Copying.swift +6 -12
  68. package/ios/Extension/Track+Identity.swift +18 -0
  69. package/ios/HybridAudioBrowser.swift +113 -35
  70. package/ios/Model/NitroTypeStubs.swift +64 -23
  71. package/ios/Model/PlayerUpdateOptions.swift +7 -0
  72. package/ios/Player/NowPlayingUpdater.swift +1 -1
  73. package/ios/Player/PlaybackCoordinator.swift +2 -2
  74. package/ios/Player/RetryManager.swift +4 -3
  75. package/ios/Tests/BrowserPathHelperTests.swift +50 -20
  76. package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
  77. package/ios/Tests/JsonModelsTests.swift +75 -1
  78. package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
  79. package/ios/Tests/QueueManagerTests.swift +4 -4
  80. package/ios/Tests/ResolvedTrackCopyingTests.swift +37 -35
  81. package/ios/Tests/SearchDrillInTests.swift +16 -16
  82. package/ios/Tests/SectionPresentationTests.swift +61 -0
  83. package/ios/Tests/SectionScopeTests.swift +87 -55
  84. package/ios/Tests/StyleResolverTests.swift +67 -0
  85. package/ios/Tests/TabBarEntriesTests.swift +18 -18
  86. package/ios/Tests/TrackIdTemplateTests.swift +67 -0
  87. package/ios/Tests/TrackIdentityTests.swift +20 -0
  88. package/ios/Tests/TrackSelectorTests.swift +168 -33
  89. package/ios/TrackSelector.swift +45 -30
  90. package/ios/Util/ArtworkImageFetcher.swift +16 -1
  91. package/lib/commonjs/AudioBrowser.js +11 -0
  92. package/lib/commonjs/AudioBrowser.js.map +1 -1
  93. package/lib/commonjs/features/browser-config.js +11 -8
  94. package/lib/commonjs/features/browser-config.js.map +1 -1
  95. package/lib/commonjs/features/browser.js +2 -2
  96. package/lib/commonjs/features/favorites.js +13 -10
  97. package/lib/commonjs/features/favorites.js.map +1 -1
  98. package/lib/commonjs/features/playback/controls.js +4 -2
  99. package/lib/commonjs/features/playback/controls.js.map +1 -1
  100. package/lib/commonjs/features/playback/state.js +2 -3
  101. package/lib/commonjs/features/playback/state.js.map +1 -1
  102. package/lib/commonjs/features/player/options.js.map +1 -1
  103. package/lib/commonjs/features/player/setup.js +3 -1
  104. package/lib/commonjs/features/player/setup.js.map +1 -1
  105. package/lib/commonjs/features/player/validateOptions.js +2 -0
  106. package/lib/commonjs/features/player/validateOptions.js.map +1 -1
  107. package/lib/commonjs/features/queue/activeTrack.js +14 -3
  108. package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
  109. package/lib/commonjs/features/queue/queue.js +11 -4
  110. package/lib/commonjs/features/queue/queue.js.map +1 -1
  111. package/lib/commonjs/utils/LazyNativeEmitter.js +21 -10
  112. package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
  113. package/lib/commonjs/utils/NativeUpdatedValue.js +31 -13
  114. package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
  115. package/lib/commonjs/utils/getTrackIdentity.js +24 -0
  116. package/lib/commonjs/utils/getTrackIdentity.js.map +1 -0
  117. package/lib/commonjs/utils/useNativeValueRefreshedBy.js +33 -0
  118. package/lib/commonjs/utils/useNativeValueRefreshedBy.js.map +1 -0
  119. package/lib/commonjs/web/NativeAudioBrowser.js +32 -24
  120. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
  121. package/lib/commonjs/web/browser/BrowserManager.js +144 -87
  122. package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
  123. package/lib/commonjs/web/browser/FavoriteManager.js +30 -21
  124. package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
  125. package/lib/commonjs/web/browser/assertBrowsePageShape.js +2 -2
  126. package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +1 -1
  127. package/lib/commonjs/web/browser/classifyTrackNavigation.js +9 -9
  128. package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +1 -1
  129. package/lib/commonjs/web/browser/sections.js +89 -0
  130. package/lib/commonjs/web/browser/sections.js.map +1 -0
  131. package/lib/commonjs/web/player/NowPlayingManager.js +4 -3
  132. package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
  133. package/lib/commonjs/web/util/BrowserPathHelper.js +56 -11
  134. package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
  135. package/lib/module/AudioBrowser.js +1 -0
  136. package/lib/module/AudioBrowser.js.map +1 -1
  137. package/lib/module/features/browser-config.js +11 -8
  138. package/lib/module/features/browser-config.js.map +1 -1
  139. package/lib/module/features/browser.js +2 -2
  140. package/lib/module/features/favorites.js +13 -10
  141. package/lib/module/features/favorites.js.map +1 -1
  142. package/lib/module/features/playback/controls.js +4 -2
  143. package/lib/module/features/playback/controls.js.map +1 -1
  144. package/lib/module/features/playback/state.js +2 -3
  145. package/lib/module/features/playback/state.js.map +1 -1
  146. package/lib/module/features/player/options.js.map +1 -1
  147. package/lib/module/features/player/setup.js +3 -1
  148. package/lib/module/features/player/setup.js.map +1 -1
  149. package/lib/module/features/player/validateOptions.js +2 -0
  150. package/lib/module/features/player/validateOptions.js.map +1 -1
  151. package/lib/module/features/queue/activeTrack.js +14 -3
  152. package/lib/module/features/queue/activeTrack.js.map +1 -1
  153. package/lib/module/features/queue/queue.js +11 -4
  154. package/lib/module/features/queue/queue.js.map +1 -1
  155. package/lib/module/utils/LazyNativeEmitter.js +21 -10
  156. package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
  157. package/lib/module/utils/NativeUpdatedValue.js +31 -13
  158. package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
  159. package/lib/module/utils/getTrackIdentity.js +20 -0
  160. package/lib/module/utils/getTrackIdentity.js.map +1 -0
  161. package/lib/module/utils/useNativeValueRefreshedBy.js +29 -0
  162. package/lib/module/utils/useNativeValueRefreshedBy.js.map +1 -0
  163. package/lib/module/web/NativeAudioBrowser.js +32 -24
  164. package/lib/module/web/NativeAudioBrowser.js.map +1 -1
  165. package/lib/module/web/browser/BrowserManager.js +144 -87
  166. package/lib/module/web/browser/BrowserManager.js.map +1 -1
  167. package/lib/module/web/browser/FavoriteManager.js +31 -21
  168. package/lib/module/web/browser/FavoriteManager.js.map +1 -1
  169. package/lib/module/web/browser/assertBrowsePageShape.js +2 -2
  170. package/lib/module/web/browser/assertBrowsePageShape.js.map +1 -1
  171. package/lib/module/web/browser/classifyTrackNavigation.js +9 -9
  172. package/lib/module/web/browser/classifyTrackNavigation.js.map +1 -1
  173. package/lib/module/web/browser/sections.js +83 -0
  174. package/lib/module/web/browser/sections.js.map +1 -0
  175. package/lib/module/web/player/NowPlayingManager.js +4 -3
  176. package/lib/module/web/player/NowPlayingManager.js.map +1 -1
  177. package/lib/module/web/util/BrowserPathHelper.js +56 -11
  178. package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
  179. package/lib/typescript/src/AudioBrowser.d.ts +1 -0
  180. package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
  181. package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
  182. package/lib/typescript/src/features/browser.d.ts +2 -2
  183. package/lib/typescript/src/features/favorites.d.ts +13 -10
  184. package/lib/typescript/src/features/favorites.d.ts.map +1 -1
  185. package/lib/typescript/src/features/playback/controls.d.ts +4 -2
  186. package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
  187. package/lib/typescript/src/features/playback/state.d.ts +2 -3
  188. package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
  189. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +1 -1
  190. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +1 -1
  191. package/lib/typescript/src/features/player/options.d.ts +21 -19
  192. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  193. package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
  194. package/lib/typescript/src/features/player/validateOptions.d.ts +1 -8
  195. package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -1
  196. package/lib/typescript/src/features/queue/activeTrack.d.ts +8 -1
  197. package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
  198. package/lib/typescript/src/features/queue/queue.d.ts +5 -2
  199. package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
  200. package/lib/typescript/src/types/browser-native.d.ts +2 -2
  201. package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
  202. package/lib/typescript/src/types/browser-nodes.d.ts +260 -127
  203. package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
  204. package/lib/typescript/src/types/browser.d.ts +33 -53
  205. package/lib/typescript/src/types/browser.d.ts.map +1 -1
  206. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +16 -17
  207. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
  208. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +24 -19
  209. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
  210. package/lib/typescript/src/utils/getTrackIdentity.d.ts +18 -0
  211. package/lib/typescript/src/utils/getTrackIdentity.d.ts.map +1 -0
  212. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts +21 -0
  213. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts.map +1 -0
  214. package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +0 -1
  215. package/nitrogen/generated/android/c++/{JFavoritesMatchMode.hpp → JArtworkRendering.hpp} +15 -15
  216. package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +4 -3
  217. package/nitrogen/generated/android/c++/JBrowseResult.hpp +10 -4
  218. package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
  219. package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +4 -3
  220. package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +4 -3
  221. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +4 -3
  222. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +4 -3
  223. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +4 -3
  224. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +4 -3
  225. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +4 -2
  226. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +4 -2
  227. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.hpp +10 -4
  228. package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +4 -3
  229. package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -5
  230. package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +4 -3
  231. package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +9 -3
  232. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +4 -2
  233. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +21 -14
  234. package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
  235. package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +4 -3
  236. package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +16 -10
  237. package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +8 -2
  238. package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +6 -7
  239. package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +2 -5
  240. package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
  241. package/nitrogen/generated/android/c++/JOptions.hpp +2 -5
  242. package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +4 -3
  243. package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
  244. package/nitrogen/generated/android/c++/JResolvedTrack.hpp +49 -51
  245. package/nitrogen/generated/android/c++/JSection.hpp +114 -0
  246. package/nitrogen/generated/android/c++/JSectionStyle.hpp +69 -0
  247. package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
  248. package/nitrogen/generated/android/c++/JTrack.hpp +19 -48
  249. package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +4 -2
  250. package/nitrogen/generated/android/c++/JTrackStyle.hpp +25 -18
  251. package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +10 -4
  252. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → ArtworkRendering.kt} +5 -5
  253. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation.kt +23 -0
  254. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +6 -3
  255. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +5 -5
  256. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +6 -3
  257. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
  258. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -18
  259. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Section.kt +50 -0
  260. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → SectionStyle.kt} +12 -6
  261. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StyleDisplay.kt +23 -0
  262. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +6 -15
  263. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +23 -5
  264. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +104 -82
  265. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +16 -10
  266. package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +16 -10
  267. package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
  268. package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
  269. package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
  270. package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +5 -5
  271. package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
  272. package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
  273. package/nitrogen/generated/ios/swift/ResolvedTrack.swift +54 -83
  274. package/nitrogen/generated/ios/swift/Section.swift +100 -0
  275. package/nitrogen/generated/ios/swift/SectionStyle.swift +64 -0
  276. package/nitrogen/generated/ios/swift/StyleDisplay.swift +40 -0
  277. package/nitrogen/generated/ios/swift/Track.swift +20 -73
  278. package/nitrogen/generated/ios/swift/TrackStyle.swift +28 -22
  279. package/nitrogen/generated/shared/c++/{FavoritesMatchMode.hpp → ArtworkRendering.hpp} +17 -17
  280. package/nitrogen/generated/shared/c++/CarPlayPlayingIndicatorLocation.hpp +76 -0
  281. package/nitrogen/generated/shared/c++/IOSOptions.hpp +9 -2
  282. package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +6 -6
  283. package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
  284. package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
  285. package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +30 -38
  286. package/nitrogen/generated/shared/c++/Section.hpp +106 -0
  287. package/nitrogen/generated/shared/c++/SectionStyle.hpp +96 -0
  288. package/nitrogen/generated/shared/c++/StyleDisplay.hpp +76 -0
  289. package/nitrogen/generated/shared/c++/Track.hpp +15 -31
  290. package/nitrogen/generated/shared/c++/TrackStyle.hpp +50 -34
  291. package/package.json +3 -2
  292. package/src/AudioBrowser.ts +1 -0
  293. package/src/features/browser-config.test.ts +21 -6
  294. package/src/features/browser-config.ts +11 -8
  295. package/src/features/browser.test.ts +1 -1
  296. package/src/features/browser.ts +2 -2
  297. package/src/features/favorites.ts +13 -10
  298. package/src/features/hook-wiring.test.ts +63 -15
  299. package/src/features/playback/controls.ts +4 -2
  300. package/src/features/playback/state.ts +2 -3
  301. package/src/features/playback/trackPlaybackTime.ts +1 -1
  302. package/src/features/player/options.ts +27 -19
  303. package/src/features/player/setup.test.ts +12 -3
  304. package/src/features/player/setup.ts +3 -1
  305. package/src/features/player/validateOptions.ts +2 -0
  306. package/src/features/queue/activeTrack.ts +14 -3
  307. package/src/features/queue/queue.ts +11 -4
  308. package/src/nitro-stub-drift.test.ts +277 -0
  309. package/src/public-surface.test.ts +40 -0
  310. package/src/specs/audio-browser.nitro.ts +4 -3
  311. package/src/style-resolution.test.ts +139 -0
  312. package/src/types/browser-native.ts +2 -2
  313. package/src/types/browser-nodes.ts +268 -136
  314. package/src/types/browser.ts +34 -55
  315. package/src/utils/LazyNativeEmitter.ts +20 -10
  316. package/src/utils/NativeUpdatedValue.ts +29 -13
  317. package/src/utils/getTrackIdentity.ts +20 -0
  318. package/src/utils/useNativeValueRefreshedBy.ts +38 -0
  319. package/src/web/NativeAudioBrowser.ts +37 -22
  320. package/src/web/browser/BrowserManager.ts +176 -95
  321. package/src/web/browser/FavoriteManager.test.ts +84 -0
  322. package/src/web/browser/FavoriteManager.ts +28 -23
  323. package/src/web/browser/assertBrowsePageShape.test.ts +1 -1
  324. package/src/web/browser/assertBrowsePageShape.ts +5 -3
  325. package/src/web/browser/classifyTrackNavigation.test.ts +10 -8
  326. package/src/web/browser/classifyTrackNavigation.ts +9 -9
  327. package/src/web/browser/parseSearchResponse.test.ts +8 -2
  328. package/src/web/browser/sections.test.ts +91 -0
  329. package/src/web/browser/sections.ts +72 -0
  330. package/src/web/player/NowPlayingManager.ts +4 -3
  331. package/src/web/util/BrowserPathHelper.test.ts +52 -0
  332. package/src/web/util/BrowserPathHelper.ts +61 -13
  333. package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
  334. package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
  335. package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
  336. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
  337. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
  338. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
  339. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
  340. package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
  341. package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
  342. package/nitrogen/generated/ios/swift/ImageRowItem.swift +0 -195
  343. package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
  344. package/nitrogen/generated/shared/c++/FavoriteConfig.hpp +0 -84
  345. package/nitrogen/generated/shared/c++/ImageRowItem.hpp +0 -129
@@ -22,7 +22,7 @@ data class Track(
22
22
  val id: String?,
23
23
  @DoNotStrip
24
24
  @Keep
25
- val url: String?,
25
+ val path: String?,
26
26
  @DoNotStrip
27
27
  @Keep
28
28
  val src: String?,
@@ -37,9 +37,6 @@ data class Track(
37
37
  val request: TrackRequest?,
38
38
  @DoNotStrip
39
39
  @Keep
40
- val artworkCarPlayTinted: Boolean?,
41
- @DoNotStrip
42
- @Keep
43
40
  val title: String,
44
41
  @DoNotStrip
45
42
  @Keep
@@ -49,7 +46,7 @@ data class Track(
49
46
  val artist: String?,
50
47
  @DoNotStrip
51
48
  @Keep
52
- val albumUrl: String?,
49
+ val albumPath: String?,
53
50
  @DoNotStrip
54
51
  @Keep
55
52
  val album: String?,
@@ -67,19 +64,13 @@ data class Track(
67
64
  val style: TrackStyle?,
68
65
  @DoNotStrip
69
66
  @Keep
70
- val childrenStyle: TrackStyle?,
67
+ val disabled: Boolean?,
71
68
  @DoNotStrip
72
69
  @Keep
73
70
  val favorited: Boolean?,
74
71
  @DoNotStrip
75
72
  @Keep
76
- val groupTitle: String?,
77
- @DoNotStrip
78
- @Keep
79
- val live: Boolean?,
80
- @DoNotStrip
81
- @Keep
82
- val imageRow: Array<ImageRowItem>?
73
+ val live: Boolean?
83
74
  ) {
84
75
  /* primary constructor */
85
76
 
@@ -91,8 +82,8 @@ data class Track(
91
82
  @Keep
92
83
  @Suppress("unused")
93
84
  @JvmStatic
94
- private fun fromCpp(id: String?, url: String?, src: String?, artwork: Variant_String_ArtworkVariants?, artworkSource: ImageSource?, request: TrackRequest?, artworkCarPlayTinted: Boolean?, title: String, subtitle: String?, artist: String?, albumUrl: String?, album: String?, description: String?, genre: String?, duration: Double?, style: TrackStyle?, childrenStyle: TrackStyle?, favorited: Boolean?, groupTitle: String?, live: Boolean?, imageRow: Array<ImageRowItem>?): Track {
95
- return Track(id, url, src, artwork, artworkSource, request, artworkCarPlayTinted, title, subtitle, artist, albumUrl, album, description, genre, duration, style, childrenStyle, favorited, groupTitle, live, imageRow)
85
+ private fun fromCpp(id: String?, path: String?, src: String?, artwork: Variant_String_ArtworkVariants?, artworkSource: ImageSource?, request: TrackRequest?, title: String, subtitle: String?, artist: String?, albumPath: String?, album: String?, description: String?, genre: String?, duration: Double?, style: TrackStyle?, disabled: Boolean?, favorited: Boolean?, live: Boolean?): Track {
86
+ return Track(id, path, src, artwork, artworkSource, request, title, subtitle, artist, albumPath, album, description, genre, duration, style, disabled, favorited, live)
96
87
  }
97
88
  }
98
89
  }
@@ -10,14 +10,32 @@ package com.margelo.nitro.audiobrowser
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.proguard.annotations.DoNotStrip
12
12
 
13
+
13
14
  /**
14
- * Represents the JavaScript enum/union "TrackStyle".
15
+ * Represents the JavaScript object/struct "TrackStyle".
15
16
  */
16
17
  @DoNotStrip
17
18
  @Keep
18
- enum class TrackStyle(@DoNotStrip @Keep val value: Int) {
19
- LIST(0),
20
- GRID(1);
19
+ data class TrackStyle(
20
+ @DoNotStrip
21
+ @Keep
22
+ val display: StyleDisplay?,
23
+ @DoNotStrip
24
+ @Keep
25
+ val artworkRendering: ArtworkRendering?
26
+ ) {
27
+ /* primary constructor */
21
28
 
22
- companion object
29
+ companion object {
30
+ /**
31
+ * Constructor called from C++
32
+ */
33
+ @DoNotStrip
34
+ @Keep
35
+ @Suppress("unused")
36
+ @JvmStatic
37
+ private fun fromCpp(display: StyleDisplay?, artworkRendering: ArtworkRendering?): TrackStyle {
38
+ return TrackStyle(display, artworkRendering)
39
+ }
40
+ }
23
41
  }
@@ -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,6 +36,8 @@ 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; }
39
43
  // Forward declaration of `ChapterMetadata` to properly resolve imports.
@@ -42,10 +46,6 @@ namespace margelo::nitro::audiobrowser { struct ChapterMetadata; }
42
46
  namespace margelo::nitro::audiobrowser { struct EqualizerSettings; }
43
47
  // Forward declaration of `FavoriteChangedEvent` to properly resolve imports.
44
48
  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
49
  // Forward declaration of `FormatNavigationErrorParams` to properly resolve imports.
50
50
  namespace margelo::nitro::audiobrowser { struct FormatNavigationErrorParams; }
51
51
  // Forward declaration of `FormatNowPlayingParams` to properly resolve imports.
@@ -78,8 +78,6 @@ namespace margelo::nitro::audiobrowser { struct IOSOptions; }
78
78
  namespace margelo::nitro::audiobrowser { struct ImageContext; }
79
79
  // Forward declaration of `ImageQueryParams` to properly resolve imports.
80
80
  namespace margelo::nitro::audiobrowser { struct ImageQueryParams; }
81
- // Forward declaration of `ImageRowItem` to properly resolve imports.
82
- namespace margelo::nitro::audiobrowser { struct ImageRowItem; }
83
81
  // Forward declaration of `ImageSource` to properly resolve imports.
84
82
  namespace margelo::nitro::audiobrowser { struct ImageSource; }
85
83
  // Forward declaration of `MediaReference` to properly resolve imports.
@@ -172,12 +170,18 @@ namespace margelo::nitro::audiobrowser { struct RetryConfig; }
172
170
  namespace margelo::nitro::audiobrowser { enum class SearchMode; }
173
171
  // Forward declaration of `SearchParams` to properly resolve imports.
174
172
  namespace margelo::nitro::audiobrowser { struct SearchParams; }
173
+ // Forward declaration of `SectionStyle` to properly resolve imports.
174
+ namespace margelo::nitro::audiobrowser { struct SectionStyle; }
175
+ // Forward declaration of `Section` to properly resolve imports.
176
+ namespace margelo::nitro::audiobrowser { struct Section; }
175
177
  // Forward declaration of `SleepTimerEndOfTrack` to properly resolve imports.
176
178
  namespace margelo::nitro::audiobrowser { struct SleepTimerEndOfTrack; }
177
179
  // Forward declaration of `SleepTimerTime` to properly resolve imports.
178
180
  namespace margelo::nitro::audiobrowser { struct SleepTimerTime; }
179
181
  // Forward declaration of `StallReason` to properly resolve imports.
180
182
  namespace margelo::nitro::audiobrowser { enum class StallReason; }
183
+ // Forward declaration of `StyleDisplay` to properly resolve imports.
184
+ namespace margelo::nitro::audiobrowser { enum class StyleDisplay; }
181
185
  // Forward declaration of `TimedMetadata` to properly resolve imports.
182
186
  namespace margelo::nitro::audiobrowser { struct TimedMetadata; }
183
187
  // Forward declaration of `TrackLoadEvent` to properly resolve imports.
@@ -187,7 +191,7 @@ namespace margelo::nitro::audiobrowser { struct TrackMetadata; }
187
191
  // Forward declaration of `TrackRequest` to properly resolve imports.
188
192
  namespace margelo::nitro::audiobrowser { struct TrackRequest; }
189
193
  // Forward declaration of `TrackStyle` to properly resolve imports.
190
- namespace margelo::nitro::audiobrowser { enum class TrackStyle; }
194
+ namespace margelo::nitro::audiobrowser { struct TrackStyle; }
191
195
  // Forward declaration of `Track` to properly resolve imports.
192
196
  namespace margelo::nitro::audiobrowser { struct Track; }
193
197
  // Forward declaration of `TransformableRequestConfig` to properly resolve imports.
@@ -203,6 +207,7 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
203
207
  #include "AndroidOptions.hpp"
204
208
  #include "AndroidPlayerWakeMode.hpp"
205
209
  #include "AppKilledPlaybackBehavior.hpp"
210
+ #include "ArtworkRendering.hpp"
206
211
  #include "ArtworkRequestConfig.hpp"
207
212
  #include "ArtworkVariants.hpp"
208
213
  #include "BatteryOptimizationStatus.hpp"
@@ -211,12 +216,11 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
211
216
  #include "BrowseError.hpp"
212
217
  #include "BrowserSourceCallbackParam.hpp"
213
218
  #include "CarPlayNowPlayingButton.hpp"
219
+ #include "CarPlayPlayingIndicatorLocation.hpp"
214
220
  #include "CarPlaySiriListButtonPosition.hpp"
215
221
  #include "ChapterMetadata.hpp"
216
222
  #include "EqualizerSettings.hpp"
217
223
  #include "FavoriteChangedEvent.hpp"
218
- #include "FavoriteConfig.hpp"
219
- #include "FavoritesMatchMode.hpp"
220
224
  #include "FormatNavigationErrorParams.hpp"
221
225
  #include "FormatNowPlayingParams.hpp"
222
226
  #include "FormattedNavigationError.hpp"
@@ -233,7 +237,6 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
233
237
  #include "IOSOptions.hpp"
234
238
  #include "ImageContext.hpp"
235
239
  #include "ImageQueryParams.hpp"
236
- #include "ImageRowItem.hpp"
237
240
  #include "ImageSource.hpp"
238
241
  #include "MediaReference.hpp"
239
242
  #include "MediaRequestConfig.hpp"
@@ -280,9 +283,12 @@ namespace AudioBrowser { class HybridAudioBrowserSpec_cxx; }
280
283
  #include "RetryConfig.hpp"
281
284
  #include "SearchMode.hpp"
282
285
  #include "SearchParams.hpp"
286
+ #include "Section.hpp"
287
+ #include "SectionStyle.hpp"
283
288
  #include "SleepTimerEndOfTrack.hpp"
284
289
  #include "SleepTimerTime.hpp"
285
290
  #include "StallReason.hpp"
291
+ #include "StyleDisplay.hpp"
286
292
  #include "TimedMetadata.hpp"
287
293
  #include "Track.hpp"
288
294
  #include "TrackLoadEvent.hpp"
@@ -453,21 +459,6 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
453
459
  return optional.value();
454
460
  }
455
461
 
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
462
  // pragma MARK: std::optional<double>
472
463
  /**
473
464
  * Specialized version of `std::optional<double>`.
@@ -498,30 +489,49 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
498
489
  return optional.value();
499
490
  }
500
491
 
501
- // pragma MARK: std::optional<std::vector<ImageRowItem>>
492
+ // pragma MARK: std::optional<StyleDisplay>
502
493
  /**
503
- * Specialized version of `std::optional<std::vector<ImageRowItem>>`.
494
+ * Specialized version of `std::optional<StyleDisplay>`.
504
495
  */
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);
496
+ using std__optional_StyleDisplay_ = std::optional<StyleDisplay>;
497
+ inline std::optional<StyleDisplay> create_std__optional_StyleDisplay_(const StyleDisplay& value) noexcept {
498
+ return std::optional<StyleDisplay>(value);
508
499
  }
509
- inline bool has_value_std__optional_std__vector_ImageRowItem__(const std::optional<std::vector<ImageRowItem>>& optional) noexcept {
500
+ inline bool has_value_std__optional_StyleDisplay_(const std::optional<StyleDisplay>& optional) noexcept {
510
501
  return optional.has_value();
511
502
  }
512
- inline std::vector<ImageRowItem> get_std__optional_std__vector_ImageRowItem__(const std::optional<std::vector<ImageRowItem>>& optional) noexcept {
503
+ inline StyleDisplay get_std__optional_StyleDisplay_(const std::optional<StyleDisplay>& optional) noexcept {
513
504
  return optional.value();
514
505
  }
515
506
 
516
- // pragma MARK: std::vector<ImageRowItem>
507
+ // pragma MARK: std::optional<ArtworkRendering>
517
508
  /**
518
- * Specialized version of `std::vector<ImageRowItem>`.
509
+ * Specialized version of `std::optional<ArtworkRendering>`.
519
510
  */
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;
511
+ using std__optional_ArtworkRendering_ = std::optional<ArtworkRendering>;
512
+ inline std::optional<ArtworkRendering> create_std__optional_ArtworkRendering_(const ArtworkRendering& value) noexcept {
513
+ return std::optional<ArtworkRendering>(value);
514
+ }
515
+ inline bool has_value_std__optional_ArtworkRendering_(const std::optional<ArtworkRendering>& optional) noexcept {
516
+ return optional.has_value();
517
+ }
518
+ inline ArtworkRendering get_std__optional_ArtworkRendering_(const std::optional<ArtworkRendering>& optional) noexcept {
519
+ return optional.value();
520
+ }
521
+
522
+ // pragma MARK: std::optional<bool>
523
+ /**
524
+ * Specialized version of `std::optional<bool>`.
525
+ */
526
+ using std__optional_bool_ = std::optional<bool>;
527
+ inline std::optional<bool> create_std__optional_bool_(const bool& value) noexcept {
528
+ return std::optional<bool>(value);
529
+ }
530
+ inline bool has_value_std__optional_bool_(const std::optional<bool>& optional) noexcept {
531
+ return optional.has_value();
532
+ }
533
+ inline bool get_std__optional_bool_(const std::optional<bool>& optional) noexcept {
534
+ return optional.value();
525
535
  }
526
536
 
527
537
  // pragma MARK: std::vector<Track>
@@ -606,6 +616,47 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
606
616
  return Func_void_std__exception_ptr_Wrapper(std::move(value));
607
617
  }
608
618
 
619
+ // pragma MARK: std::optional<SectionStyle>
620
+ /**
621
+ * Specialized version of `std::optional<SectionStyle>`.
622
+ */
623
+ using std__optional_SectionStyle_ = std::optional<SectionStyle>;
624
+ inline std::optional<SectionStyle> create_std__optional_SectionStyle_(const SectionStyle& value) noexcept {
625
+ return std::optional<SectionStyle>(value);
626
+ }
627
+ inline bool has_value_std__optional_SectionStyle_(const std::optional<SectionStyle>& optional) noexcept {
628
+ return optional.has_value();
629
+ }
630
+ inline SectionStyle get_std__optional_SectionStyle_(const std::optional<SectionStyle>& optional) noexcept {
631
+ return optional.value();
632
+ }
633
+
634
+ // pragma MARK: std::optional<std::vector<Section>>
635
+ /**
636
+ * Specialized version of `std::optional<std::vector<Section>>`.
637
+ */
638
+ using std__optional_std__vector_Section__ = std::optional<std::vector<Section>>;
639
+ inline std::optional<std::vector<Section>> create_std__optional_std__vector_Section__(const std::vector<Section>& value) noexcept {
640
+ return std::optional<std::vector<Section>>(value);
641
+ }
642
+ inline bool has_value_std__optional_std__vector_Section__(const std::optional<std::vector<Section>>& optional) noexcept {
643
+ return optional.has_value();
644
+ }
645
+ inline std::vector<Section> get_std__optional_std__vector_Section__(const std::optional<std::vector<Section>>& optional) noexcept {
646
+ return optional.value();
647
+ }
648
+
649
+ // pragma MARK: std::vector<Section>
650
+ /**
651
+ * Specialized version of `std::vector<Section>`.
652
+ */
653
+ using std__vector_Section_ = std::vector<Section>;
654
+ inline std::vector<Section> create_std__vector_Section_(size_t size) noexcept {
655
+ std::vector<Section> vector;
656
+ vector.reserve(size);
657
+ return vector;
658
+ }
659
+
609
660
  // pragma MARK: std::optional<CarPlaySiriListButtonPosition>
610
661
  /**
611
662
  * Specialized version of `std::optional<CarPlaySiriListButtonPosition>`.
@@ -2319,65 +2370,36 @@ namespace margelo::nitro::audiobrowser::bridge::swift {
2319
2370
  return vector;
2320
2371
  }
2321
2372
 
2322
- // pragma MARK: std::optional<PlayerCapabilities>
2373
+ // pragma MARK: std::optional<CarPlayPlayingIndicatorLocation>
2323
2374
  /**
2324
- * Specialized version of `std::optional<PlayerCapabilities>`.
2375
+ * Specialized version of `std::optional<CarPlayPlayingIndicatorLocation>`.
2325
2376
  */
2326
- using std__optional_PlayerCapabilities_ = std::optional<PlayerCapabilities>;
2327
- inline std::optional<PlayerCapabilities> create_std__optional_PlayerCapabilities_(const PlayerCapabilities& value) noexcept {
2328
- return std::optional<PlayerCapabilities>(value);
2377
+ using std__optional_CarPlayPlayingIndicatorLocation_ = std::optional<CarPlayPlayingIndicatorLocation>;
2378
+ inline std::optional<CarPlayPlayingIndicatorLocation> create_std__optional_CarPlayPlayingIndicatorLocation_(const CarPlayPlayingIndicatorLocation& value) noexcept {
2379
+ return std::optional<CarPlayPlayingIndicatorLocation>(value);
2329
2380
  }
2330
- inline bool has_value_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2381
+ inline bool has_value_std__optional_CarPlayPlayingIndicatorLocation_(const std::optional<CarPlayPlayingIndicatorLocation>& optional) noexcept {
2331
2382
  return optional.has_value();
2332
2383
  }
2333
- inline PlayerCapabilities get_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2384
+ inline CarPlayPlayingIndicatorLocation get_std__optional_CarPlayPlayingIndicatorLocation_(const std::optional<CarPlayPlayingIndicatorLocation>& optional) noexcept {
2334
2385
  return optional.value();
2335
2386
  }
2336
2387
 
2337
- // pragma MARK: std::optional<std::variant<bool, FavoriteConfig>>
2388
+ // pragma MARK: std::optional<PlayerCapabilities>
2338
2389
  /**
2339
- * Specialized version of `std::optional<std::variant<bool, FavoriteConfig>>`.
2390
+ * Specialized version of `std::optional<PlayerCapabilities>`.
2340
2391
  */
2341
- using std__optional_std__variant_bool__FavoriteConfig__ = std::optional<std::variant<bool, FavoriteConfig>>;
2342
- inline std::optional<std::variant<bool, FavoriteConfig>> create_std__optional_std__variant_bool__FavoriteConfig__(const std::variant<bool, FavoriteConfig>& value) noexcept {
2343
- return std::optional<std::variant<bool, FavoriteConfig>>(value);
2392
+ using std__optional_PlayerCapabilities_ = std::optional<PlayerCapabilities>;
2393
+ inline std::optional<PlayerCapabilities> create_std__optional_PlayerCapabilities_(const PlayerCapabilities& value) noexcept {
2394
+ return std::optional<PlayerCapabilities>(value);
2344
2395
  }
2345
- inline bool has_value_std__optional_std__variant_bool__FavoriteConfig__(const std::optional<std::variant<bool, FavoriteConfig>>& optional) noexcept {
2396
+ inline bool has_value_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2346
2397
  return optional.has_value();
2347
2398
  }
2348
- inline std::variant<bool, FavoriteConfig> get_std__optional_std__variant_bool__FavoriteConfig__(const std::optional<std::variant<bool, FavoriteConfig>>& optional) noexcept {
2399
+ inline PlayerCapabilities get_std__optional_PlayerCapabilities_(const std::optional<PlayerCapabilities>& optional) noexcept {
2349
2400
  return optional.value();
2350
2401
  }
2351
2402
 
2352
- // pragma MARK: std::variant<bool, FavoriteConfig>
2353
- /**
2354
- * Wrapper struct for `std::variant<bool, FavoriteConfig>`.
2355
- * std::variant cannot be used in Swift because of a Swift bug.
2356
- * Not even specializing it works. So we create a wrapper struct.
2357
- */
2358
- struct std__variant_bool__FavoriteConfig_ final {
2359
- std::variant<bool, FavoriteConfig> variant;
2360
- std__variant_bool__FavoriteConfig_(std::variant<bool, FavoriteConfig> variant): variant(variant) { }
2361
- operator std::variant<bool, FavoriteConfig>() const noexcept {
2362
- return variant;
2363
- }
2364
- inline size_t index() const noexcept {
2365
- return variant.index();
2366
- }
2367
- inline bool get_0() const noexcept {
2368
- return std::get<0>(variant);
2369
- }
2370
- inline FavoriteConfig get_1() const noexcept {
2371
- return std::get<1>(variant);
2372
- }
2373
- };
2374
- inline std__variant_bool__FavoriteConfig_ create_std__variant_bool__FavoriteConfig_(bool value) noexcept {
2375
- return std__variant_bool__FavoriteConfig_(value);
2376
- }
2377
- inline std__variant_bool__FavoriteConfig_ create_std__variant_bool__FavoriteConfig_(const FavoriteConfig& value) noexcept {
2378
- return std__variant_bool__FavoriteConfig_(value);
2379
- }
2380
-
2381
2403
  // pragma MARK: std::optional<std::function<std::shared_ptr<Promise<std::optional<NowPlayingUpdate>>>(const FormatNowPlayingParams& /* params */)>>
2382
2404
  /**
2383
2405
  * Specialized version of `std::optional<std::function<std::shared_ptr<Promise<std::optional<NowPlayingUpdate>>>(const FormatNowPlayingParams& / * params * /)>>`.
@@ -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,6 +36,8 @@ 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; }
39
43
  // Forward declaration of `ChapterMetadata` to properly resolve imports.
@@ -42,10 +46,6 @@ namespace margelo::nitro::audiobrowser { struct ChapterMetadata; }
42
46
  namespace margelo::nitro::audiobrowser { struct EqualizerSettings; }
43
47
  // Forward declaration of `FavoriteChangedEvent` to properly resolve imports.
44
48
  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
49
  // Forward declaration of `FormatNavigationErrorParams` to properly resolve imports.
50
50
  namespace margelo::nitro::audiobrowser { struct FormatNavigationErrorParams; }
51
51
  // Forward declaration of `FormatNowPlayingParams` to properly resolve imports.
@@ -78,8 +78,6 @@ namespace margelo::nitro::audiobrowser { struct IOSOptions; }
78
78
  namespace margelo::nitro::audiobrowser { struct ImageContext; }
79
79
  // Forward declaration of `ImageQueryParams` to properly resolve imports.
80
80
  namespace margelo::nitro::audiobrowser { struct ImageQueryParams; }
81
- // Forward declaration of `ImageRowItem` to properly resolve imports.
82
- namespace margelo::nitro::audiobrowser { struct ImageRowItem; }
83
81
  // Forward declaration of `ImageSource` to properly resolve imports.
84
82
  namespace margelo::nitro::audiobrowser { struct ImageSource; }
85
83
  // Forward declaration of `MediaReference` to properly resolve imports.
@@ -176,12 +174,18 @@ namespace margelo::nitro::audiobrowser { struct RetryConfig; }
176
174
  namespace margelo::nitro::audiobrowser { enum class SearchMode; }
177
175
  // Forward declaration of `SearchParams` to properly resolve imports.
178
176
  namespace margelo::nitro::audiobrowser { struct SearchParams; }
177
+ // Forward declaration of `SectionStyle` to properly resolve imports.
178
+ namespace margelo::nitro::audiobrowser { struct SectionStyle; }
179
+ // Forward declaration of `Section` to properly resolve imports.
180
+ namespace margelo::nitro::audiobrowser { struct Section; }
179
181
  // Forward declaration of `SleepTimerEndOfTrack` to properly resolve imports.
180
182
  namespace margelo::nitro::audiobrowser { struct SleepTimerEndOfTrack; }
181
183
  // Forward declaration of `SleepTimerTime` to properly resolve imports.
182
184
  namespace margelo::nitro::audiobrowser { struct SleepTimerTime; }
183
185
  // Forward declaration of `StallReason` to properly resolve imports.
184
186
  namespace margelo::nitro::audiobrowser { enum class StallReason; }
187
+ // Forward declaration of `StyleDisplay` to properly resolve imports.
188
+ namespace margelo::nitro::audiobrowser { enum class StyleDisplay; }
185
189
  // Forward declaration of `TimedMetadata` to properly resolve imports.
186
190
  namespace margelo::nitro::audiobrowser { struct TimedMetadata; }
187
191
  // Forward declaration of `TrackLoadEvent` to properly resolve imports.
@@ -191,7 +195,7 @@ namespace margelo::nitro::audiobrowser { struct TrackMetadata; }
191
195
  // Forward declaration of `TrackRequest` to properly resolve imports.
192
196
  namespace margelo::nitro::audiobrowser { struct TrackRequest; }
193
197
  // Forward declaration of `TrackStyle` to properly resolve imports.
194
- namespace margelo::nitro::audiobrowser { enum class TrackStyle; }
198
+ namespace margelo::nitro::audiobrowser { struct TrackStyle; }
195
199
  // Forward declaration of `Track` to properly resolve imports.
196
200
  namespace margelo::nitro::audiobrowser { struct Track; }
197
201
  // Forward declaration of `TransformableRequestConfig` to properly resolve imports.
@@ -203,6 +207,7 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
203
207
  #include "AndroidOptions.hpp"
204
208
  #include "AndroidPlayerWakeMode.hpp"
205
209
  #include "AppKilledPlaybackBehavior.hpp"
210
+ #include "ArtworkRendering.hpp"
206
211
  #include "ArtworkRequestConfig.hpp"
207
212
  #include "ArtworkVariants.hpp"
208
213
  #include "BatteryOptimizationStatus.hpp"
@@ -211,12 +216,11 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
211
216
  #include "BrowseError.hpp"
212
217
  #include "BrowserSourceCallbackParam.hpp"
213
218
  #include "CarPlayNowPlayingButton.hpp"
219
+ #include "CarPlayPlayingIndicatorLocation.hpp"
214
220
  #include "CarPlaySiriListButtonPosition.hpp"
215
221
  #include "ChapterMetadata.hpp"
216
222
  #include "EqualizerSettings.hpp"
217
223
  #include "FavoriteChangedEvent.hpp"
218
- #include "FavoriteConfig.hpp"
219
- #include "FavoritesMatchMode.hpp"
220
224
  #include "FormatNavigationErrorParams.hpp"
221
225
  #include "FormatNowPlayingParams.hpp"
222
226
  #include "FormattedNavigationError.hpp"
@@ -233,7 +237,6 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
233
237
  #include "IOSOptions.hpp"
234
238
  #include "ImageContext.hpp"
235
239
  #include "ImageQueryParams.hpp"
236
- #include "ImageRowItem.hpp"
237
240
  #include "ImageSource.hpp"
238
241
  #include "MediaReference.hpp"
239
242
  #include "MediaRequestConfig.hpp"
@@ -282,9 +285,12 @@ namespace margelo::nitro::audiobrowser { struct TransformableRequestConfig; }
282
285
  #include "RetryConfig.hpp"
283
286
  #include "SearchMode.hpp"
284
287
  #include "SearchParams.hpp"
288
+ #include "Section.hpp"
289
+ #include "SectionStyle.hpp"
285
290
  #include "SleepTimerEndOfTrack.hpp"
286
291
  #include "SleepTimerTime.hpp"
287
292
  #include "StallReason.hpp"
293
+ #include "StyleDisplay.hpp"
288
294
  #include "TimedMetadata.hpp"
289
295
  #include "Track.hpp"
290
296
  #include "TrackLoadEvent.hpp"
@@ -23,11 +23,17 @@ 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; }
29
31
  // Forward declaration of `ResolvedTrack` to properly resolve imports.
30
32
  namespace margelo::nitro::audiobrowser { struct ResolvedTrack; }
33
+ // Forward declaration of `SectionStyle` to properly resolve imports.
34
+ namespace margelo::nitro::audiobrowser { struct SectionStyle; }
35
+ // Forward declaration of `Section` to properly resolve imports.
36
+ namespace margelo::nitro::audiobrowser { struct Section; }
31
37
  // Forward declaration of `CarPlaySiriListButtonPosition` to properly resolve imports.
32
38
  namespace margelo::nitro::audiobrowser { enum class CarPlaySiriListButtonPosition; }
33
39
  // Forward declaration of `NavigationErrorEvent` to properly resolve imports.
@@ -138,14 +144,12 @@ namespace margelo::nitro::audiobrowser { struct RemoteButtonLayout; }
138
144
  namespace margelo::nitro::audiobrowser { enum class RemoteButton; }
139
145
  // Forward declaration of `PlayerCapabilities` to properly resolve imports.
140
146
  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
147
  // Forward declaration of `IOSOptions` to properly resolve imports.
146
148
  namespace margelo::nitro::audiobrowser { struct IOSOptions; }
147
149
  // Forward declaration of `CarPlayNowPlayingButton` to properly resolve imports.
148
150
  namespace margelo::nitro::audiobrowser { enum class CarPlayNowPlayingButton; }
151
+ // Forward declaration of `CarPlayPlayingIndicatorLocation` to properly resolve imports.
152
+ namespace margelo::nitro::audiobrowser { enum class CarPlayPlayingIndicatorLocation; }
149
153
  // Forward declaration of `FavoriteChangedEvent` to properly resolve imports.
150
154
  namespace margelo::nitro::audiobrowser { struct FavoriteChangedEvent; }
151
155
  // Forward declaration of `NowPlayingMetadata` to properly resolve imports.
@@ -210,9 +214,12 @@ namespace margelo::nitro::audiobrowser { struct Progress; }
210
214
  #include <unordered_map>
211
215
  #include "TrackRequest.hpp"
212
216
  #include "TrackStyle.hpp"
213
- #include "ImageRowItem.hpp"
217
+ #include "StyleDisplay.hpp"
218
+ #include "ArtworkRendering.hpp"
214
219
  #include <functional>
215
220
  #include "ResolvedTrack.hpp"
221
+ #include "SectionStyle.hpp"
222
+ #include "Section.hpp"
216
223
  #include "CarPlaySiriListButtonPosition.hpp"
217
224
  #include "NavigationErrorEvent.hpp"
218
225
  #include "NavigationError.hpp"
@@ -270,10 +277,9 @@ namespace margelo::nitro::audiobrowser { struct Progress; }
270
277
  #include "RemoteButtonLayout.hpp"
271
278
  #include "RemoteButton.hpp"
272
279
  #include "PlayerCapabilities.hpp"
273
- #include "FavoriteConfig.hpp"
274
- #include "FavoritesMatchMode.hpp"
275
280
  #include "IOSOptions.hpp"
276
281
  #include "CarPlayNowPlayingButton.hpp"
282
+ #include "CarPlayPlayingIndicatorLocation.hpp"
277
283
  #include "FavoriteChangedEvent.hpp"
278
284
  #include "NowPlayingMetadata.hpp"
279
285
  #include "Output.hpp"
@@ -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
+ }