@5stones/react-native-audio-browser 0.1.3 → 0.1.5

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 (151) 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/HybridAudioBrowser.swift +7 -0
  5. package/ios/TrackPlayer.swift +150 -31
  6. package/lib/commonjs/features/browser.js.map +1 -1
  7. package/lib/commonjs/features/equalizer.js.map +1 -1
  8. package/lib/commonjs/features/errors.js.map +1 -1
  9. package/lib/commonjs/features/favorites.js.map +1 -1
  10. package/lib/commonjs/features/metadata.js.map +1 -1
  11. package/lib/commonjs/features/nowPlaying.js.map +1 -1
  12. package/lib/commonjs/features/output.js.map +1 -1
  13. package/lib/commonjs/features/playback/state.js.map +1 -1
  14. package/lib/commonjs/features/player/options.js.map +1 -1
  15. package/lib/commonjs/features/queue/activeTrack.js.map +1 -1
  16. package/lib/commonjs/features/queue/queue.js +1 -1
  17. package/lib/commonjs/features/queue/queue.js.map +1 -1
  18. package/lib/commonjs/features/remoteControls.js.map +1 -1
  19. package/lib/commonjs/utils/useDebug.js.map +1 -1
  20. package/lib/commonjs/utils/validation.js +23 -0
  21. package/lib/commonjs/utils/validation.js.map +1 -0
  22. package/lib/commonjs/web/NativeAudioBrowser.js +53 -15
  23. package/lib/commonjs/web/NativeAudioBrowser.js.map +1 -1
  24. package/lib/commonjs/web/SimpleRouter.js +5 -4
  25. package/lib/commonjs/web/SimpleRouter.js.map +1 -1
  26. package/lib/commonjs/web/TrackPlayer/Player.js +49 -24
  27. package/lib/commonjs/web/TrackPlayer/Player.js.map +1 -1
  28. package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js +54 -45
  29. package/lib/commonjs/web/TrackPlayer/PlaylistPlayer.js.map +1 -1
  30. package/lib/commonjs/web/TrackPlayer/State.js.map +1 -1
  31. package/lib/commonjs/web/browser/BrowserManager.js +10 -17
  32. package/lib/commonjs/web/browser/BrowserManager.js.map +1 -1
  33. package/lib/commonjs/web/browser/FavoriteManager.js.map +1 -1
  34. package/lib/commonjs/web/browser/NavigationErrorManager.js.map +1 -1
  35. package/lib/commonjs/web/browser/SearchManager.js.map +1 -1
  36. package/lib/commonjs/web/http/HttpClient.js +15 -2
  37. package/lib/commonjs/web/http/HttpClient.js.map +1 -1
  38. package/lib/commonjs/web/http/RequestConfigBuilder.js.map +1 -1
  39. package/lib/commonjs/web/player/NowPlayingManager.js +9 -0
  40. package/lib/commonjs/web/player/NowPlayingManager.js.map +1 -1
  41. package/lib/commonjs/web/player/OptionsManager.js +1 -1
  42. package/lib/commonjs/web/player/OptionsManager.js.map +1 -1
  43. package/lib/commonjs/web/util/BrowserPathHelper.js.map +1 -1
  44. package/lib/module/features/browser.js.map +1 -1
  45. package/lib/module/features/equalizer.js.map +1 -1
  46. package/lib/module/features/errors.js.map +1 -1
  47. package/lib/module/features/favorites.js.map +1 -1
  48. package/lib/module/features/metadata.js.map +1 -1
  49. package/lib/module/features/nowPlaying.js +1 -0
  50. package/lib/module/features/nowPlaying.js.map +1 -1
  51. package/lib/module/features/output.js.map +1 -1
  52. package/lib/module/features/playback/state.js.map +1 -1
  53. package/lib/module/features/player/options.js.map +1 -1
  54. package/lib/module/features/queue/activeTrack.js.map +1 -1
  55. package/lib/module/features/queue/queue.js +1 -1
  56. package/lib/module/features/queue/queue.js.map +1 -1
  57. package/lib/module/features/remoteControls.js.map +1 -1
  58. package/lib/module/utils/useDebug.js.map +1 -1
  59. package/lib/module/utils/validation.js +18 -0
  60. package/lib/module/utils/validation.js.map +1 -0
  61. package/lib/module/web/NativeAudioBrowser.js +53 -15
  62. package/lib/module/web/NativeAudioBrowser.js.map +1 -1
  63. package/lib/module/web/SimpleRouter.js +5 -4
  64. package/lib/module/web/SimpleRouter.js.map +1 -1
  65. package/lib/module/web/TrackPlayer/Player.js +49 -24
  66. package/lib/module/web/TrackPlayer/Player.js.map +1 -1
  67. package/lib/module/web/TrackPlayer/PlaylistPlayer.js +54 -45
  68. package/lib/module/web/TrackPlayer/PlaylistPlayer.js.map +1 -1
  69. package/lib/module/web/TrackPlayer/State.js.map +1 -1
  70. package/lib/module/web/browser/BrowserManager.js +10 -17
  71. package/lib/module/web/browser/BrowserManager.js.map +1 -1
  72. package/lib/module/web/browser/FavoriteManager.js.map +1 -1
  73. package/lib/module/web/browser/NavigationErrorManager.js.map +1 -1
  74. package/lib/module/web/browser/SearchManager.js.map +1 -1
  75. package/lib/module/web/http/HttpClient.js +15 -2
  76. package/lib/module/web/http/HttpClient.js.map +1 -1
  77. package/lib/module/web/http/RequestConfigBuilder.js.map +1 -1
  78. package/lib/module/web/player/NowPlayingManager.js +9 -0
  79. package/lib/module/web/player/NowPlayingManager.js.map +1 -1
  80. package/lib/module/web/player/OptionsManager.js +1 -1
  81. package/lib/module/web/player/OptionsManager.js.map +1 -1
  82. package/lib/module/web/util/BrowserPathHelper.js.map +1 -1
  83. package/lib/typescript/src/features/browser.d.ts.map +1 -1
  84. package/lib/typescript/src/features/equalizer.d.ts.map +1 -1
  85. package/lib/typescript/src/features/errors.d.ts.map +1 -1
  86. package/lib/typescript/src/features/favorites.d.ts.map +1 -1
  87. package/lib/typescript/src/features/metadata.d.ts +1 -1
  88. package/lib/typescript/src/features/metadata.d.ts.map +1 -1
  89. package/lib/typescript/src/features/nowPlaying.d.ts +1 -1
  90. package/lib/typescript/src/features/nowPlaying.d.ts.map +1 -1
  91. package/lib/typescript/src/features/output.d.ts.map +1 -1
  92. package/lib/typescript/src/features/playback/state.d.ts +1 -1
  93. package/lib/typescript/src/features/playback/state.d.ts.map +1 -1
  94. package/lib/typescript/src/features/player/options.d.ts +1 -1
  95. package/lib/typescript/src/features/player/options.d.ts.map +1 -1
  96. package/lib/typescript/src/features/queue/activeTrack.d.ts.map +1 -1
  97. package/lib/typescript/src/features/queue/queue.d.ts.map +1 -1
  98. package/lib/typescript/src/features/remoteControls.d.ts.map +1 -1
  99. package/lib/typescript/src/specs/audio-browser.nitro.d.ts.map +1 -1
  100. package/lib/typescript/src/utils/useDebug.d.ts +1 -1
  101. package/lib/typescript/src/utils/useDebug.d.ts.map +1 -1
  102. package/lib/typescript/src/utils/validation.d.ts +3 -0
  103. package/lib/typescript/src/utils/validation.d.ts.map +1 -0
  104. package/lib/typescript/src/web/NativeAudioBrowser.d.ts +6 -1
  105. package/lib/typescript/src/web/NativeAudioBrowser.d.ts.map +1 -1
  106. package/lib/typescript/src/web/SimpleRouter.d.ts.map +1 -1
  107. package/lib/typescript/src/web/TrackPlayer/Player.d.ts +7 -19
  108. package/lib/typescript/src/web/TrackPlayer/Player.d.ts.map +1 -1
  109. package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts +3 -3
  110. package/lib/typescript/src/web/TrackPlayer/PlaylistPlayer.d.ts.map +1 -1
  111. package/lib/typescript/src/web/browser/BrowserManager.d.ts.map +1 -1
  112. package/lib/typescript/src/web/browser/FavoriteManager.d.ts.map +1 -1
  113. package/lib/typescript/src/web/browser/NavigationErrorManager.d.ts.map +1 -1
  114. package/lib/typescript/src/web/browser/SearchManager.d.ts +1 -1
  115. package/lib/typescript/src/web/browser/SearchManager.d.ts.map +1 -1
  116. package/lib/typescript/src/web/http/HttpClient.d.ts.map +1 -1
  117. package/lib/typescript/src/web/http/RequestConfigBuilder.d.ts.map +1 -1
  118. package/lib/typescript/src/web/player/NowPlayingManager.d.ts.map +1 -1
  119. package/lib/typescript/src/web/player/OptionsManager.d.ts.map +1 -1
  120. package/lib/typescript/src/web/util/BrowserPathHelper.d.ts.map +1 -1
  121. package/package.json +1 -1
  122. package/src/features/browser.ts +1 -1
  123. package/src/features/equalizer.ts +1 -1
  124. package/src/features/errors.ts +1 -1
  125. package/src/features/favorites.ts +1 -1
  126. package/src/features/metadata.ts +1 -1
  127. package/src/features/nowPlaying.ts +1 -1
  128. package/src/features/output.ts +1 -1
  129. package/src/features/playback/state.ts +1 -1
  130. package/src/features/player/options.ts +2 -2
  131. package/src/features/queue/activeTrack.ts +1 -1
  132. package/src/features/queue/queue.ts +2 -2
  133. package/src/features/remoteControls.ts +2 -2
  134. package/src/specs/audio-browser.nitro.ts +0 -1
  135. package/src/utils/useDebug.ts +6 -6
  136. package/src/utils/validation.ts +27 -0
  137. package/src/web/NativeAudioBrowser.ts +137 -58
  138. package/src/web/SimpleRouter.ts +24 -9
  139. package/src/web/TrackPlayer/Player.ts +58 -30
  140. package/src/web/TrackPlayer/PlaylistPlayer.ts +72 -63
  141. package/src/web/TrackPlayer/RepeatMode.ts +1 -1
  142. package/src/web/TrackPlayer/State.ts +9 -9
  143. package/src/web/browser/BrowserManager.ts +124 -67
  144. package/src/web/browser/FavoriteManager.ts +5 -3
  145. package/src/web/browser/NavigationErrorManager.ts +15 -8
  146. package/src/web/browser/SearchManager.ts +17 -11
  147. package/src/web/http/HttpClient.ts +25 -7
  148. package/src/web/http/RequestConfigBuilder.ts +29 -13
  149. package/src/web/player/NowPlayingManager.ts +13 -7
  150. package/src/web/player/OptionsManager.ts +7 -6
  151. package/src/web/util/BrowserPathHelper.ts +3 -2
