@5stones/react-native-audio-browser 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/android/src/main/java/com/audiobrowser/player/MediaFactory.kt +11 -71
  2. package/android/src/main/java/com/audiobrowser/player/TransformingDataSource.kt +125 -0
  3. package/ios/Browser/BrowserManager.swift +17 -2
  4. package/ios/TrackPlayer.swift +145 -31
  5. package/lib/commonjs/features/browser.js.map +1 -1
  6. package/lib/commonjs/features/equalizer.js.map +1 -1
  7. package/lib/commonjs/features/errors.js.map +1 -1
  8. package/lib/commonjs/features/favorites.js.map +1 -1
  9. package/lib/commonjs/features/metadata.js.map +1 -1
  10. package/lib/commonjs/features/nowPlaying.js.map +1 -1
  11. package/lib/commonjs/features/output.js.map +1 -1
  12. package/lib/commonjs/features/playback/state.js.map +1 -1
  13. package/lib/commonjs/features/player/options.js.map +1 -1
  14. package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
  15. package/lib/commonjs/features/queue/queue.js +1 -1
  16. package/lib/commonjs/features/queue/queue.js.map +1 -1
  17. package/lib/commonjs/features/remoteControls.js.map +1 -1
  18. package/lib/commonjs/utils/useDebug.js.map +1 -1
  19. package/lib/commonjs/utils/validation.js +23 -0
  20. package/lib/commonjs/utils/validation.js.map +1 -0
  21. package/lib/commonjs/web/NativeAudioBrowser.js +53 -15
  22. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
  23. package/lib/commonjs/web/SimpleRouter.js +5 -4
  24. package/lib/commonjs/web/SimpleRouter.js.map +1 -1
  25. package/lib/commonjs/web/TrackPlayer/Player.js +49 -24
  26. package/lib/commonjs/web/TrackPlayer/Player.js.map +1 -1
  27. package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js +54 -45
  28. package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js.map +1 -1
  29. package/lib/commonjs/web/TrackPlayer/State.js.map +1 -1
  30. package/lib/commonjs/web/browser/BrowserManager.js +10 -17
  31. package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
  32. package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
  33. package/lib/commonjs/web/browser/NavigationErrorManager.js.map +1 -1
  34. package/lib/commonjs/web/browser/SearchManager.js.map +1 -1
  35. package/lib/commonjs/web/http/HttpClient.js +15 -2
  36. package/lib/commonjs/web/http/HttpClient.js.map +1 -1
  37. package/lib/commonjs/web/http/RequestConfigBuilder.js.map +1 -1
  38. package/lib/commonjs/web/player/NowPlayingManager.js +9 -0
  39. package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
  40. package/lib/commonjs/web/player/OptionsManager.js +1 -1
  41. package/lib/commonjs/web/player/OptionsManager.js.map +1 -1
  42. package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
  43. package/lib/module/features/browser.js.map +1 -1
  44. package/lib/module/features/equalizer.js.map +1 -1
  45. package/lib/module/features/errors.js.map +1 -1
  46. package/lib/module/features/favorites.js.map +1 -1
  47. package/lib/module/features/metadata.js.map +1 -1
  48. package/lib/module/features/nowPlaying.js +1 -0
  49. package/lib/module/features/nowPlaying.js.map +1 -1
  50. package/lib/module/features/output.js.map +1 -1
  51. package/lib/module/features/playback/state.js.map +1 -1
  52. package/lib/module/features/player/options.js.map +1 -1
  53. package/lib/module/features/queue/activeTrack.js.map +1 -1
  54. package/lib/module/features/queue/queue.js +1 -1
  55. package/lib/module/features/queue/queue.js.map +1 -1
  56. package/lib/module/features/remoteControls.js.map +1 -1
  57. package/lib/module/utils/useDebug.js.map +1 -1
  58. package/lib/module/utils/validation.js +18 -0
  59. package/lib/module/utils/validation.js.map +1 -0
  60. package/lib/module/web/NativeAudioBrowser.js +53 -15
  61. package/lib/module/web/NativeAudioBrowser.js.map +1 -1
  62. package/lib/module/web/SimpleRouter.js +5 -4
  63. package/lib/module/web/SimpleRouter.js.map +1 -1
  64. package/lib/module/web/TrackPlayer/Player.js +49 -24
  65. package/lib/module/web/TrackPlayer/Player.js.map +1 -1
  66. package/lib/module/web/TrackPlayer/PlaylistPlayer.js +54 -45
  67. package/lib/module/web/TrackPlayer/PlaylistPlayer.js.map +1 -1
  68. package/lib/module/web/TrackPlayer/State.js.map +1 -1
  69. package/lib/module/web/browser/BrowserManager.js +10 -17
  70. package/lib/module/web/browser/BrowserManager.js.map +1 -1
  71. package/lib/module/web/browser/FavoriteManager.js.map +1 -1
  72. package/lib/module/web/browser/NavigationErrorManager.js.map +1 -1
  73. package/lib/module/web/browser/SearchManager.js.map +1 -1
  74. package/lib/module/web/http/HttpClient.js +15 -2
  75. package/lib/module/web/http/HttpClient.js.map +1 -1
  76. package/lib/module/web/http/RequestConfigBuilder.js.map +1 -1
  77. package/lib/module/web/player/NowPlayingManager.js +9 -0
  78. package/lib/module/web/player/NowPlayingManager.js.map +1 -1
  79. package/lib/module/web/player/OptionsManager.js +1 -1
  80. package/lib/module/web/player/OptionsManager.js.map +1 -1
  81. package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
  82. package/lib/typescript/src/features/browser.d.ts.map +1 -1
  83. package/lib/typescript/src/features/equalizer.d.ts.map +1 -1
  84. package/lib/typescript/src/features/errors.d.ts.map +1 -1
  85. package/lib/typescript/src/features/favorites.d.ts.map +1 -1
  86. package/lib/typescript/src/features/metadata.d.ts +1 -1
  87. package/lib/typescript/src/features/metadata.d.ts.map +1 -1
  88. package/lib/typescript/src/features/nowPlaying.d.ts +1 -1
  89. package/lib/typescript/src/features/nowPlaying.d.ts.map +1 -1
  90. package/lib/typescript/src/features/output.d.ts.map +1 -1
  91. package/lib/typescript/src/features/playback/state.d.ts +1 -1
  92. package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
  93. package/lib/typescript/src/features/player/options.d.ts +1 -1
  94. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  95. package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
  96. package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
  97. package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
  98. package/lib/typescript/src/specs/audio-browser.nitro.d.ts.map +1 -1
  99. package/lib/typescript/src/utils/useDebug.d.ts +1 -1
  100. package/lib/typescript/src/utils/useDebug.d.ts.map +1 -1
  101. package/lib/typescript/src/utils/validation.d.ts +3 -0
  102. package/lib/typescript/src/utils/validation.d.ts.map +1 -0
  103. package/lib/typescript/src/web/NativeAudioBrowser.d.ts +6 -1
  104. package/lib/typescript/src/web/NativeAudioBrowser.d.ts.map +1 -1
  105. package/lib/typescript/src/web/SimpleRouter.d.ts.map +1 -1
  106. package/lib/typescript/src/web/TrackPlayer/Player.d.ts +7 -19
  107. package/lib/typescript/src/web/TrackPlayer/Player.d.ts.map +1 -1
  108. package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts +3 -3
  109. package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts.map +1 -1
  110. package/lib/typescript/src/web/browser/BrowserManager.d.ts.map +1 -1
  111. package/lib/typescript/src/web/browser/FavoriteManager.d.ts.map +1 -1
  112. package/lib/typescript/src/web/browser/NavigationErrorManager.d.ts.map +1 -1
  113. package/lib/typescript/src/web/browser/SearchManager.d.ts +1 -1
  114. package/lib/typescript/src/web/browser/SearchManager.d.ts.map +1 -1
  115. package/lib/typescript/src/web/http/HttpClient.d.ts.map +1 -1
  116. package/lib/typescript/src/web/http/RequestConfigBuilder.d.ts.map +1 -1
  117. package/lib/typescript/src/web/player/NowPlayingManager.d.ts.map +1 -1
  118. package/lib/typescript/src/web/player/OptionsManager.d.ts.map +1 -1
  119. package/lib/typescript/src/web/util/BrowserPathHelper.d.ts.map +1 -1
  120. package/package.json +1 -1
  121. package/src/features/browser.ts +1 -1
  122. package/src/features/equalizer.ts +1 -1
  123. package/src/features/errors.ts +1 -1
  124. package/src/features/favorites.ts +1 -1
  125. package/src/features/metadata.ts +1 -1
  126. package/src/features/nowPlaying.ts +1 -1
  127. package/src/features/output.ts +1 -1
  128. package/src/features/playback/state.ts +1 -1
  129. package/src/features/player/options.ts +2 -2
  130. package/src/features/queue/activeTrack.ts +1 -1
  131. package/src/features/queue/queue.ts +2 -2
  132. package/src/features/remoteControls.ts +2 -2
  133. package/src/specs/audio-browser.nitro.ts +0 -1
  134. package/src/utils/useDebug.ts +6 -6
  135. package/src/utils/validation.ts +27 -0
  136. package/src/web/NativeAudioBrowser.ts +137 -58
  137. package/src/web/SimpleRouter.ts +24 -9
  138. package/src/web/TrackPlayer/Player.ts +58 -30
  139. package/src/web/TrackPlayer/PlaylistPlayer.ts +72 -63
  140. package/src/web/TrackPlayer/RepeatMode.ts +1 -1
  141. package/src/web/TrackPlayer/State.ts +9 -9
  142. package/src/web/browser/BrowserManager.ts +124 -67
  143. package/src/web/browser/FavoriteManager.ts +5 -3
  144. package/src/web/browser/NavigationErrorManager.ts +15 -8
  145. package/src/web/browser/SearchManager.ts +17 -11
  146. package/src/web/http/HttpClient.ts +25 -7
  147. package/src/web/http/RequestConfigBuilder.ts +29 -13
  148. package/src/web/player/NowPlayingManager.ts +13 -7
  149. package/src/web/player/OptionsManager.ts +7 -6
  150. package/src/web/util/BrowserPathHelper.ts +3 -2
