magmastream 2.9.3-dev.6 → 2.9.3-dev.7

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.
@@ -9,6 +9,7 @@ const Enums_1 = require("./Enums");
9
9
  const path_1 = tslib_1.__importDefault(require("path"));
10
10
  const safe_stable_stringify_1 = tslib_1.__importDefault(require("safe-stable-stringify"));
11
11
  const MagmastreamError_1 = require("./MagmastreamError");
12
+ const lodash_1 = require("lodash");
12
13
  // import playwright from "playwright";
13
14
  /** @hidden */
14
15
  const SIZES = ["0", "1", "2", "3", "default", "mqdefault", "hqdefault", "maxresdefault"];
@@ -623,65 +624,87 @@ class PlayerUtils {
623
624
  * @returns The serialized Player instance
624
625
  */
625
626
  static async serializePlayer(player) {
626
- try {
627
- const current = await player.queue.getCurrent();
628
- const tracks = await player.queue.getTracks();
629
- const previous = await player.queue.getPrevious();
630
- const serializeTrack = (track) => ({
631
- ...track,
632
- requester: track.requester ? { id: track.requester.id, username: track.requester.username } : null,
633
- });
634
- const safeNode = player.node
635
- ? JSON.parse(JSON.stringify(player.node, (key, value) => {
636
- if (key === "rest" || key === "players" || key === "shards" || key === "manager")
637
- return undefined;
638
- return value;
639
- }))
640
- : null;
641
- return JSON.parse(JSON.stringify(player, (key, value) => {
642
- if (key === "manager")
643
- return null;
644
- if (key === "node")
645
- return safeNode;
646
- if (key === "filters") {
647
- return {
648
- distortion: value?.distortion ?? null,
649
- equalizer: value?.equalizer ?? [],
650
- karaoke: value?.karaoke ?? null,
651
- rotation: value?.rotation ?? null,
652
- timescale: value?.timescale ?? null,
653
- vibrato: value?.vibrato ?? null,
654
- reverb: value?.reverb ?? null,
655
- volume: value?.volume ?? 1.0,
656
- bassBoostlevel: value?.bassBoostlevel ?? null,
657
- filterStatus: value?.filtersStatus ? { ...value.filtersStatus } : {},
658
- };
659
- }
660
- if (key === "queue") {
661
- return {
662
- current: current ? serializeTrack(current) : null,
663
- tracks: tracks.map(serializeTrack),
664
- previous: previous.map(serializeTrack),
665
- };
666
- }
667
- if (key === "data") {
668
- return {
669
- clientUser: value?.Internal_AutoplayUser ?? null,
670
- nowPlayingMessage: value?.nowPlayingMessage ?? null,
671
- };
672
- }
627
+ const current = await player.queue.getCurrent();
628
+ const tracks = await player.queue.getTracks();
629
+ const previous = await player.queue.getPrevious();
630
+ const serializeTrack = (track) => ({
631
+ ...track,
632
+ requester: track.requester ? { id: track.requester.id, username: track.requester.username } : null,
633
+ });
634
+ const safeNode = player.node
635
+ ? JSON.parse(JSON.stringify(player.node, (key, value) => {
636
+ if (key === "rest" || key === "players" || key === "shards" || key === "manager")
637
+ return undefined;
673
638
  return value;
674
- }));
639
+ }))
640
+ : null;
641
+ const isNonSerializable = (value) => {
642
+ if (typeof value === "function" || typeof value === "symbol")
643
+ return true;
644
+ if (typeof value === "object" && value !== null) {
645
+ const ctorName = value.constructor?.name ?? "";
646
+ return (value instanceof Map ||
647
+ value instanceof Set ||
648
+ value instanceof WeakMap ||
649
+ value instanceof WeakSet ||
650
+ ctorName === "Timeout" ||
651
+ ctorName === "Socket" ||
652
+ ctorName === "TLSSocket" ||
653
+ ctorName === "EventEmitter");
654
+ }
655
+ return false;
656
+ };
657
+ const safeReplacer = (key, value) => {
658
+ if (isNonSerializable(value))
659
+ return undefined;
660
+ if (key === "manager")
661
+ return null;
662
+ if (key === "node")
663
+ return safeNode;
664
+ if (key === "filters" && (0, lodash_1.isPlainObject)(value)) {
665
+ return {
666
+ distortion: value["distortion"] ?? null,
667
+ equalizer: value["equalizer"] ?? [],
668
+ karaoke: value["karaoke"] ?? null,
669
+ rotation: value["rotation"] ?? null,
670
+ timescale: value["timescale"] ?? null,
671
+ vibrato: value["vibrato"] ?? null,
672
+ reverb: value["reverb"] ?? null,
673
+ volume: value["volume"] ?? 1.0,
674
+ bassBoostlevel: value["bassBoostlevel"] ?? null,
675
+ filterStatus: (0, lodash_1.isPlainObject)(value["filtersStatus"]) ? { ...value["filtersStatus"] } : {},
676
+ };
677
+ }
678
+ if (key === "queue") {
679
+ return {
680
+ current: current ? serializeTrack(current) : null,
681
+ tracks: tracks.map(serializeTrack),
682
+ previous: previous.map(serializeTrack),
683
+ };
684
+ }
685
+ if (key === "data" && (0, lodash_1.isPlainObject)(value)) {
686
+ return {
687
+ clientUser: value["Internal_AutoplayUser"] ?? null,
688
+ nowPlayingMessage: value["nowPlayingMessage"] ?? null,
689
+ };
690
+ }
691
+ return value;
692
+ };
693
+ let serialized;
694
+ try {
695
+ serialized = JSON.stringify(player, safeReplacer);
675
696
  }
676
697
  catch (err) {
677
- throw err instanceof MagmastreamError_1.MagmaStreamError
698
+ const error = err instanceof MagmastreamError_1.MagmaStreamError
678
699
  ? err
679
700
  : new MagmastreamError_1.MagmaStreamError({
680
701
  code: Enums_1.MagmaStreamErrorCode.MANAGER_SEARCH_FAILED,
681
702
  message: `An error occurred while searching: ${err instanceof Error ? err.message : String(err)}`,
682
703
  cause: err instanceof Error ? err : undefined,
683
704
  });
705
+ console.error(error);
684
706
  }
707
+ return JSON.parse(serialized);
685
708
  }
686
709
  /**
687
710
  * Gets the base directory for player data.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "magmastream",
3
- "version": "2.9.3-dev.6",
3
+ "version": "2.9.3-dev.7",
4
4
  "description": "A user-friendly Lavalink client designed for NodeJS.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",