react-native-audio-browser 0.2.0-next.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AudioBrowser.podspec +1 -1
- package/README.md +2 -180
- package/android/build.gradle +1 -17
- package/android/gradle.properties +1 -1
- package/android/src/main/AndroidManifest.xml +0 -15
- package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +141 -401
- package/android/src/main/java/com/audiobrowser/Callbacks.kt +6 -4
- package/android/src/main/java/com/audiobrowser/Service.kt +18 -67
- package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +178 -442
- package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +4 -41
- package/android/src/main/java/com/audiobrowser/browser/TrackLoadHandler.kt +4 -4
- package/android/src/main/java/com/audiobrowser/http/RequestConfigBuilder.kt +97 -109
- package/android/src/main/java/com/audiobrowser/model/PlaybackMetadata.kt +10 -6
- package/android/src/main/java/com/audiobrowser/model/PlayerSetupOptions.kt +8 -40
- package/android/src/main/java/com/audiobrowser/model/PlayerUpdateOptions.kt +46 -40
- package/android/src/main/java/com/audiobrowser/player/AutomaticBufferManager.kt +1 -4
- package/android/src/main/java/com/audiobrowser/player/DynamicLoadControl.kt +1 -18
- package/android/src/main/java/com/audiobrowser/player/MediaFactory.kt +3 -15
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +134 -422
- package/android/src/main/java/com/audiobrowser/player/MediaSessionCommandManager.kt +404 -248
- package/android/src/main/java/com/audiobrowser/player/PlaybackProgressUpdateManager.kt +59 -0
- package/android/src/main/java/com/audiobrowser/player/PlaybackStateStore.kt +5 -25
- package/android/src/main/java/com/audiobrowser/player/Player.kt +582 -469
- package/android/src/main/java/com/audiobrowser/player/PlayerListener.kt +67 -190
- package/android/src/main/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicy.kt +53 -118
- package/android/src/main/java/com/audiobrowser/player/SleepTimer.kt +3 -37
- package/android/src/main/java/com/audiobrowser/player/TransformingDataSource.kt +40 -85
- package/android/src/main/java/com/audiobrowser/util/BrowserPathHelper.kt +0 -24
- package/android/src/main/java/com/audiobrowser/util/CoilBitmapLoader.kt +300 -23
- package/android/src/main/java/com/audiobrowser/util/EqualizerManager.kt +23 -13
- package/android/src/main/java/com/audiobrowser/util/MediaExtrasBuilder.kt +2 -2
- package/android/src/main/java/com/audiobrowser/util/MetadataAdapter.kt +3 -4
- package/android/src/main/java/com/audiobrowser/util/PlayingStateFactory.kt +1 -2
- package/android/src/main/java/com/audiobrowser/util/RatingFactory.kt +72 -0
- package/android/src/main/java/com/audiobrowser/util/ResolvedTrackFactory.kt +36 -0
- package/android/src/main/java/com/audiobrowser/util/SvgArtworkRenderer.kt +111 -6
- package/android/src/main/java/com/audiobrowser/util/SystemVolumeMonitor.kt +8 -22
- package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +80 -112
- package/android/src/main/res/values/strings.xml +0 -4
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerTest.kt +0 -4
- package/android/src/test/java/com/audiobrowser/browser/SimpleRouterTest.kt +2 -1
- package/android/src/test/java/com/audiobrowser/http/RequestConfigBuilderTest.kt +0 -72
- package/android/src/test/java/com/audiobrowser/player/PlaybackProgressUpdateManagerTest.kt +146 -0
- package/ios/Browser/BrowserConfig.swift +11 -41
- package/ios/Browser/BrowserManager+URLResolution.swift +93 -213
- package/ios/Browser/BrowserManager.swift +110 -303
- package/ios/Browser/BrowserPathHelper.swift +3 -32
- package/ios/Browser/JsonModels.swift +66 -287
- package/ios/CarPlay/CarPlayArtworkResolver.swift +6 -6
- package/ios/CarPlay/CarPlayController.swift +149 -739
- package/ios/CarPlay/CarPlayImageLoader.swift +8 -57
- package/ios/CarPlay/CarPlayListItemFactory.swift +35 -44
- package/ios/CarPlay/CarPlayNowPlayingManager.swift +36 -180
- package/ios/CarPlay/RNABAudioBrowser.h +10 -15
- package/ios/CarPlay/RNABAudioBrowser.m +14 -15
- package/ios/CarPlay/RNABCarPlaySceneDelegate.m +0 -2
- package/ios/CarPlay/RNABMediaIntentHandler.swift +43 -53
- package/ios/CarPlay/Track+CarPlay.swift +63 -0
- package/ios/Extension/Capability+RemoteCommand.swift +9 -7
- package/ios/Extension/ChapterMetadata+AVFoundation.swift +1 -1
- package/ios/Extension/NavigationError+Conversion.swift +1 -8
- package/ios/Extension/ResolvedTrack+Copying.swift +4 -10
- package/ios/Extension/TimedMetadata+AVFoundation.swift +1 -1
- package/ios/Extension/Track+AVPlayer.swift +4 -4
- package/ios/Extension/Track+Copying.swift +3 -9
- package/ios/Extension/TrackMetadata+AVFoundation.swift +1 -1
- package/ios/HybridAudioBrowser.swift +173 -751
- package/ios/Model/NitroTypeStubs.swift +224 -299
- package/ios/Model/PlayerUpdateOptions.swift +23 -23
- package/ios/Model/RemoteCommand.swift +6 -24
- package/ios/Model/TrackPlayerError.swift +18 -82
- package/ios/NowPlayingInfo/NowPlayingInfoCenter.swift +9 -0
- package/ios/NowPlayingInfo/NowPlayingInfoController.swift +121 -99
- package/ios/Observer/PlayerItemNotificationObserver.swift +5 -45
- package/ios/Observer/PlayerItemPropertyObserver.swift +4 -27
- package/ios/Observer/PlayerTimeObserver.swift +53 -3
- package/ios/Option/SessionCategories.swift +11 -34
- package/ios/Player/LoadSeekCoordinator.swift +1 -16
- package/ios/Player/MediaLoader.swift +11 -31
- package/ios/Player/NowPlayingUpdater.swift +26 -119
- package/ios/Player/PlaybackCoordinator.swift +51 -285
- package/ios/Player/PlaybackCoordinatorCallbacks.swift +1 -6
- package/ios/Player/PlaybackEffectHandler.swift +9 -19
- package/ios/Player/PlaybackErrorHandler.swift +13 -97
- package/ios/Player/PlaybackProgressUpdateManager.swift +68 -0
- package/ios/Player/PlaybackStateMachine.swift +13 -18
- package/ios/Player/PlayingStateManager.swift +2 -3
- package/ios/Player/QueueManager.swift +61 -67
- package/ios/Player/RetryManager.swift +21 -98
- package/ios/Player/SleepTimerHandling.swift +0 -8
- package/ios/Player/SleepTimerManager.swift +11 -72
- package/ios/RemoteCommand/RemoteCommandController.swift +21 -40
- package/ios/Tests/BrowserPathHelperTests.swift +0 -28
- package/ios/Tests/CarPlayArtworkResolverTests.swift +39 -39
- package/ios/Tests/ChapterMetadataAVFoundationTests.swift +2 -2
- package/ios/Tests/LoadSeekCoordinatorTests.swift +7 -40
- package/ios/Tests/MediaLoaderTests.swift +20 -32
- package/ios/Tests/PlaybackCoordinatorTests.swift +13 -787
- package/ios/Tests/PlaybackErrorHandlerTests.swift +46 -380
- package/ios/Tests/PlaybackProgressUpdateManagerTests.swift +166 -0
- package/ios/Tests/PlaybackStateMachineTests.swift +8 -33
- package/ios/Tests/QueueManagerTests.swift +18 -149
- package/ios/Tests/ResolvedTrackCopyingTests.swift +8 -15
- package/ios/Tests/Support/TestTypes.swift +20 -61
- package/ios/Tests/TrackSelectorTests.swift +15 -15
- package/ios/TrackPlayer.swift +58 -380
- package/ios/TrackPlayerCallbacks.swift +44 -5
- package/ios/TrackSelector.swift +5 -5
- package/ios/Util/ArtworkImageFetcher.swift +2 -4
- package/ios/Util/NetworkMonitor.swift +3 -7
- package/ios/Util/OnceValue.swift +0 -34
- package/lib/commonjs/AudioBrowser.js +11 -0
- package/lib/commonjs/AudioBrowser.js.map +1 -1
- package/lib/commonjs/features/browser.js +158 -59
- package/lib/commonjs/features/browser.js.map +1 -1
- package/lib/commonjs/features/equalizer.js +1 -1
- package/lib/commonjs/features/errors.js +5 -37
- package/lib/commonjs/features/errors.js.map +1 -1
- package/lib/commonjs/features/favorites.js +1 -1
- package/lib/commonjs/features/index.js +0 -22
- package/lib/commonjs/features/index.js.map +1 -1
- package/lib/commonjs/features/metadata.js +3 -3
- package/lib/commonjs/features/metadata.js.map +1 -1
- package/lib/commonjs/features/network.js +1 -1
- package/lib/commonjs/features/nowPlaying.js +1 -36
- package/lib/commonjs/features/nowPlaying.js.map +1 -1
- package/lib/commonjs/features/output.js +23 -37
- package/lib/commonjs/features/output.js.map +1 -1
- package/lib/commonjs/features/playback/controls.js +0 -9
- package/lib/commonjs/features/playback/controls.js.map +1 -1
- package/lib/commonjs/features/playback/index.js +0 -11
- package/lib/commonjs/features/playback/index.js.map +1 -1
- package/lib/commonjs/features/playback/playWhenReady.js +1 -1
- package/lib/commonjs/features/playback/playing.js +1 -1
- package/lib/commonjs/features/playback/progress.js +13 -29
- package/lib/commonjs/features/playback/progress.js.map +1 -1
- package/lib/commonjs/features/playback/state.js +1 -1
- package/lib/commonjs/features/playback/volume.js +2 -2
- package/lib/commonjs/features/player/options.js +29 -79
- package/lib/commonjs/features/player/options.js.map +1 -1
- package/lib/commonjs/features/player/setup.js +3 -256
- package/lib/commonjs/features/player/setup.js.map +1 -1
- package/lib/commonjs/features/queue/activeTrack.js +1 -1
- package/lib/commonjs/features/queue/queue.js +5 -12
- package/lib/commonjs/features/queue/queue.js.map +1 -1
- package/lib/commonjs/features/queue/repeatMode.js +1 -1
- package/lib/commonjs/features/queue/shuffle.js +1 -1
- package/lib/commonjs/features/rating.js +2 -0
- package/lib/commonjs/features/rating.js.map +1 -0
- package/lib/commonjs/features/remoteControls.js +104 -14
- package/lib/commonjs/features/remoteControls.js.map +1 -1
- package/lib/commonjs/features/sleepTimer.js +5 -10
- package/lib/commonjs/features/sleepTimer.js.map +1 -1
- package/lib/commonjs/native.js +0 -5
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/native.web.js +1 -4
- package/lib/commonjs/native.web.js.map +1 -1
- package/lib/commonjs/types/player.js +2 -0
- package/lib/commonjs/types/player.js.map +1 -0
- package/lib/commonjs/utils/LazyNativeEmitter.js +8 -8
- package/lib/commonjs/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/commonjs/utils/NativeUpdatedValue.js +3 -0
- package/lib/commonjs/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/commonjs/web/NativeAudioBrowser.js +124 -301
- package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
- package/lib/commonjs/web/SimpleRouter.test.js +174 -0
- package/lib/commonjs/web/SimpleRouter.test.js.map +1 -0
- package/lib/commonjs/web/TrackPlayer/Player.js +26 -90
- package/lib/commonjs/web/TrackPlayer/Player.js.map +1 -1
- package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js +293 -0
- package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js.map +1 -0
- package/lib/commonjs/web/TrackPlayer/RepeatMode.js +1 -1
- package/lib/commonjs/web/TrackPlayer/RepeatMode.js.map +1 -1
- package/lib/commonjs/web/TrackPlayer/SleepTimer.js +3 -34
- package/lib/commonjs/web/TrackPlayer/SleepTimer.js.map +1 -1
- package/lib/commonjs/web/TrackPlayer/index.js +5 -13
- package/lib/commonjs/web/TrackPlayer/index.js.map +1 -1
- package/lib/commonjs/web/browser/BrowserManager.js +50 -176
- package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
- package/lib/commonjs/web/browser/NavigationErrorManager.js +1 -3
- package/lib/commonjs/web/browser/NavigationErrorManager.js.map +1 -1
- package/lib/commonjs/web/browser/SearchManager.js +9 -11
- package/lib/commonjs/web/browser/SearchManager.js.map +1 -1
- package/lib/commonjs/web/http/HttpClient.js +23 -4
- package/lib/commonjs/web/http/HttpClient.js.map +1 -1
- package/lib/commonjs/web/http/RequestConfigBuilder.js +58 -107
- package/lib/commonjs/web/http/RequestConfigBuilder.js.map +1 -1
- package/lib/commonjs/web/player/NowPlayingManager.js +5 -6
- package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
- package/lib/commonjs/web/player/OptionsManager.js +17 -9
- package/lib/commonjs/web/player/OptionsManager.js.map +1 -1
- package/lib/module/AudioBrowser.js +1 -4
- package/lib/module/AudioBrowser.js.map +1 -1
- package/lib/module/features/browser.js +156 -53
- package/lib/module/features/browser.js.map +1 -1
- package/lib/module/features/equalizer.js +1 -1
- package/lib/module/features/errors.js +5 -37
- package/lib/module/features/errors.js.map +1 -1
- package/lib/module/features/favorites.js +1 -1
- package/lib/module/features/index.js +0 -2
- package/lib/module/features/index.js.map +1 -1
- package/lib/module/features/metadata.js +3 -3
- package/lib/module/features/metadata.js.map +1 -1
- package/lib/module/features/network.js +1 -1
- package/lib/module/features/nowPlaying.js +1 -34
- package/lib/module/features/nowPlaying.js.map +1 -1
- package/lib/module/features/output.js +19 -32
- package/lib/module/features/output.js.map +1 -1
- package/lib/module/features/playback/controls.js +0 -8
- package/lib/module/features/playback/controls.js.map +1 -1
- package/lib/module/features/playback/index.js +0 -1
- package/lib/module/features/playback/index.js.map +1 -1
- package/lib/module/features/playback/playWhenReady.js +1 -1
- package/lib/module/features/playback/playing.js +1 -1
- package/lib/module/features/playback/progress.js +13 -29
- package/lib/module/features/playback/progress.js.map +1 -1
- package/lib/module/features/playback/state.js +1 -1
- package/lib/module/features/playback/volume.js +2 -2
- package/lib/module/features/player/options.js +29 -79
- package/lib/module/features/player/options.js.map +1 -1
- package/lib/module/features/player/setup.js +3 -256
- package/lib/module/features/player/setup.js.map +1 -1
- package/lib/module/features/queue/activeTrack.js +1 -1
- package/lib/module/features/queue/queue.js +5 -12
- package/lib/module/features/queue/queue.js.map +1 -1
- package/lib/module/features/queue/repeatMode.js +1 -1
- package/lib/module/features/queue/shuffle.js +1 -1
- package/lib/module/features/rating.js +2 -0
- package/lib/module/features/rating.js.map +1 -0
- package/lib/module/features/remoteControls.js +103 -13
- package/lib/module/features/remoteControls.js.map +1 -1
- package/lib/module/features/sleepTimer.js +5 -10
- package/lib/module/features/sleepTimer.js.map +1 -1
- package/lib/module/native.js +0 -5
- package/lib/module/native.js.map +1 -1
- package/lib/module/native.web.js +1 -4
- package/lib/module/native.web.js.map +1 -1
- package/lib/module/types/player.js +2 -0
- package/lib/module/types/player.js.map +1 -0
- package/lib/module/utils/LazyNativeEmitter.js +8 -8
- package/lib/module/utils/LazyNativeEmitter.js.map +1 -1
- package/lib/module/utils/NativeUpdatedValue.js +3 -0
- package/lib/module/utils/NativeUpdatedValue.js.map +1 -1
- package/lib/module/web/NativeAudioBrowser.js +125 -302
- package/lib/module/web/NativeAudioBrowser.js.map +1 -1
- package/lib/module/web/SimpleRouter.test.js +174 -0
- package/lib/module/web/SimpleRouter.test.js.map +1 -0
- package/lib/module/web/TrackPlayer/Player.js +26 -90
- package/lib/module/web/TrackPlayer/Player.js.map +1 -1
- package/lib/module/web/TrackPlayer/PlaylistPlayer.js +288 -0
- package/lib/module/web/TrackPlayer/PlaylistPlayer.js.map +1 -0
- package/lib/module/web/TrackPlayer/RepeatMode.js +1 -1
- package/lib/module/web/TrackPlayer/RepeatMode.js.map +1 -1
- package/lib/module/web/TrackPlayer/SleepTimer.js +3 -34
- package/lib/module/web/TrackPlayer/SleepTimer.js.map +1 -1
- package/lib/module/web/TrackPlayer/index.js +1 -2
- package/lib/module/web/TrackPlayer/index.js.map +1 -1
- package/lib/module/web/browser/BrowserManager.js +50 -176
- package/lib/module/web/browser/BrowserManager.js.map +1 -1
- package/lib/module/web/browser/NavigationErrorManager.js +1 -3
- package/lib/module/web/browser/NavigationErrorManager.js.map +1 -1
- package/lib/module/web/browser/SearchManager.js +9 -11
- package/lib/module/web/browser/SearchManager.js.map +1 -1
- package/lib/module/web/http/HttpClient.js +23 -4
- package/lib/module/web/http/HttpClient.js.map +1 -1
- package/lib/module/web/http/RequestConfigBuilder.js +58 -107
- package/lib/module/web/http/RequestConfigBuilder.js.map +1 -1
- package/lib/module/web/player/NowPlayingManager.js +5 -7
- package/lib/module/web/player/NowPlayingManager.js.map +1 -1
- package/lib/module/web/player/OptionsManager.js +17 -9
- package/lib/module/web/player/OptionsManager.js.map +1 -1
- package/lib/typescript/src/AudioBrowser.d.ts +1 -0
- package/lib/typescript/src/AudioBrowser.d.ts.map +1 -1
- package/lib/typescript/src/features/browser.d.ts +1 -40
- package/lib/typescript/src/features/browser.d.ts.map +1 -1
- package/lib/typescript/src/features/equalizer.d.ts +1 -1
- package/lib/typescript/src/features/errors.d.ts +6 -61
- package/lib/typescript/src/features/errors.d.ts.map +1 -1
- package/lib/typescript/src/features/favorites.d.ts +1 -1
- package/lib/typescript/src/features/index.d.ts +0 -2
- package/lib/typescript/src/features/index.d.ts.map +1 -1
- package/lib/typescript/src/features/metadata.d.ts +7 -9
- package/lib/typescript/src/features/metadata.d.ts.map +1 -1
- package/lib/typescript/src/features/network.d.ts +1 -1
- package/lib/typescript/src/features/nowPlaying.d.ts +1 -28
- package/lib/typescript/src/features/nowPlaying.d.ts.map +1 -1
- package/lib/typescript/src/features/output.d.ts +18 -28
- package/lib/typescript/src/features/output.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/controls.d.ts +0 -5
- package/lib/typescript/src/features/playback/controls.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/index.d.ts +0 -1
- package/lib/typescript/src/features/playback/index.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/playWhenReady.d.ts +1 -1
- package/lib/typescript/src/features/playback/playing.d.ts +1 -1
- package/lib/typescript/src/features/playback/progress.d.ts +1 -4
- package/lib/typescript/src/features/playback/progress.d.ts.map +1 -1
- package/lib/typescript/src/features/playback/state.d.ts +1 -1
- package/lib/typescript/src/features/playback/volume.d.ts +2 -2
- package/lib/typescript/src/features/player/options.d.ts +127 -176
- package/lib/typescript/src/features/player/options.d.ts.map +1 -1
- package/lib/typescript/src/features/player/setup.d.ts +167 -213
- package/lib/typescript/src/features/player/setup.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/activeTrack.d.ts +1 -1
- package/lib/typescript/src/features/queue/queue.d.ts +4 -11
- package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
- package/lib/typescript/src/features/queue/repeatMode.d.ts +1 -1
- package/lib/typescript/src/features/queue/shuffle.d.ts +1 -1
- package/lib/typescript/src/features/rating.d.ts +14 -0
- package/lib/typescript/src/features/rating.d.ts.map +1 -0
- package/lib/typescript/src/features/remoteControls.d.ts +35 -23
- package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
- package/lib/typescript/src/features/sleepTimer.d.ts +4 -19
- package/lib/typescript/src/features/sleepTimer.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/native.d.ts +2 -1
- package/lib/typescript/src/native.d.ts.map +1 -1
- package/lib/typescript/src/native.web.d.ts +3 -0
- package/lib/typescript/src/native.web.d.ts.map +1 -0
- package/lib/typescript/src/specs/audio-browser.nitro.d.ts +225 -17
- package/lib/typescript/src/specs/audio-browser.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-native.d.ts +3 -9
- package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
- package/lib/typescript/src/types/browser-nodes.d.ts +13 -145
- package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
- package/lib/typescript/src/types/browser.d.ts +85 -349
- package/lib/typescript/src/types/browser.d.ts.map +1 -1
- package/lib/typescript/src/types/player.d.ts +64 -0
- package/lib/typescript/src/types/player.d.ts.map +1 -0
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts +6 -8
- package/lib/typescript/src/utils/LazyNativeEmitter.d.ts.map +1 -1
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts +2 -0
- package/lib/typescript/src/utils/NativeUpdatedValue.d.ts.map +1 -1
- package/lib/typescript/src/utils/resolveAssetSource.d.ts.map +1 -1
- package/lib/typescript/src/web/NativeAudioBrowser.d.ts +188 -0
- package/lib/typescript/src/web/NativeAudioBrowser.d.ts.map +1 -0
- package/lib/typescript/src/web/SimpleRouter.d.ts +40 -0
- package/lib/typescript/src/web/SimpleRouter.d.ts.map +1 -0
- package/lib/typescript/src/web/SimpleRouter.test.d.ts +2 -0
- package/lib/typescript/src/web/SimpleRouter.test.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/Event.d.ts +11 -0
- package/lib/typescript/src/web/TrackPlayer/Event.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/Player.d.ts +59 -0
- package/lib/typescript/src/web/TrackPlayer/Player.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts +39 -0
- package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/RepeatMode.d.ts +6 -0
- package/lib/typescript/src/web/TrackPlayer/RepeatMode.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/SetupNotCalledError.d.ts +4 -0
- package/lib/typescript/src/web/TrackPlayer/SetupNotCalledError.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/SleepTimer.d.ts +34 -0
- package/lib/typescript/src/web/TrackPlayer/SleepTimer.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/State.d.ts +13 -0
- package/lib/typescript/src/web/TrackPlayer/State.d.ts.map +1 -0
- package/lib/typescript/src/web/TrackPlayer/index.d.ts +5 -0
- package/lib/typescript/src/web/TrackPlayer/index.d.ts.map +1 -0
- package/lib/typescript/src/web/browser/BrowserManager.d.ts +154 -0
- package/lib/typescript/src/web/browser/BrowserManager.d.ts.map +1 -0
- package/lib/typescript/src/web/browser/FavoriteManager.d.ts +42 -0
- package/lib/typescript/src/web/browser/FavoriteManager.d.ts.map +1 -0
- package/lib/typescript/src/web/browser/NavigationErrorManager.d.ts +40 -0
- package/lib/typescript/src/web/browser/NavigationErrorManager.d.ts.map +1 -0
- package/lib/typescript/src/web/browser/SearchManager.d.ts +22 -0
- package/lib/typescript/src/web/browser/SearchManager.d.ts.map +1 -0
- package/lib/typescript/src/web/http/HttpClient.d.ts +25 -0
- package/lib/typescript/src/web/http/HttpClient.d.ts.map +1 -0
- package/lib/typescript/src/web/http/RequestConfigBuilder.d.ts +98 -0
- package/lib/typescript/src/web/http/RequestConfigBuilder.d.ts.map +1 -0
- package/lib/typescript/src/web/player/NowPlayingManager.d.ts +34 -0
- package/lib/typescript/src/web/player/NowPlayingManager.d.ts.map +1 -0
- package/lib/typescript/src/web/player/OptionsManager.d.ts +32 -0
- package/lib/typescript/src/web/player/OptionsManager.d.ts.map +1 -0
- package/lib/typescript/src/web/util/BrowserPathHelper.d.ts +69 -0
- package/lib/typescript/src/web/util/BrowserPathHelper.d.ts.map +1 -0
- package/lib/typescript/src/web/util/shuffle.d.ts +8 -0
- package/lib/typescript/src/web/util/shuffle.d.ts.map +1 -0
- package/nitrogen/generated/android/AudioBrowser+autolinking.cmake +2 -4
- package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +10 -24
- package/nitrogen/generated/android/c++/JAndroidAudioContentType.hpp +6 -6
- package/nitrogen/generated/android/c++/JAndroidOptions.hpp +20 -10
- package/nitrogen/generated/android/c++/JAndroidUpdateOptions.hpp +86 -0
- package/nitrogen/generated/android/c++/JArtworkRequestConfig.hpp +1 -33
- package/nitrogen/generated/android/c++/JBrowseResult.hpp +0 -5
- package/nitrogen/generated/android/c++/JCarPlayNowPlayingButton.hpp +3 -3
- package/nitrogen/generated/android/c++/JFavoriteChangedEvent.hpp +0 -6
- package/nitrogen/generated/android/c++/JFormattedNavigationError.hpp +2 -3
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_RequestConfig_____Track.hpp +0 -6
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.hpp +147 -0
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_Track______SearchParams.hpp +0 -8
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_void_____TrackLoadEvent.hpp +0 -6
- package/nitrogen/generated/android/c++/JFunc_void_FavoriteChangedEvent.hpp +0 -6
- package/nitrogen/generated/android/c++/JFunc_void_IosOutput.hpp +80 -0
- package/nitrogen/generated/android/c++/JFunc_void_NowPlayingMetadata.hpp +10 -0
- package/nitrogen/generated/android/c++/JFunc_void_Options.hpp +9 -14
- package/nitrogen/generated/android/c++/JFunc_void_Playback.hpp +0 -2
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackActiveTrackChangedEvent.hpp +0 -6
- package/nitrogen/generated/android/c++/JFunc_void_PlaybackErrorEvent.hpp +0 -2
- package/nitrogen/generated/android/c++/JFunc_void_RemoteSetRatingEvent.hpp +87 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +10 -10
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_ResolvedTrack_.hpp +0 -6
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Track_.hpp +0 -6
- package/nitrogen/generated/android/c++/JHeartRating.hpp +57 -0
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +221 -245
- package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.hpp +22 -25
- package/nitrogen/generated/android/c++/JImageRowItem.hpp +3 -33
- package/nitrogen/generated/android/c++/{JOutput.hpp → JIosOutput.hpp} +15 -15
- package/nitrogen/generated/android/c++/JIosOutputType.hpp +85 -0
- package/nitrogen/generated/android/c++/JMediaRequestConfig.hpp +1 -33
- package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +28 -61
- package/nitrogen/generated/android/c++/JNativeRouteEntry.hpp +9 -20
- package/nitrogen/generated/android/c++/JNativeUpdateOptions.hpp +24 -21
- package/nitrogen/generated/android/c++/JNavigationErrorType.hpp +0 -6
- package/nitrogen/generated/android/c++/JNitroAndroidUpdateOptions.hpp +20 -10
- package/nitrogen/generated/android/c++/{JRemoteButton.hpp → JNotificationButton.hpp} +20 -20
- package/nitrogen/generated/android/c++/JNotificationButtonLayout.hpp +94 -0
- package/nitrogen/generated/android/c++/JNowPlayingMetadata.hpp +17 -3
- package/nitrogen/generated/android/c++/JNowPlayingUpdate.hpp +3 -7
- package/nitrogen/generated/android/c++/JOptions.hpp +14 -19
- package/nitrogen/generated/android/c++/{JNativeAndroidSetupOptions.hpp → JPartialAndroidSetupPlayerOptions.hpp} +10 -10
- package/nitrogen/generated/android/c++/{JNativeIOSSetupOptions.hpp → JPartialIOSSetupPlayerOptions.hpp} +10 -10
- package/nitrogen/generated/android/c++/JPartialSetupPlayerOptions.hpp +96 -0
- package/nitrogen/generated/android/c++/JPercentageRating.hpp +57 -0
- package/nitrogen/generated/android/c++/JPlayback.hpp +0 -2
- package/nitrogen/generated/android/c++/JPlaybackActiveTrackChangedEvent.hpp +0 -6
- package/nitrogen/generated/android/c++/JPlaybackError.hpp +3 -18
- package/nitrogen/generated/android/c++/JPlaybackErrorEvent.hpp +0 -2
- package/nitrogen/generated/android/c++/JPlaybackState.hpp +3 -3
- package/nitrogen/generated/android/c++/JPlayerCapabilities.hpp +5 -11
- package/nitrogen/generated/android/c++/JRatingType.hpp +73 -0
- package/nitrogen/generated/android/c++/JRemoteSetRatingEvent.hpp +66 -0
- package/nitrogen/generated/android/c++/JResolvedTrack.hpp +5 -23
- package/nitrogen/generated/android/c++/JRetryConfig.hpp +7 -11
- package/nitrogen/generated/android/c++/JSearchMode.hpp +9 -27
- package/nitrogen/generated/android/c++/JSearchParams.hpp +3 -9
- package/nitrogen/generated/android/c++/JStarRating.hpp +57 -0
- package/nitrogen/generated/android/c++/{JGateEvent.hpp → JThumbsRating.hpp} +15 -16
- package/nitrogen/generated/android/c++/JTrack.hpp +5 -23
- package/nitrogen/generated/android/c++/JTrackLoadEvent.hpp +0 -6
- package/nitrogen/generated/android/c++/JTransformableRequestConfig.hpp +1 -14
- package/nitrogen/generated/android/c++/JUpdateOptions.hpp +105 -0
- package/nitrogen/generated/android/c++/JVariant_HeartRating_ThumbsRating_StarRating_PercentageRating.cpp +34 -0
- package/nitrogen/generated/android/c++/JVariant_HeartRating_ThumbsRating_StarRating_PercentageRating.hpp +105 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NotificationButtonLayout.hpp +75 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidAudioContentType.kt +4 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidOptions.kt +9 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/AndroidUpdateOptions.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ArtworkRequestConfig.kt +4 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/CarPlayNowPlayingButton.kt +3 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormattedNavigationError.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Func_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.kt → Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.kt} +12 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Func_void_Output.kt → Func_void_IosOutput.kt} +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Func_void_GateEvent.kt → Func_void_RemoteSetRatingEvent.kt} +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_void_bool.kt +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Gate.kt → HeartRating.kt} +6 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/HybridAudioBrowserSpec.kt +109 -103
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ImageRowItem.kt +3 -24
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Output.kt → IosOutput.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IosOutputType.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaRequestConfig.kt +4 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +6 -18
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeRouteEntry.kt +4 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeUpdateOptions.kt +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NavigationErrorType.kt +1 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroAndroidUpdateOptions.kt +9 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoritesMatchMode.kt → NotificationButton.kt} +8 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NotificationButtonLayout.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingMetadata.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NowPlayingUpdate.kt +3 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Options.kt +3 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{NativeAndroidSetupOptions.kt → PartialAndroidSetupPlayerOptions.kt} +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{NativeIOSSetupOptions.kt → PartialIOSSetupPlayerOptions.kt} +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PartialSetupPlayerOptions.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{GateDecision.kt → PercentageRating.kt} +6 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackError.kt +3 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackState.kt +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlayerCapabilities.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{GateReason.kt → RatingType.kt} +10 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{ArtworkVariants.kt → RemoteSetRatingEvent.kt} +6 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/ResolvedTrack.kt +3 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RetryConfig.kt +4 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SearchMode.kt +6 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/SearchParams.kt +3 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{GateEvent.kt → StarRating.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{FavoriteConfig.kt → ThumbsRating.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Track.kt +3 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TransformableRequestConfig.kt +4 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/UpdateOptions.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_HeartRating_ThumbsRating_StarRating_PercentageRating.kt +77 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/{Variant_NullType_RemoteButtonLayout.kt → Variant_NullType_NotificationButtonLayout.kt} +9 -9
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.cpp +28 -139
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +489 -1125
- package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Umbrella.hpp +45 -66
- package/nitrogen/generated/ios/c++/HybridAudioBrowserSpecSwift.hpp +118 -176
- package/nitrogen/generated/ios/swift/AndroidAudioContentType.swift +8 -8
- package/nitrogen/generated/ios/swift/AndroidOptions.swift +22 -12
- package/nitrogen/generated/ios/swift/AndroidUpdateOptions.swift +119 -0
- package/nitrogen/generated/ios/swift/ArtworkRequestConfig.swift +1 -95
- package/nitrogen/generated/ios/swift/CarPlayNowPlayingButton.swift +4 -4
- package/nitrogen/generated/ios/swift/FormattedNavigationError.swift +4 -17
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError______BrowserSourceCallbackParam.swift +68 -0
- package/nitrogen/generated/ios/swift/{Func_void_Output.swift → Func_void_IosOutput.swift} +10 -10
- package/nitrogen/generated/ios/swift/{Func_void_GateEvent.swift → Func_void_RemoteSetRatingEvent.swift} +10 -10
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
- package/nitrogen/generated/ios/swift/{Func_void_std__shared_ptr_Promise_GateDecision__.swift → Func_void_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError___.swift} +17 -17
- package/nitrogen/generated/ios/swift/HeartRating.swift +29 -0
- package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec.swift +14 -20
- package/nitrogen/generated/ios/swift/HybridAudioBrowserSpec_cxx.swift +197 -230
- package/nitrogen/generated/ios/swift/ImageRowItem.swift +2 -121
- package/nitrogen/generated/ios/swift/{Output.swift → IosOutput.swift} +7 -7
- package/nitrogen/generated/ios/swift/IosOutputType.swift +76 -0
- package/nitrogen/generated/ios/swift/MediaRequestConfig.swift +1 -107
- package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +22 -161
- package/nitrogen/generated/ios/swift/NativeRouteEntry.swift +19 -19
- package/nitrogen/generated/ios/swift/NativeUpdateOptions.swift +25 -12
- package/nitrogen/generated/ios/swift/NavigationErrorType.swift +0 -8
- package/nitrogen/generated/ios/swift/NitroAndroidUpdateOptions.swift +41 -12
- package/nitrogen/generated/ios/swift/{RemoteButton.swift → NotificationButton.swift} +10 -10
- package/nitrogen/generated/ios/swift/NotificationButtonLayout.swift +92 -0
- package/nitrogen/generated/ios/swift/NowPlayingMetadata.swift +48 -1
- package/nitrogen/generated/ios/swift/NowPlayingUpdate.swift +1 -19
- package/nitrogen/generated/ios/swift/Options.swift +4 -10
- package/nitrogen/generated/ios/swift/{NativeAndroidSetupOptions.swift → PartialAndroidSetupPlayerOptions.swift} +5 -5
- package/nitrogen/generated/ios/swift/{NativeIOSSetupOptions.swift → PartialIOSSetupPlayerOptions.swift} +5 -5
- package/nitrogen/generated/ios/swift/PartialSetupPlayerOptions.swift +101 -0
- package/nitrogen/generated/ios/swift/PercentageRating.swift +29 -0
- package/nitrogen/generated/ios/swift/PlaybackError.swift +2 -43
- package/nitrogen/generated/ios/swift/PlaybackState.swift +4 -4
- package/nitrogen/generated/ios/swift/PlayerCapabilities.swift +8 -27
- package/nitrogen/generated/ios/swift/RatingType.swift +60 -0
- package/nitrogen/generated/ios/swift/RemoteSetRatingEvent.swift +58 -0
- package/nitrogen/generated/ios/swift/ResolvedTrack.swift +8 -74
- package/nitrogen/generated/ios/swift/RetryConfig.swift +4 -35
- package/nitrogen/generated/ios/swift/SearchMode.swift +12 -36
- package/nitrogen/generated/ios/swift/SearchParams.swift +2 -7
- package/nitrogen/generated/ios/swift/StarRating.swift +29 -0
- package/nitrogen/generated/ios/swift/ThumbsRating.swift +29 -0
- package/nitrogen/generated/ios/swift/Track.swift +8 -74
- package/nitrogen/generated/ios/swift/TransformableRequestConfig.swift +1 -60
- package/nitrogen/generated/ios/swift/UpdateOptions.swift +143 -0
- package/nitrogen/generated/ios/swift/Variant_HeartRating_ThumbsRating_StarRating_PercentageRating.swift +20 -0
- package/nitrogen/generated/ios/swift/{Variant_NullType_RemoteButtonLayout.swift → Variant_NullType_NotificationButtonLayout.swift} +3 -3
- package/nitrogen/generated/shared/c++/AndroidAudioContentType.hpp +10 -10
- package/nitrogen/generated/shared/c++/AndroidOptions.hpp +19 -8
- package/nitrogen/generated/shared/c++/AndroidUpdateOptions.hpp +109 -0
- package/nitrogen/generated/shared/c++/ArtworkRequestConfig.hpp +2 -10
- package/nitrogen/generated/shared/c++/CarPlayNowPlayingButton.hpp +6 -6
- package/nitrogen/generated/shared/c++/EqualizerSettings.hpp +2 -0
- package/nitrogen/generated/shared/c++/FormattedNavigationError.hpp +5 -6
- package/nitrogen/generated/shared/c++/{GateEvent.hpp → HeartRating.hpp} +17 -18
- package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.cpp +18 -21
- package/nitrogen/generated/shared/c++/HybridAudioBrowserSpec.hpp +35 -44
- package/nitrogen/generated/shared/c++/ImageRowItem.hpp +2 -33
- package/nitrogen/generated/shared/c++/{Output.hpp → IosOutput.hpp} +18 -18
- package/nitrogen/generated/shared/c++/IosOutputType.hpp +112 -0
- package/nitrogen/generated/shared/c++/MediaRequestConfig.hpp +2 -10
- package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +15 -31
- package/nitrogen/generated/shared/c++/NativeRouteEntry.hpp +5 -5
- package/nitrogen/generated/shared/c++/NativeUpdateOptions.hpp +7 -9
- package/nitrogen/generated/shared/c++/NavigationErrorType.hpp +0 -8
- package/nitrogen/generated/shared/c++/NitroAndroidUpdateOptions.hpp +19 -8
- package/nitrogen/generated/shared/c++/{RemoteButton.hpp → NotificationButton.hpp} +25 -25
- package/nitrogen/generated/shared/c++/NotificationButtonLayout.hpp +102 -0
- package/nitrogen/generated/shared/c++/NowPlayingMetadata.hpp +19 -3
- package/nitrogen/generated/shared/c++/NowPlayingUpdate.hpp +2 -6
- package/nitrogen/generated/shared/c++/Options.hpp +8 -8
- package/nitrogen/generated/shared/c++/{NativeAndroidSetupOptions.hpp → PartialAndroidSetupPlayerOptions.hpp} +11 -11
- package/nitrogen/generated/shared/c++/{NativeIOSSetupOptions.hpp → PartialIOSSetupPlayerOptions.hpp} +11 -11
- package/nitrogen/generated/shared/c++/PartialSetupPlayerOptions.hpp +104 -0
- package/nitrogen/generated/shared/c++/{FavoriteConfig.hpp → PercentageRating.hpp} +17 -18
- package/nitrogen/generated/shared/c++/PlaybackError.hpp +3 -18
- package/nitrogen/generated/shared/c++/PlaybackState.hpp +9 -9
- package/nitrogen/generated/shared/c++/PlayerCapabilities.hpp +6 -9
- package/nitrogen/generated/shared/c++/RatingType.hpp +96 -0
- package/nitrogen/generated/shared/c++/RemoteSetRatingEvent.hpp +94 -0
- package/nitrogen/generated/shared/c++/ResolvedTrack.hpp +5 -24
- package/nitrogen/generated/shared/c++/RetryConfig.hpp +6 -10
- package/nitrogen/generated/shared/c++/SearchMode.hpp +15 -39
- package/nitrogen/generated/shared/c++/SearchParams.hpp +2 -9
- package/nitrogen/generated/shared/c++/{Gate.hpp → StarRating.hpp} +16 -21
- package/nitrogen/generated/shared/c++/{GateDecision.hpp → ThumbsRating.hpp} +17 -23
- package/nitrogen/generated/shared/c++/Track.hpp +5 -24
- package/nitrogen/generated/shared/c++/TransformableRequestConfig.hpp +2 -6
- package/nitrogen/generated/shared/c++/UpdateOptions.hpp +111 -0
- package/package.json +5 -12
- package/src/AudioBrowser.ts +1 -4
- package/src/features/browser.ts +201 -58
- package/src/features/equalizer.ts +1 -1
- package/src/features/errors.ts +5 -71
- package/src/features/favorites.ts +1 -1
- package/src/features/index.ts +0 -2
- package/src/features/metadata.ts +15 -9
- package/src/features/network.ts +1 -1
- package/src/features/nowPlaying.ts +1 -37
- package/src/features/output.ts +22 -35
- package/src/features/playback/controls.ts +0 -8
- package/src/features/playback/index.ts +0 -1
- package/src/features/playback/playWhenReady.ts +1 -1
- package/src/features/playback/playing.ts +1 -1
- package/src/features/playback/progress.ts +13 -32
- package/src/features/playback/state.ts +1 -1
- package/src/features/playback/volume.ts +2 -2
- package/src/features/player/options.ts +110 -217
- package/src/features/player/setup.ts +175 -397
- package/src/features/queue/activeTrack.ts +1 -1
- package/src/features/queue/queue.ts +6 -17
- package/src/features/queue/repeatMode.ts +1 -1
- package/src/features/queue/shuffle.ts +1 -1
- package/src/features/rating.ts +17 -0
- package/src/features/remoteControls.ts +115 -13
- package/src/features/sleepTimer.ts +5 -24
- package/src/native.ts +0 -5
- package/src/native.web.ts +1 -4
- package/src/specs/audio-browser.nitro.ts +41 -131
- package/src/types/browser-native.ts +6 -19
- package/src/types/browser-nodes.ts +13 -160
- package/src/types/browser.ts +89 -377
- package/src/types/player.ts +69 -0
- package/src/utils/LazyNativeEmitter.ts +8 -9
- package/src/utils/NativeUpdatedValue.ts +2 -0
- package/src/web/NativeAudioBrowser.ts +158 -365
- package/src/web/TrackPlayer/Player.ts +39 -113
- package/src/web/TrackPlayer/PlaylistPlayer.ts +346 -0
- package/src/web/TrackPlayer/RepeatMode.ts +1 -1
- package/src/web/TrackPlayer/SleepTimer.ts +3 -38
- package/src/web/TrackPlayer/index.ts +1 -2
- package/src/web/browser/BrowserManager.ts +62 -231
- package/src/web/browser/NavigationErrorManager.ts +1 -3
- package/src/web/browser/SearchManager.ts +15 -11
- package/src/web/http/HttpClient.ts +35 -5
- package/src/web/http/RequestConfigBuilder.ts +63 -120
- package/src/web/player/NowPlayingManager.ts +5 -6
- package/src/web/player/OptionsManager.ts +18 -12
- package/android/src/main/java/com/audiobrowser/browser/ArtworkResolutionRegistry.kt +0 -37
- package/android/src/main/java/com/audiobrowser/browser/BrowseArtworkRegistry.kt +0 -34
- package/android/src/main/java/com/audiobrowser/browser/BrowserUrlResolution.kt +0 -299
- package/android/src/main/java/com/audiobrowser/browser/JsonArtwork.kt +0 -79
- package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +0 -42
- package/android/src/main/java/com/audiobrowser/extension/ResolvedTrackExt.kt +0 -35
- package/android/src/main/java/com/audiobrowser/player/CapabilityControls.kt +0 -172
- package/android/src/main/java/com/audiobrowser/player/EqualizerController.kt +0 -153
- package/android/src/main/java/com/audiobrowser/player/InterceptingPlayer.kt +0 -141
- package/android/src/main/java/com/audiobrowser/player/NowPlayingUpdater.kt +0 -347
- package/android/src/main/java/com/audiobrowser/player/PlaybackErrorClassifier.kt +0 -129
- package/android/src/main/java/com/audiobrowser/player/PlaybackStateMachine.kt +0 -85
- package/android/src/main/java/com/audiobrowser/player/PlaybackTimer.kt +0 -56
- package/android/src/main/java/com/audiobrowser/player/PlayerCapabilitiesExt.kt +0 -20
- package/android/src/main/java/com/audiobrowser/player/PlayerEngineFactory.kt +0 -130
- package/android/src/main/java/com/audiobrowser/player/SleepTimerManager.kt +0 -80
- package/android/src/main/java/com/audiobrowser/player/StuckRecoveryPolicy.kt +0 -50
- package/android/src/main/java/com/audiobrowser/player/VolumeFader.kt +0 -81
- package/android/src/main/java/com/audiobrowser/tls/AiaCertChaser.kt +0 -141
- package/android/src/main/java/com/audiobrowser/tls/AiaChasingTrustManager.kt +0 -37
- package/android/src/main/java/com/audiobrowser/tls/AiaTls.kt +0 -41
- package/android/src/main/java/com/audiobrowser/tls/CachingCertificateFetcher.kt +0 -209
- package/android/src/main/java/com/audiobrowser/util/ArtworkContentProvider.kt +0 -161
- package/android/src/main/java/com/audiobrowser/util/ArtworkUris.kt +0 -28
- package/android/src/main/java/com/audiobrowser/util/ArtworkVariant.kt +0 -24
- package/android/src/main/java/com/audiobrowser/util/CoilArtworkLoader.kt +0 -49
- package/android/src/main/java/com/audiobrowser/util/CoilArtworkLoaderHolder.kt +0 -36
- package/android/src/main/java/com/audiobrowser/util/OutputMonitor.kt +0 -211
- package/android/src/main/java/com/audiobrowser/util/OutputSwitcher.kt +0 -58
- package/android/src/main/java/com/audiobrowser/util/RatingFavorites.kt +0 -14
- package/android/src/test/java/com/audiobrowser/TestFixtures.kt +0 -165
- package/android/src/test/java/com/audiobrowser/browser/ArtworkResolutionRegistryTest.kt +0 -46
- package/android/src/test/java/com/audiobrowser/browser/BrowseArtworkRegistryTest.kt +0 -39
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerBuildApiRequestTest.kt +0 -114
- package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +0 -141
- package/android/src/test/java/com/audiobrowser/browser/BrowserUrlResolutionTest.kt +0 -177
- package/android/src/test/java/com/audiobrowser/browser/JsonArtworkTest.kt +0 -55
- package/android/src/test/java/com/audiobrowser/browser/SectionScopeTest.kt +0 -94
- package/android/src/test/java/com/audiobrowser/player/CapabilityControlsTest.kt +0 -203
- package/android/src/test/java/com/audiobrowser/player/DynamicLoadControlTest.kt +0 -56
- package/android/src/test/java/com/audiobrowser/player/EqualizerControllerTest.kt +0 -216
- package/android/src/test/java/com/audiobrowser/player/MediaSessionSlotMappingTest.kt +0 -45
- package/android/src/test/java/com/audiobrowser/player/NowPlayingUpdaterTest.kt +0 -442
- package/android/src/test/java/com/audiobrowser/player/PlaybackErrorClassifierTest.kt +0 -190
- package/android/src/test/java/com/audiobrowser/player/PlaybackStateMachineTest.kt +0 -198
- package/android/src/test/java/com/audiobrowser/player/PlaybackTimerTest.kt +0 -137
- package/android/src/test/java/com/audiobrowser/player/PlayerEngineFactoryTest.kt +0 -36
- package/android/src/test/java/com/audiobrowser/player/RetryLoadErrorHandlingPolicyTest.kt +0 -268
- package/android/src/test/java/com/audiobrowser/player/SessionErrorMaskTest.kt +0 -68
- package/android/src/test/java/com/audiobrowser/player/StuckRecoveryPolicyTest.kt +0 -40
- package/android/src/test/java/com/audiobrowser/player/TransformingDataSourceTest.kt +0 -193
- package/android/src/test/java/com/audiobrowser/tls/AiaCertChaserTest.kt +0 -107
- package/android/src/test/java/com/audiobrowser/tls/AiaChasingTrustManagerTest.kt +0 -73
- package/android/src/test/java/com/audiobrowser/tls/CachingCertificateFetcherTest.kt +0 -75
- package/android/src/test/java/com/audiobrowser/tls/CertFixtures.kt +0 -18
- package/android/src/test/java/com/audiobrowser/util/ArtworkContentProviderTest.kt +0 -163
- package/android/src/test/java/com/audiobrowser/util/ArtworkUrisTest.kt +0 -34
- package/android/src/test/java/com/audiobrowser/util/BrowserPathHelperTest.kt +0 -28
- package/android/src/test/java/com/audiobrowser/util/CoilArtworkLoaderHolderTest.kt +0 -53
- package/android/src/test/java/com/audiobrowser/util/CoilArtworkLoaderTest.kt +0 -58
- package/android/src/test/java/com/audiobrowser/util/FakeImageLoader.kt +0 -57
- package/android/src/test/java/com/audiobrowser/util/PlayingStateFactoryTest.kt +0 -40
- package/android/src/test/java/com/audiobrowser/util/RatingFavoritesTest.kt +0 -34
- package/android/src/test/java/com/audiobrowser/util/TrackFactoryBrowseTest.kt +0 -50
- package/android/src/test/java/com/audiobrowser/util/TrackFactoryMediaIdTest.kt +0 -63
- package/android/src/test/java/com/audiobrowser/util/TrackFactoryRatingTest.kt +0 -35
- package/android/src/test/resources/certs/isrg-root-x1.pem +0 -31
- package/android/src/test/resources/certs/letsencrypt-r13.der +0 -0
- package/android/src/test/resources/certs/letsencrypt-r13.pem +0 -29
- package/android/src/test/resources/certs/stationplaylist-leaf.pem +0 -34
- package/ios/Browser/MediaResolveComposer.swift +0 -114
- package/ios/Browser/SearchDrillIn.swift +0 -44
- package/ios/Browser/SectionScope.swift +0 -35
- package/ios/Browser/TabBarEntries.swift +0 -15
- package/ios/CarPlay/CPInterfaceController+Safe.swift +0 -126
- package/ios/CarPlay/ImageRowItem+CarPlay.swift +0 -19
- package/ios/CarPlay/RNABMediaAddHandler.swift +0 -75
- package/ios/CarPlay/RNABMediaAffinityHandler.swift +0 -69
- package/ios/Extension/PlayerCapabilities+Favorite.swift +0 -20
- package/ios/Extension/RequestConfig+Copying.swift +0 -31
- package/ios/Extension/Variant+Artwork.swift +0 -49
- package/ios/NowPlayingInfo/SilentAudioPrimer.swift +0 -73
- package/ios/Player/AirPlayStallJudgement.swift +0 -25
- package/ios/Player/EndOfTrackJudgement.swift +0 -32
- package/ios/Player/MediaIntentCriteria.swift +0 -139
- package/ios/Player/PersistedPlaybackState.swift +0 -11
- package/ios/Player/PlaybackStateStore.swift +0 -27
- package/ios/Player/PlaybackTimer.swift +0 -61
- package/ios/Player/VolumeFader.swift +0 -77
- package/ios/RemoteCommand/RemoteCommandCallbacks.swift +0 -47
- package/ios/Tests/AirPlayStallJudgementTests.swift +0 -52
- package/ios/Tests/EndOfTrackJudgementTests.swift +0 -35
- package/ios/Tests/JsonModelsTests.swift +0 -58
- package/ios/Tests/MediaIntentCriteriaTests.swift +0 -170
- package/ios/Tests/MediaLoaderAssetOptionsTests.swift +0 -46
- package/ios/Tests/MediaResolveTests.swift +0 -126
- package/ios/Tests/OnceValueTests.swift +0 -79
- package/ios/Tests/PlaybackStateStoreTests.swift +0 -48
- package/ios/Tests/PlaybackTimerTests.swift +0 -55
- package/ios/Tests/PlayingStateManagerTests.swift +0 -57
- package/ios/Tests/RemoteCommandControllerTests.swift +0 -156
- package/ios/Tests/RemoteCommandTests.swift +0 -67
- package/ios/Tests/RetryManagerTests.swift +0 -89
- package/ios/Tests/SearchDrillInTests.swift +0 -63
- package/ios/Tests/SectionScopeTests.swift +0 -82
- package/ios/Tests/SleepTimerManagerTests.swift +0 -107
- package/ios/Tests/Support/ManualSleepTimerScheduler.swift +0 -47
- package/ios/Tests/TabBarEntriesTests.swift +0 -71
- package/lib/commonjs/features/browser-config.js +0 -227
- package/lib/commonjs/features/browser-config.js.map +0 -1
- package/lib/commonjs/features/carConnection.js +0 -42
- package/lib/commonjs/features/carConnection.js.map +0 -1
- package/lib/commonjs/features/gate.js +0 -149
- package/lib/commonjs/features/gate.js.map +0 -1
- package/lib/commonjs/features/playback/trackPlaybackTime.js +0 -86
- package/lib/commonjs/features/playback/trackPlaybackTime.js.map +0 -1
- package/lib/commonjs/features/player/validateOptions.js +0 -24
- package/lib/commonjs/features/player/validateOptions.js.map +0 -1
- package/lib/commonjs/utils/artwork.js +0 -31
- package/lib/commonjs/utils/artwork.js.map +0 -1
- package/lib/commonjs/web/TrackPlayer/PlaybackStateMachine.js +0 -71
- package/lib/commonjs/web/TrackPlayer/PlaybackStateMachine.js.map +0 -1
- package/lib/commonjs/web/TrackPlayer/PlaybackTimer.js +0 -34
- package/lib/commonjs/web/TrackPlayer/PlaybackTimer.js.map +0 -1
- package/lib/commonjs/web/TrackPlayer/PlayingStateFactory.js +0 -21
- package/lib/commonjs/web/TrackPlayer/PlayingStateFactory.js.map +0 -1
- package/lib/commonjs/web/TrackPlayer/QueueManager.js +0 -273
- package/lib/commonjs/web/TrackPlayer/QueueManager.js.map +0 -1
- package/lib/commonjs/web/TrackPlayer/QueuePlayer.js +0 -158
- package/lib/commonjs/web/TrackPlayer/QueuePlayer.js.map +0 -1
- package/lib/commonjs/web/TrackPlayer/VolumeFader.js +0 -75
- package/lib/commonjs/web/TrackPlayer/VolumeFader.js.map +0 -1
- package/lib/commonjs/web/browser/assertBrowsePageShape.js +0 -22
- package/lib/commonjs/web/browser/assertBrowsePageShape.js.map +0 -1
- package/lib/commonjs/web/browser/classifyTrackNavigation.js +0 -41
- package/lib/commonjs/web/browser/classifyTrackNavigation.js.map +0 -1
- package/lib/commonjs/web/browser/parseSearchResponse.js +0 -20
- package/lib/commonjs/web/browser/parseSearchResponse.js.map +0 -1
- package/lib/commonjs/web/playbackErrorKind.js +0 -57
- package/lib/commonjs/web/playbackErrorKind.js.map +0 -1
- package/lib/commonjs/web/player/MediaSessionManager.js +0 -121
- package/lib/commonjs/web/player/MediaSessionManager.js.map +0 -1
- package/lib/commonjs/web/player/RemoteCommandController.js +0 -96
- package/lib/commonjs/web/player/RemoteCommandController.js.map +0 -1
- package/lib/module/features/browser-config.js +0 -221
- package/lib/module/features/browser-config.js.map +0 -1
- package/lib/module/features/carConnection.js +0 -37
- package/lib/module/features/carConnection.js.map +0 -1
- package/lib/module/features/gate.js +0 -144
- package/lib/module/features/gate.js.map +0 -1
- package/lib/module/features/playback/trackPlaybackTime.js +0 -83
- package/lib/module/features/playback/trackPlaybackTime.js.map +0 -1
- package/lib/module/features/player/validateOptions.js +0 -20
- package/lib/module/features/player/validateOptions.js.map +0 -1
- package/lib/module/utils/artwork.js +0 -26
- package/lib/module/utils/artwork.js.map +0 -1
- package/lib/module/web/TrackPlayer/PlaybackStateMachine.js +0 -67
- package/lib/module/web/TrackPlayer/PlaybackStateMachine.js.map +0 -1
- package/lib/module/web/TrackPlayer/PlaybackTimer.js +0 -29
- package/lib/module/web/TrackPlayer/PlaybackTimer.js.map +0 -1
- package/lib/module/web/TrackPlayer/PlayingStateFactory.js +0 -17
- package/lib/module/web/TrackPlayer/PlayingStateFactory.js.map +0 -1
- package/lib/module/web/TrackPlayer/QueueManager.js +0 -269
- package/lib/module/web/TrackPlayer/QueueManager.js.map +0 -1
- package/lib/module/web/TrackPlayer/QueuePlayer.js +0 -154
- package/lib/module/web/TrackPlayer/QueuePlayer.js.map +0 -1
- package/lib/module/web/TrackPlayer/VolumeFader.js +0 -70
- package/lib/module/web/TrackPlayer/VolumeFader.js.map +0 -1
- package/lib/module/web/browser/assertBrowsePageShape.js +0 -18
- package/lib/module/web/browser/assertBrowsePageShape.js.map +0 -1
- package/lib/module/web/browser/classifyTrackNavigation.js +0 -38
- package/lib/module/web/browser/classifyTrackNavigation.js.map +0 -1
- package/lib/module/web/browser/parseSearchResponse.js +0 -16
- package/lib/module/web/browser/parseSearchResponse.js.map +0 -1
- package/lib/module/web/playbackErrorKind.js +0 -52
- package/lib/module/web/playbackErrorKind.js.map +0 -1
- package/lib/module/web/player/MediaSessionManager.js +0 -116
- package/lib/module/web/player/MediaSessionManager.js.map +0 -1
- package/lib/module/web/player/RemoteCommandController.js +0 -92
- package/lib/module/web/player/RemoteCommandController.js.map +0 -1
- package/lib/typescript/src/features/browser-config.d.ts +0 -12
- package/lib/typescript/src/features/browser-config.d.ts.map +0 -1
- package/lib/typescript/src/features/carConnection.d.ts +0 -20
- package/lib/typescript/src/features/carConnection.d.ts.map +0 -1
- package/lib/typescript/src/features/gate.d.ts +0 -78
- package/lib/typescript/src/features/gate.d.ts.map +0 -1
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts +0 -34
- package/lib/typescript/src/features/playback/trackPlaybackTime.d.ts.map +0 -1
- package/lib/typescript/src/features/player/validateOptions.d.ts +0 -2
- package/lib/typescript/src/features/player/validateOptions.d.ts.map +0 -1
- package/lib/typescript/src/utils/artwork.d.ts +0 -19
- package/lib/typescript/src/utils/artwork.d.ts.map +0 -1
- package/nitrogen/generated/android/c++/JArtworkVariants.hpp +0 -61
- package/nitrogen/generated/android/c++/JFavoriteConfig.hpp +0 -58
- package/nitrogen/generated/android/c++/JFavoritesMatchMode.hpp +0 -58
- package/nitrogen/generated/android/c++/JFormatNowPlayingParams.hpp +0 -100
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___MediaTransformParams.hpp +0 -112
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___RequestConfig_std__optional_std__unordered_map_std__string__std__string__.hpp +0 -121
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_RequestConfig___Track.hpp +0 -123
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.hpp +0 -133
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__optional_std__string____Track.hpp +0 -121
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_GateDecision_____NativeGateRequest.hpp +0 -139
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_TransformableRequestConfig____.hpp +0 -134
- package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.hpp +0 -131
- package/nitrogen/generated/android/c++/JFunc_void_GateEvent.hpp +0 -79
- package/nitrogen/generated/android/c++/JFunc_void_Output.hpp +0 -80
- package/nitrogen/generated/android/c++/JGate.hpp +0 -62
- package/nitrogen/generated/android/c++/JGateDecision.hpp +0 -64
- package/nitrogen/generated/android/c++/JGateReason.hpp +0 -58
- package/nitrogen/generated/android/c++/JIOSOptions.hpp +0 -95
- package/nitrogen/generated/android/c++/JMediaReference.hpp +0 -58
- package/nitrogen/generated/android/c++/JNativeGateRequest.hpp +0 -74
- package/nitrogen/generated/android/c++/JNativeSetupPlayerOptions.hpp +0 -182
- package/nitrogen/generated/android/c++/JNitroIOSUpdateOptions.hpp +0 -96
- package/nitrogen/generated/android/c++/JOutputType.hpp +0 -82
- package/nitrogen/generated/android/c++/JPlaybackErrorKind.hpp +0 -76
- package/nitrogen/generated/android/c++/JRemoteButtonLayout.hpp +0 -86
- package/nitrogen/generated/android/c++/JStallReason.hpp +0 -58
- package/nitrogen/generated/android/c++/JTrackRequest.hpp +0 -93
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_Boolean_FavoriteConfig.hpp +0 -71
- package/nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_RemoteButtonLayout.hpp +0 -75
- package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.cpp +0 -41
- package/nitrogen/generated/android/c++/JVariant_ResolvedTrack_BrowseError_Promise_BrowseResult_.hpp +0 -121
- package/nitrogen/generated/android/c++/JVariant_String_ArtworkVariants.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_String_ArtworkVariants.hpp +0 -70
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/FormatNowPlayingParams.kt +0 -50
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_RequestConfig___MediaTransformParams.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_RequestConfig___RequestConfig_std__optional_std__unordered_map_std__string__std__string__.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_RequestConfig___Track.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__optional_std__string____Track.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_GateDecision_____NativeGateRequest.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_TransformableRequestConfig____.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/IOSOptions.kt +0 -44
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/MediaReference.kt +0 -23
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeGateRequest.kt +0 -44
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeSetupPlayerOptions.kt +0 -66
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NitroIOSUpdateOptions.kt +0 -44
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/OutputType.kt +0 -31
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/PlaybackErrorKind.kt +0 -29
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteButton.kt +0 -26
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/RemoteButtonLayout.kt +0 -44
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/StallReason.kt +0 -23
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/TrackRequest.kt +0 -44
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_Boolean_FavoriteConfig.kt +0 -53
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_ResolvedTrack_BrowseError_Promise_BrowseResult_.kt +0 -65
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Variant_String_ArtworkVariants.kt +0 -53
- package/nitrogen/generated/ios/swift/ArtworkVariants.swift +0 -34
- package/nitrogen/generated/ios/swift/FavoriteConfig.swift +0 -29
- package/nitrogen/generated/ios/swift/FavoritesMatchMode.swift +0 -40
- package/nitrogen/generated/ios/swift/FormatNowPlayingParams.swift +0 -67
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_RequestConfig___MediaTransformParams.swift +0 -54
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_RequestConfig___RequestConfig_std__optional_std__unordered_map_std__string__std__string__.swift +0 -69
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_RequestConfig___Track.swift +0 -54
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__optional_NowPlayingUpdate____FormatNowPlayingParams.swift +0 -60
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__optional_std__string____Track.swift +0 -60
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_GateDecision_____NativeGateRequest.swift +0 -61
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_TransformableRequestConfig____.swift +0 -61
- package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError_______BrowserSourceCallbackParam.swift +0 -77
- package/nitrogen/generated/ios/swift/Func_void_GateDecision.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_TransformableRequestConfig.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__optional_NowPlayingUpdate_.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string_.swift +0 -53
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_TransformableRequestConfig__.swift +0 -66
- package/nitrogen/generated/ios/swift/Func_void_std__variant_ResolvedTrack__BrowseError__std__shared_ptr_Promise_std__variant_ResolvedTrack__BrowseError____.swift +0 -81
- package/nitrogen/generated/ios/swift/Gate.swift +0 -47
- package/nitrogen/generated/ios/swift/GateDecision.swift +0 -40
- package/nitrogen/generated/ios/swift/GateEvent.swift +0 -29
- package/nitrogen/generated/ios/swift/GateReason.swift +0 -40
- package/nitrogen/generated/ios/swift/IOSOptions.swift +0 -51
- package/nitrogen/generated/ios/swift/MediaReference.swift +0 -40
- package/nitrogen/generated/ios/swift/NativeGateRequest.swift +0 -58
- package/nitrogen/generated/ios/swift/NativeSetupPlayerOptions.swift +0 -206
- package/nitrogen/generated/ios/swift/NitroIOSUpdateOptions.swift +0 -90
- package/nitrogen/generated/ios/swift/OutputType.swift +0 -72
- package/nitrogen/generated/ios/swift/PlaybackErrorKind.swift +0 -64
- package/nitrogen/generated/ios/swift/RemoteButtonLayout.swift +0 -57
- package/nitrogen/generated/ios/swift/StallReason.swift +0 -40
- package/nitrogen/generated/ios/swift/TrackRequest.swift +0 -106
- package/nitrogen/generated/ios/swift/Variant_Bool_FavoriteConfig.swift +0 -18
- package/nitrogen/generated/ios/swift/Variant_ResolvedTrack_BrowseError_Promise_BrowseResult_.swift +0 -19
- package/nitrogen/generated/ios/swift/Variant_String_ArtworkVariants.swift +0 -18
- package/nitrogen/generated/shared/c++/ArtworkVariants.hpp +0 -87
- package/nitrogen/generated/shared/c++/FavoritesMatchMode.hpp +0 -76
- package/nitrogen/generated/shared/c++/FormatNowPlayingParams.hpp +0 -110
- package/nitrogen/generated/shared/c++/GateReason.hpp +0 -76
- package/nitrogen/generated/shared/c++/IOSOptions.hpp +0 -91
- package/nitrogen/generated/shared/c++/MediaReference.hpp +0 -76
- package/nitrogen/generated/shared/c++/NativeGateRequest.hpp +0 -97
- package/nitrogen/generated/shared/c++/NativeSetupPlayerOptions.hpp +0 -138
- package/nitrogen/generated/shared/c++/NitroIOSUpdateOptions.hpp +0 -92
- package/nitrogen/generated/shared/c++/OutputType.hpp +0 -108
- package/nitrogen/generated/shared/c++/PlaybackErrorKind.hpp +0 -100
- package/nitrogen/generated/shared/c++/RemoteButtonLayout.hpp +0 -94
- package/nitrogen/generated/shared/c++/StallReason.hpp +0 -76
- package/nitrogen/generated/shared/c++/TrackRequest.hpp +0 -93
- package/src/codegen-no-config-variant.test.ts +0 -70
- package/src/features/browser-config.test.ts +0 -110
- package/src/features/browser-config.ts +0 -293
- package/src/features/browser.test.ts +0 -19
- package/src/features/carConnection.ts +0 -36
- package/src/features/gate.test.ts +0 -72
- package/src/features/gate.ts +0 -155
- package/src/features/playback/trackPlaybackTime.test.ts +0 -80
- package/src/features/playback/trackPlaybackTime.ts +0 -101
- package/src/features/player/options.test.ts +0 -38
- package/src/features/player/setup.test.ts +0 -125
- package/src/features/player/validateOptions.ts +0 -22
- package/src/features/queue/queue.test.ts +0 -36
- package/src/public-surface.test.ts +0 -116
- package/src/utils/artwork.ts +0 -30
- package/src/web/NativeAudioBrowser.playWhenReady.test.ts +0 -301
- package/src/web/TrackPlayer/PlaybackStateMachine.test.ts +0 -139
- package/src/web/TrackPlayer/PlaybackStateMachine.ts +0 -82
- package/src/web/TrackPlayer/PlaybackTimer.test.ts +0 -67
- package/src/web/TrackPlayer/PlaybackTimer.ts +0 -33
- package/src/web/TrackPlayer/Player.dispatch.test.ts +0 -229
- package/src/web/TrackPlayer/Player.load.test.ts +0 -86
- package/src/web/TrackPlayer/PlayingStateFactory.test.ts +0 -51
- package/src/web/TrackPlayer/PlayingStateFactory.ts +0 -24
- package/src/web/TrackPlayer/QueueManager.test.ts +0 -289
- package/src/web/TrackPlayer/QueueManager.ts +0 -302
- package/src/web/TrackPlayer/QueuePlayer.ts +0 -188
- package/src/web/TrackPlayer/VolumeFader.ts +0 -74
- package/src/web/browser/__tests__/layer-resolver.test.ts +0 -69
- package/src/web/browser/assertBrowsePageShape.test.ts +0 -27
- package/src/web/browser/assertBrowsePageShape.ts +0 -27
- package/src/web/browser/classifyTrackNavigation.test.ts +0 -41
- package/src/web/browser/classifyTrackNavigation.ts +0 -35
- package/src/web/browser/parseSearchResponse.test.ts +0 -25
- package/src/web/browser/parseSearchResponse.ts +0 -15
- package/src/web/http/RequestConfigBuilder.test.ts +0 -59
- package/src/web/playbackErrorKind.test.ts +0 -55
- package/src/web/playbackErrorKind.ts +0 -56
- package/src/web/player/MediaSessionManager.test.ts +0 -220
- package/src/web/player/MediaSessionManager.ts +0 -151
- package/src/web/player/NowPlayingManager.test.ts +0 -46
- package/src/web/player/RemoteCommandController.test.ts +0 -171
- package/src/web/player/RemoteCommandController.ts +0 -166
|
@@ -76,7 +76,7 @@ struct LoadSeekCompletedTests {
|
|
|
76
76
|
for state in allStates where state != .loading {
|
|
77
77
|
#expect(
|
|
78
78
|
nextPlaybackState(from: state, on: .loadSeekCompleted) == nil,
|
|
79
|
-
"Expected nil from \(state), got non-nil"
|
|
79
|
+
"Expected nil from \(state), got non-nil"
|
|
80
80
|
)
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -95,33 +95,24 @@ struct AVPlayerPausedTests {
|
|
|
95
95
|
#expect(nextPlaybackState(from: .error, on: .avPlayerPaused(hasAsset: true)) == nil)
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
/// After a natural end the play intent is cleared, so the call-site
|
|
99
|
-
/// `!playWhenReady` gate no longer swallows stray pause observations —
|
|
100
|
-
/// without this guard a late timeControlStatus pause would re-report
|
|
101
|
-
/// .ended as .paused. (hasAsset: false still maps to .none: an emptied
|
|
102
|
-
/// element after ended is "nothing loaded".)
|
|
103
|
-
@Test func fromEnded_hasAssetTrue_isSuppressed() {
|
|
104
|
-
#expect(nextPlaybackState(from: .ended, on: .avPlayerPaused(hasAsset: true)) == nil)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
98
|
@Test func hasAssetFalse_transitionsToNone() {
|
|
108
99
|
// hasAsset: false → .none from any non-stopped state
|
|
109
100
|
let nonStoppedStates = allStates.filter { $0 != .stopped }
|
|
110
101
|
for state in nonStoppedStates {
|
|
111
102
|
#expect(
|
|
112
103
|
nextPlaybackState(from: state, on: .avPlayerPaused(hasAsset: false)) == PlaybackState.none,
|
|
113
|
-
"Expected .none from \(state) with hasAsset: false"
|
|
104
|
+
"Expected .none from \(state) with hasAsset: false"
|
|
114
105
|
)
|
|
115
106
|
}
|
|
116
107
|
}
|
|
117
108
|
|
|
118
109
|
@Test func hasAssetTrue_transitionsToPaused() {
|
|
119
|
-
// hasAsset: true → .paused from states that aren't stopped
|
|
120
|
-
let validStates = allStates.filter { $0 != .stopped && $0 != .error
|
|
110
|
+
// hasAsset: true → .paused from states that aren't stopped or error
|
|
111
|
+
let validStates = allStates.filter { $0 != .stopped && $0 != .error }
|
|
121
112
|
for state in validStates {
|
|
122
113
|
#expect(
|
|
123
114
|
nextPlaybackState(from: state, on: .avPlayerPaused(hasAsset: true)) == .paused,
|
|
124
|
-
"Expected .paused from \(state) with hasAsset: true"
|
|
115
|
+
"Expected .paused from \(state) with hasAsset: true"
|
|
125
116
|
)
|
|
126
117
|
}
|
|
127
118
|
}
|
|
@@ -129,10 +120,8 @@ struct AVPlayerPausedTests {
|
|
|
129
120
|
|
|
130
121
|
// MARK: - bufferingSufficient
|
|
131
122
|
|
|
132
|
-
@Suite("bufferingSufficient — suppressed from
|
|
123
|
+
@Suite("bufferingSufficient — suppressed from .playing and .ended")
|
|
133
124
|
struct BufferingSufficientTests {
|
|
134
|
-
private let suppressedStates: [PlaybackState] = [.playing, .ended, .stopped, .error]
|
|
135
|
-
|
|
136
125
|
@Test func fromPlaying_isSuppressed() {
|
|
137
126
|
#expect(nextPlaybackState(from: .playing, on: .bufferingSufficient) == nil)
|
|
138
127
|
}
|
|
@@ -144,25 +133,11 @@ struct BufferingSufficientTests {
|
|
|
144
133
|
#expect(nextPlaybackState(from: .ended, on: .bufferingSufficient) == nil)
|
|
145
134
|
}
|
|
146
135
|
|
|
147
|
-
/// stop() seeks non-live tracks back to 0 with the asset still loaded, so the
|
|
148
|
-
/// buffer refill flips playbackLikelyToKeepUp right after stopping. Leaving
|
|
149
|
-
/// .stopped would both surface a wrong state and skip the reload-on-play path
|
|
150
|
-
/// (which only triggers from .stopped/.error).
|
|
151
|
-
@Test func fromStopped_isSuppressed() {
|
|
152
|
-
#expect(nextPlaybackState(from: .stopped, on: .bufferingSufficient) == nil)
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/// Recovery from .error always goes through a reload (→ .loading); a direct
|
|
156
|
-
/// jump to .ready would clear playbackError without recovering anything.
|
|
157
|
-
@Test func fromError_isSuppressed() {
|
|
158
|
-
#expect(nextPlaybackState(from: .error, on: .bufferingSufficient) == nil)
|
|
159
|
-
}
|
|
160
|
-
|
|
161
136
|
@Test func fromOtherStates_transitionsToReady() {
|
|
162
|
-
for state in allStates where
|
|
137
|
+
for state in allStates where state != .playing && state != .ended {
|
|
163
138
|
#expect(
|
|
164
139
|
nextPlaybackState(from: state, on: .bufferingSufficient) == .ready,
|
|
165
|
-
"Expected .ready from \(state)"
|
|
140
|
+
"Expected .ready from \(state)"
|
|
166
141
|
)
|
|
167
142
|
}
|
|
168
143
|
}
|
|
@@ -390,16 +390,16 @@ struct AddAtTests {
|
|
|
390
390
|
#expect(try q.addAt([], at: 0) == false)
|
|
391
391
|
}
|
|
392
392
|
|
|
393
|
-
@Test func
|
|
393
|
+
@Test func singleExistingTrack_insertBeforeCurrent_doesNotShift() throws {
|
|
394
394
|
let q = QueueManager()
|
|
395
395
|
q.setQueue(tracks("a"))
|
|
396
|
+
// guard `tracks.count > 1` is false (count is 1), so currentIndex is NOT shifted.
|
|
397
|
+
// The original track moves to index 1 but currentIndex stays 0.
|
|
396
398
|
let changed = try q.addAt(tracks("x"), at: 0)
|
|
397
399
|
#expect(changed == false)
|
|
398
|
-
|
|
399
|
-
//
|
|
400
|
-
|
|
401
|
-
#expect(q.currentIndex == 1)
|
|
402
|
-
#expect(q.currentTrack?.id == "a")
|
|
400
|
+
#expect(q.currentIndex == 0)
|
|
401
|
+
// currentTrack is now "x" (the inserted track), not "a"
|
|
402
|
+
#expect(q.currentTrack?.id == "x")
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
@Test func atExactCurrentIndex_shiftsCurrentIndex() throws {
|
|
@@ -524,17 +524,13 @@ struct RemoveTests {
|
|
|
524
524
|
@Suite("move()")
|
|
525
525
|
@MainActor
|
|
526
526
|
struct MoveTests {
|
|
527
|
-
|
|
528
|
-
// track, and no move returns true (true triggers a reload at the caller,
|
|
529
|
-
// which would restart playback on a reorder).
|
|
530
|
-
|
|
531
|
-
@Test func currentTrack_pointerFollows() throws {
|
|
527
|
+
@Test func currentTrack_returnsTrue_updatesIndex() throws {
|
|
532
528
|
let q = QueueManager()
|
|
533
529
|
q.setQueue(tracks("a", "b", "c"), initialIndex: 0)
|
|
534
530
|
let changed = try q.move(fromIndex: 0, toIndex: 2)
|
|
535
|
-
#expect(changed ==
|
|
531
|
+
#expect(changed == true)
|
|
536
532
|
#expect(q.currentIndex == 2)
|
|
537
|
-
#expect(q.
|
|
533
|
+
#expect(q.tracks[2].id == "a")
|
|
538
534
|
}
|
|
539
535
|
|
|
540
536
|
@Test func nonCurrent_returnsFalse() throws {
|
|
@@ -552,37 +548,26 @@ struct MoveTests {
|
|
|
552
548
|
}
|
|
553
549
|
}
|
|
554
550
|
|
|
555
|
-
@Test func
|
|
551
|
+
@Test func nonCurrent_acrossCurrent_doesNotAdjustIndex() throws {
|
|
556
552
|
let q = QueueManager()
|
|
557
553
|
q.setQueue(tracks("a", "b", "c"), initialIndex: 1)
|
|
554
|
+
// Move track from before current to after current.
|
|
555
|
+
// currentIndex is NOT adjusted (only adjusted when fromIndex == currentIndex).
|
|
558
556
|
let changed = try q.move(fromIndex: 0, toIndex: 2)
|
|
559
557
|
#expect(changed == false)
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
@Test func nonCurrent_acrossCurrentBackwards_keepsPointerOnSameTrack() throws {
|
|
566
|
-
let q = QueueManager()
|
|
567
|
-
q.setQueue(tracks("a", "b", "c"), initialIndex: 1)
|
|
568
|
-
let changed = try q.move(fromIndex: 2, toIndex: 0)
|
|
569
|
-
#expect(changed == false)
|
|
570
|
-
// [a,b,c] → [c,a,b]; "b" is now index 2.
|
|
571
|
-
#expect(q.currentTrack?.id == "b")
|
|
572
|
-
#expect(q.currentIndex == 2)
|
|
558
|
+
#expect(q.currentIndex == 1)
|
|
559
|
+
// After remove(0): [b, c], insert at min(2,2)=2: [b, c, a]
|
|
560
|
+
// currentIndex 1 now points to "c", not "b"
|
|
561
|
+
#expect(q.currentTrack?.id == "c")
|
|
573
562
|
}
|
|
574
563
|
|
|
575
|
-
@Test func
|
|
564
|
+
@Test func toIndexBeyondCount_clampsToEnd() throws {
|
|
576
565
|
let q = QueueManager()
|
|
577
566
|
q.setQueue(tracks("a", "b", "c"), initialIndex: 0)
|
|
578
567
|
let changed = try q.move(fromIndex: 0, toIndex: 99)
|
|
579
|
-
#expect(changed ==
|
|
568
|
+
#expect(changed == true)
|
|
580
569
|
// remove(0): [b, c], insert at min(2, 99)=2: [b, c, a]
|
|
581
570
|
#expect(q.tracks[2].id == "a")
|
|
582
|
-
// The unclamped assignment left currentIndex at 99 → currentTrack nil →
|
|
583
|
-
// a reorder unloaded playback.
|
|
584
|
-
#expect(q.currentIndex == 2)
|
|
585
|
-
#expect(q.currentTrack?.id == "a")
|
|
586
571
|
}
|
|
587
572
|
|
|
588
573
|
@Test func invalidFromIndex_throws() {
|
|
@@ -621,23 +606,6 @@ struct ClearTests {
|
|
|
621
606
|
let q = QueueManager()
|
|
622
607
|
#expect(q.clear() == false)
|
|
623
608
|
}
|
|
624
|
-
|
|
625
|
-
/// clear() and removeUpcomingTracks() were the only mutations not
|
|
626
|
-
/// maintaining the shuffle order — a stale order over a rebuilt queue
|
|
627
|
-
/// navigates to phantom indices, nil-ing currentTrack and unloading
|
|
628
|
-
/// playback mid-session.
|
|
629
|
-
@Test func clear_alsoClearsShuffleOrder() {
|
|
630
|
-
let q = QueueManager()
|
|
631
|
-
q.shuffleEnabled = true
|
|
632
|
-
q.setQueue(tracks("a", "b", "c", "d", "e"))
|
|
633
|
-
|
|
634
|
-
q.clear()
|
|
635
|
-
|
|
636
|
-
#expect(q.shuffleOrder.shuffled.isEmpty)
|
|
637
|
-
|
|
638
|
-
_ = try? q.addAt(tracks("x", "y"), at: 0)
|
|
639
|
-
#expect(q.shuffleOrder.shuffled.count == q.tracks.count)
|
|
640
|
-
}
|
|
641
609
|
}
|
|
642
610
|
|
|
643
611
|
// MARK: - Other: replace, removeUpcomingTracks
|
|
@@ -652,16 +620,6 @@ struct OtherMutationTests {
|
|
|
652
620
|
#expect(q.tracks[1].id == "B")
|
|
653
621
|
}
|
|
654
622
|
|
|
655
|
-
@Test func removeUpcomingTracks_alsoTrimsShuffleOrder() {
|
|
656
|
-
let q = QueueManager()
|
|
657
|
-
q.shuffleEnabled = true
|
|
658
|
-
q.setQueue(tracks("a", "b", "c", "d", "e"), initialIndex: 1)
|
|
659
|
-
|
|
660
|
-
q.removeUpcomingTracks()
|
|
661
|
-
|
|
662
|
-
#expect(q.shuffleOrder.shuffled.count == q.tracks.count)
|
|
663
|
-
}
|
|
664
|
-
|
|
665
623
|
@Test func removeUpcomingTracks_keepsCurrentAndBefore() {
|
|
666
624
|
let q = QueueManager()
|
|
667
625
|
q.setQueue(tracks("a", "b", "c", "d"), initialIndex: 1)
|
|
@@ -920,92 +878,3 @@ struct DelegateTests {
|
|
|
920
878
|
#expect(spy.calls.isEmpty)
|
|
921
879
|
}
|
|
922
880
|
}
|
|
923
|
-
|
|
924
|
-
// MARK: - canNext / canPrevious
|
|
925
|
-
|
|
926
|
-
@Suite("canNext / canPrevious")
|
|
927
|
-
@MainActor
|
|
928
|
-
struct SkipAvailabilityTests {
|
|
929
|
-
@Test func emptyQueue_bothFalse() {
|
|
930
|
-
let q = QueueManager()
|
|
931
|
-
#expect(q.canNext == false)
|
|
932
|
-
#expect(q.canPrevious == false)
|
|
933
|
-
}
|
|
934
|
-
|
|
935
|
-
@Test func singleTrack_repeatOff_bothFalse() {
|
|
936
|
-
let q = QueueManager()
|
|
937
|
-
q.setQueue(tracks("a"))
|
|
938
|
-
#expect(q.canNext == false)
|
|
939
|
-
#expect(q.canPrevious == false)
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
@Test func singleTrack_repeatQueue_bothFalse() {
|
|
943
|
-
let q = QueueManager()
|
|
944
|
-
q.setQueue(tracks("a"))
|
|
945
|
-
q.repeatMode = .queue
|
|
946
|
-
#expect(q.canNext == false)
|
|
947
|
-
#expect(q.canPrevious == false)
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
@Test func firstOfMany_nextOnly() {
|
|
951
|
-
let q = QueueManager()
|
|
952
|
-
q.setQueue(tracks("a", "b", "c"), initialIndex: 0)
|
|
953
|
-
#expect(q.canNext == true)
|
|
954
|
-
#expect(q.canPrevious == false)
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
@Test func middleOfMany_both() {
|
|
958
|
-
let q = QueueManager()
|
|
959
|
-
q.setQueue(tracks("a", "b", "c"), initialIndex: 1)
|
|
960
|
-
#expect(q.canNext == true)
|
|
961
|
-
#expect(q.canPrevious == true)
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
@Test func lastOfMany_repeatOff_previousOnly() {
|
|
965
|
-
let q = QueueManager()
|
|
966
|
-
q.setQueue(tracks("a", "b", "c"), initialIndex: 2)
|
|
967
|
-
#expect(q.canNext == false)
|
|
968
|
-
#expect(q.canPrevious == true)
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
@Test func lastOfMany_repeatQueue_bothTrue() {
|
|
972
|
-
let q = QueueManager()
|
|
973
|
-
q.setQueue(tracks("a", "b", "c"), initialIndex: 2)
|
|
974
|
-
q.repeatMode = .queue
|
|
975
|
-
#expect(q.canNext == true) // wraps to first
|
|
976
|
-
#expect(q.canPrevious == true)
|
|
977
|
-
}
|
|
978
|
-
|
|
979
|
-
@Test func firstOfMany_repeatQueue_bothTrue() {
|
|
980
|
-
let q = QueueManager()
|
|
981
|
-
q.setQueue(tracks("a", "b", "c"), initialIndex: 0)
|
|
982
|
-
q.repeatMode = .queue
|
|
983
|
-
#expect(q.canNext == true)
|
|
984
|
-
#expect(q.canPrevious == true) // wraps to last
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
// Shuffle wraps the playback order unconditionally (even with repeat off), so
|
|
988
|
-
// next()/previous() always move when count > 1 — canNext/canPrevious must
|
|
989
|
-
// agree at the shuffle-order boundaries, not grey out.
|
|
990
|
-
@Test func shuffleEnd_repeatOff_canNextTrue() {
|
|
991
|
-
let q = QueueManager()
|
|
992
|
-
q.setQueue(tracks("a", "b", "c", "d"))
|
|
993
|
-
q.shuffleEnabled = true
|
|
994
|
-
q.repeatMode = .off
|
|
995
|
-
while !q.isLastInPlaybackOrder {
|
|
996
|
-
_ = q.next()
|
|
997
|
-
} // advance to last in shuffle order
|
|
998
|
-
#expect(q.canNext == true) // next() wraps to the first shuffle position
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
@Test func shuffleStart_repeatOff_canPreviousTrue() {
|
|
1002
|
-
let q = QueueManager()
|
|
1003
|
-
q.setQueue(tracks("a", "b", "c", "d"))
|
|
1004
|
-
q.shuffleEnabled = true
|
|
1005
|
-
q.repeatMode = .off
|
|
1006
|
-
while !q.previousTracks.isEmpty {
|
|
1007
|
-
_ = q.previous()
|
|
1008
|
-
} // back to first in shuffle order
|
|
1009
|
-
#expect(q.canPrevious == true) // previous() wraps to the last shuffle position
|
|
1010
|
-
}
|
|
1011
|
-
}
|
|
@@ -4,7 +4,7 @@ import Testing
|
|
|
4
4
|
|
|
5
5
|
private func makeResolvedTrack(
|
|
6
6
|
url: String = "/test",
|
|
7
|
-
title: String = "Test Track"
|
|
7
|
+
title: String = "Test Track"
|
|
8
8
|
) -> ResolvedTrack {
|
|
9
9
|
ResolvedTrack(
|
|
10
10
|
url: url,
|
|
@@ -26,7 +26,7 @@ private func makeResolvedTrack(
|
|
|
26
26
|
favorited: nil,
|
|
27
27
|
groupTitle: nil,
|
|
28
28
|
live: nil,
|
|
29
|
-
imageRow: nil
|
|
29
|
+
imageRow: nil
|
|
30
30
|
)
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -35,9 +35,8 @@ private func makeFullResolvedTrack() -> ResolvedTrack {
|
|
|
35
35
|
url: "/original",
|
|
36
36
|
children: [Track(id: "t1", url: "/t1")],
|
|
37
37
|
carPlaySiriListButton: .top,
|
|
38
|
-
id: "original-id",
|
|
39
38
|
src: "src.mp3",
|
|
40
|
-
artwork:
|
|
39
|
+
artwork: "art.jpg",
|
|
41
40
|
artworkSource: ImageSource(uri: "resolved-art.jpg"),
|
|
42
41
|
artworkCarPlayTinted: true,
|
|
43
42
|
title: "Original Title",
|
|
@@ -52,7 +51,7 @@ private func makeFullResolvedTrack() -> ResolvedTrack {
|
|
|
52
51
|
favorited: true,
|
|
53
52
|
groupTitle: "Group A",
|
|
54
53
|
live: false,
|
|
55
|
-
imageRow: [ImageRowItem(title: "Row 1")]
|
|
54
|
+
imageRow: [ImageRowItem(title: "Row 1")]
|
|
56
55
|
)
|
|
57
56
|
}
|
|
58
57
|
|
|
@@ -96,16 +95,10 @@ private func makeFullResolvedTrack() -> ResolvedTrack {
|
|
|
96
95
|
#expect(copy.src == "new-src.mp3")
|
|
97
96
|
}
|
|
98
97
|
|
|
99
|
-
@Test func copyingOverridesId() {
|
|
100
|
-
let original = makeResolvedTrack()
|
|
101
|
-
let copy = original.copying(id: "new-id")
|
|
102
|
-
#expect(copy.id == "new-id")
|
|
103
|
-
}
|
|
104
|
-
|
|
105
98
|
@Test func copyingOverridesArtwork() {
|
|
106
99
|
let original = makeResolvedTrack()
|
|
107
|
-
let copy = original.copying(artwork:
|
|
108
|
-
#expect(copy.artwork
|
|
100
|
+
let copy = original.copying(artwork: "new-art.jpg")
|
|
101
|
+
#expect(copy.artwork == "new-art.jpg")
|
|
109
102
|
}
|
|
110
103
|
|
|
111
104
|
@Test func copyingOverridesArtworkSource() {
|
|
@@ -210,7 +203,7 @@ private func makeFullResolvedTrack() -> ResolvedTrack {
|
|
|
210
203
|
title: "Updated Title",
|
|
211
204
|
artist: "New Artist",
|
|
212
205
|
duration: 240.0,
|
|
213
|
-
favorited: true
|
|
206
|
+
favorited: true
|
|
214
207
|
)
|
|
215
208
|
#expect(copy.url == "/updated")
|
|
216
209
|
#expect(copy.title == "Updated Title")
|
|
@@ -234,7 +227,7 @@ private func makeFullResolvedTrack() -> ResolvedTrack {
|
|
|
234
227
|
#expect(copy.children?.count == 1)
|
|
235
228
|
#expect(copy.carPlaySiriListButton == .top)
|
|
236
229
|
#expect(copy.src == "src.mp3")
|
|
237
|
-
#expect(copy.artwork
|
|
230
|
+
#expect(copy.artwork == "art.jpg")
|
|
238
231
|
#expect(copy.artworkSource == ImageSource(uri: "resolved-art.jpg"))
|
|
239
232
|
#expect(copy.artworkCarPlayTinted == true)
|
|
240
233
|
#expect(copy.subtitle == "Original Subtitle")
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// This file is intentionally empty — mock types live in
|
|
2
2
|
// Model/NitroTypeStubs.swift (part of the AudioBrowserTestable target).
|
|
3
3
|
|
|
4
|
-
@testable import AudioBrowserTestable
|
|
5
4
|
import AVFoundation
|
|
5
|
+
@testable import AudioBrowserTestable
|
|
6
6
|
|
|
7
7
|
/// Creates an AVMetadataItem with the specified properties for testing.
|
|
8
8
|
func makeMetadataItem(
|
|
@@ -10,7 +10,7 @@ func makeMetadataItem(
|
|
|
10
10
|
commonKey: AVMetadataKey? = nil,
|
|
11
11
|
keySpace: AVMetadataKeySpace? = nil,
|
|
12
12
|
key: String? = nil,
|
|
13
|
-
value: String
|
|
13
|
+
value: String
|
|
14
14
|
) -> AVMetadataItem {
|
|
15
15
|
let item = AVMutableMetadataItem()
|
|
16
16
|
if let identifier {
|
|
@@ -41,9 +41,6 @@ final class MockPlaybackEffectHandler: PlaybackEffectHandler {
|
|
|
41
41
|
func pausePlayback() { pausePlaybackCallCount += 1 }
|
|
42
42
|
func setTimePitchingAlgorithmForCurrentItem() { setTimePitchCallCount += 1 }
|
|
43
43
|
|
|
44
|
-
// Player volume
|
|
45
|
-
var volume: Float = 1
|
|
46
|
-
|
|
47
44
|
// AVPlayer state queries
|
|
48
45
|
var currentTime: Double = 0
|
|
49
46
|
var duration: Double = 0
|
|
@@ -59,16 +56,11 @@ final class MockPlaybackEffectHandler: PlaybackEffectHandler {
|
|
|
59
56
|
|
|
60
57
|
// Track loading
|
|
61
58
|
var loadTrackCalls: [String] = []
|
|
62
|
-
var loadTrackTracks: [Track] = []
|
|
63
59
|
var reloadTrackCalls: [Bool] = []
|
|
64
60
|
var unloadTrackCallCount = 0
|
|
65
61
|
var cancelMediaLoadingCallCount = 0
|
|
66
62
|
|
|
67
|
-
func loadTrack(src: String
|
|
68
|
-
loadTrackCalls.append(src)
|
|
69
|
-
loadTrackTracks.append(track)
|
|
70
|
-
}
|
|
71
|
-
|
|
63
|
+
func loadTrack(src: String) { loadTrackCalls.append(src) }
|
|
72
64
|
func reloadTrack(startFromCurrentTime: Bool) { reloadTrackCalls.append(startFromCurrentTime) }
|
|
73
65
|
func unloadTrack() { unloadTrackCallCount += 1 }
|
|
74
66
|
func cancelMediaLoading() { cancelMediaLoadingCallCount += 1 }
|
|
@@ -81,18 +73,27 @@ final class MockPlaybackEffectHandler: PlaybackEffectHandler {
|
|
|
81
73
|
func replayCurrentTrack() { replayCurrentTrackCallCount += 1 }
|
|
82
74
|
|
|
83
75
|
// Now Playing
|
|
84
|
-
var
|
|
85
|
-
var clearNowPlayingCallCount = 0
|
|
76
|
+
var updateNowPlayingValuesCalls: [(duration: Double, rate: Float, currentTime: Double)] = []
|
|
86
77
|
var updateNowPlayingStateCalls: [Bool] = []
|
|
78
|
+
var loadNowPlayingMetadataCalls: [(track: Track, rate: Float)] = []
|
|
79
|
+
var resetNowPlayingValuesCallCount = 0
|
|
80
|
+
var clearNowPlayingCallCount = 0
|
|
81
|
+
var setNowPlayingCurrentTimeCalls: [Double] = []
|
|
87
82
|
|
|
88
|
-
func
|
|
89
|
-
|
|
83
|
+
func updateNowPlayingValues(duration: Double, rate: Float, currentTime: Double) {
|
|
84
|
+
updateNowPlayingValuesCalls.append((duration, rate, currentTime))
|
|
90
85
|
}
|
|
91
|
-
|
|
92
|
-
func clearNowPlaying() { clearNowPlayingCallCount += 1 }
|
|
93
86
|
func updateNowPlayingState(playWhenReady: Bool) {
|
|
94
87
|
updateNowPlayingStateCalls.append(playWhenReady)
|
|
95
88
|
}
|
|
89
|
+
func loadNowPlayingMetadata(for track: Track, rate: Float) {
|
|
90
|
+
loadNowPlayingMetadataCalls.append((track, rate))
|
|
91
|
+
}
|
|
92
|
+
func resetNowPlayingValues() { resetNowPlayingValuesCallCount += 1 }
|
|
93
|
+
func clearNowPlaying() { clearNowPlayingCallCount += 1 }
|
|
94
|
+
func setNowPlayingCurrentTime(seconds: Double) {
|
|
95
|
+
setNowPlayingCurrentTimeCalls.append(seconds)
|
|
96
|
+
}
|
|
96
97
|
|
|
97
98
|
// Remote commands
|
|
98
99
|
var updateRemoteRepeatModeCalls: [RepeatMode] = []
|
|
@@ -101,15 +102,9 @@ final class MockPlaybackEffectHandler: PlaybackEffectHandler {
|
|
|
101
102
|
func updateRemoteRepeatMode(_ mode: RepeatMode) {
|
|
102
103
|
updateRemoteRepeatModeCalls.append(mode)
|
|
103
104
|
}
|
|
104
|
-
|
|
105
105
|
func updateRemoteShuffleMode(_ enabled: Bool) {
|
|
106
106
|
updateRemoteShuffleModeCalls.append(enabled)
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
var updateSkipAvailabilityCalls: [(canNext: Bool, canPrevious: Bool)] = []
|
|
110
|
-
func updateSkipAvailability(canNext: Bool, canPrevious: Bool) {
|
|
111
|
-
updateSkipAvailabilityCalls.append((canNext, canPrevious))
|
|
112
|
-
}
|
|
113
108
|
}
|
|
114
109
|
|
|
115
110
|
// MARK: - Mock PlaybackCoordinatorCallbacks
|
|
@@ -126,56 +121,37 @@ final class MockPlaybackCoordinatorCallbacks: PlaybackCoordinatorCallbacks {
|
|
|
126
121
|
var repeatModeChanges: [RepeatModeChangedEvent] = []
|
|
127
122
|
var shuffleEnabledChanges: [Bool] = []
|
|
128
123
|
var errorEvents: [PlaybackErrorEvent] = []
|
|
129
|
-
var playbackIntervalFiredCount = 0
|
|
130
|
-
var releaseSessionCount = 0
|
|
131
124
|
|
|
132
125
|
func playerDidChangePlayback(_ playback: Playback) {
|
|
133
126
|
playbackChanges.append(playback)
|
|
134
127
|
}
|
|
135
|
-
|
|
136
128
|
func playerDidChangeActiveTrack(_ event: PlaybackActiveTrackChangedEvent) {
|
|
137
129
|
activeTrackChanges.append(event)
|
|
138
130
|
}
|
|
139
|
-
|
|
140
131
|
func playerDidUpdateProgress(_ event: PlaybackProgressUpdatedEvent) {
|
|
141
132
|
progressUpdates.append(event)
|
|
142
133
|
}
|
|
143
|
-
|
|
144
|
-
func playerDidFirePlaybackInterval() {
|
|
145
|
-
playbackIntervalFiredCount += 1
|
|
146
|
-
}
|
|
147
|
-
|
|
148
134
|
func playerDidChangePlayWhenReady(_ playWhenReady: Bool) {
|
|
149
135
|
playWhenReadyChanges.append(playWhenReady)
|
|
150
136
|
}
|
|
151
|
-
|
|
152
137
|
func playerDidChangePlayingState(_ state: PlayingState) {
|
|
153
138
|
playingStateChanges.append(state)
|
|
154
139
|
}
|
|
155
|
-
|
|
156
140
|
func playerDidEndQueue(_ event: PlaybackQueueEndedEvent) {
|
|
157
141
|
queueEndedEvents.append(event)
|
|
158
142
|
}
|
|
159
|
-
|
|
160
143
|
func playerDidChangeQueue(_ tracks: [Track]) {
|
|
161
144
|
queueChanges.append(tracks)
|
|
162
145
|
}
|
|
163
|
-
|
|
164
146
|
func playerDidChangeRepeatMode(_ event: RepeatModeChangedEvent) {
|
|
165
147
|
repeatModeChanges.append(event)
|
|
166
148
|
}
|
|
167
|
-
|
|
168
149
|
func playerDidChangeShuffleEnabled(_ enabled: Bool) {
|
|
169
150
|
shuffleEnabledChanges.append(enabled)
|
|
170
151
|
}
|
|
171
|
-
|
|
172
152
|
func playerDidError(_ event: PlaybackErrorEvent) {
|
|
173
153
|
errorEvents.append(event)
|
|
174
154
|
}
|
|
175
|
-
|
|
176
|
-
func playerShouldReleaseSession() {
|
|
177
|
-
releaseSessionCount += 1
|
|
178
|
-
}
|
|
179
155
|
}
|
|
180
156
|
|
|
181
157
|
// MARK: - Mock SleepTimerHandling
|
|
@@ -183,16 +159,8 @@ final class MockPlaybackCoordinatorCallbacks: PlaybackCoordinatorCallbacks {
|
|
|
183
159
|
@MainActor
|
|
184
160
|
final class MockSleepTimerHandling: SleepTimerHandling {
|
|
185
161
|
var onComplete: (() -> Void)?
|
|
186
|
-
var onFadeStart: ((_ duration: TimeInterval) -> Void)?
|
|
187
|
-
var onFadeCancel: (() -> Void)?
|
|
188
162
|
var trackChangedCallCount = 0
|
|
189
163
|
var trackPlayedToEndCallCount = 0
|
|
190
|
-
var clearCallCount = 0
|
|
191
|
-
|
|
192
|
-
@discardableResult func clear() -> Bool {
|
|
193
|
-
clearCallCount += 1
|
|
194
|
-
return true
|
|
195
|
-
}
|
|
196
164
|
|
|
197
165
|
func onTrackChanged() { trackChangedCallCount += 1 }
|
|
198
166
|
func onTrackPlayedToEnd() { trackPlayedToEndCallCount += 1 }
|
|
@@ -202,20 +170,11 @@ final class MockSleepTimerHandling: SleepTimerHandling {
|
|
|
202
170
|
|
|
203
171
|
@MainActor
|
|
204
172
|
final class MockRetryHandling: RetryHandling {
|
|
205
|
-
var isEnabled = true
|
|
206
|
-
var hasPlayed = false
|
|
207
173
|
var isRetryableResult = false
|
|
208
174
|
var attemptRetryResult = false
|
|
209
|
-
var attemptRetryDelayNs: UInt64 = 0
|
|
210
175
|
var resetCallCount = 0
|
|
211
176
|
|
|
212
|
-
func isRetryable(_: Error?) -> Bool { isRetryableResult }
|
|
213
|
-
func attemptRetry(startFromCurrentTime
|
|
214
|
-
if attemptRetryDelayNs > 0 {
|
|
215
|
-
try? await Task.sleep(nanoseconds: attemptRetryDelayNs)
|
|
216
|
-
}
|
|
217
|
-
return attemptRetryResult
|
|
218
|
-
}
|
|
219
|
-
|
|
177
|
+
func isRetryable(_ error: Error?) -> Bool { isRetryableResult }
|
|
178
|
+
func attemptRetry(startFromCurrentTime: Bool) async -> Bool { attemptRetryResult }
|
|
220
179
|
func reset() { resetCallCount += 1 }
|
|
221
180
|
}
|
|
@@ -7,8 +7,8 @@ import Testing
|
|
|
7
7
|
@MainActor
|
|
8
8
|
private final class BrowserMock: TrackSelectionBrowser {
|
|
9
9
|
var trackLoadHandlerResult = false
|
|
10
|
-
var expandQueueResult: (tracks: [Track], selectedIndex: Int)?
|
|
11
|
-
var expandQueueError: Error?
|
|
10
|
+
var expandQueueResult: (tracks: [Track], selectedIndex: Int)? = nil
|
|
11
|
+
var expandQueueError: Error? = nil
|
|
12
12
|
|
|
13
13
|
// Record calls for verification
|
|
14
14
|
var trackLoadEvents: [TrackLoadEvent] = []
|
|
@@ -31,7 +31,7 @@ private final class BrowserMock: TrackSelectionBrowser {
|
|
|
31
31
|
@MainActor
|
|
32
32
|
private final class PlayerMock: TrackSelectionPlayer {
|
|
33
33
|
var tracks: [Track] = []
|
|
34
|
-
var queueSourcePath: String?
|
|
34
|
+
var queueSourcePath: String? = nil
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
private enum MockError: Error {
|
|
@@ -57,7 +57,7 @@ struct BrowsableTrackTests {
|
|
|
57
57
|
let (selector, _, player) = makeSelector()
|
|
58
58
|
let track = Track(id: "t1", url: "/some/path")
|
|
59
59
|
let result = await selector.select(track: track, player: player)
|
|
60
|
-
guard case
|
|
60
|
+
guard case .browse(let url) = result else {
|
|
61
61
|
Issue.record("expected .browse, got \(result)")
|
|
62
62
|
return
|
|
63
63
|
}
|
|
@@ -90,11 +90,11 @@ struct PlayableTrackTests {
|
|
|
90
90
|
let (selector, browser, player) = makeSelector()
|
|
91
91
|
let track = Track(id: "t1", src: "https://example.com/audio.mp3")
|
|
92
92
|
let result = await selector.select(track: track, player: player)
|
|
93
|
-
guard case
|
|
93
|
+
guard case .play(let intent) = result else {
|
|
94
94
|
Issue.record("expected .play, got \(result)")
|
|
95
95
|
return
|
|
96
96
|
}
|
|
97
|
-
guard case
|
|
97
|
+
guard case .loadTrack(let loaded) = intent else {
|
|
98
98
|
Issue.record("expected .loadTrack, got \(intent)")
|
|
99
99
|
return
|
|
100
100
|
}
|
|
@@ -135,11 +135,11 @@ struct ContextualUrlQueueReuseTests {
|
|
|
135
135
|
|
|
136
136
|
let track = Track(id: "t1", url: contextualUrl, src: trackSrc)
|
|
137
137
|
let result = await selector.select(track: track, player: player)
|
|
138
|
-
guard case
|
|
138
|
+
guard case .play(let intent) = result else {
|
|
139
139
|
Issue.record("expected .play, got \(result)")
|
|
140
140
|
return
|
|
141
141
|
}
|
|
142
|
-
guard case
|
|
142
|
+
guard case .skipTo(let index) = intent else {
|
|
143
143
|
Issue.record("expected .skipTo, got \(intent)")
|
|
144
144
|
return
|
|
145
145
|
}
|
|
@@ -189,11 +189,11 @@ struct ContextualUrlExpansionTests {
|
|
|
189
189
|
|
|
190
190
|
let track = Track(id: "t1", url: contextualUrl, src: trackSrc)
|
|
191
191
|
let result = await selector.select(track: track, player: player)
|
|
192
|
-
guard case
|
|
192
|
+
guard case .play(let intent) = result else {
|
|
193
193
|
Issue.record("expected .play, got \(result)")
|
|
194
194
|
return
|
|
195
195
|
}
|
|
196
|
-
guard case
|
|
196
|
+
guard case .setQueue(let tracks, let startIndex, let sourcePath) = intent else {
|
|
197
197
|
Issue.record("expected .setQueue, got \(intent)")
|
|
198
198
|
return
|
|
199
199
|
}
|
|
@@ -213,7 +213,7 @@ struct ContextualUrlExpansionTests {
|
|
|
213
213
|
|
|
214
214
|
browser.expandQueueResult = (
|
|
215
215
|
tracks: [Track(id: "a", src: "song.mp3")],
|
|
216
|
-
selectedIndex: 0
|
|
216
|
+
selectedIndex: 0
|
|
217
217
|
)
|
|
218
218
|
|
|
219
219
|
let track = Track(id: "t1", url: contextualUrl, src: trackSrc)
|
|
@@ -234,11 +234,11 @@ struct ContextualUrlExpansionTests {
|
|
|
234
234
|
|
|
235
235
|
let track = Track(id: "t1", url: contextualUrl, src: trackSrc)
|
|
236
236
|
let result = await selector.select(track: track, player: player)
|
|
237
|
-
guard case
|
|
237
|
+
guard case .play(let intent) = result else {
|
|
238
238
|
Issue.record("expected .play, got \(result)")
|
|
239
239
|
return
|
|
240
240
|
}
|
|
241
|
-
guard case
|
|
241
|
+
guard case .loadTrack(let loaded) = intent else {
|
|
242
242
|
Issue.record("expected .loadTrack, got \(intent)")
|
|
243
243
|
return
|
|
244
244
|
}
|
|
@@ -255,11 +255,11 @@ struct ContextualUrlExpansionTests {
|
|
|
255
255
|
|
|
256
256
|
let track = Track(id: "t1", url: contextualUrl, src: trackSrc)
|
|
257
257
|
let result = await selector.select(track: track, player: player)
|
|
258
|
-
guard case
|
|
258
|
+
guard case .play(let intent) = result else {
|
|
259
259
|
Issue.record("expected .play, got \(result)")
|
|
260
260
|
return
|
|
261
261
|
}
|
|
262
|
-
guard case
|
|
262
|
+
guard case .loadTrack(let loaded) = intent else {
|
|
263
263
|
Issue.record("expected .loadTrack, got \(intent)")
|
|
264
264
|
return
|
|
265
265
|
}
|