lavalink-client 2.3.0 → 2.3.3

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 (55) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/index.d.ts +1 -0
  3. package/dist/cjs/index.js +1 -0
  4. package/dist/cjs/structures/Constants.d.ts +44 -1
  5. package/dist/cjs/structures/Constants.js +45 -1
  6. package/dist/cjs/structures/LavalinkManager.js +80 -5
  7. package/dist/cjs/structures/Node.js +202 -20
  8. package/dist/cjs/structures/Player.d.ts +0 -1
  9. package/dist/cjs/structures/Player.js +73 -6
  10. package/dist/cjs/structures/Queue.js +29 -2
  11. package/dist/cjs/structures/Types/Manager.d.ts +25 -0
  12. package/dist/cjs/structures/Types/Queue.d.ts +1 -1
  13. package/dist/cjs/structures/Utils.js +68 -18
  14. package/dist/esm/index.d.ts +1 -0
  15. package/dist/esm/index.js +1 -0
  16. package/dist/esm/structures/Constants.d.ts +44 -1
  17. package/dist/esm/structures/Constants.js +44 -0
  18. package/dist/esm/structures/LavalinkManager.js +81 -6
  19. package/dist/esm/structures/Node.js +203 -21
  20. package/dist/esm/structures/Player.d.ts +0 -1
  21. package/dist/esm/structures/Player.js +73 -6
  22. package/dist/esm/structures/Queue.js +29 -2
  23. package/dist/esm/structures/Types/Manager.d.ts +25 -0
  24. package/dist/esm/structures/Types/Queue.d.ts +1 -1
  25. package/dist/esm/structures/Utils.js +68 -18
  26. package/dist/types/index.d.ts +1 -0
  27. package/dist/types/structures/Constants.d.ts +44 -1
  28. package/dist/types/structures/Player.d.ts +0 -1
  29. package/dist/types/structures/Types/Manager.d.ts +25 -0
  30. package/dist/types/structures/Types/Queue.d.ts +1 -1
  31. package/package.json +1 -1
  32. package/dist/index.d.ts +0 -10
  33. package/dist/index.js +0 -13
  34. package/dist/structures/Filters.d.ts +0 -230
  35. package/dist/structures/Filters.js +0 -472
  36. package/dist/structures/LavalinkManager.d.ts +0 -47
  37. package/dist/structures/LavalinkManager.js +0 -36
  38. package/dist/structures/LavalinkManagerStatics.d.ts +0 -3
  39. package/dist/structures/LavalinkManagerStatics.js +0 -76
  40. package/dist/structures/Node.d.ts +0 -171
  41. package/dist/structures/Node.js +0 -462
  42. package/dist/structures/NodeManager.d.ts +0 -58
  43. package/dist/structures/NodeManager.js +0 -25
  44. package/dist/structures/Player.d.ts +0 -101
  45. package/dist/structures/Player.js +0 -232
  46. package/dist/structures/PlayerManager.d.ts +0 -62
  47. package/dist/structures/PlayerManager.js +0 -26
  48. package/dist/structures/Queue.d.ts +0 -93
  49. package/dist/structures/Queue.js +0 -160
  50. package/dist/structures/QueueManager.d.ts +0 -77
  51. package/dist/structures/QueueManager.js +0 -74
  52. package/dist/structures/Track.d.ts +0 -27
  53. package/dist/structures/Track.js +0 -2
  54. package/dist/structures/Utils.d.ts +0 -183
  55. package/dist/structures/Utils.js +0 -43
