aqualink 2.11.10 → 2.11.11
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/build/index.d.ts +319 -159
- package/build/structures/Connection.js +137 -172
- package/build/structures/Node.js +62 -119
- package/build/structures/Player.js +6 -5
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -5,25 +5,53 @@ declare module "aqualink" {
|
|
|
5
5
|
export class Aqua extends EventEmitter {
|
|
6
6
|
constructor(client: any, nodes: NodeOptions[], options?: AquaOptions);
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
// Core Properties
|
|
9
|
+
client: any;
|
|
10
|
+
nodes: NodeOptions[];
|
|
11
11
|
nodeMap: Map<string, Node>;
|
|
12
|
+
players: Map<string, Player>;
|
|
13
|
+
clientId: string | null;
|
|
14
|
+
initiated: boolean;
|
|
15
|
+
version: string;
|
|
16
|
+
options: AquaOptions;
|
|
17
|
+
failoverOptions: FailoverOptions;
|
|
18
|
+
|
|
19
|
+
// Configuration Properties
|
|
20
|
+
shouldDeleteMessage: boolean;
|
|
21
|
+
defaultSearchPlatform: SearchSource;
|
|
22
|
+
leaveOnEnd: boolean;
|
|
23
|
+
restVersion: RestVersion;
|
|
24
|
+
plugins: Plugin[];
|
|
25
|
+
autoResume: boolean;
|
|
26
|
+
infiniteReconnects: boolean;
|
|
27
|
+
urlFilteringEnabled?: boolean;
|
|
28
|
+
restrictedDomains: string[];
|
|
29
|
+
allowedDomains: string[];
|
|
30
|
+
loadBalancer: LoadBalancerStrategy;
|
|
31
|
+
send: (payload: any) => void;
|
|
32
|
+
|
|
33
|
+
// Internal State Management
|
|
12
34
|
_nodeStates: Map<string, { connected: boolean; failoverInProgress: boolean }>;
|
|
13
35
|
_failoverQueue: Map<string, number>;
|
|
14
36
|
_lastFailoverAttempt: Map<string, number>;
|
|
15
|
-
_brokenPlayers: Map<string,
|
|
37
|
+
_brokenPlayers: Map<string, BrokenPlayerState>;
|
|
16
38
|
_rebuildLocks: Set<string>;
|
|
17
39
|
_leastUsedNodesCache: Node[] | null;
|
|
18
40
|
_leastUsedNodesCacheTime: number;
|
|
19
41
|
_nodeLoadCache: Map<string, number>;
|
|
20
42
|
_nodeLoadCacheTime: Map<string, number>;
|
|
43
|
+
_cleanupTimer: NodeJS.Timer | null;
|
|
44
|
+
_onNodeConnect?: (node: Node) => void;
|
|
45
|
+
_onNodeDisconnect?: (node: Node) => void;
|
|
21
46
|
|
|
47
|
+
// Getters
|
|
48
|
+
get leastUsedNodes(): Node[];
|
|
22
49
|
|
|
50
|
+
// Core Methods
|
|
23
51
|
init(clientId: string): Promise<Aqua>;
|
|
24
52
|
createNode(options: NodeOptions): Promise<Node>;
|
|
25
53
|
destroyNode(identifier: string): void;
|
|
26
|
-
updateVoiceState(data: VoiceStateUpdate): void;
|
|
54
|
+
updateVoiceState(data: VoiceStateUpdate | VoiceServerUpdate): void;
|
|
27
55
|
fetchRegion(region: string): Node[];
|
|
28
56
|
createConnection(options: ConnectionOptions): Player;
|
|
29
57
|
createPlayer(node: Node, options: PlayerOptions): Player;
|
|
@@ -32,12 +60,52 @@ declare module "aqualink" {
|
|
|
32
60
|
get(guildId: string): Player;
|
|
33
61
|
search(query: string, requester: any, source?: SearchSource): Promise<Track[] | null>;
|
|
34
62
|
|
|
63
|
+
// Save/Load Methods
|
|
64
|
+
savePlayer(filePath?: string): Promise<void>;
|
|
65
|
+
loadPlayers(filePath?: string): Promise<void>;
|
|
35
66
|
|
|
36
|
-
//
|
|
67
|
+
// Failover and Migration Methods
|
|
68
|
+
handleNodeFailover(failedNode: Node): Promise<void>;
|
|
69
|
+
|
|
70
|
+
// Utility Methods
|
|
71
|
+
destroy(): Promise<void>;
|
|
72
|
+
|
|
73
|
+
// Internal Methods
|
|
74
|
+
_invalidateCache(): void;
|
|
75
|
+
_getCachedNodeLoad(node: Node): number;
|
|
76
|
+
_calculateNodeLoad(node: Node): number;
|
|
77
|
+
_createNode(options: NodeOptions): Promise<Node>;
|
|
78
|
+
_destroyNode(identifier: string): void;
|
|
79
|
+
_cleanupNode(nodeId: string): void;
|
|
80
|
+
_storeBrokenPlayers(node: Node): void;
|
|
81
|
+
_rebuildBrokenPlayers(node: Node): Promise<void>;
|
|
82
|
+
_rebuildPlayer(brokenState: BrokenPlayerState, targetNode: Node): Promise<Player>;
|
|
83
|
+
_migratePlayersOptimized(players: Player[], availableNodes: Node[]): Promise<MigrationResult[]>;
|
|
84
|
+
_migratePlayer(player: Player, pickNode: () => Node): Promise<Player>;
|
|
85
|
+
_capturePlayerState(player: Player): PlayerState | null;
|
|
86
|
+
_createPlayerOnNode(targetNode: Node, playerState: PlayerState): Promise<Player>;
|
|
87
|
+
_restorePlayerState(newPlayer: Player, playerState: PlayerState): Promise<void>;
|
|
88
|
+
_getRequestNode(nodes?: string | Node | Node[]): Node;
|
|
89
|
+
_chooseLeastBusyNode(nodes: Node[]): Node | null;
|
|
90
|
+
_constructResponse(response: any, requester: any, requestNode: Node): ResolveResponse;
|
|
91
|
+
_resolveSearchPlatform(source: string): SearchSource;
|
|
92
|
+
_getAvailableNodes(excludeNode?: Node): Node[];
|
|
93
|
+
_performCleanup(): void;
|
|
94
|
+
_handlePlayerDestroy(player: Player): void;
|
|
95
|
+
_waitForFirstNode(timeout?: number): Promise<void>;
|
|
96
|
+
_restorePlayer(data: SavedPlayerData): Promise<void>;
|
|
97
|
+
_parseRequester(requesterString: string | null): any;
|
|
98
|
+
_loadPlugins(): Promise<void>;
|
|
99
|
+
_createDefaultSend(): (packet: any) => void;
|
|
100
|
+
_bindEventHandlers(): void;
|
|
101
|
+
_startCleanupTimer(): void;
|
|
102
|
+
_onNodeReady(node: Node, data: { resumed: boolean }): void;
|
|
103
|
+
|
|
104
|
+
// Optional bypass checks
|
|
37
105
|
bypassChecks?: { nodeFetchInfo?: boolean };
|
|
38
106
|
}
|
|
39
107
|
|
|
40
|
-
export class Node {
|
|
108
|
+
export class Node extends EventEmitter {
|
|
41
109
|
constructor(aqua: Aqua, connOptions: NodeOptions, options?: NodeAdditionalOptions);
|
|
42
110
|
|
|
43
111
|
// Core Properties
|
|
@@ -46,7 +114,7 @@ declare module "aqualink" {
|
|
|
46
114
|
name: string;
|
|
47
115
|
port: number;
|
|
48
116
|
password: string;
|
|
49
|
-
|
|
117
|
+
ssl: boolean;
|
|
50
118
|
sessionId: string | null;
|
|
51
119
|
regions: string[];
|
|
52
120
|
wsUrl: string;
|
|
@@ -66,10 +134,28 @@ declare module "aqualink" {
|
|
|
66
134
|
players: Set<Player>;
|
|
67
135
|
options: NodeOptions;
|
|
68
136
|
|
|
137
|
+
// Additional Properties
|
|
138
|
+
timeout: number;
|
|
139
|
+
maxPayload: number;
|
|
140
|
+
skipUTF8Validation: boolean;
|
|
141
|
+
_isConnecting: boolean;
|
|
142
|
+
_debugEnabled: boolean;
|
|
143
|
+
_headers: Record<string, string>;
|
|
144
|
+
_boundHandlers: Record<string, Function>;
|
|
145
|
+
|
|
69
146
|
// Methods
|
|
70
147
|
connect(): Promise<void>;
|
|
71
148
|
destroy(clean?: boolean): void;
|
|
72
149
|
getStats(): Promise<NodeStats>;
|
|
150
|
+
|
|
151
|
+
// Internal Methods
|
|
152
|
+
_handleOpen(): Promise<void>;
|
|
153
|
+
_handleError(error: any): void;
|
|
154
|
+
_handleMessage(data: any, isBinary: boolean): void;
|
|
155
|
+
_handleClose(code: number, reason: any): void;
|
|
156
|
+
_handleReady(payload: any): Promise<void>;
|
|
157
|
+
_emitError(error: any): void;
|
|
158
|
+
_emitDebug(message: string | (() => string)): void;
|
|
73
159
|
}
|
|
74
160
|
|
|
75
161
|
export class Player extends EventEmitter {
|
|
@@ -81,6 +167,7 @@ declare module "aqualink" {
|
|
|
81
167
|
readonly TRACK: 1;
|
|
82
168
|
readonly QUEUE: 2;
|
|
83
169
|
};
|
|
170
|
+
static readonly EVENT_HANDLERS: Record<string, string>;
|
|
84
171
|
|
|
85
172
|
// Core Properties
|
|
86
173
|
aqua: Aqua;
|
|
@@ -112,6 +199,19 @@ declare module "aqualink" {
|
|
|
112
199
|
autoplayRetries: number;
|
|
113
200
|
reconnectionRetries: number;
|
|
114
201
|
previousIdentifiers: Set<string>;
|
|
202
|
+
self_deaf: boolean;
|
|
203
|
+
self_mute: boolean;
|
|
204
|
+
|
|
205
|
+
// Additional Internal Properties
|
|
206
|
+
previousTracks: CircularBuffer;
|
|
207
|
+
_updateBatcher: MicrotaskUpdateBatcher;
|
|
208
|
+
_dataStore: Map<string, any> | null;
|
|
209
|
+
_voiceDownSince: number;
|
|
210
|
+
_voiceRecovering: boolean;
|
|
211
|
+
_voiceWatchdogTimer: NodeJS.Timer | null;
|
|
212
|
+
_boundPlayerUpdate: (packet: any) => void;
|
|
213
|
+
_boundEvent: (payload: any) => void;
|
|
214
|
+
_boundAquaPlayerMove: (oldChannel: string, newChannel: string) => void;
|
|
115
215
|
|
|
116
216
|
// Getters
|
|
117
217
|
get previous(): Track | null;
|
|
@@ -151,6 +251,28 @@ declare module "aqualink" {
|
|
|
151
251
|
// Utility Methods
|
|
152
252
|
send(data: any): void;
|
|
153
253
|
batchUpdatePlayer(data: any, immediate?: boolean): Promise<void>;
|
|
254
|
+
|
|
255
|
+
// Internal Methods
|
|
256
|
+
_parseLoop(loop: any): LoopMode;
|
|
257
|
+
_bindEvents(): void;
|
|
258
|
+
_startWatchdog(): void;
|
|
259
|
+
_handlePlayerUpdate(packet: any): void;
|
|
260
|
+
_handleEvent(payload: any): Promise<void>;
|
|
261
|
+
_voiceWatchdog(): Promise<void>;
|
|
262
|
+
_attemptVoiceResume(): Promise<void>;
|
|
263
|
+
_getAutoplayTrack(sourceName: string, identifier: string, uri: string, requester: any, prev: Track): Promise<Track | null>;
|
|
264
|
+
_handleAquaPlayerMove(oldChannel: string, newChannel: string): void;
|
|
265
|
+
|
|
266
|
+
// Event handler methods (called internally)
|
|
267
|
+
trackStart(player: Player, track: Track): Promise<void>;
|
|
268
|
+
trackEnd(player: Player, track: Track, payload: any): Promise<void>;
|
|
269
|
+
trackError(player: Player, track: Track, payload: any): Promise<void>;
|
|
270
|
+
trackStuck(player: Player, track: Track, payload: any): Promise<void>;
|
|
271
|
+
trackChange(player: Player, track: Track, payload: any): Promise<void>;
|
|
272
|
+
socketClosed(player: Player, track: Track, payload: any): Promise<void>;
|
|
273
|
+
lyricsLine(player: Player, track: Track, payload: any): Promise<void>;
|
|
274
|
+
lyricsFound(player: Player, track: Track, payload: any): Promise<void>;
|
|
275
|
+
lyricsNotFound(player: Player, track: Track, payload: any): Promise<void>;
|
|
154
276
|
}
|
|
155
277
|
|
|
156
278
|
export class Track {
|
|
@@ -171,6 +293,10 @@ declare module "aqualink" {
|
|
|
171
293
|
playlist: PlaylistInfo | null;
|
|
172
294
|
requester: any;
|
|
173
295
|
nodes: Node;
|
|
296
|
+
node: Node | null;
|
|
297
|
+
|
|
298
|
+
// Internal Properties
|
|
299
|
+
_infoCache: TrackInfo | null;
|
|
174
300
|
|
|
175
301
|
// Getters
|
|
176
302
|
get info(): TrackInfo;
|
|
@@ -179,9 +305,12 @@ declare module "aqualink" {
|
|
|
179
305
|
|
|
180
306
|
// Methods
|
|
181
307
|
resolveThumbnail(url?: string): string | null;
|
|
182
|
-
resolve(aqua: Aqua): Promise<Track | null>;
|
|
308
|
+
resolve(aqua: Aqua, opts?: TrackResolutionOptions): Promise<Track | null>;
|
|
183
309
|
isValid(): boolean;
|
|
184
310
|
dispose(): void;
|
|
311
|
+
|
|
312
|
+
// Internal Methods
|
|
313
|
+
_computeArtworkFromKnownSources(): string | null;
|
|
185
314
|
}
|
|
186
315
|
|
|
187
316
|
export class Rest {
|
|
@@ -192,6 +321,13 @@ declare module "aqualink" {
|
|
|
192
321
|
sessionId: string;
|
|
193
322
|
calls: number;
|
|
194
323
|
|
|
324
|
+
// Additional Properties
|
|
325
|
+
timeout: number;
|
|
326
|
+
baseUrl: string;
|
|
327
|
+
defaultHeaders: Record<string, string>;
|
|
328
|
+
agent: any; // HTTP/HTTPS Agent
|
|
329
|
+
|
|
330
|
+
// Core Methods
|
|
195
331
|
setSessionId(sessionId: string): void;
|
|
196
332
|
makeRequest(method: HttpMethod, endpoint: string, body?: any): Promise<any>;
|
|
197
333
|
updatePlayer(options: UpdatePlayerOptions): Promise<any>;
|
|
@@ -200,30 +336,51 @@ declare module "aqualink" {
|
|
|
200
336
|
subscribeLiveLyrics(guildId: string, sync?: boolean): Promise<any>;
|
|
201
337
|
unsubscribeLiveLyrics(guildId: string): Promise<any>;
|
|
202
338
|
getStats(): Promise<NodeStats>;
|
|
339
|
+
|
|
340
|
+
// Additional REST Methods
|
|
341
|
+
getPlayer(guildId: string): Promise<any>;
|
|
342
|
+
getPlayers(): Promise<any>;
|
|
343
|
+
decodeTrack(encodedTrack: string): Promise<any>;
|
|
344
|
+
decodeTracks(encodedTracks: string[]): Promise<any>;
|
|
345
|
+
getInfo(): Promise<NodeInfo>;
|
|
346
|
+
getVersion(): Promise<string>;
|
|
347
|
+
getRoutePlannerStatus(): Promise<any>;
|
|
348
|
+
freeRoutePlannerAddress(address: string): Promise<any>;
|
|
349
|
+
freeAllRoutePlannerAddresses(): Promise<any>;
|
|
350
|
+
destroy(): void;
|
|
203
351
|
}
|
|
204
352
|
|
|
205
353
|
export class Queue extends Array<Track> {
|
|
206
354
|
constructor(...elements: Track[]);
|
|
207
355
|
|
|
208
356
|
// Properties
|
|
209
|
-
size: number;
|
|
210
|
-
first: Track | null;
|
|
211
|
-
last: Track | null;
|
|
357
|
+
readonly size: number;
|
|
358
|
+
readonly first: Track | null;
|
|
359
|
+
readonly last: Track | null;
|
|
212
360
|
|
|
213
361
|
// Methods
|
|
362
|
+
add(track: Track): Queue;
|
|
214
363
|
add(...tracks: Track[]): void;
|
|
215
364
|
push(track: Track): number;
|
|
216
365
|
unshift(track: Track): number;
|
|
217
366
|
shift(): Track | undefined;
|
|
367
|
+
remove(track: Track): boolean;
|
|
218
368
|
clear(): void;
|
|
369
|
+
shuffle(): Queue;
|
|
370
|
+
peek(): Track | null;
|
|
219
371
|
isEmpty(): boolean;
|
|
220
372
|
toArray(): Track[];
|
|
373
|
+
at(index: number): Track | null;
|
|
374
|
+
dequeue(): Track | undefined;
|
|
375
|
+
enqueue(track: Track): Queue;
|
|
221
376
|
}
|
|
222
377
|
|
|
223
378
|
export class Filters {
|
|
224
379
|
constructor(player: Player, options?: FilterOptions);
|
|
225
380
|
|
|
226
381
|
player: Player;
|
|
382
|
+
_pendingUpdate: boolean;
|
|
383
|
+
|
|
227
384
|
filters: {
|
|
228
385
|
volume: number;
|
|
229
386
|
equalizer: EqualizerBand[];
|
|
@@ -247,13 +404,13 @@ declare module "aqualink" {
|
|
|
247
404
|
// Filter Methods
|
|
248
405
|
setEqualizer(bands: EqualizerBand[]): Filters;
|
|
249
406
|
setKaraoke(enabled: boolean, options?: KaraokeSettings): Filters;
|
|
250
|
-
setTimescale(options?: TimescaleSettings): Filters;
|
|
251
|
-
setTremolo(options?: TremoloSettings): Filters;
|
|
252
|
-
setVibrato(options?: VibratoSettings): Filters;
|
|
253
|
-
setRotation( options?: RotationSettings): Filters;
|
|
254
|
-
setDistortion( options?: DistortionSettings): Filters;
|
|
255
|
-
setChannelMix(options?: ChannelMixSettings): Filters;
|
|
256
|
-
setLowPass( options?: LowPassSettings): Filters;
|
|
407
|
+
setTimescale(enabled: boolean, options?: TimescaleSettings): Filters;
|
|
408
|
+
setTremolo(enabled: boolean, options?: TremoloSettings): Filters;
|
|
409
|
+
setVibrato(enabled: boolean, options?: VibratoSettings): Filters;
|
|
410
|
+
setRotation(enabled: boolean, options?: RotationSettings): Filters;
|
|
411
|
+
setDistortion(enabled: boolean, options?: DistortionSettings): Filters;
|
|
412
|
+
setChannelMix(enabled: boolean, options?: ChannelMixSettings): Filters;
|
|
413
|
+
setLowPass(enabled: boolean, options?: LowPassSettings): Filters;
|
|
257
414
|
setBassboost(enabled: boolean, options?: { value?: number }): Filters;
|
|
258
415
|
setSlowmode(enabled: boolean, options?: { rate?: number }): Filters;
|
|
259
416
|
setNightcore(enabled: boolean, options?: { rate?: number }): Filters;
|
|
@@ -261,6 +418,10 @@ declare module "aqualink" {
|
|
|
261
418
|
set8D(enabled: boolean, options?: { rotationHz?: number }): Filters;
|
|
262
419
|
clearFilters(): Promise<Filters>;
|
|
263
420
|
updateFilters(): Promise<Filters>;
|
|
421
|
+
|
|
422
|
+
// Internal Methods
|
|
423
|
+
_setFilter(filterName: string, enabled: boolean, options?: any): Filters;
|
|
424
|
+
_scheduleUpdate(): Filters;
|
|
264
425
|
}
|
|
265
426
|
|
|
266
427
|
export class Connection {
|
|
@@ -273,10 +434,33 @@ declare module "aqualink" {
|
|
|
273
434
|
region: string | null;
|
|
274
435
|
sequence: number;
|
|
275
436
|
|
|
437
|
+
// Internal Properties
|
|
438
|
+
_player: Player;
|
|
439
|
+
_aqua: Aqua;
|
|
440
|
+
_nodes: Node;
|
|
441
|
+
_guildId: string;
|
|
442
|
+
_clientId: string;
|
|
443
|
+
_lastEndpoint: string | null;
|
|
444
|
+
_pendingUpdate: any;
|
|
445
|
+
_updateTimer: NodeJS.Timeout | null;
|
|
446
|
+
_hasDebugListeners: boolean;
|
|
447
|
+
_hasMoveListeners: boolean;
|
|
448
|
+
|
|
449
|
+
// Methods
|
|
276
450
|
setServerUpdate(data: VoiceServerUpdate['d']): void;
|
|
277
451
|
setStateUpdate(data: VoiceStateUpdate['d']): void;
|
|
278
452
|
updateSequence(seq: number): void;
|
|
279
453
|
destroy(): void;
|
|
454
|
+
attemptResume(): Promise<boolean>;
|
|
455
|
+
resendVoiceUpdate(options?: { resume?: boolean }): void;
|
|
456
|
+
|
|
457
|
+
// Internal Methods
|
|
458
|
+
_extractRegion(endpoint: string): string | null;
|
|
459
|
+
_scheduleVoiceUpdate(isResume?: boolean): void;
|
|
460
|
+
_executeVoiceUpdate(): void;
|
|
461
|
+
_sendUpdate(payload: any): Promise<void>;
|
|
462
|
+
_handleDisconnect(): void;
|
|
463
|
+
_clearPendingUpdate(): void;
|
|
280
464
|
}
|
|
281
465
|
|
|
282
466
|
export class Plugin {
|
|
@@ -286,6 +470,32 @@ declare module "aqualink" {
|
|
|
286
470
|
unload?(aqua: Aqua): void | Promise<void>;
|
|
287
471
|
}
|
|
288
472
|
|
|
473
|
+
// Utility Classes
|
|
474
|
+
export class MicrotaskUpdateBatcher {
|
|
475
|
+
constructor(player: Player);
|
|
476
|
+
player: Player | null;
|
|
477
|
+
updates: any;
|
|
478
|
+
scheduled: number;
|
|
479
|
+
flush: () => Promise<void>;
|
|
480
|
+
|
|
481
|
+
batch(data: any, immediate?: boolean): Promise<void>;
|
|
482
|
+
destroy(): void;
|
|
483
|
+
_flush(): Promise<void>;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
export class CircularBuffer {
|
|
487
|
+
constructor(size?: number);
|
|
488
|
+
buffer: any[];
|
|
489
|
+
size: number;
|
|
490
|
+
index: number;
|
|
491
|
+
count: number;
|
|
492
|
+
|
|
493
|
+
push(item: any): void;
|
|
494
|
+
getLast(): any;
|
|
495
|
+
clear(): void;
|
|
496
|
+
toArray(): any[];
|
|
497
|
+
}
|
|
498
|
+
|
|
289
499
|
// Configuration Interfaces
|
|
290
500
|
export interface AquaOptions {
|
|
291
501
|
shouldDeleteMessage?: boolean;
|
|
@@ -296,6 +506,10 @@ declare module "aqualink" {
|
|
|
296
506
|
send?: (payload: any) => void;
|
|
297
507
|
autoResume?: boolean;
|
|
298
508
|
infiniteReconnects?: boolean;
|
|
509
|
+
urlFilteringEnabled?: boolean;
|
|
510
|
+
restrictedDomains?: string[];
|
|
511
|
+
allowedDomains?: string[];
|
|
512
|
+
loadBalancer?: LoadBalancerStrategy;
|
|
299
513
|
failoverOptions?: FailoverOptions;
|
|
300
514
|
}
|
|
301
515
|
|
|
@@ -312,7 +526,7 @@ declare module "aqualink" {
|
|
|
312
526
|
export interface NodeOptions {
|
|
313
527
|
host: string;
|
|
314
528
|
name?: string;
|
|
315
|
-
port?: number;
|
|
529
|
+
port?: number | string;
|
|
316
530
|
password?: string;
|
|
317
531
|
secure?: boolean;
|
|
318
532
|
sessionId?: string;
|
|
@@ -427,14 +641,18 @@ declare module "aqualink" {
|
|
|
427
641
|
|
|
428
642
|
export interface TrackData {
|
|
429
643
|
encoded?: string;
|
|
644
|
+
track?: string;
|
|
430
645
|
info: TrackInfo;
|
|
431
646
|
playlist?: PlaylistInfo;
|
|
647
|
+
node?: Node;
|
|
648
|
+
nodes?: Node;
|
|
432
649
|
}
|
|
433
650
|
|
|
434
651
|
export interface PlaylistInfo {
|
|
435
652
|
name: string;
|
|
436
653
|
selectedTrack?: number;
|
|
437
654
|
thumbnail?: string;
|
|
655
|
+
title?: string;
|
|
438
656
|
}
|
|
439
657
|
|
|
440
658
|
export interface LavalinkException {
|
|
@@ -586,6 +804,53 @@ declare module "aqualink" {
|
|
|
586
804
|
skipTrackSource?: boolean;
|
|
587
805
|
}
|
|
588
806
|
|
|
807
|
+
// State Management Interfaces
|
|
808
|
+
export interface PlayerState {
|
|
809
|
+
guildId: string;
|
|
810
|
+
textChannel: string;
|
|
811
|
+
voiceChannel: string;
|
|
812
|
+
volume: number;
|
|
813
|
+
paused: boolean;
|
|
814
|
+
position: number;
|
|
815
|
+
current: Track | null;
|
|
816
|
+
queue: Track[];
|
|
817
|
+
repeat: LoopMode;
|
|
818
|
+
shuffle: boolean;
|
|
819
|
+
deaf: boolean;
|
|
820
|
+
connected: boolean;
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
export interface BrokenPlayerState extends PlayerState {
|
|
824
|
+
originalNodeId: string;
|
|
825
|
+
brokenAt: number;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
export interface MigrationResult {
|
|
829
|
+
success: boolean;
|
|
830
|
+
error?: any;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
export interface SavedPlayerData {
|
|
834
|
+
g: string; // guildId
|
|
835
|
+
t: string; // textChannel
|
|
836
|
+
v: string; // voiceChannel
|
|
837
|
+
u: string | null; // uri
|
|
838
|
+
p: number; // position
|
|
839
|
+
ts: number; // timestamp
|
|
840
|
+
q: string[]; // queue uris
|
|
841
|
+
r: string | null; // requester
|
|
842
|
+
vol: number; // volume
|
|
843
|
+
pa: boolean; // paused
|
|
844
|
+
pl: boolean; // playing
|
|
845
|
+
nw: string | null; // nowPlayingMessage id
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
export interface TrackResolutionOptions {
|
|
849
|
+
platform?: SearchSource;
|
|
850
|
+
node?: Node;
|
|
851
|
+
toFront?: boolean;
|
|
852
|
+
}
|
|
853
|
+
|
|
589
854
|
// Type Unions and Enums
|
|
590
855
|
export type SearchSource =
|
|
591
856
|
| 'ytsearch'
|
|
@@ -613,12 +878,18 @@ declare module "aqualink" {
|
|
|
613
878
|
| 'playlist'
|
|
614
879
|
| 'search'
|
|
615
880
|
| 'empty'
|
|
616
|
-
| 'error'
|
|
881
|
+
| 'error'
|
|
882
|
+
| 'LOAD_FAILED'
|
|
883
|
+
| 'NO_MATCHES';
|
|
617
884
|
|
|
618
885
|
export type RestVersion = 'v3' | 'v4';
|
|
619
886
|
|
|
620
887
|
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
621
888
|
|
|
889
|
+
export type LoadBalancerStrategy = 'leastLoad' | 'leastRest' | 'random';
|
|
890
|
+
|
|
891
|
+
export type EventHandler<T = any> = (...args: T[]) => void | Promise<void>;
|
|
892
|
+
|
|
622
893
|
// Event Interfaces
|
|
623
894
|
export interface AquaEvents {
|
|
624
895
|
'nodeConnect': (node: Node) => void;
|
|
@@ -654,6 +925,21 @@ declare module "aqualink" {
|
|
|
654
925
|
'error': (node: Node | null, error: Error) => void;
|
|
655
926
|
}
|
|
656
927
|
|
|
928
|
+
export interface PlayerEvents {
|
|
929
|
+
'destroy': () => void;
|
|
930
|
+
'playerUpdate': (packet: any) => void;
|
|
931
|
+
'event': (payload: any) => void;
|
|
932
|
+
'trackStart': (track: Track) => void;
|
|
933
|
+
'trackEnd': (track: Track, reason?: string) => void;
|
|
934
|
+
'trackError': (track: Track, error: any) => void;
|
|
935
|
+
'trackStuck': (track: Track, thresholdMs: number) => void;
|
|
936
|
+
'trackChange': (track: Track, payload: any) => void;
|
|
937
|
+
'socketClosed': (payload: any) => void;
|
|
938
|
+
'lyricsLine': (track: Track, payload: any) => void;
|
|
939
|
+
'lyricsFound': (track: Track, payload: any) => void;
|
|
940
|
+
'lyricsNotFound': (track: Track, payload: any) => void;
|
|
941
|
+
}
|
|
942
|
+
|
|
657
943
|
// Event Emitter Type Extensions for Aqua
|
|
658
944
|
interface Aqua {
|
|
659
945
|
on<K extends keyof AquaEvents>(event: K, listener: AquaEvents[K]): this;
|
|
@@ -677,22 +963,8 @@ declare module "aqualink" {
|
|
|
677
963
|
removeAllListeners<K extends keyof AquaEvents>(event?: K): this;
|
|
678
964
|
removeAllListeners(event?: string | symbol): this;
|
|
679
965
|
}
|
|
680
|
-
export interface PlayerEvents {
|
|
681
|
-
'destroy': () => void;
|
|
682
|
-
'playerUpdate': (packet: any) => void;
|
|
683
|
-
'event': (payload: any) => void;
|
|
684
|
-
'trackStart': (track: Track) => void;
|
|
685
|
-
'trackEnd': (track: Track, reason?: string) => void;
|
|
686
|
-
'trackError': (track: Track, error: any) => void;
|
|
687
|
-
'trackStuck': (track: Track, thresholdMs: number) => void;
|
|
688
|
-
'trackChange': (track: Track, payload: any) => void;
|
|
689
|
-
'socketClosed': (payload: any) => void;
|
|
690
|
-
'lyricsLine': (track: Track, payload: any) => void;
|
|
691
|
-
'lyricsFound': (track: Track, payload: any) => void;
|
|
692
|
-
'lyricsNotFound': (track: Track, payload: any) => void;
|
|
693
|
-
}
|
|
694
966
|
|
|
695
|
-
|
|
967
|
+
interface Player {
|
|
696
968
|
on<K extends keyof PlayerEvents>(event: K, listener: PlayerEvents[K]): this;
|
|
697
969
|
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
698
970
|
|
|
@@ -715,115 +987,6 @@ declare module "aqualink" {
|
|
|
715
987
|
removeAllListeners(event?: string | symbol): this;
|
|
716
988
|
}
|
|
717
989
|
|
|
718
|
-
// Missing Player Properties and Methods
|
|
719
|
-
interface Player {
|
|
720
|
-
// Additional properties found in implementation
|
|
721
|
-
self_deaf: boolean;
|
|
722
|
-
self_mute: boolean;
|
|
723
|
-
players: Set<Player>; // For Node class
|
|
724
|
-
|
|
725
|
-
// Internal properties
|
|
726
|
-
_updateBatcher: any;
|
|
727
|
-
_dataStore: Map<string, any>;
|
|
728
|
-
|
|
729
|
-
// Event handler methods (these are called internally)
|
|
730
|
-
trackStart(player: Player, track: Track): Promise<void>;
|
|
731
|
-
trackEnd(player: Player, track: Track, payload: any): Promise<void>;
|
|
732
|
-
trackError(player: Player, track: Track, payload: any): Promise<void>;
|
|
733
|
-
trackStuck(player: Player, track: Track, payload: any): Promise<void>;
|
|
734
|
-
trackChange(player: Player, track: Track, payload: any): Promise<void>;
|
|
735
|
-
socketClosed(player: Player, track: Track, payload: any): Promise<void>;
|
|
736
|
-
lyricsLine(player: Player, track: Track, payload: any): Promise<void>;
|
|
737
|
-
lyricsFound(player: Player, track: Track, payload: any): Promise<void>;
|
|
738
|
-
lyricsNotFound(player: Player, track: Track, payload: any): Promise<void>;
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
interface Node {
|
|
742
|
-
// Additional properties found in implementation
|
|
743
|
-
timeout: number;
|
|
744
|
-
maxPayload: number;
|
|
745
|
-
skipUTF8Validation: boolean;
|
|
746
|
-
_isConnecting: boolean;
|
|
747
|
-
_debugEnabled: boolean;
|
|
748
|
-
_headers: Record<string, string>;
|
|
749
|
-
_boundHandlers: Record<string, Function>;
|
|
750
|
-
|
|
751
|
-
// Methods missing from original definitions
|
|
752
|
-
_handleOpen(): Promise<void>;
|
|
753
|
-
_handleError(error: any): void;
|
|
754
|
-
_handleMessage(data: any, isBinary: boolean): void;
|
|
755
|
-
_handleClose(code: number, reason: any): void;
|
|
756
|
-
_handleReady(payload: any): Promise<void>;
|
|
757
|
-
_emitError(error: any): void;
|
|
758
|
-
_emitDebug(message: string | (() => string)): void;
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
interface Rest {
|
|
762
|
-
// Additional properties
|
|
763
|
-
timeout: number;
|
|
764
|
-
baseUrl: string;
|
|
765
|
-
defaultHeaders: Record<string, string>;
|
|
766
|
-
agent: any; // HTTP/HTTPS Agent
|
|
767
|
-
|
|
768
|
-
// Missing REST methods found in implementation
|
|
769
|
-
getPlayer(guildId: string): Promise<any>;
|
|
770
|
-
getPlayers(): Promise<any>;
|
|
771
|
-
decodeTrack(encodedTrack: string): Promise<any>;
|
|
772
|
-
decodeTracks(encodedTracks: string[]): Promise<any>;
|
|
773
|
-
getInfo(): Promise<NodeInfo>;
|
|
774
|
-
getVersion(): Promise<string>;
|
|
775
|
-
getRoutePlannerStatus(): Promise<any>;
|
|
776
|
-
freeRoutePlannerAddress(address: string): Promise<any>;
|
|
777
|
-
freeAllRoutePlannerAddresses(): Promise<any>;
|
|
778
|
-
destroy(): void;
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
interface Connection {
|
|
782
|
-
// Internal properties found in implementation
|
|
783
|
-
_player: Player;
|
|
784
|
-
_aqua: Aqua;
|
|
785
|
-
_nodes: Node;
|
|
786
|
-
_guildId: string;
|
|
787
|
-
_clientId: string;
|
|
788
|
-
_lastEndpoint: string | null;
|
|
789
|
-
_pendingUpdate: any;
|
|
790
|
-
_updateTimer: NodeJS.Timeout | null;
|
|
791
|
-
_hasDebugListeners: boolean;
|
|
792
|
-
_hasMoveListeners: boolean;
|
|
793
|
-
|
|
794
|
-
// Methods not in original definition
|
|
795
|
-
_extractRegion(endpoint: string): string | null;
|
|
796
|
-
_scheduleVoiceUpdate(isResume?: boolean): void;
|
|
797
|
-
_executeVoiceUpdate(): void;
|
|
798
|
-
_sendUpdate(payload: any): Promise<void>;
|
|
799
|
-
_handleDisconnect(): void;
|
|
800
|
-
_clearPendingUpdate(): void;
|
|
801
|
-
}
|
|
802
|
-
|
|
803
|
-
export type EventHandler<T = any> = (...args: T[]) => void | Promise<void>;
|
|
804
|
-
|
|
805
|
-
// Extended ResolveOptions for internal use
|
|
806
|
-
export interface ExtendedResolveOptions extends ResolveOptions {
|
|
807
|
-
node?: Node;
|
|
808
|
-
}
|
|
809
|
-
interface Plugin {
|
|
810
|
-
// Optional unload method should be properly typed
|
|
811
|
-
unload?(aqua: Aqua): void | Promise<void>;
|
|
812
|
-
}
|
|
813
|
-
|
|
814
|
-
export const LOOP_MODES: {
|
|
815
|
-
readonly NONE: 0;
|
|
816
|
-
readonly TRACK: 1;
|
|
817
|
-
readonly QUEUE: 2;
|
|
818
|
-
};
|
|
819
|
-
|
|
820
|
-
interface Player {
|
|
821
|
-
readonly EVENT_HANDLERS: Record<string, string>;
|
|
822
|
-
}
|
|
823
|
-
export interface TrackResolutionOptions {
|
|
824
|
-
toFront?: boolean;
|
|
825
|
-
}
|
|
826
|
-
|
|
827
990
|
// Additional Filter Preset Options
|
|
828
991
|
export interface FilterPresetOptions {
|
|
829
992
|
value?: number;
|
|
@@ -840,19 +1003,16 @@ declare module "aqualink" {
|
|
|
840
1003
|
body?: any;
|
|
841
1004
|
}
|
|
842
1005
|
|
|
843
|
-
//
|
|
844
|
-
export interface
|
|
845
|
-
|
|
846
|
-
t: string; // textChannel
|
|
847
|
-
v: string; // voiceChannel
|
|
848
|
-
u: string | null; // uri
|
|
849
|
-
p: number; // position
|
|
850
|
-
ts: number; // timestamp
|
|
851
|
-
q: string[]; // queue uris
|
|
852
|
-
r: string | null; // requester
|
|
853
|
-
vol: number; // volume
|
|
854
|
-
pa: boolean; // paused
|
|
855
|
-
pl: boolean; // playing
|
|
856
|
-
nw: string | null; // nowPlayingMessage id
|
|
1006
|
+
// Extended ResolveOptions for internal use
|
|
1007
|
+
export interface ExtendedResolveOptions extends ResolveOptions {
|
|
1008
|
+
node?: Node;
|
|
857
1009
|
}
|
|
1010
|
+
|
|
1011
|
+
// Export constants
|
|
1012
|
+
export const LOOP_MODES: {
|
|
1013
|
+
readonly NONE: 0;
|
|
1014
|
+
readonly TRACK: 1;
|
|
1015
|
+
readonly QUEUE: 2;
|
|
1016
|
+
};
|
|
1017
|
+
|
|
858
1018
|
}
|