discolink 2.1.0 → 3.0.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.
package/lib/index.d.mts CHANGED
@@ -695,7 +695,7 @@ interface VibratoFilter {
695
695
  /**
696
696
  * The vibrato depth 0.0 < x ≤ 1.0
697
697
  */
698
- vibrato?: number;
698
+ depth?: number;
699
699
  }
700
700
  /**
701
701
  * Rotates the sound around the stereo channels/user headphones (aka Audio Panning).
@@ -786,7 +786,7 @@ interface PlayerUpdateRequestBody {
786
786
  /**
787
787
  * Specification for a new track to load, as well as user data to set
788
788
  */
789
- track?: PlayerUpdateTrackData | null;
789
+ track?: PlayerUpdateTrackData;
790
790
  /**
791
791
  * The track position in milliseconds
792
792
  */
@@ -794,7 +794,7 @@ interface PlayerUpdateRequestBody {
794
794
  /**
795
795
  * The track end time in milliseconds (must be > 0). `null` resets this if it was set previously
796
796
  */
797
- endTime?: number;
797
+ endTime?: number | null;
798
798
  /**
799
799
  * The player volume, in percentage, from 0 to 1000
800
800
  */
package/lib/index.d.ts CHANGED
@@ -695,7 +695,7 @@ interface VibratoFilter {
695
695
  /**
696
696
  * The vibrato depth 0.0 < x ≤ 1.0
697
697
  */
698
- vibrato?: number;
698
+ depth?: number;
699
699
  }
700
700
  /**
701
701
  * Rotates the sound around the stereo channels/user headphones (aka Audio Panning).
@@ -786,7 +786,7 @@ interface PlayerUpdateRequestBody {
786
786
  /**
787
787
  * Specification for a new track to load, as well as user data to set
788
788
  */
789
- track?: PlayerUpdateTrackData | null;
789
+ track?: PlayerUpdateTrackData;
790
790
  /**
791
791
  * The track position in milliseconds
792
792
  */
@@ -794,7 +794,7 @@ interface PlayerUpdateRequestBody {
794
794
  /**
795
795
  * The track end time in milliseconds (must be > 0). `null` resets this if it was set previously
796
796
  */
797
- endTime?: number;
797
+ endTime?: number | null;
798
798
  /**
799
799
  * The player volume, in percentage, from 0 to 1000
800
800
  */
package/lib/index.js CHANGED
@@ -109,7 +109,7 @@ var VoiceCloseCodes = /* @__PURE__ */ ((VoiceCloseCodes2) => {
109
109
  // src/Constants/Defaults.ts
110
110
  var DefaultRestOptions = Object.seal({
111
111
  version: 4,
112
- userAgent: "discolink/2.1.0 (https://github.com/execaman/discolink)",
112
+ userAgent: "discolink/3.0.0 (https://github.com/execaman/discolink)",
113
113
  stackTrace: false,
114
114
  requestTimeout: 1e4
115
115
  });
@@ -386,7 +386,7 @@ var REST = class {
386
386
  var Node = class extends node_events.EventEmitter {
387
387
  #socketConfig = {
388
388
  headers: {
389
- "Client-Name": "discolink/2.1.0"
389
+ "Client-Name": "discolink/3.0.0"
390
390
  },
391
391
  perMessageDeflate: false
392
392
  };
@@ -1612,11 +1612,31 @@ var Queue = class {
1612
1612
  Object.assign(this.#player, player);
1613
1613
  }
1614
1614
  async sync(target = "local") {
1615
- let player;
1616
- if (target === "local") player = await this.rest.fetchPlayer(this.guildId);
1617
- else if (target === "remote") player = await this.rest.updatePlayer(this.guildId, this.#player);
1618
- else throw new Error("Target must be 'local' or 'remote'");
1619
- Object.assign(this.#player, player);
1615
+ if (target === "local") {
1616
+ const player2 = await this.rest.fetchPlayer(this.guildId);
1617
+ Object.assign(this.#player, player2);
1618
+ return;
1619
+ }
1620
+ if (target !== "remote") throw new Error("Target must be 'local' or 'remote'");
1621
+ const voice = this.player.voices[LookupSymbol](this.guildId);
1622
+ if (!voice) return;
1623
+ const player = this.#player;
1624
+ const request = {
1625
+ voice: {
1626
+ endpoint: voice.endpoint,
1627
+ sessionId: voice.session_id,
1628
+ token: voice.token
1629
+ },
1630
+ filters: player.filters,
1631
+ paused: player.paused,
1632
+ volume: player.volume
1633
+ };
1634
+ if (player.track !== null) {
1635
+ request.track = { encoded: player.track.encoded, userData: player.track.userData };
1636
+ request.position = player.state.position;
1637
+ }
1638
+ await this.#update(request);
1639
+ this.player.voices[UpdateSymbol](this.guildId, { node_session_id: this.node.sessionId });
1620
1640
  }
1621
1641
  async search(query, prefix = this.player.options.queryPrefix) {
1622
1642
  return this.player.search(query, { prefix, node: this.node.name });
@@ -1816,21 +1836,16 @@ var QueueManager = class {
1816
1836
  if (!_node) throw new Error(`Node '${node}' not found`);
1817
1837
  if (!_node.ready) throw new Error(`Node '${node}' not ready`);
1818
1838
  if (target === "local") {
1819
- const players2 = await _node.rest.fetchPlayers();
1820
- for (const player of players2) this[UpdateSymbol](player.guildId, player);
1839
+ const players = await _node.rest.fetchPlayers();
1840
+ for (const player of players) this[UpdateSymbol](player.guildId, player);
1821
1841
  return;
1822
1842
  }
1823
- if (target !== "remote") throw new Error("Target must be 'local' or 'remote'");
1824
- const players = this.#queues.values().reduce((t, q) => {
1825
- if (q.node.name !== node) return t;
1826
- t.push(this.#cache.get(q.guildId));
1827
- return t;
1828
- }, []);
1829
- const results = await Promise.allSettled(players.map((p) => _node.rest.updatePlayer(p.guildId, p)));
1830
- for (const result of results) {
1831
- if (result.status === "rejected") continue;
1832
- this[UpdateSymbol](result.value.guildId, result.value);
1843
+ if (target === "remote") {
1844
+ const queues = this.#queues.values().filter((q) => q.node.name === node);
1845
+ await Promise.allSettled(queues.map((q) => q.sync("remote")));
1846
+ return;
1833
1847
  }
1848
+ throw new Error("Target must be 'local' or 'remote'");
1834
1849
  }
1835
1850
  async relocate(node) {
1836
1851
  if (this.#relocations.has(node)) return this.#relocations.get(node);
@@ -2266,7 +2281,7 @@ var Player = class extends node_events.EventEmitter {
2266
2281
  };
2267
2282
 
2268
2283
  // src/index.ts
2269
- var version = "2.1.0";
2284
+ var version = "3.0.0";
2270
2285
 
2271
2286
  exports.CloseCodes = CloseCodes;
2272
2287
  exports.DefaultNodeOptions = DefaultNodeOptions;
package/lib/index.mjs CHANGED
@@ -103,7 +103,7 @@ var VoiceCloseCodes = /* @__PURE__ */ ((VoiceCloseCodes2) => {
103
103
  // src/Constants/Defaults.ts
104
104
  var DefaultRestOptions = Object.seal({
105
105
  version: 4,
106
- userAgent: "discolink/2.1.0 (https://github.com/execaman/discolink)",
106
+ userAgent: "discolink/3.0.0 (https://github.com/execaman/discolink)",
107
107
  stackTrace: false,
108
108
  requestTimeout: 1e4
109
109
  });
@@ -380,7 +380,7 @@ var REST = class {
380
380
  var Node = class extends EventEmitter {
381
381
  #socketConfig = {
382
382
  headers: {
383
- "Client-Name": "discolink/2.1.0"
383
+ "Client-Name": "discolink/3.0.0"
384
384
  },
385
385
  perMessageDeflate: false
386
386
  };
@@ -1606,11 +1606,31 @@ var Queue = class {
1606
1606
  Object.assign(this.#player, player);
1607
1607
  }
1608
1608
  async sync(target = "local") {
1609
- let player;
1610
- if (target === "local") player = await this.rest.fetchPlayer(this.guildId);
1611
- else if (target === "remote") player = await this.rest.updatePlayer(this.guildId, this.#player);
1612
- else throw new Error("Target must be 'local' or 'remote'");
1613
- Object.assign(this.#player, player);
1609
+ if (target === "local") {
1610
+ const player2 = await this.rest.fetchPlayer(this.guildId);
1611
+ Object.assign(this.#player, player2);
1612
+ return;
1613
+ }
1614
+ if (target !== "remote") throw new Error("Target must be 'local' or 'remote'");
1615
+ const voice = this.player.voices[LookupSymbol](this.guildId);
1616
+ if (!voice) return;
1617
+ const player = this.#player;
1618
+ const request = {
1619
+ voice: {
1620
+ endpoint: voice.endpoint,
1621
+ sessionId: voice.session_id,
1622
+ token: voice.token
1623
+ },
1624
+ filters: player.filters,
1625
+ paused: player.paused,
1626
+ volume: player.volume
1627
+ };
1628
+ if (player.track !== null) {
1629
+ request.track = { encoded: player.track.encoded, userData: player.track.userData };
1630
+ request.position = player.state.position;
1631
+ }
1632
+ await this.#update(request);
1633
+ this.player.voices[UpdateSymbol](this.guildId, { node_session_id: this.node.sessionId });
1614
1634
  }
1615
1635
  async search(query, prefix = this.player.options.queryPrefix) {
1616
1636
  return this.player.search(query, { prefix, node: this.node.name });
@@ -1810,21 +1830,16 @@ var QueueManager = class {
1810
1830
  if (!_node) throw new Error(`Node '${node}' not found`);
1811
1831
  if (!_node.ready) throw new Error(`Node '${node}' not ready`);
1812
1832
  if (target === "local") {
1813
- const players2 = await _node.rest.fetchPlayers();
1814
- for (const player of players2) this[UpdateSymbol](player.guildId, player);
1833
+ const players = await _node.rest.fetchPlayers();
1834
+ for (const player of players) this[UpdateSymbol](player.guildId, player);
1815
1835
  return;
1816
1836
  }
1817
- if (target !== "remote") throw new Error("Target must be 'local' or 'remote'");
1818
- const players = this.#queues.values().reduce((t, q) => {
1819
- if (q.node.name !== node) return t;
1820
- t.push(this.#cache.get(q.guildId));
1821
- return t;
1822
- }, []);
1823
- const results = await Promise.allSettled(players.map((p) => _node.rest.updatePlayer(p.guildId, p)));
1824
- for (const result of results) {
1825
- if (result.status === "rejected") continue;
1826
- this[UpdateSymbol](result.value.guildId, result.value);
1837
+ if (target === "remote") {
1838
+ const queues = this.#queues.values().filter((q) => q.node.name === node);
1839
+ await Promise.allSettled(queues.map((q) => q.sync("remote")));
1840
+ return;
1827
1841
  }
1842
+ throw new Error("Target must be 'local' or 'remote'");
1828
1843
  }
1829
1844
  async relocate(node) {
1830
1845
  if (this.#relocations.has(node)) return this.#relocations.get(node);
@@ -2260,6 +2275,6 @@ var Player = class extends EventEmitter {
2260
2275
  };
2261
2276
 
2262
2277
  // src/index.ts
2263
- var version = "2.1.0";
2278
+ var version = "3.0.0";
2264
2279
 
2265
2280
  export { CloseCodes, DefaultNodeOptions, DefaultPlayerOptions, DefaultRestOptions, EventType, FilterManager, IPBlockType, LavaLyrics, LoadType, Node, NodeManager, OPType, Player, Playlist, Queue, QueueManager, REST, RoutePlannerType, Routes, Severity, SnowflakeRegex, Track, TrackEndReason, VoiceCloseCodes, VoiceManager, VoiceRegion, VoiceRegionIdRegex, VoiceState, formatDuration, isArray, isNumber, isRecord, isString, noop, version };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "discolink",
4
- "version": "2.1.0",
4
+ "version": "3.0.0",
5
5
  "description": "A javascript library for discord bots to interact with Lavalink",
6
6
  "exports": {
7
7
  ".": {