react-native-audio-browser 0.2.0-next.11 → 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 (333) hide show
  1. package/README.md +4 -4
  2. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +110 -25
  3. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +254 -188
  4. package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +23 -3
  5. package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +77 -58
  6. package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +68 -26
  7. package/android/src/main/java/com/audiobrowser/browser/StyleResolver.kt +49 -0
  8. package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +9 -7
  9. package/android/src/main/java/com/audiobrowser/extension/TappedTrack.kt +20 -0
  10. package/android/src/main/java/com/audiobrowser/extension/TrackIdentity.kt +15 -0
  11. package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +120 -67
  12. package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +21 -24
  13. package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +93 -73
  14. package/android/src/main/java/com/audiobrowser/player/Player.kt +48 -30
  15. package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +2 -15
  16. package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +44 -40
  17. package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +28 -23
  18. package/android/src/main/java/com/audiobrowser/util/StyleWire.kt +35 -0
  19. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +45 -53
  20. package/android/src/test/java/com/audiobrowser/TestFixtures.kt +26 -39
  21. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerFavoritesTest.kt +153 -0
  22. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +228 -50
  23. package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +38 -0
  24. package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +1 -1
  25. package/android/src/test/java/com/audiobrowser/browser/JsonStyleTest.kt +91 -0
  26. package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +128 -53
  27. package/android/src/test/java/com/audiobrowser/browser/StyleResolverTest.kt +87 -0
  28. package/android/src/test/java/com/audiobrowser/extension/TappedTrackTest.kt +43 -0
  29. package/android/src/test/java/com/audiobrowser/extension/TrackIdentityTest.kt +41 -0
  30. package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +1 -2
  31. package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +42 -2
  32. package/android/src/test/java/com/audiobrowser/player/PlaybackStateStoreTrackJsonTest.kt +55 -0
  33. package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +41 -16
  34. package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +161 -0
  35. package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +7 -7
  36. package/ios/Browser/BrowserConfig.swift +102 -5
  37. package/ios/Browser/BrowserManager+URLResolution.swift +18 -14
  38. package/ios/Browser/BrowserManager.swift +131 -143
  39. package/ios/Browser/BrowserPathHelper.swift +44 -44
  40. package/ios/Browser/JsonModels.swift +187 -106
  41. package/ios/Browser/SearchDrillIn.swift +6 -6
  42. package/ios/Browser/SectionPresentation.swift +34 -0
  43. package/ios/Browser/SectionScope.swift +58 -24
  44. package/ios/Browser/StyleResolver.swift +47 -0
  45. package/ios/Browser/TabBarEntries.swift +2 -2
  46. package/ios/Browser/TrackIdTemplate.swift +37 -0
  47. package/ios/CarPlay/CarPlayArtworkResolver.swift +8 -7
  48. package/ios/CarPlay/CarPlayController.swift +105 -67
  49. package/ios/CarPlay/CarPlayImageLoader.swift +38 -18
  50. package/ios/CarPlay/CarPlayListItemFactory.swift +217 -84
  51. package/ios/CarPlay/CarPlayNowPlayingManager.swift +15 -12
  52. package/ios/Extension/Capability+RemoteCommand.swift +1 -1
  53. package/ios/Extension/PlayerCapabilities+Favorite.swift +1 -15
  54. package/ios/Extension/ResolvedTrack+Copying.swift +11 -15
  55. package/ios/Extension/Section+Copying.swift +31 -0
  56. package/ios/Extension/Track+Copying.swift +6 -12
  57. package/ios/Extension/Track+Identity.swift +18 -0
  58. package/ios/HybridAudioBrowser.swift +113 -35
  59. package/ios/Model/NitroTypeStubs.swift +46 -21
  60. package/ios/Model/PlayerUpdateOptions.swift +7 -0
  61. package/ios/Player/NowPlayingUpdater.swift +1 -1
  62. package/ios/Player/PlaybackCoordinator.swift +2 -2
  63. package/ios/Player/RetryManager.swift +4 -3
  64. package/ios/Tests/BrowserPathHelperTests.swift +50 -20
  65. package/ios/Tests/CarPlayArtworkResolverTests.swift +24 -41
  66. package/ios/Tests/JsonModelsTests.swift +75 -1
  67. package/ios/Tests/PlaybackStateStoreTests.swift +4 -3
  68. package/ios/Tests/ResolvedTrackCopyingTests.swift +37 -35
  69. package/ios/Tests/SearchDrillInTests.swift +16 -16
  70. package/ios/Tests/SectionPresentationTests.swift +61 -0
  71. package/ios/Tests/SectionScopeTests.swift +87 -55
  72. package/ios/Tests/StyleResolverTests.swift +67 -0
  73. package/ios/Tests/TabBarEntriesTests.swift +18 -18
  74. package/ios/Tests/TrackIdTemplateTests.swift +67 -0
  75. package/ios/Tests/TrackIdentityTests.swift +20 -0
  76. package/ios/Tests/TrackSelectorTests.swift +168 -33
  77. package/ios/TrackSelector.swift +45 -30
  78. package/ios/Util/ArtworkImageFetcher.swift +16 -1
  79. package/lib/commonjs/AudioBrowser.js +11 -0
  80. package/lib/commonjs/AudioBrowser.js.map +1 -1
  81. package/lib/commonjs/features/browser-config.js +11 -8
  82. package/lib/commonjs/features/browser-config.js.map +1 -1
  83. package/lib/commonjs/features/browser.js +2 -2
  84. package/lib/commonjs/features/favorites.js +13 -10
  85. package/lib/commonjs/features/favorites.js.map +1 -1
  86. package/lib/commonjs/features/playback/controls.js +4 -2
  87. package/lib/commonjs/features/playback/controls.js.map +1 -1
  88. package/lib/commonjs/features/playback/state.js +2 -3
  89. package/lib/commonjs/features/playback/state.js.map +1 -1
  90. package/lib/commonjs/features/player/options.js.map +1 -1
  91. package/lib/commonjs/features/player/setup.js +3 -1
  92. package/lib/commonjs/features/player/setup.js.map +1 -1
  93. package/lib/commonjs/features/player/validateOptions.js +2 -0
  94. package/lib/commonjs/features/player/validateOptions.js.map +1 -1
  95. package/lib/commonjs/features/queue/activeTrack.js +14 -3
  96. package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
  97. package/lib/commonjs/features/queue/queue.js +11 -4
  98. package/lib/commonjs/features/queue/queue.js.map +1 -1
  99. package/lib/commonjs/utils/LazyNativeEmitter.js +21 -10
  100. package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
  101. package/lib/commonjs/utils/NativeUpdatedValue.js +31 -13
  102. package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
  103. package/lib/commonjs/utils/getTrackIdentity.js +24 -0
  104. package/lib/commonjs/utils/getTrackIdentity.js.map +1 -0
  105. package/lib/commonjs/utils/useNativeValueRefreshedBy.js +33 -0
  106. package/lib/commonjs/utils/useNativeValueRefreshedBy.js.map +1 -0
  107. package/lib/commonjs/web/NativeAudioBrowser.js +32 -24
  108. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
  109. package/lib/commonjs/web/browser/BrowserManager.js +144 -87
  110. package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
  111. package/lib/commonjs/web/browser/FavoriteManager.js +30 -21
  112. package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
  113. package/lib/commonjs/web/browser/assertBrowsePageShape.js +2 -2
  114. package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +1 -1
  115. package/lib/commonjs/web/browser/classifyTrackNavigation.js +9 -9
  116. package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +1 -1
  117. package/lib/commonjs/web/browser/sections.js +89 -0
  118. package/lib/commonjs/web/browser/sections.js.map +1 -0
  119. package/lib/commonjs/web/player/NowPlayingManager.js +4 -3
  120. package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
  121. package/lib/commonjs/web/util/BrowserPathHelper.js +56 -11
  122. package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
  123. package/lib/module/AudioBrowser.js +1 -0
  124. package/lib/module/AudioBrowser.js.map +1 -1
  125. package/lib/module/features/browser-config.js +11 -8
  126. package/lib/module/features/browser-config.js.map +1 -1
  127. package/lib/module/features/browser.js +2 -2
  128. package/lib/module/features/favorites.js +13 -10
  129. package/lib/module/features/favorites.js.map +1 -1
  130. package/lib/module/features/playback/controls.js +4 -2
  131. package/lib/module/features/playback/controls.js.map +1 -1
  132. package/lib/module/features/playback/state.js +2 -3
  133. package/lib/module/features/playback/state.js.map +1 -1
  134. package/lib/module/features/player/options.js.map +1 -1
  135. package/lib/module/features/player/setup.js +3 -1
  136. package/lib/module/features/player/setup.js.map +1 -1
  137. package/lib/module/features/player/validateOptions.js +2 -0
  138. package/lib/module/features/player/validateOptions.js.map +1 -1
  139. package/lib/module/features/queue/activeTrack.js +14 -3
  140. package/lib/module/features/queue/activeTrack.js.map +1 -1
  141. package/lib/module/features/queue/queue.js +11 -4
  142. package/lib/module/features/queue/queue.js.map +1 -1
  143. package/lib/module/utils/LazyNativeEmitter.js +21 -10
  144. package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
  145. package/lib/module/utils/NativeUpdatedValue.js +31 -13
  146. package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
  147. package/lib/module/utils/getTrackIdentity.js +20 -0
  148. package/lib/module/utils/getTrackIdentity.js.map +1 -0
  149. package/lib/module/utils/useNativeValueRefreshedBy.js +29 -0
  150. package/lib/module/utils/useNativeValueRefreshedBy.js.map +1 -0
  151. package/lib/module/web/NativeAudioBrowser.js +32 -24
  152. package/lib/module/web/NativeAudioBrowser.js.map +1 -1
  153. package/lib/module/web/browser/BrowserManager.js +144 -87
  154. package/lib/module/web/browser/BrowserManager.js.map +1 -1
  155. package/lib/module/web/browser/FavoriteManager.js +31 -21
  156. package/lib/module/web/browser/FavoriteManager.js.map +1 -1
  157. package/lib/module/web/browser/assertBrowsePageShape.js +2 -2
  158. package/lib/module/web/browser/assertBrowsePageShape.js.map +1 -1
  159. package/lib/module/web/browser/classifyTrackNavigation.js +9 -9
  160. package/lib/module/web/browser/classifyTrackNavigation.js.map +1 -1
  161. package/lib/module/web/browser/sections.js +83 -0
  162. package/lib/module/web/browser/sections.js.map +1 -0
  163. package/lib/module/web/player/NowPlayingManager.js +4 -3
  164. package/lib/module/web/player/NowPlayingManager.js.map +1 -1
  165. package/lib/module/web/util/BrowserPathHelper.js +56 -11
  166. package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
  167. package/lib/typescript/src/AudioBrowser.d.ts +1 -0
  168. package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
  169. package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
  170. package/lib/typescript/src/features/browser.d.ts +2 -2
  171. package/lib/typescript/src/features/favorites.d.ts +13 -10
  172. package/lib/typescript/src/features/favorites.d.ts.map +1 -1
  173. package/lib/typescript/src/features/playback/controls.d.ts +4 -2
  174. package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
  175. package/lib/typescript/src/features/playback/state.d.ts +2 -3
  176. package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
  177. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +1 -1
  178. package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +1 -1
  179. package/lib/typescript/src/features/player/options.d.ts +21 -19
  180. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  181. package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
  182. package/lib/typescript/src/features/player/validateOptions.d.ts +1 -8
  183. package/lib/typescript/src/features/player/validateOptions.d.ts.map +1 -1
  184. package/lib/typescript/src/features/queue/activeTrack.d.ts +8 -1
  185. package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
  186. package/lib/typescript/src/features/queue/queue.d.ts +5 -2
  187. package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
  188. package/lib/typescript/src/types/browser-native.d.ts +2 -2
  189. package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
  190. package/lib/typescript/src/types/browser-nodes.d.ts +260 -127
  191. package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
  192. package/lib/typescript/src/types/browser.d.ts +33 -53
  193. package/lib/typescript/src/types/browser.d.ts.map +1 -1
  194. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +16 -17
  195. package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
  196. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +24 -19
  197. package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
  198. package/lib/typescript/src/utils/getTrackIdentity.d.ts +18 -0
  199. package/lib/typescript/src/utils/getTrackIdentity.d.ts.map +1 -0
  200. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts +21 -0
  201. package/lib/typescript/src/utils/useNativeValueRefreshedBy.d.ts.map +1 -0
  202. package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +0 -1
  203. package/nitrogen/generated/android/c++/{JFavoritesMatchMode.hpp → JArtworkRendering.hpp} +15 -15
  204. package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +4 -3
  205. package/nitrogen/generated/android/c++/JBrowseResult.hpp +10 -4
  206. package/nitrogen/generated/android/c++/JCarPlayPlayingIndicatorLocation.hpp +58 -0
  207. package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +4 -3
  208. package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +4 -3
  209. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +4 -3
  210. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +4 -3
  211. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +4 -3
  212. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +4 -3
  213. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +4 -2
  214. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +4 -2
  215. 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
  216. package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +4 -3
  217. package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +2 -5
  218. package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +4 -3
  219. package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +9 -3
  220. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +4 -2
  221. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +21 -14
  222. package/nitrogen/generated/android/c++/JIOSOptions.hpp +9 -3
  223. package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +4 -3
  224. package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +16 -10
  225. package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +8 -2
  226. package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +6 -7
  227. package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +2 -5
  228. package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +9 -3
  229. package/nitrogen/generated/android/c++/JOptions.hpp +2 -5
  230. package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +4 -3
  231. package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
  232. package/nitrogen/generated/android/c++/JResolvedTrack.hpp +49 -51
  233. package/nitrogen/generated/android/c++/JSection.hpp +114 -0
  234. package/nitrogen/generated/android/c++/JSectionStyle.hpp +69 -0
  235. package/nitrogen/generated/android/c++/JStyleDisplay.hpp +58 -0
  236. package/nitrogen/generated/android/c++/JTrack.hpp +19 -48
  237. package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +4 -2
  238. package/nitrogen/generated/android/c++/JTrackStyle.hpp +25 -18
  239. package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +10 -4
  240. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → ArtworkRendering.kt} +5 -5
  241. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayPlayingIndicatorLocation.kt +23 -0
  242. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +6 -3
  243. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +5 -5
  244. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +6 -3
  245. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
  246. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +12 -18
  247. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Section.kt +50 -0
  248. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → SectionStyle.kt} +12 -6
  249. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StyleDisplay.kt +23 -0
  250. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +6 -15
  251. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackStyle.kt +23 -5
  252. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +104 -82
  253. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +16 -10
  254. package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +16 -10
  255. package/nitrogen/generated/ios/swift/ArtworkRendering.swift +40 -0
  256. package/nitrogen/generated/ios/swift/CarPlayPlayingIndicatorLocation.swift +40 -0
  257. package/nitrogen/generated/ios/swift/IOSOptions.swift +7 -2
  258. package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +5 -5
  259. package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +12 -1
  260. package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
  261. package/nitrogen/generated/ios/swift/ResolvedTrack.swift +54 -83
  262. package/nitrogen/generated/ios/swift/Section.swift +100 -0
  263. package/nitrogen/generated/ios/swift/SectionStyle.swift +64 -0
  264. package/nitrogen/generated/ios/swift/StyleDisplay.swift +40 -0
  265. package/nitrogen/generated/ios/swift/Track.swift +20 -73
  266. package/nitrogen/generated/ios/swift/TrackStyle.swift +28 -22
  267. package/nitrogen/generated/shared/c++/{FavoritesMatchMode.hpp → ArtworkRendering.hpp} +17 -17
  268. package/nitrogen/generated/shared/c++/CarPlayPlayingIndicatorLocation.hpp +76 -0
  269. package/nitrogen/generated/shared/c++/IOSOptions.hpp +9 -2
  270. package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +6 -6
  271. package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +9 -2
  272. package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
  273. package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +30 -38
  274. package/nitrogen/generated/shared/c++/Section.hpp +106 -0
  275. package/nitrogen/generated/shared/c++/SectionStyle.hpp +96 -0
  276. package/nitrogen/generated/shared/c++/StyleDisplay.hpp +76 -0
  277. package/nitrogen/generated/shared/c++/Track.hpp +15 -31
  278. package/nitrogen/generated/shared/c++/TrackStyle.hpp +50 -34
  279. package/package.json +1 -1
  280. package/src/AudioBrowser.ts +1 -0
  281. package/src/features/browser-config.test.ts +21 -6
  282. package/src/features/browser-config.ts +11 -8
  283. package/src/features/browser.test.ts +1 -1
  284. package/src/features/browser.ts +2 -2
  285. package/src/features/favorites.ts +13 -10
  286. package/src/features/hook-wiring.test.ts +63 -15
  287. package/src/features/playback/controls.ts +4 -2
  288. package/src/features/playback/state.ts +2 -3
  289. package/src/features/playback/trackPlaybackTime.ts +1 -1
  290. package/src/features/player/options.ts +27 -19
  291. package/src/features/player/setup.test.ts +12 -3
  292. package/src/features/player/setup.ts +3 -1
  293. package/src/features/player/validateOptions.ts +2 -0
  294. package/src/features/queue/activeTrack.ts +14 -3
  295. package/src/features/queue/queue.ts +11 -4
  296. package/src/nitro-stub-drift.test.ts +40 -0
  297. package/src/public-surface.test.ts +40 -0
  298. package/src/specs/audio-browser.nitro.ts +4 -3
  299. package/src/style-resolution.test.ts +139 -0
  300. package/src/types/browser-native.ts +2 -2
  301. package/src/types/browser-nodes.ts +268 -136
  302. package/src/types/browser.ts +34 -55
  303. package/src/utils/LazyNativeEmitter.ts +20 -10
  304. package/src/utils/NativeUpdatedValue.ts +29 -13
  305. package/src/utils/getTrackIdentity.ts +20 -0
  306. package/src/utils/useNativeValueRefreshedBy.ts +38 -0
  307. package/src/web/NativeAudioBrowser.ts +37 -22
  308. package/src/web/browser/BrowserManager.ts +176 -95
  309. package/src/web/browser/FavoriteManager.test.ts +84 -0
  310. package/src/web/browser/FavoriteManager.ts +28 -23
  311. package/src/web/browser/assertBrowsePageShape.test.ts +1 -1
  312. package/src/web/browser/assertBrowsePageShape.ts +5 -3
  313. package/src/web/browser/classifyTrackNavigation.test.ts +10 -8
  314. package/src/web/browser/classifyTrackNavigation.ts +9 -9
  315. package/src/web/browser/parseSearchResponse.test.ts +8 -2
  316. package/src/web/browser/sections.test.ts +91 -0
  317. package/src/web/browser/sections.ts +72 -0
  318. package/src/web/player/NowPlayingManager.ts +4 -3
  319. package/src/web/util/BrowserPathHelper.test.ts +52 -0
  320. package/src/web/util/BrowserPathHelper.ts +61 -13
  321. package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
  322. package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
  323. package/nitrogen/generated/android/c++/JImageRowItem.hpp +0 -105
  324. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
  325. package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
  326. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +0 -68
  327. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
  328. package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
  329. package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
  330. package/nitrogen/generated/ios/swift/ImageRowItem.swift +0 -195
  331. package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
  332. package/nitrogen/generated/shared/c++/FavoriteConfig.hpp +0 -84
  333. package/nitrogen/generated/shared/c++/ImageRowItem.hpp +0 -129
