lavalink-client 2.7.6 → 2.7.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.
package/dist/index.d.mts CHANGED
@@ -1959,6 +1959,66 @@ interface PlayOptions extends LavalinkPlayOptions {
1959
1959
  clientTrack?: Track | UnresolvedTrack;
1960
1960
  }
1961
1961
 
1962
+ type NodeLinkEventTypes = "PlayerCreatedEvent" | "PlayerDestroyedEvent" | "PlayerConnectedEvent" | "PlayerReconnectingEvent" | "VolumeChangedEvent" | "FiltersChangedEvent" | "SeekEvent" | "PauseEvent" | "ConnectionStatusEvent" | "MixStartedEvent" | "MixEndedEvent";
1963
+ interface NodeLinkBaseEvent {
1964
+ op: "event";
1965
+ type: NodeLinkEventTypes;
1966
+ guildId: string;
1967
+ }
1968
+ interface PlayerCreatedEvent extends NodeLinkBaseEvent {
1969
+ type: "PlayerCreatedEvent";
1970
+ }
1971
+ interface PlayerDestroyedEvent extends NodeLinkBaseEvent {
1972
+ type: "PlayerDestroyedEvent";
1973
+ }
1974
+ interface PlayerConnectedEvent extends NodeLinkBaseEvent {
1975
+ type: "PlayerConnectedEvent";
1976
+ }
1977
+ interface PlayerReconnectingEvent extends NodeLinkBaseEvent {
1978
+ type: "PlayerReconnectingEvent";
1979
+ }
1980
+ interface VolumeChangedEvent extends NodeLinkBaseEvent {
1981
+ type: "VolumeChangedEvent";
1982
+ /** New volume level (0-1000) */
1983
+ volume: number;
1984
+ }
1985
+ interface FiltersChangedEvent extends NodeLinkBaseEvent {
1986
+ type: "FiltersChangedEvent";
1987
+ filters: LavalinkFilterData;
1988
+ }
1989
+ interface SeekEvent extends NodeLinkBaseEvent {
1990
+ type: "SeekEvent";
1991
+ /** New position in milliseconds */
1992
+ position: number;
1993
+ }
1994
+ interface PauseEvent extends NodeLinkBaseEvent {
1995
+ type: "PauseEvent";
1996
+ /** Whether playback is now paused (true) or resumed (false) */
1997
+ paused: boolean;
1998
+ }
1999
+ interface ConnectionStatusEvent extends NodeLinkBaseEvent {
2000
+ type: "ConnectionStatusEvent";
2001
+ /** Current connection status */
2002
+ connected: boolean;
2003
+ }
2004
+ interface MixStartedEvent extends NodeLinkBaseEvent {
2005
+ type: "MixStartedEvent";
2006
+ /** Unique identifier for the mix layer */
2007
+ mixId: string;
2008
+ /** Full track information of the mixed layer */
2009
+ track: LavalinkTrack;
2010
+ /** Volume of the mixed layer (0.0 to 1.0) */
2011
+ volume: number;
2012
+ }
2013
+ interface MixEndedEvent extends NodeLinkBaseEvent {
2014
+ type: "MixEndedEvent";
2015
+ /** Unique identifier for the mix layer */
2016
+ mixId: string;
2017
+ /** Reason the mix layer ended (FINISHED, REMOVED, ERROR, MAIN_ENDED) */
2018
+ reason: "FINISHED" | "REMOVED" | "ERROR" | "MAIN_ENDED" | string;
2019
+ }
2020
+ type NodeLinkEventPayload<T extends NodeLinkEventTypes> = T extends "PlayerCreatedEvent" ? PlayerCreatedEvent : T extends "PlayerDestroyedEvent" ? PlayerDestroyedEvent : T extends "PlayerConnectedEvent" ? PlayerConnectedEvent : T extends "PlayerReconnectingEvent" ? PlayerReconnectingEvent : T extends "VolumeChangedEvent" ? VolumeChangedEvent : T extends "FiltersChangedEvent" ? FiltersChangedEvent : T extends "SeekEvent" ? SeekEvent : T extends "PauseEvent" ? PauseEvent : T extends "ConnectionStatusEvent" ? ConnectionStatusEvent : T extends "MixStartedEvent" ? MixStartedEvent : T extends "MixEndedEvent" ? MixEndedEvent : never;
2021
+
1962
2022
  /** Ability to manipulate fetch requests */
