magmastream 2.9.0-dev.37 → 2.9.0-dev.38

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/dist/index.d.ts CHANGED
@@ -1378,7 +1378,7 @@ interface ManagerEvents {
1378
1378
  [ManagerEventTypes.PlayerCreate]: [player: Player];
1379
1379
  [ManagerEventTypes.PlayerDestroy]: [player: Player];
1380
1380
  [ManagerEventTypes.PlayerDisconnect]: [player: Player, oldChannel: string];
1381
- [ManagerEventTypes.PlayerMove]: [player: Player, initChannel: string, newChannel: string];
1381
+ [ManagerEventTypes.PlayerMove]: [player: Player, oldChannel: string, newChannel: string];
1382
1382
  [ManagerEventTypes.PlayerRestored]: [player: Player, node: Node];
1383
1383
  [ManagerEventTypes.PlayerStateUpdate]: [oldPlayer: Player, newPlayer: Player, changeType: PlayerStateUpdateEvent];
1384
1384
  [ManagerEventTypes.QueueEnd]: [player: Player, track: Track, payload: TrackEndEvent];
@@ -3396,6 +3396,9 @@ declare abstract class AutoPlayUtils {
3396
3396
  * @returns A single resolved {@link Track} object if found, or `null` if the search fails or returns no results.
3397
3397
  */
3398
3398
  private static resolveFirstTrackFromQuery;
3399
+ private static isPlaylistRawData;
3400
+ private static isTrackData;
3401
+ private static isTrackDataArray;
3399
3402
  static buildTracksFromResponse<T>(recommendedResult: LavalinkResponse, requester?: T): Track[];
3400
3403
  }
3401
3404
  /** Gets or extends structures to extend the built in, or already extended, classes to add more functionality. */
@@ -522,24 +522,48 @@ class AutoPlayUtils {
522
522
  // console.error("[Spotify] Failed to launch Playwright:", err);
523
523
  // }
524
524
  // }
525
+ static isPlaylistRawData(data) {
526
+ return typeof data === "object" && data !== null && Array.isArray(data.tracks);
527
+ }
528
+ static isTrackData(data) {
529
+ return typeof data === "object" && data !== null && "encoded" in data && "info" in data;
530
+ }
531
+ static isTrackDataArray(data) {
532
+ return (Array.isArray(data) &&
533
+ data.every((track) => typeof track === "object" && track !== null && "encoded" in track && "info" in track && typeof track.encoded === "string"));
534
+ }
525
535
  static buildTracksFromResponse(recommendedResult, requester) {
526
536
  if (!recommendedResult)
527
537
  return [];
528
538
  if (TrackUtils.isErrorOrEmptySearchResult(recommendedResult))
529
539
  return [];
530
540
  switch (recommendedResult.loadType) {
531
- case Enums_1.LoadTypes.Search: {
532
- const tracks = recommendedResult.data.map((t) => TrackUtils.build(t, requester));
533
- return tracks;
534
- }
535
541
  case Enums_1.LoadTypes.Track: {
536
- const track = TrackUtils.build(recommendedResult.data, requester);
537
- return [track];
542
+ const data = recommendedResult.data;
543
+ if (!this.isTrackData(data)) {
544
+ throw new Error("[TrackBuilder] Invalid TrackData object.");
545
+ }
546
+ return [TrackUtils.build(data, requester)];
547
+ }
548
+ case Enums_1.LoadTypes.Short:
549
+ case Enums_1.LoadTypes.Search: {
550
+ const data = recommendedResult.data;
551
+ if (!this.isTrackDataArray(data)) {
552
+ throw new Error("[TrackBuilder] Invalid TrackData[] array for LoadTypes.Search or Short.");
553
+ }
554
+ return data.map((d) => TrackUtils.build(d, requester));
538
555
  }
556
+ case Enums_1.LoadTypes.Album:
557
+ case Enums_1.LoadTypes.Artist:
558
+ case Enums_1.LoadTypes.Station:
559
+ case Enums_1.LoadTypes.Podcast:
560
+ case Enums_1.LoadTypes.Show:
539
561
  case Enums_1.LoadTypes.Playlist: {
540
- const playlistData = recommendedResult.data;
541
- const tracks = playlistData.tracks.map((t) => TrackUtils.build(t, requester));
542
- return tracks;
562
+ const data = recommendedResult.data;
563
+ if (this.isPlaylistRawData(data)) {
564
+ return data.tracks.map((d) => TrackUtils.build(d, requester));
565
+ }
566
+ throw new Error(`[TrackBuilder] Invalid playlist data for loadType: ${recommendedResult.loadType}`);
543
567
  }
544
568
  default:
545
569
  throw new Error(`[TrackBuilder] Unsupported loadType: ${recommendedResult.loadType}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "magmastream",
3
- "version": "2.9.0-dev.37",
3
+ "version": "2.9.0-dev.38",
4
4
  "description": "A user-friendly Lavalink client designed for NodeJS.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -95,4 +95,4 @@
95
95
  "homepage": "https://docs.magmastream.com",
96
96
  "author": "Abel Purnwasy",
97
97
  "license": "Apache-2.0"
98
- }
98
+ }