@@ -6,7 +6,7 @@ import type {
6
6
  ImageSource,
7
7
  Track,
8
8
  ImageContext,
9
- ImageQueryParams,
9
+ ImageQueryParams
10
10
  } from '../../types'
11
11
  import { BrowserPathHelper } from '../util/BrowserPathHelper'
12
12
 
@@ -88,7 +88,7 @@ export const RequestConfigBuilder = {
88
88
  query: this.mergeQuery(base.query, override.query),
89
89
  body: override.body ?? base.body,
90
90
  contentType: override.contentType ?? base.contentType,
91
- userAgent: override.userAgent ?? base.userAgent,
91
+ userAgent: override.userAgent ?? base.userAgent
92
92
  }
93
93
  },
94
94
 
@@ -111,7 +111,10 @@ export const RequestConfigBuilder = {
111
111
  const transformed = await override.transform(base)
112
112
  return transformed
113
113
  } catch (e) {
114
- console.error('Failed to apply media transform function, using base config', e)
114
+ console.error(
115
+ 'Failed to apply media transform function, using base config',
116
+ e
117
+ )
115
118
  return base
116
119
  }
117
120
  }
@@ -135,7 +138,12 @@ export const RequestConfigBuilder = {
135
138
  /**
136
139
  * Converts a TransformableRequestConfig to a plain RequestConfig.
137
140
  */
138
- toRequestConfig(config: TransformableRequestConfig | MediaRequestConfig | ArtworkRequestConfig): RequestConfig {
141
+ toRequestConfig(
142
+ config:
143
+ | TransformableRequestConfig
144
+ | MediaRequestConfig
145
+ | ArtworkRequestConfig
146
+ ): RequestConfig {
139
147
  return {
140
148
  path: config.path,
141
149
  method: config.method,
@@ -144,7 +152,7 @@ export const RequestConfigBuilder = {
144
152
  query: config.query,
145
153
  body: config.body,
146
154
  contentType: config.contentType,
147
- userAgent: config.userAgent,
155
+ userAgent: config.userAgent
148
156
  }
149
157
  },
150
158
 
@@ -187,12 +195,15 @@ export const RequestConfigBuilder = {
187
195
  ? this.mergeArtworkConfig({ path: artworkUrl }, artworkConfig)
188
196
  : { path: artworkUrl }
189
197
 
190
- const resolvedUri = BrowserPathHelper.buildUrl(config.baseUrl, config.path ?? artworkUrl)
198
+ const resolvedUri = BrowserPathHelper.buildUrl(
199
+ config.baseUrl,
200
+ config.path ?? artworkUrl
201
+ )
191
202
 
192
203
  return {
193
204
  uri: resolvedUri,
194
205
  method: config.method ?? 'GET',
195
- headers: config.headers,
206
+ headers: config.headers
196
207
  }
197
208
  },
198
209
 
@@ -258,7 +269,7 @@ export const RequestConfigBuilder = {
258
269
  if (artworkConfig.transform) {
259
270
  mergedConfig = await artworkConfig.transform({
260
271
  request: mergedConfig,
261
- context: imageContext,
272
+ context: imageContext
262
273
  })
263
274
  }
264
275
 
@@ -273,7 +284,7 @@ export const RequestConfigBuilder = {
273
284
  uri: finalUri,
274
285
  method: mergedConfig.method ?? 'GET',
275
286
  headers: mergedConfig.headers,
276
- body: mergedConfig.body,
287
+ body: mergedConfig.body
277
288
  }
278
289
  } catch (error) {
279
290
  // resolve/transform threw - log error, return undefined to avoid broken images
@@ -298,12 +309,15 @@ export const RequestConfigBuilder = {
298
309
  // If artworkSource is already set, don't override it
299
310
  if (track.artworkSource) return track
300
311
 
301
- const artworkSource = this.resolveArtworkSource(track.artwork, artworkConfig)
312
+ const artworkSource = this.resolveArtworkSource(
313
+ track.artwork,
314
+ artworkConfig
315
+ )
302
316
  if (!artworkSource) return track
303
317
 
304
318
  return {
305
319
  ...track,
306
- artworkSource,
320
+ artworkSource
307
321
  }
308
322
  },
309
323
 
@@ -318,7 +332,9 @@ export const RequestConfigBuilder = {
318
332
  tracks: Track[],
319
333
  artworkConfig: ArtworkRequestConfig | undefined
320
334
  ): Track[] {
321
- return tracks.map(track => this.transformTrackArtwork(track, artworkConfig))
335
+ return tracks.map((track) =>
336
+ this.transformTrackArtwork(track, artworkConfig)
337
+ )
322
338
  },
323
339
 
324
340
  /**
@@ -343,5 +359,5 @@ export const RequestConfigBuilder = {
343
359
  if (!base) return override
344
360
  if (!override) return base
345
361
  return { ...base, ...override }
346
- },
362
+ }
347
363
  } as const
@@ -1,7 +1,4 @@
1
- import type {
2
- NowPlayingUpdate,
3
- NowPlayingMetadata,
4
- } from '../../features'
1
+ import type { NowPlayingUpdate, NowPlayingMetadata } from '../../features'
5
2
  import type { Track } from '../../types'
6
3
 
7
4
  /**
@@ -38,14 +35,20 @@ export class NowPlayingManager {
38
35
  artist: update.artist ?? currentTrack.artist,
39
36
  album: currentTrack.album,
40
37
  artwork: currentTrack.artwork,
41
- duration,
38
+ description: currentTrack.description,
39
+ mediaId: currentTrack.src ?? currentTrack.url,
40
+ genre: currentTrack.genre,
41
+ duration
42
42
  }
43
43
  : {
44
44
  title: currentTrack.title,
45
45
  artist: currentTrack.artist,
46
46
  album: currentTrack.album,
47
47
  artwork: currentTrack.artwork,
48
- duration,
48
+ description: currentTrack.description,
49
+ mediaId: currentTrack.src ?? currentTrack.url,
50
+ genre: currentTrack.genre,
51
+ duration
49
52
  }
50
53
 
51
54
  this.onNowPlayingChanged(metadata)
@@ -69,7 +72,10 @@ export class NowPlayingManager {
69
72
  artist: this.override?.artist ?? currentTrack.artist,
70
73
  album: currentTrack.album,
71
74
  artwork: currentTrack.artwork,
72
- duration,
75
+ description: currentTrack.description,
76
+ mediaId: currentTrack.src ?? currentTrack.url,
77
+ genre: currentTrack.genre,
78
+ duration
73
79
  }
74
80
  }
75
81
 
@@ -2,7 +2,7 @@ import type {
2
2
  NativeUpdateOptions,
3
3
  UpdateOptions,
4
4
  Options,
5
- RepeatMode as RepeatModeType,
5
+ RepeatMode as RepeatModeType
6
6
  } from '../../features'
7
7
  import { RepeatMode } from '../TrackPlayer'
8
8
 
@@ -20,7 +20,7 @@ export class OptionsManager {
20
20
  backwardJumpInterval: 15,
21
21
  progressUpdateEventInterval: null,
22
22
  repeatMode: RepeatMode.Off,
23
- capabilities: {},
23
+ capabilities: {}
24
24
  }
25
25
 
26
26
  // Event callback
@@ -38,7 +38,7 @@ export class OptionsManager {
38
38
  options.progressUpdateEventInterval !== undefined &&
39
39
  typeof options.progressUpdateEventInterval !== 'number'
40
40
  ) {
41
- throw new Error('NullSentinal type is not valid on web.')
41
+ throw new Error('NullSentinel type is not valid on web.')
42
42
  }
43
43
 
44
44
  // Merge platform-agnostic options
@@ -52,7 +52,8 @@ export class OptionsManager {
52
52
  progressUpdateEventInterval:
53
53
  options.progressUpdateEventInterval === null
54
54
  ? null
55
- : (options.progressUpdateEventInterval ?? this.options.progressUpdateEventInterval),
55
+ : (options.progressUpdateEventInterval ??
56
+ this.options.progressUpdateEventInterval)
56
57
  }
57
58
 
58
59
  // Store merged options
@@ -65,7 +66,7 @@ export class OptionsManager {
65
66
  progressUpdateEventInterval:
66
67
  mergedOptions.progressUpdateEventInterval ?? 15,
67
68
  capabilities: mergedOptions.capabilities ?? {},
68
- repeatMode: mergedOptions.repeatMode,
69
+ repeatMode: mergedOptions.repeatMode
69
70
  }
70
71
  this.onOptionsChanged(fullOptions)
71
72
  }
@@ -78,7 +79,7 @@ export class OptionsManager {
78
79
  forwardJumpInterval: this.options.forwardJumpInterval,
79
80
  backwardJumpInterval: this.options.backwardJumpInterval,
80
81
  progressUpdateEventInterval: this.options.progressUpdateEventInterval,
81
- capabilities: this.options.capabilities,
82
+ capabilities: this.options.capabilities
82
83
  }
83
84
  }
84
85
 
@@ -103,7 +103,8 @@ export const BrowserPathHelper = {
103
103
 
104
104
  try {
105
105
  // Parse the URL - handle both full URLs and paths
106
- const isFullUrl = path.startsWith('http://') || path.startsWith('https://')
106
+ const isFullUrl =
107
+ path.startsWith('http://') || path.startsWith('https://')
107
108
  const urlObj = new URL(path, isFullUrl ? undefined : 'http://placeholder')
108
109
  return urlObj.searchParams.get(this.CONTEXTUAL_TRACK_PARAM) ?? undefined
109
110
  } catch {
@@ -143,5 +144,5 @@ export const BrowserPathHelper = {
143
144
  const normalizedBase = baseUrl.replace(/\/+$/, '') + '/'
144
145
  const normalizedPath = path.replace(/^\/+/, '')
145
146
  return `${normalizedBase}${normalizedPath}`
146
- },
147
+ }
147
148
  } as const