1963
2023
  type ModifyRequest = (options: RequestInit & {
1964
2024
  path: string;
@@ -2224,6 +2284,25 @@ interface NodeManagerEvents {
2224
2284
  sessionId: string;
2225
2285
  op: "ready";
2226
2286
  }, players: LavalinkPlayer[] | InvalidLavalinkRestRequest) => void;
2287
+ /**
2288
+ * Event Handler for Nodelink specific events https://nodelink.js.org/docs/api/websocket Fully typed and generic based on the eventName.
2289
+ * @event Manager.nodeManager#nodeLinkEvent
2290
+ * @example
2291
+ *
2292
+ * ```ts
2293
+ * this.nodeManager.on("nodeLinkEvent", (node, event, player, track, payload) => {
2294
+ * if (event === "SeekEvent") {
2295
+ * console.log("new position:", payload.position);
2296
+ * }
2297
+ * if (event === "FiltersChangedEvent") {
2298
+ * console.log("new filters state", payload.filters);
2299
+ * }
2300
+ * });
2301
+ * ```
2302
+ */
2303
+ "nodeLinkEvent": (...args: {
2304
+ [K in NodeLinkEventTypes]: [node: LavalinkNode, event: K, player: Player, track: Track | null, payload: NodeLinkEventPayload<K>];
2305
+ }[NodeLinkEventTypes]) => void;
2227
2306
  }