@@ -1,160 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Queue = exports.DefaultQueueStore = exports.QueueSaver = void 0;
4
- class QueueSaver {
5
- constructor(storeManager, options) {
6
- this._ = storeManager;
7
- this.options = options;
8
- }
9
- async get(key) {
10
- return new Queue(await this._.parse(await this._.get(key)), key, this);
11
- }
12
- async delete(key) {
13
- return await this._.delete(key);
14
- }
15
- async set(key, value) {
16
- return await this._.set(key, await this._.stringify(value));
17
- }
18
- }
19
- exports.QueueSaver = QueueSaver;
20
- class DefaultQueueStore {
21
- data = new Map();
22
- constructor() {
23
- }
24
- get(key) {
25
- return this.data.get(key);
26
- }
27
- set(key, value) {
28
- return this.data.set(key, value);
29
- }
30
- delete(key) {
31
- return this.data.delete(key);
32
- }
33
- stringify(value) {
34
- return value;
35
- }
36
- parse(value) {
37
- return value;
38
- }
39
- }
40
- exports.DefaultQueueStore = DefaultQueueStore;
41
- class Queue {
42
- _nextTracks = [];
43
- _previousTracks = [];
44
- _currentTrack = null;
45
- _guildId = "";
46
- _QueueSaver = null;
47
- constructor(data = {}, guildId, QueueSaver) {
48
- this._guildId = guildId;
49
- this._QueueSaver = QueueSaver;
50
- this._currentTrack = this.isTrack(data.currentTrack) ? data.currentTrack : null;
51
- this._previousTracks = Array.isArray(data.previousTracks) && data.previousTracks.some(track => this.isTrack(track)) ? data.previousTracks.filter(track => this.isTrack(track)) : [];
52
- this._nextTracks = Array.isArray(data.nextTracks) && data.nextTracks.some(track => this.isTrack(track)) ? data.nextTracks.filter(track => this.isTrack(track)) : [];
53
- // TODO bind event Function for trackEnd
54
- }
55
- isTrack(data) {
56
- return typeof data.encodedTrack === "string" && typeof data.info === "object";
57
- }
58
- /** The Current Playing Track */
59
- get currentTrack() {
60
- return this._currentTrack || null;
61
- }
62
- /** All Previous Track(s) [with the limited amount] */
63
- get previousTracks() {
64
- return this._previousTracks || [];
65
- }
66
- /** All Upcoming Track(s) */
67
- get nextTracks() {
68
- return this._nextTracks || [];
69
- }
70
- /** The Size of the upcoming Track(s) */
71
- get size() {
72
- return this.nextTracks.length;
73
- }
74
- /** The Size of the previous Track(s) */
75
- get previousSize() {
76
- return this.previousTracks.length;
77
- }
78
- /**
79
- * @returns The Queue, but in a raw State, which allows easier handling for the storeManager
80
- */
81
- getRaw() {
82
- return {
83
- currentTrack: this.currentTrack,
84
- previousTracks: this.previousTracks,
85
- nextTracks: this.nextTracks,
86
- };
87
- }
88
- /**
89
- * Add a Track to the Queue, and after saved in the "db" it returns the amount of the Tracks
90
- * @param Track
91
- * @param index At what position to add the Track
92
- * @returns Queue-Size (for the next Tracks)
93
- */
94
- async add(TrackOrTracks, index) {
95
- if (typeof index === "number")
96
- return await this.splice(index, 0, TrackOrTracks);
97
- // add the track(s)
98
- this._nextTracks.push(...(Array.isArray(TrackOrTracks) ? TrackOrTracks : [TrackOrTracks]).filter(v => this.isTrack(v)));
99
- // save the queue
100
- await this._QueueSaver.set(this._guildId, this.getRaw());
101
- return this.size;
102
- }
103
- /**
104
- *
105
- * @param index Where to remove the Track
106
- * @param amount How many Tracks to remove?
107
- * @param TrackOrTracks Want to Add more Tracks?
108
- */
109
- async splice(index, amount, TrackOrTracks) {
110
- if (!this.size)
111
- return null;
112
- let spliced = TrackOrTracks ? this._nextTracks.splice(index, amount, ...(Array.isArray(TrackOrTracks) ? TrackOrTracks : [TrackOrTracks]).filter(v => this.isTrack(v))) : this._nextTracks.splice(index, amount);
113
- // save the queue
114
- await this._QueueSaver.set(this._guildId, this.getRaw());
115
- spliced = (Array.isArray(spliced) ? spliced : [spliced]);
116
- return spliced.length === 1 ? spliced[0] : spliced;
117
- }
118
- /**
119
- * Add a Track to the Previous Track list, and after saved in the "db" it returns the amount of the previous Tracks
120
- * @param Track
121
- * @returns PreviousTracksSize
122
- */
123
- async addPrevious(Track) {
124
- if (!this.isTrack(Track))
125
- return;
126
- this._previousTracks.unshift(Track);
127
- if (this.previousSize > this._QueueSaver.options.maxPreviousTracks)
128
- this._previousTracks.pop();
129
- await this._QueueSaver.set(this._guildId, this.getRaw());
130
- return this.previousSize;
131
- }
132
- /**
133
- * Add a Track to the Previous Track list, and after saved in the "db" it returns the amount of the previous Tracks
134
- * @param Track
135
- * @returns PreviousTracksSize
136
- */
137
- async setCurrent(Track) {
138
- this._currentTrack = Track;
139
- await this._QueueSaver.set(this._guildId, this.getRaw());
140
- return this.currentTrack;
141
- }
142
- /** @private @hidden */
143
- async _trackEnd(addBackToQueue = false) {
144
- if (this.currentTrack) { // if there was a current Track -> Add it
145
- this._previousTracks.unshift(this.currentTrack);
146
- if (this.previousSize > this._QueueSaver.options.maxPreviousTracks)
147
- this._previousTracks.pop();
148
- }
149
- // change the current Track to the next upcoming one
150
- this._currentTrack = this._nextTracks.shift() || null;
151
- // and if repeatMode == queue, add it back to the queue!
152
- if (addBackToQueue && this.currentTrack)
153
- this._nextTracks.push(this.currentTrack);
154
- // save it in the DB
155
- await this._QueueSaver.set(this._guildId, this.getRaw());
156
- // return the new current Track
157
- return this.currentTrack;
158
- }
159
- }
160
- exports.Queue = Queue;
@@ -1,77 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from "stream";
3
- import { LavalinkManager } from "./LavalinkManager";
4
- import { Queue } from "./Queue";
5
- interface QueueManagerEvents {
6
- /**
7
- * Emitted when a Queue is created.
8
- * @event Manager.playerManager#create
9
- */
10
- "create": (queue: Queue) => void;
11
- }
12
- export interface QueueManager {
13
- on<U extends keyof QueueManagerEvents>(event: U, listener: QueueManagerEvents[U]): this;
14
- emit<U extends keyof QueueManagerEvents>(event: U, ...args: Parameters<QueueManagerEvents[U]>): boolean;
15
- /** @private */
16
- queues: QueueSaver;
17
- /** @private */
18
- LavalinkManager: LavalinkManager;
19
- }
20
- export interface QueueStoreManager extends Record<any, any> {
21
- /** @async get a Value */
22
- get: (key: unknown) => any;
23
- /** @async Set a value inside a key */
24
- set: (key: unknown, value: unknown) => any;
25
- /** @async Delete a Database Value based of it's key */
26
- delete: (key: unknown) => any;
27
- /** @async Transform the value(s) inside of the QueueStoreManager */
28
- stringify: (value: unknown) => any;
29
- /** @async Parse the saved value back to the Queue */
30
- parse: (value: unknown) => Queue;
31
- }
32
- export interface ManagerQueueOptions {
33
- maxPreviousTracks: number;
34
- }
35
- export interface QueueSaver {
36
- /** @private */
37
- _: QueueStoreManager;
38
- /** @private */
39
- options: ManagerQueueOptions;
40
- }
41
- export declare class QueueSaver {
42
- constructor(QueueStoreManager: QueueStoreManager, options: ManagerQueueOptions);
43
- get(key: string): Promise<Queue>;
44
- delete(key: string): Promise<any>;
45
- set(key: string, value: any): Promise<any>;
46
- }
47
- export declare class DefaultQueueStore {
48
- private data;
49
- constructor();
50
- get(key: any): any;
51
- set(key: any, value: any): Map<any, any>;
52
- delete(key: any): boolean;
53
- stringify(value: any): any;
54
- parse(value: any): any;
55
- }
56
- export declare class QueueManager extends EventEmitter {
57
- constructor(LavalinkManager: LavalinkManager);
58
- /**
59
- * Generate a base Empty Queue, for easier use
60
- * @param guildId
61
- * @returns
62
- */
63
- private generateEmptyQueue;
64
- /**
65
- * Get a Queue of a Guild
66
- * @param guildId
67
- * @returns
68
- */
69
- getQueue(guildId: string): Promise<Queue>;
70
- /**
71
- * Delete a Queue
72
- * @param guildId
73
- * @returns
74
- */
75
- private deleteQueue;
76
- }
77
- export {};
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QueueManager = exports.DefaultQueueStore = exports.QueueSaver = void 0;
4
- const stream_1 = require("stream");
5
- const Queue_1 = require("./Queue");
6
- class QueueSaver {
7
- constructor(storeManager, options) {
8
- this._ = storeManager;
9
- this.options = options;
10
- }
11
- async get(key) {
12
- return new Queue_1.Queue(await this._.parse(await this._.get(key)), key, this);
13
- }
14
- async delete(key) {
15
- return await this._.delete(key);
16
- }
17
- async set(key, value) {
18
- return await this._.set(key, await this._.stringify(value));
19
- }
20
- }
21
- exports.QueueSaver = QueueSaver;
22
- class DefaultQueueStore {
23
- data = new Map();
24
- constructor() {
25
- }
26
- get(key) {
27
- return this.data.get(key);
28
- }
29
- set(key, value) {
30
- return this.data.set(key, value);
31
- }
32
- delete(key) {
33
- return this.data.delete(key);
34
- }
35
- stringify(value) {
36
- return value;
37
- }
38
- parse(value) {
39
- return value;
40
- }
41
- }
42
- exports.DefaultQueueStore = DefaultQueueStore;
43
- class QueueManager extends stream_1.EventEmitter {
44
- constructor(LavalinkManager) {
45
- super();
46
- this.LavalinkManager = LavalinkManager;
47
- this.queues = new QueueSaver(this.LavalinkManager.options.queueStore || new DefaultQueueStore(), this.LavalinkManager.options.queueOptions);
48
- }
49
- /**
50
- * Generate a base Empty Queue, for easier use
51
- * @param guildId
52
- * @returns
53
- */
54
- generateEmptyQueue(guildId) {
55
- return new Queue_1.Queue({}, guildId, this.queues);
56
- }
57
- /**
58
- * Get a Queue of a Guild
59
- * @param guildId
60
- * @returns
61
- */
62
- async getQueue(guildId) {
63
- return await this.queues.get(guildId) || this.generateEmptyQueue(guildId);
64
- }
65
- /**
66
- * Delete a Queue
67
- * @param guildId
68
- * @returns
69
- */
70
- async deleteQueue(guildId) {
71
- return await this.queues.delete(guildId);
72
- }
73
- }
74
- exports.QueueManager = QueueManager;
@@ -1,27 +0,0 @@
1
- export interface LavalinkTrackDataInfo {
2
- identifier: string;
3
- title: string;
4
- author: string;
5
- duration: number;
6
- artworkUrl: string | null;
7
- uri: string;
8
- sourceName: string;
9
- isSeekable: boolean;
10
- isStream: boolean;
11
- isrc: string | null;
12
- }
13
- export interface LavalinkTrackDataInfoExtended extends LavalinkTrackDataInfo {
14
- requester?: unknown;
15
- }
16
- export interface Track {
17
- encodedTrack?: string;
18
- info: LavalinkTrackDataInfoExtended;
19
- pluginInfo: Partial<PluginDataInfo> | Record<string, string | number>;
20
- }
21
- export interface PluginDataInfo {
22
- type?: string;
23
- identifier?: string;
24
- artworkUrl?: string;
25
- author?: string;
26
- url?: string;
27
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,183 +0,0 @@
1
- import { LavalinkFilterData } from "./Filters";
2
- import { LavalinkManager } from "./LavalinkManager";
3
- import { NodeStats } from "./Node";
4
- import { PlayOptions } from "./Player";
5
- import { PluginDataInfo, Track } from "./Track";
6
- export declare const TrackSymbol: unique symbol;
7
- export declare const QueueSymbol: unique symbol;
8
- export declare const NodeSymbol: unique symbol;
9
- export type LavalinkSearchPlatform = "ytsearch" | "ytmsearch" | "scsearch" | "spsearch" | "sprec" | "amsearch" | "dzsearch" | "dzisrc" | "sprec" | "ymsearch" | "speak" | "tts";
10
- export type ClientSearchPlatform = "youtube" | "youtube music" | "soundcloud" | "ytm" | "yt" | "sc" | "am" | "sp" | "sprec" | "spsuggestion" | "ds" | "dz" | "deezer" | "yandex" | "yandexmusic";
11
- export type SearchPlatform = LavalinkSearchPlatform | ClientSearchPlatform;
12
- export type SourcesRegex = "YoutubeRegex" | "YoutubeMusicRegex" | "SoundCloudRegex" | "SoundCloudMobileRegex" | "DeezerTrackRegex" | "DeezerArtistRegex" | "DeezerEpisodeRegex" | "DeezerMixesRegex" | "DeezerPageLinkRegex" | "DeezerPlaylistRegex" | "DeezerAlbumRegex" | "AllDeezerRegex" | "AllDeezerRegexWithoutPageLink" | "SpotifySongRegex" | "SpotifyPlaylistRegex" | "SpotifyArtistRegex" | "SpotifyEpisodeRegex" | "SpotifyShowRegex" | "SpotifyAlbumRegex" | "AllSpotifyRegex" | "mp3Url" | "m3uUrl" | "m3u8Url" | "mp4Url" | "m4aUrl" | "wavUrl" | "aacpUrl" | "tiktok" | "mixcloud" | "musicYandex" | "radiohost" | "bandcamp" | "appleMusic" | "TwitchTv" | "vimeo";
13
- export interface PlaylistInfo {
14
- /** The playlist name. */
15
- name: string;
16
- /** The Playlist Author */
17
- author?: string;
18
- /** The Playlist Thumbnail */
19
- thumbnail?: string;
20
- /** A Uri to the playlist */
21
- uri?: string;
22
- /** The playlist selected track. */
23
- selectedTrack: Track | null;
24
- /** The duration of the entire playlist. (calcualted) */
25
- duration: number;
26
- }
27
- export interface SearchResult {
28
- loadType: LoadTypes;
29
- exception: Exception | null;
30
- pluginInfo: PluginDataInfo;
31
- playlist: PlaylistInfo | null;
32
- tracks: Track[];
33
- }
34
- export interface ManagerUtils {
35
- /** @private */
36
- manager: LavalinkManager;
37
- }
38
- export declare class ManagerUtils {
39
- constructor(LavalinkManager: LavalinkManager);
40
- buildTrack(data: any, requester: any): Track;
41
- }
42
- export type PlayerEvents = TrackStartEvent | TrackEndEvent | TrackStuckEvent | TrackExceptionEvent | WebSocketClosedEvent;
43
- export type Severity = "COMMON" | "SUSPICIOUS" | "FAULT";
44
- export interface Exception {
45
- severity: Severity;
46
- message: string;
47
- cause: string;
48
- }
49
- export interface PlayerEvent {
50
- op: "event";
51
- type: PlayerEventType;
52
- guildId: string;
53
- }
54
- export interface TrackStartEvent extends PlayerEvent {
55
- type: "TrackStartEvent";
56
- track: string;
57
- }
58
- export interface TrackEndEvent extends PlayerEvent {
59
- type: "TrackEndEvent";
60
- track: string;
61
- reason: TrackEndReason;
62
- }
63
- export interface TrackExceptionEvent extends PlayerEvent {
64
- type: "TrackExceptionEvent";
65
- exception?: Exception;
66
- error: string;
67
- }
68
- export interface TrackStuckEvent extends PlayerEvent {
69
- type: "TrackStuckEvent";
70
- thresholdMs: number;
71
- }
72
- export interface WebSocketClosedEvent extends PlayerEvent {
73
- type: "WebSocketClosedEvent";
74
- code: number;
75
- byRemote: boolean;
76
- reason: string;
77
- }
78
- export type LoadTypes = "track" | "playlist" | "search" | "error" | "empty";
79
- export type State = "CONNECTED" | "CONNECTING" | "DISCONNECTED" | "DISCONNECTING" | "DESTROYING";
80
- export type PlayerEventType = "TrackStartEvent" | "TrackEndEvent" | "TrackExceptionEvent" | "TrackStuckEvent" | "WebSocketClosedEvent";
81
- export type TrackEndReason = "FINISHED" | "LOAD_FAILED" | "STOPPED" | "REPLACED" | "CLEANUP";
82
- export interface InvalidLavalinkRestRequest {
83
- timestamp: number;
84
- status: number;
85
- error: string;
86
- message?: string;
87
- path: string;
88
- }
89
- export interface LavalinkPlayerVoice {
90
- token: string;
91
- endpoint: string;
92
- sessionId: string;
93
- connected?: boolean;
94
- ping?: number;
95
- }
96
- export interface LavalinkPlayerVoiceOptions extends Omit<LavalinkPlayerVoice, 'connected' | 'ping'> {
97
- }
98
- export interface Address {
99
- address: string;
100
- failingTimestamp: number;
101
- failingTime: string;
102
- }
103
- export interface RoutePlanner {
104
- class?: string;
105
- details?: {
106
- ipBlock: {
107
- type: string;
108
- size: string;
109
- };
110
- failingAddresses: Address[];
111
- };
112
- rotateIndex?: string;
113
- ipIndex?: string;
114
- currentAddress?: string;
115
- blockIndex?: string;
116
- currentAddressIndex?: string;
117
- }
118
- export interface Session {
119
- resumingKey?: string;
120
- timeout: number;
121
- }
122
- export interface GuildShardPayload {
123
- /** The OP code */
124
- op: number;
125
- d: {
126
- guild_id: string;
127
- channel_id: string | null;
128
- self_mute: boolean;
129
- self_deaf: boolean;
130
- };
131
- }
132
- export interface PlayerUpdateInfo {
133
- guildId: string;
134
- playerOptions: PlayOptions;
135
- noReplace?: boolean;
136
- }
137
- export interface LavalinkPlayer {
138
- guildId: string;
139
- track?: {
140
- encoded?: string;
141
- info: {
142
- identifier: string;
143
- title: string;
144
- author: string;
145
- length: number;
146
- artworkUrl: string | null;
147
- uri: string;
148
- sourceName: string;
149
- isSeekable: boolean;
150
- isStream: boolean;
151
- isrc: string | null;
152
- position?: number;
153
- };
154
- };
155
- volume: number;
156
- paused: boolean;
157
- voice: LavalinkPlayerVoice;
158
- filters: Partial<LavalinkFilterData>;
159
- }
160
- export interface VoiceState {
161
- op: "voiceUpdate";
162
- guildId: string;
163
- event: VoiceServer;
164
- sessionId?: string;
165
- guild_id: string;
166
- user_id: string;
167
- session_id: string;
168
- channel_id: string;
169
- }
170
- export interface VoiceServer {
171
- token: string;
172
- guild_id: string;
173
- endpoint: string;
174
- }
175
- export interface VoicePacket {
176
- t?: "VOICE_SERVER_UPDATE" | "VOICE_STATE_UPDATE";
177
- d: VoiceState | VoiceServer;
178
- }
179
- export interface NodeMessage extends NodeStats {
180
- type: PlayerEventType;
181
- op: "stats" | "playerUpdate" | "event";
182
- guildId: string;
183
- }
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ManagerUitls = exports.NodeSymbol = exports.QueueSymbol = exports.TrackSymbol = void 0;
4
- exports.TrackSymbol = Symbol("LC-Track");
5
- exports.QueueSymbol = Symbol("LC-Queue");
6
- exports.NodeSymbol = Symbol("LC-Node");
7
- class ManagerUitls {
8
- constructor(LavalinkManager) {
9
- this.manager = LavalinkManager;
10
- }
11
- buildTrack(data, requester) {
12
- const encodedTrack = data.encoded || data.encodedTrack || typeof data.track === "string" ? data.track : undefined;
13
- if (!encodedTrack)
14
- throw new RangeError("Argument 'data.encoded' / 'data.encodedTrack' / 'data.track' must be present.");
15
- if (!data.info)
16
- data.info = {};
17
- try {
18
- const r = {
19
- info: {
20
- identifier: data.info?.identifier,
21
- title: data.info?.title,
22
- author: data.info?.author,
23
- duration: data.info?.duration,
24
- artworkUrl: data.info?.artworkUrl || ["youtube.", "youtu.be"].some(d => data.info?.uri?.includes?.(d)) ? `https://img.youtube.com/vi/${data.info?.identifier}/mqdefault.jpg` : undefined,
25
- uri: data.info?.uri,
26
- sourceName: data.info?.sourceName,
27
- isSeekable: data.info?.isSeekable,
28
- isStream: data.info?.isStream,
29
- isrc: data.info?.isrc,
30
- requester: data.info?.requester || requester,
31
- },
32
- pluginInfo: data.pluginInfo || data.plugin || {},
33
- encodedTrack
34
- };
35
- Object.defineProperty(r, exports.TrackSymbol, { configurable: true, value: true });
36
- return r;
37
- }
38
- catch (error) {
39
- throw new RangeError(`Argument "data" is not a valid track: ${error.message}`);
40
- }
41
- }
42
- }
43
- exports.ManagerUitls = ManagerUitls;