react-native-audio-browser 0.2.0-next.9 → 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 +148 -433
- 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 +196 -804
- 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/ServiceBinding.kt +0 -46
- 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/ServiceBindingTest.kt +0 -68
- 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 -123
- 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
package/src/types/browser.ts
CHANGED
|
@@ -56,123 +56,66 @@ export type BrowseResult = ResolvedTrack | BrowseError
|
|
|
56
56
|
|
|
57
57
|
export type BrowserSourceCallback = (
|
|
58
58
|
param: BrowserSourceCallbackParam
|
|
59
|
-
) =>
|
|
59
|
+
) => Promise<BrowseResult>
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
|
-
* Search mode
|
|
63
|
-
* for. Orthogonal to the filter props (`genre`/`artist`/`album`/`title`/
|
|
64
|
-
* `playlist`), which say *which* item. `mode` is optional: when absent, the
|
|
65
|
-
* request is unstructured (text-search `query`) or unclassified.
|
|
62
|
+
* Search mode types for structured voice search.
|
|
66
63
|
*
|
|
67
|
-
* - `any`:
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* - `
|
|
71
|
-
* - `
|
|
72
|
-
* - `
|
|
73
|
-
* - `podcast`: a podcast (series, episode, or station)
|
|
74
|
-
* - `audiobook`: an audiobook
|
|
75
|
-
* - `news`: news content
|
|
76
|
-
* - `music`: the music vertical, as opposed to talk/podcasts/audiobooks
|
|
77
|
-
* ("play music" on iOS, via the music media type)
|
|
78
|
-
* - `music-video` / `movie` / `tv-show` / `tv-show-episode`: video kinds
|
|
79
|
-
* (an audio app cannot play these; surfaced so consumers may special-case —
|
|
80
|
-
* ignoring them degrades to an unstructured search)
|
|
81
|
-
*
|
|
82
|
-
* NOTE: there is intentionally no `genre`/`artist`/`album` member — those are
|
|
83
|
-
* filters, not result shapes. Read them from `SearchParams.genre`/`.artist`/
|
|
84
|
-
* `.album` directly.
|
|
64
|
+
* - `any`: Play any content - smart shuffle or last playlist (query will be empty string)
|
|
65
|
+
* - `genre`: Search by genre
|
|
66
|
+
* - `artist`: Search by artist
|
|
67
|
+
* - `album`: Search by album
|
|
68
|
+
* - `song`: Search by song/track title
|
|
69
|
+
* - `playlist`: Search by playlist name
|
|
85
70
|
*
|
|
86
71
|
* @see BrowserConfiguration.search
|
|
87
72
|
* @see SearchParams
|
|
88
73
|
*/
|
|
89
74
|
export type SearchMode =
|
|
90
75
|
| 'any'
|
|
76
|
+
| 'genre'
|
|
77
|
+
| 'artist'
|
|
78
|
+
| 'album'
|
|
91
79
|
| 'song'
|
|
92
80
|
| 'playlist'
|
|
93
|
-
| 'station'
|
|
94
|
-
| 'podcast'
|
|
95
|
-
| 'audiobook'
|
|
96
|
-
| 'news'
|
|
97
|
-
| 'music'
|
|
98
|
-
| 'music-video'
|
|
99
|
-
| 'movie'
|
|
100
|
-
| 'tv-show'
|
|
101
|
-
| 'tv-show-episode'
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* The media-reference axis from a voice intent.
|
|
105
|
-
*
|
|
106
|
-
* - `my`: the user's own collection ("play my favorites") — routed to the
|
|
107
|
-
* `search` source so the consumer resolves it against their library.
|
|
108
|
-
* - `unknown`: no reference (the default; Android always emits this).
|
|
109
|
-
*
|
|
110
|
-
* NOTE: "currently playing" ("play this") is resolved natively (resume) and
|
|
111
|
-
* never reaches the consumer, so it is not a value here.
|
|
112
|
-
*/
|
|
113
|
-
export type MediaReference = 'my' | 'unknown'
|
|
114
81
|
|
|
115
82
|
/**
|
|
116
|
-
* Structured search parameters
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* - "play something"
|
|
120
|
-
* - "play music"
|
|
121
|
-
* - "play jazz"
|
|
122
|
-
* - "play
|
|
123
|
-
* - "play
|
|
124
|
-
* - "play
|
|
125
|
-
* - "play my favorites" → reference='my', query=""
|
|
126
|
-
* - "play a jazz podcast" → mode='podcast', genre="jazz"
|
|
83
|
+
* Structured search parameters from voice commands.
|
|
84
|
+
*
|
|
85
|
+
* Voice commands are parsed by Android into structured parameters:
|
|
86
|
+
* - "play something" → mode=null, query="something"
|
|
87
|
+
* - "play music" → mode='any', query=""
|
|
88
|
+
* - "play jazz" → mode='genre', genre="jazz", query="jazz"
|
|
89
|
+
* - "play michael jackson" → mode='artist', artist="michael jackson", query="michael jackson"
|
|
90
|
+
* - "play thriller by michael jackson" → mode='album', album="thriller", artist="michael jackson"
|
|
91
|
+
* - "play billie jean" → mode='song', title="billie jean", query="billie jean"
|
|
127
92
|
*/
|
|
128
93
|
export interface SearchParams {
|
|
129
|
-
/**
|
|
94
|
+
/** The search mode indicating what type of search is being performed, or null for unstructured search */
|
|
130
95
|
mode?: SearchMode
|
|
131
96
|
/**
|
|
132
97
|
* The original search query string (always present, but may be empty string "").
|
|
133
|
-
*
|
|
98
|
+
* When mode='any' with empty string query, return any content you think the user would like
|
|
134
99
|
* (e.g., recently played, favorites, or smart shuffle).
|
|
135
100
|
*/
|
|
136
101
|
query: string
|
|
137
|
-
/** Genre
|
|
102
|
+
/** Genre name for genre-specific search */
|
|
138
103
|
genre?: string
|
|
139
|
-
/** Artist
|
|
104
|
+
/** Artist name for artist/album/song search */
|
|
140
105
|
artist?: string
|
|
141
|
-
/** Album
|
|
106
|
+
/** Album name for album-specific search */
|
|
142
107
|
album?: string
|
|
143
|
-
/**
|
|
108
|
+
/** Song title for song-specific search */
|
|
144
109
|
title?: string
|
|
145
|
-
/** Playlist name
|
|
110
|
+
/** Playlist name for playlist-specific search */
|
|
146
111
|
playlist?: string
|
|
147
|
-
/**
|
|
148
|
-
* Media-reference axis. `'my'` = resolve against the user's own collection
|
|
149
|
-
* ("play my favorites"); `'unknown'` = no reference (the default). Android
|
|
150
|
-
* always emits `'unknown'`.
|
|
151
|
-
*
|
|
152
|
-
* Resolve it however your collection lives: a `SearchSourceCallback` can read
|
|
153
|
-
* `params.reference` and return the matching tracks directly, or — when using
|
|
154
|
-
* an HTTP `TransformableRequestConfig` — branch in `transform` on
|
|
155
|
-
* `request.query.reference === 'my'` to rewrite the request toward a
|
|
156
|
-
* favorites endpoint (e.g. injecting locally-stored identifiers into the body).
|
|
157
|
-
*/
|
|
158
|
-
reference: MediaReference
|
|
159
112
|
}
|
|
160
113
|
|
|
161
114
|
export type SearchSourceCallback = (params: SearchParams) => Promise<Track[]>
|
|
162
|
-
// Sync and async transforms are SEPARATE fields (`transform` / `transformSync`),
|
|
163
|
-
// never a `T | Promise<T>` union. A union lowers to a Nitro `variant<Struct,
|
|
164
|
-
// Promise<Struct>>`, and an all-optional struct's `canConvert` also accepts a
|
|
165
|
-
// Promise — so the async case is silently misread as an empty config. Two
|
|
166
|
-
// single-typed fields keep both paths unambiguous, and the sync field allocates
|
|
167
|
-
// no Promise. When both are set they run as a pipeline: async first, then sync.
|
|
168
115
|
export type RequestConfigTransformer = (
|
|
169
116
|
request: RequestConfig,
|
|
170
117
|
routeParams?: Record<string, string>
|
|
171
118
|
) => Promise<RequestConfig>
|
|
172
|
-
export type RequestConfigTransformerSync = (
|
|
173
|
-
request: RequestConfig,
|
|
174
|
-
routeParams?: Record<string, string>
|
|
175
|
-
) => RequestConfig
|
|
176
119
|
|
|
177
120
|
export type HttpMethod =
|
|
178
121
|
| 'GET'
|
|
@@ -272,13 +215,9 @@ export interface MediaTransformParams {
|
|
|
272
215
|
* }
|
|
273
216
|
* ```
|
|
274
217
|
*/
|
|
275
|
-
// Split sync/async — see RequestConfigTransformer. Set `transform` and/or `transformSync`.
|
|
276
218
|
export type MediaRequestConfigTransformer = (
|
|
277
219
|
params: MediaTransformParams
|
|
278
220
|
) => Promise<RequestConfig>
|
|
279
|
-
export type MediaRequestConfigTransformerSync = (
|
|
280
|
-
params: MediaTransformParams
|
|
281
|
-
) => RequestConfig
|
|
282
221
|
|
|
283
222
|
/**
|
|
284
223
|
* Request configuration that supports async transformation.
|
|
@@ -288,11 +227,6 @@ export type MediaRequestConfigTransformerSync = (
|
|
|
288
227
|
* before the request is made. This is useful for adding dynamic headers,
|
|
289
228
|
* signing URLs, or other request-time modifications.
|
|
290
229
|
*
|
|
291
|
-
* Note: when a layer provides a transform, the layer's other static fields
|
|
292
|
-
* are NOT merged — the transform receives the merged config from the layers
|
|
293
|
-
* below it, and its return value replaces that config entirely. Spread the
|
|
294
|
-
* incoming request (`{ ...request, ... }`) to keep its fields.
|
|
295
|
-
*
|
|
296
230
|
* @example
|
|
297
231
|
* ```typescript
|
|
298
232
|
* const config: TransformableRequestConfig = {
|
|
@@ -308,46 +242,9 @@ export type MediaRequestConfigTransformerSync = (
|
|
|
308
242
|
* ```
|
|
309
243
|
*/
|
|
310
244
|
export interface TransformableRequestConfig extends RequestConfig {
|
|
311
|
-
/** Async per-request transform. When both are set, runs BEFORE `transformSync`. */
|
|
312
245
|
transform?: RequestConfigTransformer
|
|
313
|
-
/** Sync per-request transform (no Promise allocation). When both are set, runs AFTER `transform`. */
|
|
314
|
-
transformSync?: RequestConfigTransformerSync
|
|
315
246
|
}
|
|
316
247
|
|
|
317
|
-
/**
|
|
318
|
-
* Lazily builds the config for a `request` or `browse` layer. Reach for it when
|
|
319
|
-
* the config depends on a value that changes now and then — a base URL, a
|
|
320
|
-
* locale — but not on every request.
|
|
321
|
-
*
|
|
322
|
-
* How it differs from a `transform`: **a resolver runs once and its result is
|
|
323
|
-
* cached**, then reused for every browse/search/media/artwork request — whereas a
|
|
324
|
-
* `transform` runs on *every* request. The resolver re-runs only when you call
|
|
325
|
-
* `invalidateAllContent()`, so call that after (say) an environment or locale
|
|
326
|
-
* switch to pick up the new value.
|
|
327
|
-
*
|
|
328
|
-
* Return the config directly — no `async`/Promise needed in the common case — or
|
|
329
|
-
* a `Promise` when you must await (e.g. fetching a token). The cached config
|
|
330
|
-
* flows through the normal layering, so its `query` merges additively and its
|
|
331
|
-
* `baseUrl` overrides, exactly like a static config; it may also include a
|
|
332
|
-
* `transform` if you additionally need genuine per-request logic.
|
|
333
|
-
*
|
|
334
|
-
* @example
|
|
335
|
-
* ```typescript
|
|
336
|
-
* configureBrowser({
|
|
337
|
-
* // Read once and cached; re-read after the next invalidateAllContent().
|
|
338
|
-
* request: () => ({ baseUrl: currentBaseUrl() }),
|
|
339
|
-
* // Browse-only locale param, merged into every browse request's query.
|
|
340
|
-
* browse: () => ({ query: { hl: currentLocale() } }),
|
|
341
|
-
* })
|
|
342
|
-
*
|
|
343
|
-
* // Async resolver (e.g. awaiting a token) — still runs once, then cached:
|
|
344
|
-
* request: async () => ({ headers: { authorization: await freshToken() } })
|
|
345
|
-
* ```
|
|
346
|
-
*/
|
|
347
|
-
export type RequestConfigResolver = () =>
|
|
348
|
-
| TransformableRequestConfig
|
|
349
|
-
| Promise<TransformableRequestConfig>
|
|
350
|
-
|
|
351
248
|
/**
|
|
352
249
|
* Configuration for artwork image requests
|
|
353
250
|
*
|
|
@@ -475,13 +372,13 @@ export interface MediaRequestConfig extends TransformableRequestConfig {
|
|
|
475
372
|
*
|
|
476
373
|
* Called for each track to generate the final request configuration.
|
|
477
374
|
* Receives the full Track object, allowing URL generation based on
|
|
478
|
-
* track metadata (
|
|
375
|
+
* track metadata (artist, album, src, etc.).
|
|
479
376
|
*
|
|
480
377
|
* The returned config is merged with base configs, then passed to
|
|
481
378
|
* `transform` if provided.
|
|
482
379
|
*
|
|
483
380
|
* @param track - The track being requested
|
|
484
|
-
* @returns Request configuration for this specific track
|
|
381
|
+
* @returns Request configuration for this specific track
|
|
485
382
|
*
|
|
486
383
|
* @example
|
|
487
384
|
* ```typescript
|
|
@@ -491,10 +388,7 @@ export interface MediaRequestConfig extends TransformableRequestConfig {
|
|
|
491
388
|
* })
|
|
492
389
|
* ```
|
|
493
390
|
*/
|
|
494
|
-
/** Async per-track resolution. When both are set, runs (merged) BEFORE `resolveSync`. */
|
|
495
391
|
resolve?: (track: Track) => Promise<RequestConfig>
|
|
496
|
-
/** Sync per-track resolution (no Promise allocation). When both are set, runs (merged) AFTER `resolve`. */
|
|
497
|
-
resolveSync?: (track: Track) => RequestConfig
|
|
498
392
|
}
|
|
499
393
|
|
|
500
394
|
export interface ArtworkRequestConfig extends RequestConfig {
|
|
@@ -502,7 +396,7 @@ export interface ArtworkRequestConfig extends RequestConfig {
|
|
|
502
396
|
* Per-track request resolution callback.
|
|
503
397
|
*
|
|
504
398
|
* Called for each track to generate the request configuration based on
|
|
505
|
-
* track metadata (
|
|
399
|
+
* track metadata (artist, album, src, etc.).
|
|
506
400
|
*
|
|
507
401
|
* The returned config is merged with base configs, then passed to
|
|
508
402
|
* `transform` if provided.
|
|
@@ -520,10 +414,7 @@ export interface ArtworkRequestConfig extends RequestConfig {
|
|
|
520
414
|
* }
|
|
521
415
|
* ```
|
|
522
416
|
*/
|
|
523
|
-
/** Async per-track resolution. When both are set, runs (merged) BEFORE `resolveSync`. */
|
|
524
417
|
resolve?: (track: Track) => Promise<RequestConfig>
|
|
525
|
-
/** Sync per-track resolution (no Promise allocation). When both are set, runs (merged) AFTER `resolve`. */
|
|
526
|
-
resolveSync?: (track: Track) => RequestConfig
|
|
527
418
|
|
|
528
419
|
/**
|
|
529
420
|
* Final transformation callback for media/artwork requests.
|
|
@@ -554,10 +445,7 @@ export interface ArtworkRequestConfig extends RequestConfig {
|
|
|
554
445
|
* }
|
|
555
446
|
* ```
|
|
556
447
|
*/
|
|
557
|
-
/** Async final transform. When both are set, runs BEFORE `transformSync`. */
|
|
558
448
|
transform?: MediaRequestConfigTransformer
|
|
559
|
-
/** Sync final transform (no Promise allocation). When both are set, runs AFTER `transform`. */
|
|
560
|
-
transformSync?: MediaRequestConfigTransformerSync
|
|
561
449
|
|
|
562
450
|
/**
|
|
563
451
|
* Query parameter names for automatic context injection from CarPlay/Android Auto.
|
|
@@ -585,19 +473,6 @@ export interface ArtworkRequestConfig extends RequestConfig {
|
|
|
585
473
|
imageQueryParams?: ImageQueryParams
|
|
586
474
|
}
|
|
587
475
|
|
|
588
|
-
/**
|
|
589
|
-
* Source for a browse container's contents.
|
|
590
|
-
*
|
|
591
|
-
* **Response shape (HTTP / `TransformableRequestConfig`):** the endpoint must
|
|
592
|
-
* return a single **page object** — a {@link ResolvedTrack}
|
|
593
|
-
* (`{ title, url?, children: Track[] }`). The `children` array holds the rows
|
|
594
|
-
* shown for the container; each child is a playable leaf (`src`) or a navigable
|
|
595
|
-
* sub-container (`url`). A callback / static `ResolvedTrack` returns the same
|
|
596
|
-
* page object directly.
|
|
597
|
-
*
|
|
598
|
-
* {@link SearchSource} and {@link TabsSource} HTTP endpoints return this same
|
|
599
|
-
* page shape; only the meaning of `children` differs (results / tabs).
|
|
600
|
-
*/
|
|
601
476
|
export type BrowserSource =
|
|
602
477
|
| ResolvedTrack
|
|
603
478
|
| BrowserSourceCallback
|
|
@@ -628,15 +503,12 @@ export type RouteConfig = {
|
|
|
628
503
|
artwork?: ArtworkRequestConfig
|
|
629
504
|
}
|
|
630
505
|
|
|
631
|
-
export type TabsSourceCallback = () =>
|
|
506
|
+
export type TabsSourceCallback = () => Promise<Track[]>
|
|
632
507
|
/**
|
|
633
508
|
* Tab source configuration for navigation tabs.
|
|
634
509
|
*
|
|
635
|
-
* When using API configuration (TransformableRequestConfig), the request path
|
|
636
|
-
*
|
|
637
|
-
* `{ title?, children: Track[] }` whose `children` are the tabs — the same
|
|
638
|
-
* shape a browse endpoint returns. Callback/static sources provide `Track[]`
|
|
639
|
-
* directly.
|
|
510
|
+
* When using API configuration (TransformableRequestConfig), the request path defaults to '/'
|
|
511
|
+
* and should return an array of Track objects with urls representing the tabs.
|
|
640
512
|
*/
|
|
641
513
|
export type TabsSource =
|
|
642
514
|
| Track[]
|
|
@@ -646,103 +518,30 @@ export type TabsSource =
|
|
|
646
518
|
/**
|
|
647
519
|
* Search source configuration for handling search requests.
|
|
648
520
|
*
|
|
649
|
-
* **Response shape (HTTP / `TransformableRequestConfig`):** the endpoint must
|
|
650
|
-
* return a page object — `{ title?, children: Track[] }` — whose `children`
|
|
651
|
-
* are the result rows, the same shape a browse endpoint returns. (The web
|
|
652
|
-
* implementation additionally accepts a bare `Track[]` for back-compat;
|
|
653
|
-
* iOS/Android do not.) Callback sources return `Track[]` directly.
|
|
654
|
-
*
|
|
655
521
|
* @see BrowserConfiguration.search
|
|
656
522
|
*/
|
|
657
523
|
export type SearchSource = SearchSourceCallback | TransformableRequestConfig
|
|
658
524
|
|
|
659
|
-
/**
|
|
660
|
-
* How ids passed to `setFavorites` are matched against a
|
|
661
|
-
* track's `src` to hydrate its `favorited` flag.
|
|
662
|
-
*
|
|
663
|
-
* - `'exact'`: the id must equal `src`.
|
|
664
|
-
* - `'partial'`: the id matches if it appears as a complete path segment within
|
|
665
|
-
* `src` (delimited by `/`, `?`, `#`, or the string boundaries). Useful when
|
|
666
|
-
* favorites are stored as a stable identifier that is embedded in — but not
|
|
667
|
-
* equal to — the playable `src` URL.
|
|
668
|
-
*
|
|
669
|
-
* @example
|
|
670
|
-
* ```text
|
|
671
|
-
* setFavorites(['abc123']) + track.src = '/stream/jazz-fm/abc123'
|
|
672
|
-
*
|
|
673
|
-
* 'exact' 'abc123' === '/stream/jazz-fm/abc123' → not favorited
|
|
674
|
-
* 'partial' 'abc123' is the last segment of the src → favorited
|
|
675
|
-
*
|
|
676
|
-
* setFavorites(['https://cdn.example.com/jazz-fm/abc123.mp3'])
|
|
677
|
-
*
|
|
678
|
-
* 'exact' id === src → favorited
|
|
679
|
-
* 'partial' id is a full segment of src → favorited
|
|
680
|
-
* ```
|
|
681
|
-
*/
|
|
682
|
-
export type FavoritesMatchMode = 'exact' | 'partial'
|
|
683
|
-
|
|
684
|
-
/**
|
|
685
|
-
* Object form of the `favorite` capability — enables favoriting with an explicit
|
|
686
|
-
* {@link FavoritesMatchMode}. (A bare `true` is shorthand for `{ match: 'exact' }`.)
|
|
687
|
-
*/
|
|
688
|
-
export interface FavoriteConfig {
|
|
689
|
-
match: FavoritesMatchMode
|
|
690
|
-
}
|
|
691
|
-
|
|
692
525
|
export type BrowserConfiguration = {
|
|
693
526
|
/**
|
|
694
|
-
* Initial navigation path. Setting this triggers initial navigation to the
|
|
695
|
-
* specified path. When unset, the first tab's URL is used; when there are
|
|
696
|
-
* no tabs either, `/`.
|
|
527
|
+
* Initial navigation path. Setting this triggers initial navigation to the specified path.
|
|
697
528
|
*/
|
|
698
529
|
path?: string | undefined
|
|
699
530
|
|
|
700
531
|
// ─── Request Defaults (applied to all requests) ────────────────────────────
|
|
701
532
|
|
|
702
533
|
/**
|
|
703
|
-
* Shared request settings applied to
|
|
704
|
-
*
|
|
705
|
-
* route — so request → `<kind>` → route. Specific configs override these
|
|
706
|
-
* defaults.
|
|
707
|
-
*
|
|
708
|
-
* Either a static {@link TransformableRequestConfig} (its optional `transform`
|
|
709
|
-
* runs per request), or a {@link RequestConfigResolver} thunk resolved once per
|
|
710
|
-
* content generation and re-resolved on `invalidateAllContent()`. Reach for the
|
|
711
|
-
* resolver when a value changes rarely (a base URL, an auth host) so it is read
|
|
712
|
-
* once per generation and merged natively — rather than recomputed on every
|
|
713
|
-
* browse/search/media/artwork request via a `transform`.
|
|
534
|
+
* Shared request settings applied to all HTTP requests (browse, search, media, artwork).
|
|
535
|
+
* Specific configs override these defaults.
|
|
714
536
|
*/
|
|
715
|
-
request?: TransformableRequestConfig
|
|
537
|
+
request?: TransformableRequestConfig
|
|
716
538
|
|
|
717
|
-
// ───
|
|
539
|
+
// ─── Content Configuration ─────────────────────────────────────────────────
|
|
718
540
|
|
|
719
|
-
/**
|
|
720
|
-
|
|
721
|
-
* implicit default), layered between `request` and the matched route:
|
|
722
|
-
* `request` → `browse` → route. This is the browse-kind analogue of `media`
|
|
723
|
-
* and `artwork` — the place for browse-only concerns (e.g. a content-type
|
|
724
|
-
* marker query, or a locale param) that should not leak onto media/artwork.
|
|
725
|
-
*
|
|
726
|
-
* A browse path with no matching `routes` entry is fetched using
|
|
727
|
-
* `request` + `browse` applied to the path, so this also defines the default
|
|
728
|
-
* browse behaviour. Register a `routes['*']` entry only to override that
|
|
729
|
-
* default with a callback / static / bespoke config.
|
|
730
|
-
*
|
|
731
|
-
* Like `request`, this may be a static {@link TransformableRequestConfig} or a
|
|
732
|
-
* {@link RequestConfigResolver} thunk (resolved once per content generation) —
|
|
733
|
-
* e.g. a locale query param that only changes when `invalidateAllContent()` is
|
|
734
|
-
* called. A resolver's `query` is merged additively into each browse request's
|
|
735
|
-
* query, exactly as a static `query` would be.
|
|
736
|
-
*/
|
|
737
|
-
browse?: TransformableRequestConfig | RequestConfigResolver
|
|
541
|
+
/** Default browse source when no matching route is found. */
|
|
542
|
+
browse?: BrowserSource
|
|
738
543
|
|
|
739
|
-
/**
|
|
740
|
-
* Media/audio stream request configuration.
|
|
741
|
-
*
|
|
742
|
-
* Unlike `request`/`browse`, this does not accept a resolver thunk. For
|
|
743
|
-
* values that change at runtime, use the shared `request` resolver (it
|
|
744
|
-
* applies to media requests too), a per-track `resolve`, or a `transform`.
|
|
745
|
-
*/
|
|
544
|
+
/** Media/audio stream request configuration. */
|
|
746
545
|
media?: MediaRequestConfig
|
|
747
546
|
|
|
748
547
|
/**
|
|
@@ -753,9 +552,8 @@ export type BrowserConfiguration = {
|
|
|
753
552
|
* Artwork URLs are transformed when tracks are processed (before being passed to media controllers
|
|
754
553
|
* like Android Auto). This is different from media requests which are transformed at playback time.
|
|
755
554
|
*
|
|
756
|
-
*
|
|
757
|
-
*
|
|
758
|
-
* `artworkSource` (which carries the headers for React Native's `<Image>`).
|
|
555
|
+
* Note: Since media controllers load images directly from URLs, HTTP headers cannot be applied
|
|
556
|
+
* to artwork requests. Use query parameters for authentication tokens if your CDN supports it.
|
|
759
557
|
*
|
|
760
558
|
* @example
|
|
761
559
|
* ```typescript
|
|
@@ -777,82 +575,41 @@ export type BrowserConfiguration = {
|
|
|
777
575
|
*/
|
|
778
576
|
artwork?: ArtworkRequestConfig
|
|
779
577
|
|
|
780
|
-
/**
|
|
781
|
-
* Artwork configuration for the NOW-PLAYING surface only (lock screen / CarPlay /
|
|
782
|
-
* Android Auto now-playing) — distinct from `artwork`, which configures browse-list
|
|
783
|
-
* thumbnails. When set, the now-playing artwork is resolved from THIS config instead of
|
|
784
|
-
* `artwork`; browse lists never read it, so they're unaffected. When unset, now-playing
|
|
785
|
-
* falls back to `artwork` / the track's own `artwork`.
|
|
786
|
-
*
|
|
787
|
-
* Being a full `RequestConfig`, it supports `path`, `query`, and `headers`. The token
|
|
788
|
-
* `{id}` in any of those values is replaced with the track's `id` during resolution, and
|
|
789
|
-
* the result flows through the shared `request` layer (so a relative path gets `baseUrl`
|
|
790
|
-
* prepended). For logic that can't be expressed as a template, use `resolve(track)`.
|
|
791
|
-
*
|
|
792
|
-
* The `{id}` templating is specific to `nowPlayingArtwork` — static values
|
|
793
|
-
* in other configs are not templated. Not implemented by the web
|
|
794
|
-
* implementation.
|
|
795
|
-
*
|
|
796
|
-
* @example
|
|
797
|
-
* // 302-redirect endpoint keyed by the track id:
|
|
798
|
-
* nowPlayingArtwork: { path: '/artwork/{id}' }
|
|
799
|
-
*/
|
|
800
|
-
nowPlayingArtwork?: ArtworkRequestConfig
|
|
801
|
-
|
|
802
578
|
// ─── Navigation ────────────────────────────────────────────────────────────
|
|
803
579
|
|
|
804
580
|
/**
|
|
805
581
|
* Configuration for search functionality.
|
|
806
582
|
* Enables search capabilities in the media browser, typically accessed through voice commands or search UI.
|
|
807
583
|
*
|
|
808
|
-
* See the [Search guide](https://audiobrowser.dev/guide/search) for a walkthrough of
|
|
809
|
-
* modes, filters, the `reference` axis, and mixed audio/video.
|
|
810
|
-
*
|
|
811
584
|
* Optional - if not provided, search functionality will be disabled.
|
|
812
585
|
* Required for Android Auto/CarPlay voice search integration with support for structured voice commands.
|
|
813
586
|
*
|
|
814
587
|
* Search receives structured parameters from voice commands like:
|
|
815
|
-
* - "play
|
|
816
|
-
* - "play
|
|
817
|
-
* - "play
|
|
818
|
-
* - "play
|
|
819
|
-
* - "play
|
|
820
|
-
* - "play my favorites" → reference='my', query=""
|
|
588
|
+
* - "play music" → mode='any', query=""
|
|
589
|
+
* - "play jazz" → mode='genre', genre="jazz", query="jazz"
|
|
590
|
+
* - "play michael jackson" → mode='artist', artist="michael jackson", query="michael jackson"
|
|
591
|
+
* - "play thriller by michael jackson" → mode='album', album="thriller", artist="michael jackson"
|
|
592
|
+
* - "play billie jean" → mode='song', title="billie jean", query="billie jean"
|
|
821
593
|
*
|
|
822
594
|
* Can be either:
|
|
823
|
-
* - SearchSourceCallback: Receives SearchParams with query
|
|
824
|
-
*
|
|
825
|
-
* - TransformableRequestConfig: API endpoint where search parameters are automatically added to request.query:
|
|
595
|
+
* - SearchSourceCallback: Receives SearchParams with query, and optional mode/artist/album/genre/title/playlist fields
|
|
596
|
+
* - TransformableRequestConfig: API endpoint where all search parameters are automatically added to request.query:
|
|
826
597
|
* - q: search query string (always present)
|
|
827
|
-
* - mode:
|
|
828
|
-
*
|
|
829
|
-
* - reference: 'my' when the user asked for their own collection ("play my
|
|
830
|
-
* favorites"); omitted otherwise
|
|
831
|
-
* - artist, album, genre, title, playlist: filters, included when present
|
|
832
|
-
*
|
|
833
|
-
* These query-param keys are fixed (not configurable). If your endpoint
|
|
834
|
-
* expects different names, rename them in `transform` — it receives the params
|
|
835
|
-
* already on `request.query`, e.g. `query: { search: request.query?.q }`.
|
|
836
|
-
*
|
|
837
|
-
* Response shape: the endpoint must return a page object
|
|
838
|
-
* `{ children: Track[] }` — see {@link SearchSource}.
|
|
598
|
+
* - mode: search mode (any/genre/artist/album/song/playlist) - omitted for unstructured search
|
|
599
|
+
* - artist, album, genre, title, playlist: included when present
|
|
839
600
|
*
|
|
840
601
|
* @example
|
|
841
602
|
* ```typescript
|
|
842
603
|
* // Callback approach - direct access to structured parameters
|
|
843
604
|
* search: async (params) => {
|
|
844
|
-
* //
|
|
845
|
-
* if (params.
|
|
846
|
-
*
|
|
847
|
-
*
|
|
605
|
+
* // Use structured fields for precise searches
|
|
606
|
+
* if (params.mode === 'artist' && params.artist) {
|
|
607
|
+
* return await db.query('SELECT * FROM tracks WHERE artist = ?', [params.artist]);
|
|
608
|
+
* }
|
|
609
|
+
* if (params.mode === 'album' && params.album && params.artist) {
|
|
848
610
|
* return await db.query('SELECT * FROM tracks WHERE album = ? AND artist = ?',
|
|
849
611
|
* [params.album, params.artist]);
|
|
850
612
|
* }
|
|
851
|
-
* if (params.artist) {
|
|
852
|
-
* return await db.query('SELECT * FROM tracks WHERE artist = ?', [params.artist]);
|
|
853
|
-
* }
|
|
854
|
-
* // `mode` is the container vertical — narrow by it when present
|
|
855
|
-
* if (params.mode === 'podcast') return await searchPodcasts(params.query);
|
|
856
613
|
* // Fall back to full-text search
|
|
857
614
|
* return await searchByQuery(params.query);
|
|
858
615
|
* }
|
|
@@ -860,11 +617,11 @@ export type BrowserConfiguration = {
|
|
|
860
617
|
* // API configuration - parameters automatically added to query string
|
|
861
618
|
* search: {
|
|
862
619
|
* baseUrl: 'https://api.example.com/search',
|
|
863
|
-
* // GET /search?q=
|
|
620
|
+
* // GET /search?q=thriller&mode=album&album=thriller&artist=michael+jackson&limit=20
|
|
864
621
|
* transform(request) {
|
|
865
622
|
* return {
|
|
866
623
|
* ...request,
|
|
867
|
-
* query: { ...request.query, limit:
|
|
624
|
+
* query: { ...request.query, limit: 20 }
|
|
868
625
|
* };
|
|
869
626
|
* }
|
|
870
627
|
* }
|
|
@@ -884,47 +641,20 @@ export type BrowserConfiguration = {
|
|
|
884
641
|
tabs?: TabsSource
|
|
885
642
|
|
|
886
643
|
/**
|
|
887
|
-
* Route-specific configurations. Maps URL
|
|
888
|
-
*
|
|
889
|
-
* ## Matching
|
|
890
|
-
*
|
|
891
|
-
* Patterns match on **exact segment count** — `/artists` does NOT match
|
|
892
|
-
* `/artists/123`. Segments may be:
|
|
893
|
-
* - a constant: `/favorites`
|
|
894
|
-
* - a parameter: `/albums/{id}` — captured into `routeParams.id` and passed
|
|
895
|
-
* to callbacks and transforms
|
|
896
|
-
* - a single-segment wildcard: `*`
|
|
897
|
-
* - a tail wildcard: `/files/**` — matches any depth; the remainder is
|
|
898
|
-
* captured into `routeParams.tail`
|
|
899
|
-
*
|
|
900
|
-
* When several patterns match, the most specific wins
|
|
901
|
-
* (constants > parameters > wildcards > tail wildcard).
|
|
902
|
-
*
|
|
903
|
-
* ## Defaults and reserved keys
|
|
904
|
-
*
|
|
905
|
-
* A path matching no route is fetched over HTTP via the `request` →
|
|
906
|
-
* `browse` layers with the path applied — most APIs only need explicit
|
|
907
|
-
* routes for exceptions. The special key `'*'` overrides that default with
|
|
908
|
-
* its own source. Keys starting with `__` are reserved for internal use.
|
|
644
|
+
* Route-specific configurations. Maps URL paths to browse sources.
|
|
645
|
+
* Routes match by prefix, most specific (most slashes) wins.
|
|
909
646
|
*
|
|
910
|
-
*
|
|
911
|
-
* request path (the navigated path is used); remap paths in a `transform`,
|
|
912
|
-
* which receives `routeParams` as its second argument.
|
|
913
|
-
*
|
|
914
|
-
* Values can be a `BrowserSource` (callback, request config, or static page
|
|
915
|
-
* object) or a `RouteConfig` with per-route `media`/`artwork` overrides.
|
|
647
|
+
* Can be a simple `BrowserSource` or extended `RouteConfig` with media/artwork overrides.
|
|
916
648
|
*
|
|
917
649
|
* @example
|
|
918
650
|
* ```typescript
|
|
919
651
|
* routes: {
|
|
920
|
-
* '/favorites': async () =>
|
|
921
|
-
* '/
|
|
652
|
+
* '/favorites': async () => getFavorites(),
|
|
653
|
+
* '/artists': { baseUrl: 'https://music-api.com' },
|
|
922
654
|
* '/premium': {
|
|
923
|
-
* browse: { baseUrl: 'https://premium-api.
|
|
924
|
-
* artwork: { baseUrl: 'https://premium-images.
|
|
925
|
-
* }
|
|
926
|
-
* // Custom default for anything no other route matches:
|
|
927
|
-
* '*': { baseUrl: 'https://api.example.com' }
|
|
655
|
+
* browse: { baseUrl: 'https://premium-api.com' },
|
|
656
|
+
* artwork: { baseUrl: 'https://premium-images.cdn.com' }
|
|
657
|
+
* }
|
|
928
658
|
* }
|
|
929
659
|
* ```
|
|
930
660
|
*/
|
|
@@ -963,42 +693,34 @@ export type BrowserConfiguration = {
|
|
|
963
693
|
*/
|
|
964
694
|
androidControllerOfflineError?: boolean
|
|
965
695
|
|
|
696
|
+
// ─── CarPlay Options ──────────────────────────────────────────────────────────
|
|
697
|
+
|
|
966
698
|
/**
|
|
967
|
-
*
|
|
968
|
-
* content is still loading — browse destinations while they resolve, and the
|
|
969
|
-
* startup screen while tabs load. Supply your app's localized "Loading…"
|
|
970
|
-
* string. On iOS 18.4+ the system loading spinner is shown instead.
|
|
699
|
+
* Enable the "Up Next" button on the CarPlay Now Playing screen.
|
|
971
700
|
*
|
|
972
|
-
* When
|
|
973
|
-
*
|
|
701
|
+
* When enabled, tapping "Up Next" shows the current playback queue,
|
|
702
|
+
* allowing users to see upcoming tracks and jump to a specific position.
|
|
974
703
|
*
|
|
975
|
-
*
|
|
976
|
-
* ```typescript
|
|
977
|
-
* carPlayLoadingTitle: t('loading')
|
|
978
|
-
* ```
|
|
704
|
+
* The button is automatically hidden when the queue has only one track.
|
|
979
705
|
*
|
|
706
|
+
* @default true
|
|
980
707
|
* @platform ios
|
|
981
708
|
*/
|
|
982
|
-
|
|
709
|
+
carPlayUpNextButton?: boolean
|
|
983
710
|
|
|
984
711
|
/**
|
|
985
|
-
*
|
|
986
|
-
*
|
|
987
|
-
* to navigate the CarPlay browse stack there, or `undefined` if the tap was
|
|
988
|
-
* handled (or should do nothing).
|
|
989
|
-
*
|
|
990
|
-
* The album line is tappable whenever the active track has an `albumUrl`
|
|
991
|
-
* or this callback is configured.
|
|
712
|
+
* Configure up to 5 buttons on the CarPlay Now Playing screen. These buttons
|
|
713
|
+
* are arranged using the array order from left to right.
|
|
992
714
|
*
|
|
993
715
|
* @example
|
|
994
716
|
* ```typescript
|
|
995
|
-
*
|
|
996
|
-
* track.album ? `/album/${slugify(track.album)}` : undefined
|
|
717
|
+
* carPlayNowPlayingButtons: ['repeat']
|
|
997
718
|
* ```
|
|
998
719
|
*
|
|
720
|
+
* @default []
|
|
999
721
|
* @platform ios
|
|
1000
722
|
*/
|
|
1001
|
-
|
|
723
|
+
carPlayNowPlayingButtons?: CarPlayNowPlayingButton[]
|
|
1002
724
|
|
|
1003
725
|
/**
|
|
1004
726
|
* Callback to customize error messages for navigation errors.
|
|
@@ -1008,15 +730,12 @@ export type BrowserConfiguration = {
|
|
|
1008
730
|
*
|
|
1009
731
|
* @example
|
|
1010
732
|
* ```typescript
|
|
1011
|
-
* formatNavigationError: (
|
|
1012
|
-
*
|
|
1013
|
-
*
|
|
1014
|
-
*
|
|
1015
|
-
*
|
|
1016
|
-
*
|
|
1017
|
-
* }
|
|
1018
|
-
* return defaultFormatted
|
|
1019
|
-
* }
|
|
733
|
+
* formatNavigationError: (error) => ({
|
|
734
|
+
* title: t(`error.${error.code}`),
|
|
735
|
+
* message: error.code === 'http-error'
|
|
736
|
+
* ? t('error.httpMessage', { status: error.statusCode })
|
|
737
|
+
* : error.message
|
|
738
|
+
* })
|
|
1020
739
|
* ```
|
|
1021
740
|
*/
|
|
1022
741
|
formatNavigationError?: FormatNavigationErrorCallback
|
|
@@ -1062,12 +781,11 @@ export type FormattedNavigationError = {
|
|
|
1062
781
|
*/
|
|
1063
782
|
title: string
|
|
1064
783
|
/**
|
|
1065
|
-
*
|
|
1066
|
-
* the browse error/empty view. Omit it to show a title only.
|
|
784
|
+
* Message body shown below the title in the error action sheet.
|
|
1067
785
|
*
|
|
1068
|
-
* Default value: `error.message`
|
|
786
|
+
* Default value: `error.message`
|
|
1069
787
|
*/
|
|
1070
|
-
message
|
|
788
|
+
message: string
|
|
1071
789
|
}
|
|
1072
790
|
|
|
1073
791
|
/**
|
|
@@ -1108,9 +826,3 @@ export type FormatNavigationErrorParams = {
|
|
|
1108
826
|
export type FormatNavigationErrorCallback = (
|
|
1109
827
|
params: FormatNavigationErrorParams
|
|
1110
828
|
) => FormattedNavigationError | undefined
|
|
1111
|
-
|
|
1112
|
-
/**
|
|
1113
|
-
* Maps the tapped active track to a browse path for the CarPlay album line,
|
|
1114
|
-
* or `undefined` to do nothing. See `resolveAlbumUrl`.
|
|
1115
|
-
*/
|
|
1116
|
-
export type ResolveAlbumUrlCallback = (track: Track) => string | undefined
|