2228
2307
  declare enum ReconnectionState {
2229
2308
  IDLE = "IDLE",
@@ -2721,6 +2800,14 @@ declare class LavalinkNode {
2721
2800
  private message;
2722
2801
  /** @private middleware util function for handling all kind of events from websocket */
2723
2802
  private handleEvent;
2803
+ /**
2804
+ * nodeLink specific events handling https://nodelink.js.org/docs/api/websocket#incoming-events-server--client
2805
+ * @param eventName
2806
+ * @param player
2807
+ * @param track
2808
+ * @param payload
2809
+ */
2810
+ private nodeLinkEventHandler;
2724
2811
  private getTrackOfPayload;
2725
2812
  /** @private util function for handling trackStart event */
2726
2813
  private trackStart;
package/dist/index.d.ts CHANGED
@@ -1959,6 +1959,66 @@ interface PlayOptions extends LavalinkPlayOptions {
1959
1959
  clientTrack?: Track | UnresolvedTrack;
1960
1960
  }
1961
1961
 
1962
+ type NodeLinkEventTypes = "PlayerCreatedEvent" | "PlayerDestroyedEvent" | "PlayerConnectedEvent" | "PlayerReconnectingEvent" | "VolumeChangedEvent" | "FiltersChangedEvent" | "SeekEvent" | "PauseEvent" | "ConnectionStatusEvent" | "MixStartedEvent" | "MixEndedEvent";
1963
+ interface NodeLinkBaseEvent {
1964
+ op: "event";
1965
+ type: NodeLinkEventTypes;
1966
+ guildId: string;
1967
+ }
1968
+ interface PlayerCreatedEvent extends NodeLinkBaseEvent {
1969
+ type: "PlayerCreatedEvent";
1970
+ }
1971
+ interface PlayerDestroyedEvent extends NodeLinkBaseEvent {
1972
+ type: "PlayerDestroyedEvent";
1973
+ }
1974
+ interface PlayerConnectedEvent extends NodeLinkBaseEvent {
1975
+ type: "PlayerConnectedEvent";
1976
+ }
1977
+ interface PlayerReconnectingEvent extends NodeLinkBaseEvent {
1978
+ type: "PlayerReconnectingEvent";
1979
+ }
1980
+ interface VolumeChangedEvent extends NodeLinkBaseEvent {
1981
+ type: "VolumeChangedEvent";
1982
+ /** New volume level (0-1000) */
1983
+ volume: number;
1984
+ }
1985
+ interface FiltersChangedEvent extends NodeLinkBaseEvent {
1986
+ type: "FiltersChangedEvent";
1987
+ filters: LavalinkFilterData;
1988
+ }
1989
+ interface SeekEvent extends NodeLinkBaseEvent {
1990
+ type: "SeekEvent";
1991
+ /** New position in milliseconds */
1992
+ position: number;
1993
+ }
1994
+ interface PauseEvent extends NodeLinkBaseEvent {
1995
+ type: "PauseEvent";
1996
+ /** Whether playback is now paused (true) or resumed (false) */
1997
+ paused: boolean;
1998
+ }
1999
+ interface ConnectionStatusEvent extends NodeLinkBaseEvent {
2000
+ type: "ConnectionStatusEvent";
2001
+ /** Current connection status */
2002
+ connected: boolean;
2003
+ }
2004
+ interface MixStartedEvent extends NodeLinkBaseEvent {
2005
+ type: "MixStartedEvent";
2006
+ /** Unique identifier for the mix layer */
2007
+ mixId: string;
2008
+ /** Full track information of the mixed layer */
2009
+ track: LavalinkTrack;
2010
+ /** Volume of the mixed layer (0.0 to 1.0) */
2011
+ volume: number;
2012
+ }
2013
+ interface MixEndedEvent extends NodeLinkBaseEvent {
2014
+ type: "MixEndedEvent";
2015
+ /** Unique identifier for the mix layer */
2016
+ mixId: string;
2017
+ /** Reason the mix layer ended (FINISHED, REMOVED, ERROR, MAIN_ENDED) */
2018
+ reason: "FINISHED" | "REMOVED" | "ERROR" | "MAIN_ENDED" | string;
2019
+ }
2020
+ type NodeLinkEventPayload<T extends NodeLinkEventTypes> = T extends "PlayerCreatedEvent" ? PlayerCreatedEvent : T extends "PlayerDestroyedEvent" ? PlayerDestroyedEvent : T extends "PlayerConnectedEvent" ? PlayerConnectedEvent : T extends "PlayerReconnectingEvent" ? PlayerReconnectingEvent : T extends "VolumeChangedEvent" ? VolumeChangedEvent : T extends "FiltersChangedEvent" ? FiltersChangedEvent : T extends "SeekEvent" ? SeekEvent : T extends "PauseEvent" ? PauseEvent : T extends "ConnectionStatusEvent" ? ConnectionStatusEvent : T extends "MixStartedEvent" ? MixStartedEvent : T extends "MixEndedEvent" ? MixEndedEvent : never;
2021
+
1962
2022
  /** Ability to manipulate fetch requests */
1963
2023
  type ModifyRequest = (options: RequestInit & {
1964
2024
  path: string;
@@ -2224,6 +2284,25 @@ interface NodeManagerEvents {
2224
2284
  sessionId: string;
2225
2285
  op: "ready";
2226
2286
  }, players: LavalinkPlayer[] | InvalidLavalinkRestRequest) => void;
2287
+ /**
2288
+ * Event Handler for Nodelink specific events https://nodelink.js.org/docs/api/websocket Fully typed and generic based on the eventName.
2289
+ * @event Manager.nodeManager#nodeLinkEvent
2290
+ * @example
2291
+ *
2292
+ * ```ts
2293
+ * this.nodeManager.on("nodeLinkEvent", (node, event, player, track, payload) => {
2294
+ * if (event === "SeekEvent") {
2295
+ * console.log("new position:", payload.position);
2296
+ * }
2297
+ * if (event === "FiltersChangedEvent") {
2298
+ * console.log("new filters state", payload.filters);
2299
+ * }
2300
+ * });
2301
+ * ```
2302
+ */
2303
+ "nodeLinkEvent": (...args: {
2304
+ [K in NodeLinkEventTypes]: [node: LavalinkNode, event: K, player: Player, track: Track | null, payload: NodeLinkEventPayload<K>];
2305
+ }[NodeLinkEventTypes]) => void;
2227
2306
  }
2228
2307
  declare enum ReconnectionState {
2229
2308
  IDLE = "IDLE",
@@ -2721,6 +2800,14 @@ declare class LavalinkNode {
2721
2800
  private message;
2722
2801
  /** @private middleware util function for handling all kind of events from websocket */
2723
2802
  private handleEvent;
2803
+ /**
2804
+ * nodeLink specific events handling https://nodelink.js.org/docs/api/websocket#incoming-events-server--client
2805
+ * @param eventName
2806
+ * @param player
2807
+ * @param track
2808
+ * @param payload
2809
+ */
2810
+ private nodeLinkEventHandler;
2724
2811
  private getTrackOfPayload;
2725
2812
  /** @private util function for handling trackStart event */
2726
2813
  private trackStart;
package/dist/index.js CHANGED
@@ -2157,6 +2157,23 @@ var LavalinkNode = class {
2157
2157
  if (!payload?.guildId) return;
2158
2158
  const player = this._LManager.getPlayer(payload.guildId);
2159
2159
  if (!player) return;
2160
+ const NodeLinkEventType = payload.type;
2161
+ const NodeLinkExclusiveEvents = [
2162
+ "PlayerCreatedEvent",
2163
+ "PlayerDestroyedEvent",
2164
+ "PlayerConnectedEvent",
2165
+ "PlayerReconnectingEvent",
2166
+ "VolumeChangedEvent",
2167
+ "FiltersChangedEvent",
2168
+ "SeekEvent",
2169
+ "PauseEvent",
2170
+ "ConnectionStatusEvent",
2171
+ "MixStartedEvent",
2172
+ "MixEndedEvent"
2173
+ ];
2174
+ if (NodeLinkExclusiveEvents.includes(NodeLinkEventType) && (!this.info || this.info.isNodelink)) {
2175
+ return this.nodeLinkEventHandler(NodeLinkEventType, player, player.queue.current, payload);
2176
+ }
2160
2177
  switch (payload.type) {
2161
2178
  case "TrackStartEvent":
2162
2179
  this.trackStart(player, player.queue.current, payload);
@@ -2200,6 +2217,16 @@ var LavalinkNode = class {
2200
2217
  }
2201
2218
  return;
2202
2219
  }
2220
+ /**
2221
+ * nodeLink specific events handling https://nodelink.js.org/docs/api/websocket#incoming-events-server--client
2222
+ * @param eventName
2223
+ * @param player
2224
+ * @param track
2225
+ * @param payload
2226
+ */
2227
+ async nodeLinkEventHandler(eventName, player, track, payload) {
2228
+ this.NodeManager.emit("nodeLinkEvent", this, eventName, player, track, payload);
2229
+ }
2203
2230
  getTrackOfPayload(payload) {
2204
2231
  return "track" in payload ? this._LManager.utils.buildTrack(payload.track, void 0) : null;
2205
2232
  }
package/dist/index.mjs CHANGED
@@ -2096,6 +2096,23 @@ var LavalinkNode = class {
2096
2096
  if (!payload?.guildId) return;
2097
2097
  const player = this._LManager.getPlayer(payload.guildId);
2098
2098
  if (!player) return;
2099
+ const NodeLinkEventType = payload.type;
2100
+ const NodeLinkExclusiveEvents = [
2101
+ "PlayerCreatedEvent",
2102
+ "PlayerDestroyedEvent",
2103
+ "PlayerConnectedEvent",
2104
+ "PlayerReconnectingEvent",
2105
+ "VolumeChangedEvent",
2106
+ "FiltersChangedEvent",
2107
+ "SeekEvent",
2108
+ "PauseEvent",
2109
+ "ConnectionStatusEvent",
2110
+ "MixStartedEvent",
2111
+ "MixEndedEvent"
2112
+ ];
2113
+ if (NodeLinkExclusiveEvents.includes(NodeLinkEventType) && (!this.info || this.info.isNodelink)) {
2114
+ return this.nodeLinkEventHandler(NodeLinkEventType, player, player.queue.current, payload);
2115
+ }
2099
2116
  switch (payload.type) {
2100
2117
  case "TrackStartEvent":
2101
2118
  this.trackStart(player, player.queue.current, payload);
@@ -2139,6 +2156,16 @@ var LavalinkNode = class {
2139
2156
  }
2140
2157
  return;
2141
2158
  }
2159
+ /**
2160
+ * nodeLink specific events handling https://nodelink.js.org/docs/api/websocket#incoming-events-server--client
2161
+ * @param eventName
2162
+ * @param player
2163
+ * @param track
2164
+ * @param payload
2165
+ */
2166
+ async nodeLinkEventHandler(eventName, player, track, payload) {
2167
+ this.NodeManager.emit("nodeLinkEvent", this, eventName, player, track, payload);
2168
+ }
2142
2169
  getTrackOfPayload(payload) {
2143
2170
  return "track" in payload ? this._LManager.utils.buildTrack(payload.track, void 0) : null;
2144
2171
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lavalink-client",
3
- "version": "2.7.6",
3
+ "version": "2.7.7",
4
4
  "description": "Easy, flexible and feature-rich lavalink@v4 Client. Both for Beginners and Proficients.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",