@@ -16,6 +16,7 @@
16
16
  * - Most specific route wins
17
17
  */
18
18
 
19
+ import { assertedNotNullish } from '../utils/validation';
19
20
  export class SimpleRouter {
20
21
  /**
21
22
  * Finds the best matching route for the given path.
@@ -67,12 +68,12 @@ export class SimpleRouter {
67
68
 
68
69
  // Match all segments except the tail wildcard
69
70
  for (let i = 0; i < patternSegments.length - 1; i++) {
70
- if (!this.matchSingleSegment(patternSegments[i], pathSegments[i], params)) {
71
+ if (!this.matchSingleSegment(assertedNotNullish(patternSegments[i]), assertedNotNullish(pathSegments[i]), params)) {
71
72
  return null;
72
73
  }
73
74
  // Note: The Kotlin implementation doesn't update counts here (appears to be a bug)
74
75
  // but we'll match it exactly for consistency
75
- this.updateSegmentCounts(patternSegments[i], constantSegments, parameterSegments, wildcardSegments);
76
+ this.updateSegmentCounts(assertedNotNullish(patternSegments[i]), constantSegments, parameterSegments, wildcardSegments);
76
77
  }
77
78
 
78
79
  // Capture remaining path segments as "tail" parameter
@@ -86,10 +87,10 @@ export class SimpleRouter {
86
87
  return null;
87
88
  }
88
89
  for (let i = 0; i < patternSegments.length; i++) {
89
- if (!this.matchSingleSegment(patternSegments[i], pathSegments[i], params)) {
90
+ if (!this.matchSingleSegment(assertedNotNullish(patternSegments[i]), assertedNotNullish(pathSegments[i]), params)) {
90
91
  return null;
91
92
  }
92
- const [constCount, paramCount, wildcardCount] = this.updateSegmentCounts(patternSegments[i], constantSegments, parameterSegments, wildcardSegments);
93
+ const [constCount, paramCount, wildcardCount] = this.updateSegmentCounts(assertedNotNullish(patternSegments[i]), constantSegments, parameterSegments, wildcardSegments);
93
94
  constantSegments = constCount;
94
95
  parameterSegments = paramCount;
95
96
  wildcardSegments = wildcardCount;
@@ -1 +1 @@
1
- {"version":3,"names":["SimpleRouter","findBestMatch","path","routes","matches","pattern","Object","keys","match","matchPattern","push","length","reduce","best","current","specificity","patternSegments","split","filter","s","pathSegments","params","constantSegments","parameterSegments","wildcardSegments","hasTailWildcard","i","matchSingleSegment","updateSegmentCounts","remainingSegments","slice","join","constCount","paramCount","wildcardCount","patternSegment","pathSegment","startsWith","endsWith","paramName","substring"],"sourceRoot":"../../../src","sources":["web/SimpleRouter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["assertedNotNullish","SimpleRouter","findBestMatch","path","routes","matches","pattern","Object","keys","match","matchPattern","push","length","reduce","best","current","specificity","patternSegments","split","filter","s","pathSegments","params","constantSegments","parameterSegments","wildcardSegments","hasTailWildcard","i","matchSingleSegment","updateSegmentCounts","remainingSegments","slice","join","constCount","paramCount","wildcardCount","patternSegment","pathSegment","startsWith","endsWith","paramName","substring"],"sourceRoot":"../../../src","sources":["web/SimpleRouter.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { State } from './State';
4
3
  import { SetupNotCalledError } from './SetupNotCalledError';
4
+ import { State } from './State';
5
5
 
6
6
  // Extend Window interface for debug purposes
7
7
 
@@ -14,7 +14,8 @@ export class Player {
14
14
  _state = {
15
15
  state: State.None
16
16
  };
17
-
17
+ _isStopped = false;
18
+ _loadInProgress = false;
18
19
  // current getter/setter
19
20
  get current() {
20
21
  return this._current;
@@ -122,6 +123,8 @@ export class Player {
122
123
  * event handlers
123
124
  */
124
125
  onStateUpdate(state) {
126
+ // Ignore Shaka/element events while stopped (e.g., from unload)
127
+ if (this._isStopped) return;
125
128
  this.state = {
126
129
  state
127
130
  };
@@ -157,15 +160,13 @@ export class Player {
157
160
  // Log the error.
158
161
  console.debug('Error code', shakaError.code, 'object', shakaError);
159
162
  }
160
-
161
- /**
162
- * NOTE: this method is sync despite the actual load being async. This
163
- * behavior is intentional as it mirrors what happens in Android. State
164
- * changes should be captured by event listeners.
165
- */
166
- load(track, onComplete) {
163
+ load(track, onLoaded) {
167
164
  const player = this.requirePlayer();
165
+ this._isStopped = false;
166
+ this._loadInProgress = true;
168
167
  if (!track.src) {
168
+ this._loadInProgress = false;
169
+ this._pendingSeek = undefined;
169
170
  const error = {
170
171
  code: 'invalid_track',
171
172
  message: 'Track does not have a valid src URL'
@@ -177,37 +178,43 @@ export class Player {
177
178
  return;
178
179
  }
179
180
  player.load(track.src).then(() => {
181
+ this._loadInProgress = false;
180
182
  this.current = track;
181
- onComplete?.(track);
183
+ onLoaded?.(track);
184
+
185
+ // Execute any pending seek that arrived during loading
186
+ if (this._pendingSeek !== undefined) {
187
+ this.requireElement().currentTime = this._pendingSeek;
188
+ this._pendingSeek = undefined;
189
+ }
182
190
 
183
191
  // Auto-play if playWhenReady is true
184
192
  if (this.playWhenReady) {
185
193
  this.play();
186
194
  }
187
195
  }).catch(err => {
196
+ this._loadInProgress = false;
197
+ this._pendingSeek = undefined;
188
198
  this.onError(this.toNormalizedError(err));
189
199
  });
190
200
  }
191
-
192
- /**
193
- * NOTE: this method is sync despite the actual load being async. This
194
- * behavior is intentional as it mirrors what happens in Android. State
195
- * changes should be captured by event listeners.
196
- */
197
201
  stop(onComplete) {
198
202
  const player = this.requirePlayer();
199
- this.current = undefined;
203
+
204
+ // Match Android: stop sets playWhenReady=false and state=stopped,
205
+ // but keeps the current track so play() can resume.
206
+ this._isStopped = true;
207
+ this._loadInProgress = false;
208
+ this._pendingSeek = undefined;
209
+ this.playWhenReady = false;
210
+ this.state = {
211
+ state: State.Stopped
212
+ };
200
213
  player.unload().then(() => onComplete?.()).catch(err => {
201
214
  console.error('Error unloading player:', err);
202
215
  onComplete?.(); // Still call onComplete so callers aren't left hanging
203
216
  });
204
217
  }
205
-
206
- /**
207
- * NOTE: this method is sync despite the actual load being async. This
208
- * behavior is intentional as it mirrors what happens in Android. State
209
- * changes should be captured by event listeners.
210
- */
211
218
  play() {
212
219
  const element = this.requireElement();
213
220
  this.playWhenReady = true;
@@ -215,6 +222,12 @@ export class Player {
215
222
  this.load(this.current);
216
223
  return;
217
224
  }
225
+
226
+ // Match Android: play() after stop() re-prepares the current track
227
+ if (this._isStopped && this.current) {
228
+ this.load(this.current);
229
+ return;
230
+ }
218
231
  element.play().catch(err => console.error(err));
219
232
  }
220
233
  retry() {
@@ -244,10 +257,18 @@ export class Player {
244
257
  return element.playbackRate;
245
258
  }
246
259
  seekBy(offset) {
260
+ if (this._loadInProgress) {
261
+ this._pendingSeek = (this._pendingSeek ?? 0) + offset;
262
+ return;
263
+ }
247
264
  const element = this.requireElement();
248
265
  element.currentTime += offset;
249
266
  }
250
267
  seekTo(seconds) {
268
+ if (this._loadInProgress) {
269
+ this._pendingSeek = seconds;
270
+ return;
271
+ }
251
272
  const element = this.requireElement();
252
273
  element.currentTime = seconds;
253
274
  }
@@ -261,10 +282,14 @@ export class Player {
261
282
  }
262
283
  getProgress() {
263
284
  const element = this.requireElement();
285
+ let buffered = 0;
286
+ if (element.buffered.length > 0) {
287
+ buffered = element.buffered.end(element.buffered.length - 1);
288
+ }
264
289
  return {
265
290
  position: element.currentTime,
266
291
  duration: element.duration || 0,
267
- buffered: 0 // TODO: element.buffered.end,
292
+ buffered
268
293
  };
269
294
  }
270
295
  }
@@ -1 +1 @@
1
- {"version":3,"names":["State","SetupNotCalledError","Player","hasInitialized","_current","undefined","_playWhenReady","_state","state","None","current","cur","newState","playWhenReady","pwr","requireElement","element","requirePlayer","player","setupPlayer","_options","window","error","code","message","shaka","default","polyfill","installAll","isBrowserSupported","Error","document","createElement","setAttribute","body","appendChild","attach","addEventListener","event","errorEvent","onError","detail","onStateUpdate","Ended","Playing","Paused","Loading","Ready","bufferingEvent","buffering","Buffering","__DEV__","rnab","toNormalizedError","err","e","String","shakaError","unload","catch","console","toString","debug","load","track","onComplete","src","then","play","stop","retry","retryStreaming","pause","togglePlayback","setRate","rate","defaultPlaybackRate","playbackRate","getRate","seekBy","offset","currentTime","seekTo","seconds","setVolume","volume","getVolume","getProgress","position","duration","buffered"],"sourceRoot":"../../../../src","sources":["web/TrackPlayer/Player.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SetupNotCalledError","State","Player","hasInitialized","_current","undefined","_playWhenReady","_state","state","None","_isStopped","_loadInProgress","current","cur","newState","playWhenReady","pwr","requireElement","element","requirePlayer","player","setupPlayer","_options","window","error","code","message","shaka","default","polyfill","installAll","isBrowserSupported","Error","document","createElement","setAttribute","body","appendChild","attach","addEventListener","event","errorEvent","onError","detail","onStateUpdate","Ended","Playing","Paused","Loading","Ready","bufferingEvent","buffering","Buffering","__DEV__","rnab","toNormalizedError","err","e","String","shakaError","unload","catch","console","toString","debug","load","track","onLoaded","src","_pendingSeek","then","currentTime","play","stop","onComplete","Stopped","retry","retryStreaming","pause","togglePlayback","setRate","rate","defaultPlaybackRate","playbackRate","getRate","seekBy","offset","seekTo","seconds","setVolume","volume","getVolume","getProgress","buffered","length","end","position","duration"],"sourceRoot":"../../../../src","sources":["web/TrackPlayer/Player.ts"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ import { assertedNotNullish } from '../../utils/validation';
4
+ import { fisherYatesShuffle } from '../util/shuffle';
3
5
  import { Player } from './Player';
4
- import { State } from './State';
5
6
  import { RepeatMode } from './RepeatMode';
6
- import { fisherYatesShuffle } from '../util/shuffle';
7
+ import { State } from './State';
7
8
  export class PlaylistPlayer extends Player {
8
9
  // TODO: use immer to make the `playlist` immutable
9
10
  playlist = [];
@@ -12,6 +13,7 @@ export class PlaylistPlayer extends Player {
12
13
  shuffleOrder = [];
13
14
  onStateUpdate(state) {
14
15
  super.onStateUpdate(state);
16
+ if (this._isStopped) return;
15
17
  if (state === State.Ended) {
16
18
  this.onTrackEnded();
17
19
  }
@@ -50,17 +52,14 @@ export class PlaylistPlayer extends Player {
50
52
  if (!track) return;
51
53
 
52
54
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
53
- const onCompletedLoading = _track => {
55
+ const onLoaded = _track => {
54
56
  if (initialPosition !== undefined) {
55
57
  this.seekTo(initialPosition);
56
58
  }
57
- if (this.playWhenReady) {
58
- this.play();
59
- }
60
59
  };
61
60
  if (this.currentIndex !== index) {
62
61
  this.currentIndex = index;
63
- this.load(track, onCompletedLoading);
62
+ this.load(track, onLoaded);
64
63
  } else {
65
64
  // Replay the same track - seek to start (or initialPosition if specified)
66
65
  this.seekTo(initialPosition ?? 0);
@@ -170,8 +169,8 @@ export class PlaylistPlayer extends Player {
170
169
  // If there is a current track, move it to the beginning of the shuffle order
171
170
  const currentPos = this.shuffleOrder.indexOf(this.currentIndex);
172
171
  if (currentPos > 0) {
173
- const temp = this.shuffleOrder[0];
174
- this.shuffleOrder[0] = this.shuffleOrder[currentPos];
172
+ const temp = assertedNotNullish(this.shuffleOrder[0]);
173
+ this.shuffleOrder[0] = assertedNotNullish(this.shuffleOrder[currentPos]);
175
174
  this.shuffleOrder[currentPos] = temp;
176
175
  }
177
176
  }
@@ -196,26 +195,39 @@ export class PlaylistPlayer extends Player {
196
195
  return this.repeatMode;
197
196
  }
198
197
  remove(indexes) {
199
- const idxMap = indexes.reduce((acc, elem) => {
200
- acc[elem] = true;
201
- return acc;
202
- }, {});
198
+ const idxSet = new Set(indexes);
203
199
  let isCurrentRemoved = false;
200
+ let removedBeforeCurrent = 0;
204
201
  this.playlist = this.playlist.filter((_track, idx) => {
205
- const keep = !idxMap[idx];
206
- if (!keep && idx === this.currentIndex) {
207
- isCurrentRemoved = true;
202
+ const keep = !idxSet.has(idx);
203
+ if (!keep) {
204
+ if (idx === this.currentIndex) {
205
+ isCurrentRemoved = true;
206
+ } else if (this.currentIndex !== undefined && idx < this.currentIndex) {
207
+ removedBeforeCurrent++;
208
+ }
208
209
  }
209
210
  return keep;
210
211
  });
211
212
  if (this.currentIndex === undefined) {
212
213
  return;
213
214
  }
214
- const hasItems = this.playlist.length > 0;
215
- if (isCurrentRemoved && hasItems) {
216
- this.goToIndex(this.currentIndex % this.playlist.length);
217
- } else if (isCurrentRemoved) {
218
- this.stop();
215
+ if (isCurrentRemoved) {
216
+ const hasItems = this.playlist.length > 0;
217
+ if (hasItems) {
218
+ // Adjust for removed items before current, then clamp to valid range
219
+ const adjustedIndex = this.currentIndex - removedBeforeCurrent;
220
+ // Reset so goToIndex always loads the new track at this position
221
+ this._currentIndex = undefined;
222
+ this.goToIndex(Math.min(adjustedIndex, this.playlist.length - 1));
223
+ } else {
224
+ this.current = undefined;
225
+ this._currentIndex = undefined;
226
+ this.stop();
227
+ }
228
+ } else {
229
+ // Adjust currentIndex to account for removed items before it
230
+ this._currentIndex = this.currentIndex - removedBeforeCurrent;
219
231
  }
220
232
 
221
233
  // Regenerate shuffle order when tracks are removed
@@ -224,15 +236,16 @@ export class PlaylistPlayer extends Player {
224
236
  }
225
237
  }
226
238
  stop(onComplete) {
227
- super.stop(() => {
228
- this.currentIndex = undefined;
229
- onComplete?.();
230
- });
239
+ super.stop(onComplete);
231
240
  }
232
241
  reset() {
233
- this.stop(() => {
234
- this.playlist = [];
235
- });
242
+ // Clear queue state synchronously so subsequent add()/load() calls
243
+ // see a clean slate. The async player.unload() in stop() can finish
244
+ // in the background — it only releases the Shaka source.
245
+ this.playlist = [];
246
+ this.current = undefined;
247
+ this._currentIndex = undefined;
248
+ this.stop();
236
249
  }
237
250
  removeUpcomingTracks() {
238
251
  if (this.currentIndex === undefined) return;
@@ -247,27 +260,23 @@ export class PlaylistPlayer extends Player {
247
260
  if (!this.playlist[fromIndex]) {
248
261
  throw new Error('index out of bounds');
249
262
  }
250
- if (this.currentIndex === fromIndex) {
251
- throw new Error('you cannot move the currently playing track');
252
- }
253
- if (this.currentIndex === toIndex) {
254
- throw new Error('you cannot replace the currently playing track');
255
- }
256
263
 
257
- // calculate `currentIndex` after move
258
- let shift;
259
- if (this.currentIndex !== undefined && fromIndex < this.currentIndex && toIndex > this.currentIndex) {
260
- shift = -1;
261
- } else if (this.currentIndex !== undefined && fromIndex > this.currentIndex && toIndex < this.currentIndex) {
262
- shift = 1;
263
- }
264
-
265
- // move the track
264
+ // Move the track in the playlist
266
265
  const fromItem = this.playlist[fromIndex];
267
266
  this.playlist.splice(fromIndex, 1);
268
267
  this.playlist.splice(toIndex, 0, fromItem);
269
- if (this.currentIndex !== undefined && shift) {
270
- this.currentIndex = this.currentIndex + shift;
268
+
269
+ // Update currentIndex to track the currently playing item's new position.
270
+ // Matches Android's exoPlayer.moveMediaItem() which has no restrictions.
271
+ if (this.currentIndex !== undefined) {
272
+ if (fromIndex === this.currentIndex) {
273
+ // Moving the current track — follow it to its new position
274
+ this._currentIndex = toIndex;
275
+ } else if (fromIndex < this.currentIndex && toIndex >= this.currentIndex) {
276
+ this._currentIndex = this.currentIndex - 1;
277
+ } else if (fromIndex > this.currentIndex && toIndex <= this.currentIndex) {
278
+ this._currentIndex = this.currentIndex + 1;
279
+ }
271
280
  }
272
281
 
273
282
  // Regenerate shuffle order when tracks are moved
@@ -1 +1 @@
1
- {"version":3,"names":["Player","State","RepeatMode","fisherYatesShuffle","PlaylistPlayer","playlist","repeatMode","Off","shuffleEnabled","shuffleOrder","onStateUpdate","state","Ended","onTrackEnded","Track","currentIndex","undefined","goToIndex","Playlist","skipToNext","getNextIndex","onPlaylistEnded","console","warn","_currentIndex","current","lastIndex","index","initialPosition","track","onCompletedLoading","_track","seekTo","playWhenReady","play","load","add","tracks","insertBeforeIndex","splice","push","generateShuffleOrder","skip","Error","nextIndex","getWrapAroundFirstIndex","skipToPrevious","previousIndex","getPreviousIndex","getWrapAroundLastIndex","length","currentShufflePos","indexOf","nextShufflePos","prevIndex","previousShufflePos","Array","from","_","i","currentPos","temp","setShuffleEnabled","enabled","getShuffleEnabled","getTrack","setRepeatMode","mode","getRepeatMode","remove","indexes","idxMap","reduce","acc","elem","isCurrentRemoved","filter","idx","keep","hasItems","stop","onComplete","reset","removeUpcomingTracks","slice","move","fromIndex","toIndex","shift","fromItem"],"sourceRoot":"../../../../src","sources":["web/TrackPlayer/PlaylistPlayer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["assertedNotNullish","fisherYatesShuffle","Player","RepeatMode","State","PlaylistPlayer","playlist","repeatMode","Off","shuffleEnabled","shuffleOrder","onStateUpdate","state","_isStopped","Ended","onTrackEnded","Track","currentIndex","undefined","goToIndex","Playlist","skipToNext","getNextIndex","onPlaylistEnded","console","warn","_currentIndex","current","lastIndex","index","initialPosition","track","onLoaded","_track","seekTo","load","playWhenReady","play","add","tracks","insertBeforeIndex","splice","push","generateShuffleOrder","skip","Error","nextIndex","getWrapAroundFirstIndex","skipToPrevious","previousIndex","getPreviousIndex","getWrapAroundLastIndex","length","currentShufflePos","indexOf","nextShufflePos","prevIndex","previousShufflePos","Array","from","_","i","currentPos","temp","setShuffleEnabled","enabled","getShuffleEnabled","getTrack","setRepeatMode","mode","getRepeatMode","remove","indexes","idxSet","Set","isCurrentRemoved","removedBeforeCurrent","filter","idx","keep","has","hasItems","adjustedIndex","Math","min","stop","onComplete","reset","removeUpcomingTracks","slice","move","fromIndex","toIndex","fromItem"],"sourceRoot":"../../../../src","sources":["web/TrackPlayer/PlaylistPlayer.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["State","None","Ready","Playing","Paused","Stopped","Loading","Buffering","Error","Ended"],"sourceRoot":"../../../../src","sources":["web/TrackPlayer/State.ts"],"mappings":";;AAEA,OAAO,MAAMA,KAAK,GAAG;EACnBC,IAAI,EAAE,MAAe;EACrBC,KAAK,EAAE,OAAgB;EACvBC,OAAO,EAAE,SAAkB;EAC3BC,MAAM,EAAE,QAAiB;EACzBC,OAAO,EAAE,SAAkB;EAC3BC,OAAO,EAAE,SAAkB;EAC3BC,SAAS,EAAE,WAAoB;EAC/BC,KAAK,EAAE,OAAgB;EACvBC,KAAK,EAAE;AACT,CAAyC","ignoreList":[]}
1
+ {"version":3,"names":["State","None","Ready","Playing","Paused","Stopped","Loading","Buffering","Error","Ended"],"sourceRoot":"../../../../src","sources":["web/TrackPlayer/State.ts"],"mappings":";;AAEA,OAAO,MAAMA,KAAK,GAAG;EACnBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,WAAW;EACtBC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAyC","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { SimpleRouter } from '../SimpleRouter';
3
+ import { assertedNotNullish } from '../../utils/validation';
4
4
  import { RequestConfigBuilder } from '../http/RequestConfigBuilder';
5
+ import { SimpleRouter } from '../SimpleRouter';
5
6
  import { BrowserPathHelper } from '../util/BrowserPathHelper';
6
7
 
7
8
  /**
@@ -186,15 +187,10 @@ export class BrowserManager {
186
187
  return;
187
188
  }
188
189
 
189
- // Transform tracks with src to add contextual URLs (matches Android behavior)
190
- // Android ALWAYS regenerates contextual URLs for tracks with src to reflect
191
- // current browsing context, enabling proper queue expansion.
192
- // Note: Search content is resolved via resolveSearchContent() which doesn't
193
- // reach this block because it returns directly above. This matches Android's
194
- // architecture where search() bypasses the resolve() contextual URL logic.
195
- // IMPORTANT: Create a shallow copy to avoid mutating the original config object
196
- // (e.g., browseStatic from routes). Without this, static route children would
197
- // accumulate contextual URLs, breaking search which reads from the same source.
190
+ // Add contextual URLs to non-search content (matches Android behavior where
191
+ // search() bypasses the resolve() contextual URL logic).
192
+ // Shallow copy to avoid mutating the original config object (e.g., browseStatic
193
+ // from routes), which would break search that reads from the same source.
198
194
  if (content?.children && !isSearchPath) {
199
195
  content = {
200
196
  ...content,
@@ -253,10 +249,7 @@ export class BrowserManager {
253
249
  console.error('Navigation failed:', error);
254
250
  this._content = undefined;
255
251
  this.onContentChanged(undefined);
256
-
257
- // Set navigation error using helper
258
- const message = error instanceof Error ? error.message : 'Unknown error';
259
- this.navigationErrorManager.setNavigationError('unknown-error', message);
252
+ this.handleNavigationError(error, path);
260
253
  }
261
254
  }
262
255
 
@@ -498,7 +491,7 @@ export class BrowserManager {
498
491
  // Check singleTrack setting - if true, return only the selected track
499
492
  if (this._configuration.singleTrack) {
500
493
  return {
501
- tracks: [playableTracks[selectedIndex]],
494
+ tracks: [assertedNotNullish(playableTracks[selectedIndex])],
502
495
  selectedIndex: 0
503
496
  };
504
497
  }
@@ -526,13 +519,13 @@ export class BrowserManager {
526
519
  async resolveMediaItemsForPlayback(tracks, startIndex, startPositionMs, searchQuery) {
527
520
  // Single track: check for search context or contextual URL
528
521
  if (tracks.length === 1) {
529
- const track = tracks[0];
522
+ const track = assertedNotNullish(tracks[0]);
530
523
  const trackUrl = track.url;
531
524
 
532
525
  // If search query present, expand search results
533
526
  if (searchQuery) {
534
527
  // Execute search (will hit cache if already performed)
535
- const searchResults = await this.resolveContent(BrowserPathHelper.createSearchPath(searchQuery));
528
+ const searchResults = await this.resolveSearchContent(BrowserPathHelper.createSearchPath(searchQuery));
536
529
  const searchTracks = searchResults?.children;
537
530
  if (searchTracks && searchTracks.length > 0) {
538
531
  // Find the selected track in search results