@@ -1,105 +0,0 @@
1
- ///
2
- /// JImageRowItem.hpp
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
- #pragma once
9
-
10
- #include <fbjni/fbjni.h>
11
- #include "ImageRowItem.hpp"
12
-
13
- #include "HttpMethod.hpp"
14
- #include "ImageSource.hpp"
15
- #include "JHttpMethod.hpp"
16
- #include "JImageSource.hpp"
17
- #include "JTrackRequest.hpp"
18
- #include "TrackRequest.hpp"
19
- #include <optional>
20
- #include <string>
21
- #include <unordered_map>
22
-
23
- namespace margelo::nitro::audiobrowser {
24
-
25
- using namespace facebook;
26
-
27
- /**
28
- * The C++ JNI bridge between the C++ struct "ImageRowItem" and the the Kotlin data class "ImageRowItem".
29
- */
30
- struct JImageRowItem final: public jni::JavaClass<JImageRowItem> {
31
- public:
32
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/ImageRowItem;";
33
-
34
- public:
35
- /**
36
- * Convert this Java/Kotlin-based struct to the C++ struct ImageRowItem by copying all values to C++.
37
- */
38
- [[maybe_unused]]
39
- [[nodiscard]]
40
- ImageRowItem toCpp() const {
41
- static const auto clazz = javaClassStatic();
42
- static const auto fieldId = clazz->getField<jni::JString>("id");
43
- jni::local_ref<jni::JString> id = this->getFieldValue(fieldId);
44
- static const auto fieldUrl = clazz->getField<jni::JString>("url");
45
- jni::local_ref<jni::JString> url = this->getFieldValue(fieldUrl);
46
- static const auto fieldSrc = clazz->getField<jni::JString>("src");
47
- jni::local_ref<jni::JString> src = this->getFieldValue(fieldSrc);
48
- static const auto fieldArtwork = clazz->getField<jni::JString>("artwork");
49
- jni::local_ref<jni::JString> artwork = this->getFieldValue(fieldArtwork);
50
- static const auto fieldArtworkSource = clazz->getField<JImageSource>("artworkSource");
51
- jni::local_ref<JImageSource> artworkSource = this->getFieldValue(fieldArtworkSource);
52
- static const auto fieldTitle = clazz->getField<jni::JString>("title");
53
- jni::local_ref<jni::JString> title = this->getFieldValue(fieldTitle);
54
- static const auto fieldArtist = clazz->getField<jni::JString>("artist");
55
- jni::local_ref<jni::JString> artist = this->getFieldValue(fieldArtist);
56
- static const auto fieldAlbum = clazz->getField<jni::JString>("album");
57
- jni::local_ref<jni::JString> album = this->getFieldValue(fieldAlbum);
58
- static const auto fieldAlbumUrl = clazz->getField<jni::JString>("albumUrl");
59
- jni::local_ref<jni::JString> albumUrl = this->getFieldValue(fieldAlbumUrl);
60
- static const auto fieldLive = clazz->getField<jni::JBoolean>("live");
61
- jni::local_ref<jni::JBoolean> live = this->getFieldValue(fieldLive);
62
- static const auto fieldRequest = clazz->getField<JTrackRequest>("request");
63
- jni::local_ref<JTrackRequest> request = this->getFieldValue(fieldRequest);
64
- return ImageRowItem(
65
- id != nullptr ? std::make_optional(id->toStdString()) : std::nullopt,
66
- url != nullptr ? std::make_optional(url->toStdString()) : std::nullopt,
67
- src != nullptr ? std::make_optional(src->toStdString()) : std::nullopt,
68
- artwork != nullptr ? std::make_optional(artwork->toStdString()) : std::nullopt,
69
- artworkSource != nullptr ? std::make_optional(artworkSource->toCpp()) : std::nullopt,
70
- title->toStdString(),
71
- artist != nullptr ? std::make_optional(artist->toStdString()) : std::nullopt,
72
- album != nullptr ? std::make_optional(album->toStdString()) : std::nullopt,
73
- albumUrl != nullptr ? std::make_optional(albumUrl->toStdString()) : std::nullopt,
74
- live != nullptr ? std::make_optional(static_cast<bool>(live->value())) : std::nullopt,
75
- request != nullptr ? std::make_optional(request->toCpp()) : std::nullopt
76
- );
77
- }
78
-
79
- public:
80
- /**
81
- * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
82
- */
83
- [[maybe_unused]]
84
- static jni::local_ref<JImageRowItem::javaobject> fromCpp(const ImageRowItem& value) {
85
- using JSignature = JImageRowItem(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<JImageSource>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<JTrackRequest>);
86
- static const auto clazz = javaClassStatic();
87
- static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
88
- return create(
89
- clazz,
90
- value.id.has_value() ? jni::make_jstring(value.id.value()) : nullptr,
91
- value.url.has_value() ? jni::make_jstring(value.url.value()) : nullptr,
92
- value.src.has_value() ? jni::make_jstring(value.src.value()) : nullptr,
93
- value.artwork.has_value() ? jni::make_jstring(value.artwork.value()) : nullptr,
94
- value.artworkSource.has_value() ? JImageSource::fromCpp(value.artworkSource.value()) : nullptr,
95
- jni::make_jstring(value.title),
96
- value.artist.has_value() ? jni::make_jstring(value.artist.value()) : nullptr,
97
- value.album.has_value() ? jni::make_jstring(value.album.value()) : nullptr,
98
- value.albumUrl.has_value() ? jni::make_jstring(value.albumUrl.value()) : nullptr,
99
- value.live.has_value() ? jni::JBoolean::valueOf(value.live.value()) : nullptr,
100
- value.request.has_value() ? JTrackRequest::fromCpp(value.request.value()) : nullptr
101
- );
102
- }
103
- };
104
-
105
- } // namespace margelo::nitro::audiobrowser
@@ -1,26 +0,0 @@
1
- ///
2
- /// JVariant_Boolean_FavoriteConfig.cpp
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
- #include "JVariant_Boolean_FavoriteConfig.hpp"
9
-
10
- namespace margelo::nitro::audiobrowser {
11
- /**
12
- * Converts JVariant_Boolean_FavoriteConfig to std::variant<bool, FavoriteConfig>
13
- */
14
- std::variant<bool, FavoriteConfig> JVariant_Boolean_FavoriteConfig::toCpp() const {
15
- if (isInstanceOf(JVariant_Boolean_FavoriteConfig_impl::First::javaClassStatic())) {
16
- // It's a `bool`
17
- auto jniValue = static_cast<const JVariant_Boolean_FavoriteConfig_impl::First*>(this)->getValue();
18
- return static_cast<bool>(jniValue);
19
- } else if (isInstanceOf(JVariant_Boolean_FavoriteConfig_impl::Second::javaClassStatic())) {
20
- // It's a `FavoriteConfig`
21
- auto jniValue = static_cast<const JVariant_Boolean_FavoriteConfig_impl::Second*>(this)->getValue();
22
- return jniValue->toCpp();
23
- }
24
- throw std::invalid_argument("Variant is unknown Kotlin instance!");
25
- }
26
- } // namespace margelo::nitro::audiobrowser
@@ -1,71 +0,0 @@
1
- ///
2
- /// JVariant_Boolean_FavoriteConfig.hpp
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
- #pragma once
9
-
10
- #include <fbjni/fbjni.h>
11
- #include <variant>
12
-
13
- #include "FavoriteConfig.hpp"
14
- #include <variant>
15
- #include "JFavoriteConfig.hpp"
16
- #include "FavoritesMatchMode.hpp"
17
- #include "JFavoritesMatchMode.hpp"
18
-
19
- namespace margelo::nitro::audiobrowser {
20
-
21
- using namespace facebook;
22
-
23
- /**
24
- * The C++ JNI bridge between the C++ std::variant and the Java class "Variant_Boolean_FavoriteConfig".
25
- */
26
- class JVariant_Boolean_FavoriteConfig: public jni::JavaClass<JVariant_Boolean_FavoriteConfig> {
27
- public:
28
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig;";
29
-
30
- static jni::local_ref<JVariant_Boolean_FavoriteConfig> create_0(jboolean value) {
31
- static const auto method = javaClassStatic()->getStaticMethod<JVariant_Boolean_FavoriteConfig(jboolean)>("create");
32
- return method(javaClassStatic(), value);
33
- }
34
- static jni::local_ref<JVariant_Boolean_FavoriteConfig> create_1(jni::alias_ref<JFavoriteConfig> value) {
35
- static const auto method = javaClassStatic()->getStaticMethod<JVariant_Boolean_FavoriteConfig(jni::alias_ref<JFavoriteConfig>)>("create");
36
- return method(javaClassStatic(), value);
37
- }
38
-
39
- static jni::local_ref<JVariant_Boolean_FavoriteConfig> fromCpp(const std::variant<bool, FavoriteConfig>& variant) {
40
- switch (variant.index()) {
41
- case 0: return create_0(std::get<0>(variant));
42
- case 1: return create_1(JFavoriteConfig::fromCpp(std::get<1>(variant)));
43
- default: throw std::invalid_argument("Variant holds unknown index! (" + std::to_string(variant.index()) + ")");
44
- }
45
- }
46
-
47
- [[nodiscard]] std::variant<bool, FavoriteConfig> toCpp() const;
48
- };
49
-
50
- namespace JVariant_Boolean_FavoriteConfig_impl {
51
- class First final: public jni::JavaClass<First, JVariant_Boolean_FavoriteConfig> {
52
- public:
53
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig$First;";
54
-
55
- [[nodiscard]] jboolean getValue() const {
56
- static const auto field = javaClassStatic()->getField<jboolean>("value");
57
- return getFieldValue(field);
58
- }
59
- };
60
-
61
- class Second final: public jni::JavaClass<Second, JVariant_Boolean_FavoriteConfig> {
62
- public:
63
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig$Second;";
64
-
65
- [[nodiscard]] jni::local_ref<JFavoriteConfig> getValue() const {
66
- static const auto field = javaClassStatic()->getField<JFavoriteConfig>("value");
67
- return getFieldValue(field);
68
- }
69
- };
70
- } // namespace JVariant_Boolean_FavoriteConfig_impl
71
- } // namespace margelo::nitro::audiobrowser
@@ -1,68 +0,0 @@
1
- ///
2
- /// ImageRowItem.kt
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
- package com.margelo.nitro.audiobrowser
9
-
10
- import androidx.annotation.Keep
11
- import com.facebook.proguard.annotations.DoNotStrip
12
-
13
-
14
- /**
15
- * Represents the JavaScript object/struct "ImageRowItem".
16
- */
17
- @DoNotStrip
18
- @Keep
19
- data class ImageRowItem(
20
- @DoNotStrip
21
- @Keep
22
- val id: String?,
23
- @DoNotStrip
24
- @Keep
25
- val url: String?,
26
- @DoNotStrip
27
- @Keep
28
- val src: String?,
29
- @DoNotStrip
30
- @Keep
31
- val artwork: String?,
32
- @DoNotStrip
33
- @Keep
34
- val artworkSource: ImageSource?,
35
- @DoNotStrip
36
- @Keep
37
- val title: String,
38
- @DoNotStrip
39
- @Keep
40
- val artist: String?,
41
- @DoNotStrip
42
- @Keep
43
- val album: String?,
44
- @DoNotStrip
45
- @Keep
46
- val albumUrl: String?,
47
- @DoNotStrip
48
- @Keep
49
- val live: Boolean?,
50
- @DoNotStrip
51
- @Keep
52
- val request: TrackRequest?
53
- ) {
54
- /* primary constructor */
55
-
56
- companion object {
57
- /**
58
- * Constructor called from C++
59
- */
60
- @DoNotStrip
61
- @Keep
62
- @Suppress("unused")
63
- @JvmStatic
64
- private fun fromCpp(id: String?, url: String?, src: String?, artwork: String?, artworkSource: ImageSource?, title: String, artist: String?, album: String?, albumUrl: String?, live: Boolean?, request: TrackRequest?): ImageRowItem {
65
- return ImageRowItem(id, url, src, artwork, artworkSource, title, artist, album, albumUrl, live, request)
66
- }
67
- }
68
- }
@@ -1,53 +0,0 @@
1
- ///
2
- /// Variant_Boolean_FavoriteConfig.kt
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
- package com.margelo.nitro.audiobrowser
9
-
10
- import com.facebook.proguard.annotations.DoNotStrip
11
-
12
-
13
- /**
14
- * Represents the TypeScript variant "Boolean | FavoriteConfig".
15
- */
16
- @Suppress("ClassName")
17
- @DoNotStrip
18
- sealed class Variant_Boolean_FavoriteConfig {
19
- @DoNotStrip
20
- data class First(@DoNotStrip val value: Boolean): Variant_Boolean_FavoriteConfig()
21
- @DoNotStrip
22
- data class Second(@DoNotStrip val value: FavoriteConfig): Variant_Boolean_FavoriteConfig()
23
-
24
- val isFirst: Boolean
25
- get() = this is First
26
- val isSecond: Boolean
27
- get() = this is Second
28
-
29
- fun asFirstOrNull(): Boolean? {
30
- val value = (this as? First)?.value ?: return null
31
- return value
32
- }
33
- fun asSecondOrNull(): FavoriteConfig? {
34
- val value = (this as? Second)?.value ?: return null
35
- return value
36
- }
37
-
38
- inline fun <R> match(first: (Boolean) -> R, second: (FavoriteConfig) -> R): R {
39
- return when (this) {
40
- is First -> first(value)
41
- is Second -> second(value)
42
- }
43
- }
44
-
45
- companion object {
46
- @JvmStatic
47
- @DoNotStrip
48
- fun create(value: Boolean): Variant_Boolean_FavoriteConfig = First(value)
49
- @JvmStatic
50
- @DoNotStrip
51
- fun create(value: FavoriteConfig): Variant_Boolean_FavoriteConfig = Second(value)
52
- }
53
- }
@@ -1,29 +0,0 @@
1
- ///
2
- /// FavoriteConfig.swift
3
- /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
- /// https://github.com/mrousavy/nitro
5
- /// Copyright © Marc Rousavy @ Margelo
6
- ///
7
-
8
- import NitroModules
9
-
10
- /**
11
- * Represents an instance of `FavoriteConfig`, backed by a C++ struct.
12
- */
13
- public typealias FavoriteConfig = margelo.nitro.audiobrowser.FavoriteConfig
14
-
15
- public extension FavoriteConfig {
16
- private typealias bridge = margelo.nitro.audiobrowser.bridge.swift
17
-
18
- /**
19
- * Create a new instance of `FavoriteConfig`.
20
- */
21
- init(match: FavoritesMatchMode) {
22
- self.init(match)
23
- }
24
-
25
- @inline(__always)
26
- var match: FavoritesMatchMode {
27
- return self.__match
28
- }
29
- }
@@ -1,40 +0,0 @@
1
- ///
2
- /// FavoritesMatchMode.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 `FavoritesMatchMode`, backed by a C++ enum.
10
- */
11
- public typealias FavoritesMatchMode = margelo.nitro.audiobrowser.FavoritesMatchMode
12
-
13
- public extension FavoritesMatchMode {
14
- /**
15
- * Get a FavoritesMatchMode 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 "exact":
21
- self = .exact
22
- case "partial":
23
- self = .partial
24
- default:
25
- return nil
26
- }
27
- }
28
-
29
- /**
30
- * Get the String value this FavoritesMatchMode represents.
31
- */
32
- var stringValue: String {
33
- switch self {
34
- case .exact:
35
- return "exact"
36
- case .partial:
37
- return "partial"
38
- }
39
- }
40
- }
@@ -1,195 +0,0 @@
1
- ///
2
- /// ImageRowItem.swift
3
- /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
- /// https://github.com/mrousavy/nitro
5
- /// Copyright © Marc Rousavy @ Margelo
6
- ///
7
-
8
- import NitroModules
9
-
10
- /**
11
- * Represents an instance of `ImageRowItem`, backed by a C++ struct.
12
- */
13
- public typealias ImageRowItem = margelo.nitro.audiobrowser.ImageRowItem
14
-
15
- public extension ImageRowItem {
16
- private typealias bridge = margelo.nitro.audiobrowser.bridge.swift
17
-
18
- /**
19
- * Create a new instance of `ImageRowItem`.
20
- */
21
- init(id: String?, url: String?, src: String?, artwork: String?, artworkSource: ImageSource?, title: String, artist: String?, album: String?, albumUrl: String?, live: Bool?, request: TrackRequest?) {
22
- self.init({ () -> bridge.std__optional_std__string_ in
23
- if let __unwrappedValue = id {
24
- return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
25
- } else {
26
- return .init()
27
- }
28
- }(), { () -> bridge.std__optional_std__string_ in
29
- if let __unwrappedValue = url {
30
- return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
31
- } else {
32
- return .init()
33
- }
34
- }(), { () -> bridge.std__optional_std__string_ in
35
- if let __unwrappedValue = src {
36
- return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
37
- } else {
38
- return .init()
39
- }
40
- }(), { () -> bridge.std__optional_std__string_ in
41
- if let __unwrappedValue = artwork {
42
- return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
43
- } else {
44
- return .init()
45
- }
46
- }(), { () -> bridge.std__optional_ImageSource_ in
47
- if let __unwrappedValue = artworkSource {
48
- return bridge.create_std__optional_ImageSource_(__unwrappedValue)
49
- } else {
50
- return .init()
51
- }
52
- }(), std.string(title), { () -> bridge.std__optional_std__string_ in
53
- if let __unwrappedValue = artist {
54
- return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
55
- } else {
56
- return .init()
57
- }
58
- }(), { () -> bridge.std__optional_std__string_ in
59
- if let __unwrappedValue = album {
60
- return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
61
- } else {
62
- return .init()
63
- }
64
- }(), { () -> bridge.std__optional_std__string_ in
65
- if let __unwrappedValue = albumUrl {
66
- return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
67
- } else {
68
- return .init()
69
- }
70
- }(), { () -> bridge.std__optional_bool_ in
71
- if let __unwrappedValue = live {
72
- return bridge.create_std__optional_bool_(__unwrappedValue)
73
- } else {
74
- return .init()
75
- }
76
- }(), { () -> bridge.std__optional_TrackRequest_ in
77
- if let __unwrappedValue = request {
78
- return bridge.create_std__optional_TrackRequest_(__unwrappedValue)
79
- } else {
80
- return .init()
81
- }
82
- }())
83
- }
84
-
85
- @inline(__always)
86
- var id: String? {
87
- return { () -> String? in
88
- if bridge.has_value_std__optional_std__string_(self.__id) {
89
- let __unwrapped = bridge.get_std__optional_std__string_(self.__id)
90
- return String(__unwrapped)
91
- } else {
92
- return nil
93
- }
94
- }()
95
- }
96
-
97
- @inline(__always)
98
- var url: String? {
99
- return { () -> String? in
100
- if bridge.has_value_std__optional_std__string_(self.__url) {
101
- let __unwrapped = bridge.get_std__optional_std__string_(self.__url)
102
- return String(__unwrapped)
103
- } else {
104
- return nil
105
- }
106
- }()
107
- }
108
-
109
- @inline(__always)
110
- var src: String? {
111
- return { () -> String? in
112
- if bridge.has_value_std__optional_std__string_(self.__src) {
113
- let __unwrapped = bridge.get_std__optional_std__string_(self.__src)
114
- return String(__unwrapped)
115
- } else {
116
- return nil
117
- }
118
- }()
119
- }
120
-
121
- @inline(__always)
122
- var artwork: String? {
123
- return { () -> String? in
124
- if bridge.has_value_std__optional_std__string_(self.__artwork) {
125
- let __unwrapped = bridge.get_std__optional_std__string_(self.__artwork)
126
- return String(__unwrapped)
127
- } else {
128
- return nil
129
- }
130
- }()
131
- }
132
-
133
- @inline(__always)
134
- var artworkSource: ImageSource? {
135
- return self.__artworkSource.value
136
- }
137
-
138
- @inline(__always)
139
- var title: String {
140
- return String(self.__title)
141
- }
142
-
143
- @inline(__always)
144
- var artist: String? {
145
- return { () -> String? in
146
- if bridge.has_value_std__optional_std__string_(self.__artist) {
147
- let __unwrapped = bridge.get_std__optional_std__string_(self.__artist)
148
- return String(__unwrapped)
149
- } else {
150
- return nil
151
- }
152
- }()
153
- }
154
-
155
- @inline(__always)
156
- var album: String? {
157
- return { () -> String? in
158
- if bridge.has_value_std__optional_std__string_(self.__album) {
159
- let __unwrapped = bridge.get_std__optional_std__string_(self.__album)
160
- return String(__unwrapped)
161
- } else {
162
- return nil
163
- }
164
- }()
165
- }
166
-
167
- @inline(__always)
168
- var albumUrl: String? {
169
- return { () -> String? in
170
- if bridge.has_value_std__optional_std__string_(self.__albumUrl) {
171
- let __unwrapped = bridge.get_std__optional_std__string_(self.__albumUrl)
172
- return String(__unwrapped)
173
- } else {
174
- return nil
175
- }
176
- }()
177
- }
178
-
179
- @inline(__always)
180
- var live: Bool? {
181
- return { () -> Bool? in
182
- if bridge.has_value_std__optional_bool_(self.__live) {
183
- let __unwrapped = bridge.get_std__optional_bool_(self.__live)
184
- return __unwrapped
185
- } else {
186
- return nil
187
- }
188
- }()
189
- }
190
-
191
- @inline(__always)
192
- var request: TrackRequest? {
193
- return self.__request.value
194
- }
195
- }
@@ -1,18 +0,0 @@
1
- ///
2
- /// Variant_Bool_FavoriteConfig.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
-
10
- /**
11
- * An Swift enum with associated values representing a Variant/Union type.
12
- * JS type: `boolean | struct`
13
- */
14
- @frozen
15
- public indirect enum Variant_Bool_FavoriteConfig {
16
- case first(Bool)
17
- case second(FavoriteConfig)
18
- }