lavalink-client 2.2.1 → 2.3.0

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 (90) hide show
  1. package/README.md +140 -20
  2. package/dist/cjs/index.d.ts +7 -1
  3. package/dist/cjs/index.js +7 -1
  4. package/dist/cjs/structures/Constants.d.ts +40 -0
  5. package/dist/cjs/structures/Constants.js +244 -0
  6. package/dist/cjs/structures/CustomSearches/BandCampSearch.d.ts +2 -2
  7. package/dist/cjs/structures/Filters.d.ts +2 -217
  8. package/dist/cjs/structures/Filters.js +12 -236
  9. package/dist/cjs/structures/LavalinkManager.d.ts +31 -166
  10. package/dist/cjs/structures/LavalinkManager.js +60 -8
  11. package/dist/cjs/structures/LavalinkManagerStatics.d.ts +1 -1
  12. package/dist/cjs/structures/LavalinkManagerStatics.js +1 -1
  13. package/dist/cjs/structures/Node.d.ts +15 -156
  14. package/dist/cjs/structures/Node.js +140 -51
  15. package/dist/cjs/structures/NodeManager.d.ts +54 -52
  16. package/dist/cjs/structures/NodeManager.js +77 -5
  17. package/dist/cjs/structures/Player.d.ts +31 -124
  18. package/dist/cjs/structures/Player.js +78 -43
  19. package/dist/cjs/structures/Queue.d.ts +113 -42
  20. package/dist/cjs/structures/Queue.js +169 -8
  21. package/dist/cjs/structures/Types/Filters.d.ts +190 -0
  22. package/dist/cjs/structures/Types/Manager.d.ts +184 -0
  23. package/dist/cjs/structures/Types/Manager.js +2 -0
  24. package/dist/cjs/structures/Types/Node.d.ts +216 -0
  25. package/dist/cjs/structures/Types/Node.js +2 -0
  26. package/dist/cjs/structures/Types/Player.d.ts +108 -0
  27. package/dist/cjs/structures/Types/Player.js +2 -0
  28. package/dist/cjs/structures/Types/Queue.d.ts +34 -0
  29. package/dist/cjs/structures/Types/Queue.js +2 -0
  30. package/dist/cjs/structures/{Track.d.ts → Types/Track.d.ts} +4 -2
  31. package/dist/cjs/structures/Types/Track.js +2 -0
  32. package/dist/cjs/structures/Types/Utils.d.ts +367 -0
  33. package/dist/cjs/structures/Types/Utils.js +2 -0
  34. package/dist/cjs/structures/Utils.d.ts +13 -369
  35. package/dist/cjs/structures/Utils.js +40 -18
  36. package/dist/esm/index.d.ts +7 -1
  37. package/dist/esm/index.js +7 -1
  38. package/dist/esm/structures/Constants.d.ts +40 -0
  39. package/dist/esm/structures/Constants.js +241 -0
  40. package/dist/esm/structures/CustomSearches/BandCampSearch.d.ts +2 -2
  41. package/dist/esm/structures/Filters.d.ts +2 -217
  42. package/dist/esm/structures/Filters.js +7 -231
  43. package/dist/esm/structures/LavalinkManager.d.ts +31 -166
  44. package/dist/esm/structures/LavalinkManager.js +58 -6
  45. package/dist/esm/structures/LavalinkManagerStatics.d.ts +1 -1
  46. package/dist/esm/structures/LavalinkManagerStatics.js +1 -1
  47. package/dist/esm/structures/Node.d.ts +15 -156
  48. package/dist/esm/structures/Node.js +132 -43
  49. package/dist/esm/structures/NodeManager.d.ts +54 -52
  50. package/dist/esm/structures/NodeManager.js +74 -2
  51. package/dist/esm/structures/Player.d.ts +31 -124
  52. package/dist/esm/structures/Player.js +77 -42
  53. package/dist/esm/structures/Queue.d.ts +113 -42
  54. package/dist/esm/structures/Queue.js +169 -8
  55. package/dist/esm/structures/Types/Filters.d.ts +190 -0
  56. package/dist/esm/structures/Types/Manager.d.ts +184 -0
  57. package/dist/esm/structures/Types/Manager.js +1 -0
  58. package/dist/esm/structures/Types/Node.d.ts +216 -0
  59. package/dist/esm/structures/Types/Node.js +1 -0
  60. package/dist/esm/structures/Types/Player.d.ts +108 -0
  61. package/dist/esm/structures/Types/Player.js +1 -0
  62. package/dist/esm/structures/Types/Queue.d.ts +34 -0
  63. package/dist/esm/structures/Types/Queue.js +1 -0
  64. package/dist/{types/structures → esm/structures/Types}/Track.d.ts +4 -2
  65. package/dist/esm/structures/Types/Track.js +1 -0
  66. package/dist/esm/structures/Types/Utils.d.ts +367 -0
  67. package/dist/esm/structures/Types/Utils.js +1 -0
  68. package/dist/esm/structures/Utils.d.ts +13 -369
  69. package/dist/esm/structures/Utils.js +40 -18
  70. package/dist/types/index.d.ts +7 -1
  71. package/dist/types/structures/Constants.d.ts +40 -0
  72. package/dist/types/structures/CustomSearches/BandCampSearch.d.ts +2 -2
  73. package/dist/types/structures/Filters.d.ts +2 -217
  74. package/dist/types/structures/LavalinkManager.d.ts +31 -166
  75. package/dist/types/structures/LavalinkManagerStatics.d.ts +1 -1
  76. package/dist/types/structures/Node.d.ts +15 -156
  77. package/dist/types/structures/NodeManager.d.ts +54 -52
  78. package/dist/types/structures/Player.d.ts +31 -124
  79. package/dist/types/structures/Queue.d.ts +113 -42
  80. package/dist/types/structures/Types/Filters.d.ts +190 -0
  81. package/dist/types/structures/Types/Manager.d.ts +184 -0
  82. package/dist/types/structures/Types/Node.d.ts +216 -0
  83. package/dist/types/structures/Types/Player.d.ts +108 -0
  84. package/dist/types/structures/Types/Queue.d.ts +34 -0
  85. package/dist/{esm/structures → types/structures/Types}/Track.d.ts +4 -2
  86. package/dist/types/structures/Types/Utils.d.ts +367 -0
  87. package/dist/types/structures/Utils.d.ts +13 -369
  88. package/package.json +1 -1
  89. /package/dist/cjs/structures/{Track.js → Types/Filters.js} +0 -0
  90. /package/dist/esm/structures/{Track.js → Types/Filters.js} +0 -0
@@ -1,182 +1,47 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from "events";
3
- import { LavalinkNodeOptions } from "./Node";
4
3
  import { NodeManager } from "./NodeManager";
5
- import { DestroyReasonsType, Player, PlayerJson, PlayerOptions } from "./Player";
6
- import { ManagerQueueOptions } from "./Queue";
7
- import { Track, UnresolvedTrack } from "./Track";
8
- import { ChannelDeletePacket, GuildShardPayload, ManagerUtils, MiniMap, SearchPlatform, SponsorBlockChaptersLoaded, SponsorBlockChapterStarted, SponsorBlockSegmentSkipped, SponsorBlockSegmentsLoaded, TrackEndEvent, TrackExceptionEvent, TrackStartEvent, TrackStuckEvent, VoicePacket, VoiceServer, VoiceState, WebSocketClosedEvent } from "./Utils";
9
- /** How the botclient is allowed to be structured */
10
- export interface BotClientOptions {
11
- /** Bot Client Id */
12
- id: string;
13
- /** Bot Client Username */
14
- username?: string;
15
- /** So users can pass entire objects / classes */
16
- [x: string | number | symbol]: unknown;
17
- }
18
- /** Sub Manager Options, for player specific things */
19
- export interface ManagerPlayerOptions {
20
- /** If the Lavalink Volume should be decremented by x number */
21
- volumeDecrementer?: number;
22
- /** How often it should update the the player Position */
23
- clientBasedPositionUpdateInterval?: number;
24
- /** What should be used as a searchPlatform, if no source was provided during the query */
25
- defaultSearchPlatform?: SearchPlatform;
26
- /** Applies the volume via a filter, not via the lavalink volume transformer */
27
- applyVolumeAsFilter?: boolean;
28
- /** Transforms the saved data of a requested user */
29
- requesterTransformer?: (requester: unknown) => unknown;
30
- /** What lavalink-client should do when the player reconnects */
31
- onDisconnect?: {
32
- /** Try to reconnect? -> If fails -> Destroy */
33
- autoReconnect?: boolean;
34
- /** Instantly destroy player (overrides autoReconnect) | Don't provide == disable feature*/
35
- destroyPlayer?: boolean;
36
- };
37
- onEmptyQueue?: {
38
- /** Get's executed onEmptyQueue -> You can do any track queue previous transformations, if you add a track to the queue -> it will play it, if not queueEnd will execute! */
39
- autoPlayFunction?: (player: Player, lastPlayedTrack: Track) => Promise<void>;
40
- destroyAfterMs?: number;
41
- };
42
- useUnresolvedData?: boolean;
43
- }
44
- /** Manager Options used to create the manager */
45
- export interface ManagerOptions {
46
- /** The Node Options, for all Nodes! (on init) */
47
- nodes: LavalinkNodeOptions[];
48
- /** @async The Function to send the voice connection changes from Lavalink to Discord */
49
- sendToShard: (guildId: string, payload: GuildShardPayload) => void;
50
- /** The Bot Client's Data for Authorization */
51
- client?: BotClientOptions;
52
- /** QueueOptions for all Queues */
53
- queueOptions?: ManagerQueueOptions;
54
- /** PlayerOptions for all Players */
55
- playerOptions?: ManagerPlayerOptions;
56
- /** If it should skip to the next Track on TrackEnd / TrackError etc. events */
57
- autoSkip?: boolean;
58
- /** If it should skip to the next Track if track.resolve errors while trying to play a track. */
59
- autoSkipOnResolveError?: boolean;
60
- /** If it should emit only new (unique) songs and not when a looping track (or similar) is plaid, default false */
61
- emitNewSongsOnly?: boolean;
62
- /** Only allow link requests with links either matching some of that regExp or including some of that string */
63
- linksWhitelist?: (RegExp | string)[];
64
- /** Never allow link requests with links either matching some of that regExp or including some of that string (doesn't even allow if it's whitelisted) */
65
- linksBlacklist?: (RegExp | string)[];
66
- /** If links should be allowed or not. If set to false, it will throw an error if a link was provided. */
67
- linksAllowed?: boolean;
68
- /** Advanced Options for the Library, which may or may not be "library breaking" */
69
- advancedOptions?: {
70
- /** Max duration for that the filter fix duration works (in ms) - default is 8mins */
71
- maxFilterFixDuration?: number;
72
- /** optional */
73
- debugOptions?: {
74
- /** For logging custom searches */
75
- logCustomSearches?: boolean;
76
- /** logs for debugging the "no-Audio" playing error */
77
- noAudio?: boolean;
78
- /** For Logging the Destroy function */
79
- playerDestroy?: {
80
- /** To show the debug reason at all times. */
81
- debugLog?: boolean;
82
- /** If you get 'Error: Use Player#destroy("reason") not LavalinkManager#deletePlayer() to stop the Player' put it on true */
83
- dontThrowError?: boolean;
84
- };
85
- };
86
- };
87
- }
88
- export interface LavalinkManagerEvents {
89
- /**
90
- * Emitted when a Track started playing.
91
- * @event Manager#trackStart
92
- */
93
- "trackStart": (player: Player, track: Track, payload: TrackStartEvent) => void;
94
- /**
95
- * Emitted when a Track finished.
96
- * @event Manager#trackEnd
97
- */
98
- "trackEnd": (player: Player, track: Track, payload: TrackEndEvent) => void;
99
- /**
100
- * Emitted when a Track got stuck while playing.
101
- * @event Manager#trackStuck
102
- */
103
- "trackStuck": (player: Player, track: Track | null, payload: TrackStuckEvent) => void;
104
- /**
105
- * Emitted when a Track errored.
106
- * @event Manager#trackError
107
- */
108
- "trackError": (player: Player, track: Track | UnresolvedTrack | null, payload: TrackExceptionEvent) => void;
109
- /**
110
- * Emitted when the Playing finished and no more tracks in the queue.
111
- * @event Manager#queueEnd
112
- */
113
- "queueEnd": (player: Player, track: Track, payload: TrackEndEvent | TrackStuckEvent | TrackExceptionEvent) => void;
114
- /**
115
- * Emitted when a Player is created.
116
- * @event Manager#playerCreate
117
- */
118
- "playerCreate": (player: Player) => void;
119
- /**
120
- * Emitted when a Player is moved within the channel.
121
- * @event Manager#playerMove
122
- */
123
- "playerMove": (player: Player, oldVoiceChannelId: string, newVoiceChannelId: string) => void;
124
- /**
125
- * Emitted when a Player is disconnected from a channel.
126
- * @event Manager#playerDisconnect
127
- */
128
- "playerDisconnect": (player: Player, voiceChannelId: string) => void;
129
- /**
130
- * Emitted when a Node-Socket got closed for a specific Player.
131
- * @event Manager#playerSocketClosed
132
- */
133
- "playerSocketClosed": (player: Player, payload: WebSocketClosedEvent) => void;
134
- /**
135
- * Emitted when a Player get's destroyed
136
- * @event Manager#playerDestroy
137
- */
138
- "playerDestroy": (player: Player, destroyReason?: DestroyReasonsType) => void;
4
+ import { Player } from "./Player";
5
+ import { ManagerUtils, MiniMap } from "./Utils";
6
+ import type { BotClientOptions, LavalinkManagerEvents, ManagerOptions } from "./Types/Manager";
7
+ import type { PlayerOptions } from "./Types/Player";
8
+ import type { ChannelDeletePacket, VoicePacket, VoiceServer, VoiceState } from "./Types/Utils";
9
+ export declare class LavalinkManager extends EventEmitter {
139
10
  /**
140
- * Always emits when the player (on lavalink side) got updated
141
- * @event Manager#playerUpdate
11
+ * Emit an event
12
+ * @param event The event to emit
13
+ * @param args The arguments to pass to the event
14
+ * @returns
142
15
  */
143
- "playerUpdate": (oldPlayerJson: PlayerJson, newPlayer: Player) => void;
16
+ emit<Event extends keyof LavalinkManagerEvents>(event: Event, ...args: Parameters<LavalinkManagerEvents[Event]>): boolean;
144
17
  /**
145
- * SPONSORBLOCK-PLUGIN EVENT
146
- * Emitted when Segments are loaded
147
- * @link https://github.com/topi314/Sponsorblock-Plugin#segmentsloaded
148
- * @event Manager#trackError
18
+ * Add an event listener
19
+ * @param event The event to listen to
20
+ * @param listener The listener to add
21
+ * @returns
149
22
  */
150
- "SegmentsLoaded": (player: Player, track: Track | UnresolvedTrack, payload: SponsorBlockSegmentsLoaded) => void;
23
+ on<Event extends keyof LavalinkManagerEvents>(event: Event, listener: LavalinkManagerEvents[Event]): this;
151
24
  /**
152
- * SPONSORBLOCK-PLUGIN EVENT
153
- * Emitted when a specific Segment was skipped
154
- * @link https://github.com/topi314/Sponsorblock-Plugin#segmentskipped
155
- * @event Manager#trackError
25
+ * Add an event listener that only fires once
26
+ * @param event The event to listen to
27
+ * @param listener The listener to add
28
+ * @returns
156
29
  */
157
- "SegmentSkipped": (player: Player, track: Track | UnresolvedTrack, payload: SponsorBlockSegmentSkipped) => void;
30
+ once<Event extends keyof LavalinkManagerEvents>(event: Event, listener: LavalinkManagerEvents[Event]): this;
158
31
  /**
159
- * SPONSORBLOCK-PLUGIN EVENT
160
- * Emitted when a specific Chapter starts playing
161
- * @link https://github.com/topi314/Sponsorblock-Plugin#chapterstarted
162
- * @event Manager#trackError
32
+ * Remove an event listener
33
+ * @param event The event to remove the listener from
34
+ * @param listener The listener to remove
35
+ * @returns
163
36
  */
164
- "ChapterStarted": (player: Player, track: Track | UnresolvedTrack, payload: SponsorBlockChapterStarted) => void;
37
+ off<Event extends keyof LavalinkManagerEvents>(event: Event, listener: LavalinkManagerEvents[Event]): this;
165
38
  /**
166
- * SPONSORBLOCK-PLUGIN EVENT
167
- * Emitted when Chapters are loaded
168
- * @link https://github.com/topi314/Sponsorblock-Plugin#chaptersloaded
169
- * @event Manager#trackError
39
+ * Remove an event listener
40
+ * @param event The event to remove the listener from
41
+ * @param listener The listener to remove
42
+ * @returns
170
43
  */
171
- "ChaptersLoaded": (player: Player, track: Track | UnresolvedTrack, payload: SponsorBlockChaptersLoaded) => void;
172
- }
173
- export interface LavalinkManager {
174
- /** @private */
175
- on<U extends keyof LavalinkManagerEvents>(event: U, listener: LavalinkManagerEvents[U]): this;
176
- /** @private */
177
- emit<U extends keyof LavalinkManagerEvents>(event: U, ...args: Parameters<LavalinkManagerEvents[U]>): boolean;
178
- }
179
- export declare class LavalinkManager extends EventEmitter {
44
+ removeListener<Event extends keyof LavalinkManagerEvents>(event: Event, listener: LavalinkManagerEvents[Event]): this;
180
45
  /** The Options of LavalinkManager (changeable) */
181
46
  options: ManagerOptions;
182
47
  /** LavalinkManager's NodeManager to manage all Nodes */
@@ -2,11 +2,57 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LavalinkManager = void 0;
4
4
  const events_1 = require("events");
5
+ const Constants_1 = require("./Constants");
5
6
  const NodeManager_1 = require("./NodeManager");
6
7
  const Player_1 = require("./Player");
7
8
  const Queue_1 = require("./Queue");
8
9
  const Utils_1 = require("./Utils");
9
10
  class LavalinkManager extends events_1.EventEmitter {
11
+ /**
12
+ * Emit an event
13
+ * @param event The event to emit
14
+ * @param args The arguments to pass to the event
15
+ * @returns
16
+ */
17
+ emit(event, ...args) {
18
+ return super.emit(event, ...args);
19
+ }
20
+ /**
21
+ * Add an event listener
22
+ * @param event The event to listen to
23
+ * @param listener The listener to add
24
+ * @returns
25
+ */
26
+ on(event, listener) {
27
+ return super.on(event, listener);
28
+ }
29
+ /**
30
+ * Add an event listener that only fires once
31
+ * @param event The event to listen to
32
+ * @param listener The listener to add
33
+ * @returns
34
+ */
35
+ once(event, listener) {
36
+ return super.once(event, listener);
37
+ }
38
+ /**
39
+ * Remove an event listener
40
+ * @param event The event to remove the listener from
41
+ * @param listener The listener to remove
42
+ * @returns
43
+ */
44
+ off(event, listener) {
45
+ return super.off(event, listener);
46
+ }
47
+ /**
48
+ * Remove an event listener
49
+ * @param event The event to remove the listener from
50
+ * @param listener The listener to remove
51
+ * @returns
52
+ */
53
+ removeListener(event, listener) {
54
+ return super.removeListener(event, listener);
55
+ }
10
56
  /** The Options of LavalinkManager (changeable) */
11
57
  options;
12
58
  /** LavalinkManager's NodeManager to manage all Nodes */
@@ -257,7 +303,7 @@ class LavalinkManager extends events_1.EventEmitter {
257
303
  const oldPlayer = this.getPlayer(guildId);
258
304
  if (!oldPlayer)
259
305
  return;
260
- // oldPlayer.connected is operational. you could also do oldPlayer.voice?.token
306
+ // oldPlayer.connected is operational. you could also do oldPlayer.voice?.token
261
307
  if (oldPlayer.voiceChannelId === "string" && oldPlayer.connected && !oldPlayer.get("internal_destroywithoutdisconnect")) {
262
308
  if (!this.options?.advancedOptions?.debugOptions?.playerDestroy?.dontThrowError)
263
309
  throw new Error(`Use Player#destroy() not LavalinkManager#deletePlayer() to stop the Player ${JSON.stringify(oldPlayer.toJSON?.())}`);
@@ -352,7 +398,7 @@ class LavalinkManager extends events_1.EventEmitter {
352
398
  return;
353
399
  const player = this.getPlayer(update.guild_id);
354
400
  if (player && player.voiceChannelId === update.id)
355
- return void player.destroy(Player_1.DestroyReasons.ChannelDeleted);
401
+ return void player.destroy(Constants_1.DestroyReasons.ChannelDeleted);
356
402
  }
357
403
  // for voice updates
358
404
  if (["VOICE_STATE_UPDATE", "VOICE_SERVER_UPDATE"].includes(data.t)) {
@@ -409,19 +455,25 @@ class LavalinkManager extends events_1.EventEmitter {
409
455
  }
410
456
  else {
411
457
  if (this.options?.playerOptions?.onDisconnect?.destroyPlayer === true) {
412
- return void await player.destroy(Player_1.DestroyReasons.Disconnected);
458
+ return void await player.destroy(Constants_1.DestroyReasons.Disconnected);
413
459
  }
414
460
  this.emit("playerDisconnect", player, player.voiceChannelId);
415
- if (!player.paused)
416
- await player.pause();
417
461
  if (this.options?.playerOptions?.onDisconnect?.autoReconnect === true) {
418
462
  try {
463
+ const positionPrevios = player.position;
464
+ console.debug("Auto reconnect", positionPrevios, player.lastPosition);
419
465
  await player.connect();
466
+ // replay the current playing stream
467
+ await player.play({
468
+ position: positionPrevios,
469
+ paused: player.paused,
470
+ clientTrack: player.queue.current,
471
+ });
420
472
  }
421
- catch {
422
- return void await player.destroy(Player_1.DestroyReasons.PlayerReconnectFail);
473
+ catch (e) {
474
+ console.error(e);
475
+ return void await player.destroy(Constants_1.DestroyReasons.PlayerReconnectFail);
423
476
  }
424
- return void player.paused && await player.resume();
425
477
  }
426
478
  player.voiceChannelId = null;
427
479
  player.voice = Object.assign({});
@@ -1,4 +1,4 @@
1
- import { ClientCustomSearchPlatformUtils, LavalinkSearchPlatform, SearchPlatform, SourcesRegex } from "./Utils";
1
+ import type { ClientCustomSearchPlatformUtils, LavalinkSearchPlatform, SearchPlatform, SourcesRegex } from "./Types/Utils";
2
2
  /** Default Sources Record, to allow source parsing with multiple inputs. */
3
3
  export declare const DefaultSources: Record<SearchPlatform, LavalinkSearchPlatform | ClientCustomSearchPlatformUtils>;
4
4
  /** Lavalink Plugins definiton */
@@ -26,7 +26,7 @@ exports.DefaultSources = {
26
26
  "am": "amsearch",
27
27
  "musicapple": "amsearch",
28
28
  "music apple": "amsearch",
29
- // spotify
29
+ // spotify
30
30
  "spotify": "spsearch",
31
31
  "spsearch": "spsearch",
32
32
  "sp": "spsearch",
@@ -1,162 +1,18 @@
1
- /// <reference types="node" />
2
- import internal from "stream";
3
- import { NodeManager } from "./NodeManager";
4
- import { DestroyReasonsType, Player } from "./Player";
5
- import { Track } from "./Track";
6
- import { Base64, InvalidLavalinkRestRequest, LavalinkPlayer, LavaSearchQuery, LavaSearchResponse, PlayerUpdateInfo, RoutePlanner, SearchQuery, SearchResult, Session } from "./Utils";
7
- /** Ability to manipulate fetch requests */
8
- export type ModifyRequest = (options: RequestInit & {
9
- path: string;
10
- extraQueryUrlParams?: URLSearchParams;
11
- }) => void;
12
- export declare const validSponsorBlocks: string[];
13
- export type SponsorBlockSegment = "sponsor" | "selfpromo" | "interaction" | "intro" | "outro" | "preview" | "music_offtopic" | "filler";
14
- /**
15
- * Node Options for creating a lavalink node
16
- */
17
- export interface LavalinkNodeOptions {
18
- /** The Lavalink Server-Ip / Domain-URL */
19
- host: string;
20
- /** The Lavalink Connection Port */
21
- port: number;
22
- /** The Lavalink Password / Authorization-Key */
23
- authorization: string;
24
- /** Does the Server use ssl (https) */
25
- secure?: boolean;
26
- /** RESUME THE PLAYER? by providing a sessionid on the node-creation */
27
- sessionId?: string;
28
- /** Add a Custom ID to the node, for later use */
29
- id?: string;
30
- /** Voice Regions of this Node */
31
- regions?: string[];
32
- /** The retryAmount for the node. */
33
- retryAmount?: number;
34
- /** The retryDelay for the node. */
35
- retryDelay?: number;
36
- /** signal for cancelling requests - default: AbortSignal.timeout(options.requestSignalTimeoutMS || 10000) - put <= 0 to disable */
37
- requestSignalTimeoutMS?: number;
38
- }
39
- /**
40
- * Memory Stats object from lavalink
41
- */
42
- export interface MemoryStats {
43
- /** The free memory of the allocated amount. */
44
- free: number;
45
- /** The used memory of the allocated amount. */
46
- used: number;
47
- /** The total allocated memory. */
48
- allocated: number;
49
- /** The reservable memory. */
50
- reservable: number;
51
- }
52
- /**
53
- * CPU Stats object from lavalink
54
- */
55
- export interface CPUStats {
56
- /** The core amount the host machine has. */
57
- cores: number;
58
- /** The system load. */
59
- systemLoad: number;
60
- /** The lavalink load. */
61
- lavalinkLoad: number;
62
- }
63
- /**
64
- * FrameStats Object from lavalink
65
- */
66
- export interface FrameStats {
67
- /** The amount of sent frames. */
68
- sent?: number;
69
- /** The amount of nulled frames. */
70
- nulled?: number;
71
- /** The amount of deficit frames. */
72
- deficit?: number;
73
- }
74
- /**
75
- * BaseNodeStats object from Lavalink
76
- */
77
- export interface BaseNodeStats {
78
- /** The amount of players on the node. */
79
- players: number;
80
- /** The amount of playing players on the node. */
81
- playingPlayers: number;
82
- /** The uptime for the node. */
83
- uptime: number;
84
- /** The memory stats for the node. */
85
- memory: MemoryStats;
86
- /** The cpu stats for the node. */
87
- cpu: CPUStats;
88
- /** The frame stats for the node. */
89
- frameStats: FrameStats;
90
- }
91
- /**
92
- * Interface for nodeStats from lavalink
93
- */
94
- export interface NodeStats extends BaseNodeStats {
95
- /** The frame stats for the node. */
96
- frameStats: FrameStats;
97
- }
98
- /**
99
- * Entire lavalink information object from lavalink
100
- */
101
- export interface LavalinkInfo {
102
- /** The version of this Lavalink server */
103
- version: VersionObject;
104
- /** The millisecond unix timestamp when this Lavalink jar was built */
105
- buildTime: number;
106
- /** The git information of this Lavalink server */
107
- git: GitObject;
108
- /** The JVM version this Lavalink server runs on */
109
- jvm: string;
110
- /** The Lavaplayer version being used by this server */
111
- lavaplayer: string;
112
- /** The enabled source managers for this server */
113
- sourceManagers: string[];
114
- /** The enabled filters for this server */
115
- filters: string[];
116
- /** The enabled plugins for this server */
117
- plugins: PluginObject[];
118
- }
119
- /**
120
- * Lavalink's version object from lavalink
121
- */
122
- export interface VersionObject {
123
- /** The full version string of this Lavalink server */
124
- semver: string;
125
- /** The major version of this Lavalink server */
126
- major: number;
127
- /** The minor version of this Lavalink server */
128
- minor: number;
129
- /** The patch version of this Lavalink server */
130
- patch: internal;
131
- /** The pre-release version according to semver as a . separated list of identifiers */
132
- preRelease?: string;
133
- /** The build metadata according to semver as a . separated list of identifiers */
134
- build?: string;
135
- }
136
- /**
137
- * Git information object from lavalink
138
- */
139
- export interface GitObject {
140
- /** The branch this Lavalink server was built on */
141
- branch: string;
142
- /** The commit this Lavalink server was built on */
143
- commit: string;
144
- /** The millisecond unix timestamp for when the commit was created */
145
- commitTime: string;
146
- }
147
- /**
148
- * Lavalink's plugins object from lavalink's plugin
149
- */
150
- export interface PluginObject {
151
- /** The name of the plugin */
152
- name: string;
153
- /** The version of the plugin */
154
- version: string;
155
- }
1
+ import type { Player } from "./Player";
2
+ import type { DestroyReasonsType } from "./Types/Player";
3
+ import type { Track } from "./Types/Track";
4
+ import type { Base64, InvalidLavalinkRestRequest, LavalinkPlayer, LavaSearchQuery, LavaSearchResponse, PlayerUpdateInfo, RoutePlanner, SearchQuery, SearchResult, Session } from "./Types/Utils";
5
+ import type { NodeManager } from "./NodeManager";
6
+ import type { BaseNodeStats, LavalinkInfo, LavalinkNodeOptions, ModifyRequest, NodeStats, SponsorBlockSegment } from "./Types/Node";
156
7
  /**
157
8
  * Lavalink Node creator class
158
9
  */
159
10
  export declare class LavalinkNode {
11
+ private heartBeatPingTimestamp;
12
+ private heartBeatPongTimestamp;
13
+ get heartBeatPing(): number;
14
+ private heartBeatInterval?;
15
+ private pingTimeout?;
160
16
  /** The provided Options of the Node */
161
17
  options: LavalinkNodeOptions;
162
18
  /** The amount of rest calls the node has made. */
@@ -300,6 +156,7 @@ export declare class LavalinkNode {
300
156
  * ```
301
157
  */
302
158
  connect(sessionId?: string): void;
159
+ private heartBeat;
303
160
  /**
304
161
  * Get the id of the node
305
162
  *
@@ -332,6 +189,7 @@ export declare class LavalinkNode {
332
189
  * ```
333
190
  */
334
191
  get connected(): boolean;
192
+ isAlive: boolean;
335
193
  /**
336
194
  * Returns the current ConnectionStatus
337
195
  *
@@ -356,7 +214,7 @@ export declare class LavalinkNode {
356
214
  * const playersOfLavalink = await node?.fetchAllPlayers();
357
215
  * ```
358
216
  */
359
- fetchAllPlayers(): Promise<LavalinkPlayer[]>;
217
+ fetchAllPlayers(): Promise<LavalinkPlayer[] | InvalidLavalinkRestRequest>;
360
218
  /**
361
219
  * Gets specific Player Information
362
220
  * @returns lavalink player object if player exists on lavalink
@@ -517,6 +375,7 @@ export declare class LavalinkNode {
517
375
  private message;
518
376
  /** @private middleware util function for handling all kind of events from websocket */
519
377
  private handleEvent;
378
+ private getTrackOfPayload;
520
379
  /** @private util function for handling trackStart event */
521
380
  private trackStart;
522
381
  /** @private util function for handling trackEnd event */