distube 4.0.5 → 4.0.6

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.ts CHANGED
@@ -456,7 +456,7 @@ declare class DisTubeVoiceManager extends GuildIdManager<DisTubeVoice> {
456
456
  leave(guild: GuildIdResolvable): void;
457
457
  }
458
458
 
459
- declare class FilterManager extends BaseManager<FilterResolvable> {
459
+ declare class FilterManager extends BaseManager<Filter> {
460
460
  #private;
461
461
  queue: Queue;
462
462
  constructor(queue: Queue);
@@ -466,7 +466,8 @@ declare class FilterManager extends BaseManager<FilterResolvable> {
466
466
  remove(filterOrFilters: FilterResolvable | FilterResolvable[]): this;
467
467
  has(filter: FilterResolvable): boolean;
468
468
  get names(): string[];
469
- get values(): string[];
469
+ get values(): Filter[];
470
+ get ffmpegArgs(): string[];
470
471
  toString(): string;
471
472
  }
472
473
 
package/dist/index.js CHANGED
@@ -63,7 +63,7 @@ var require_package = __commonJS({
63
63
  "package.json"(exports, module2) {
64
64
  module2.exports = {
65
65
  name: "distube",
66
- version: "4.0.5",
66
+ version: "4.0.6",
67
67
  description: "A Discord.js module to simplify your music commands and play songs with audio filters on Discord without any API key.",
68
68
  main: "./dist/index.js",
69
69
  types: "./dist/index.d.ts",
@@ -124,12 +124,12 @@ var require_package = __commonJS({
124
124
  ],
125
125
  homepage: "https://distube.js.org/",
126
126
  dependencies: {
127
- "@distube/ytdl-core": "^4.11.12",
127
+ "@distube/ytdl-core": "^4.11.17",
128
128
  "@distube/ytpl": "^1.1.1",
129
129
  "@distube/ytsr": "^1.1.9",
130
- "prism-media": "https://codeload.github.com/distubejs/prism-media/tar.gz/main#workaround.tar.gz",
130
+ "prism-media": "npm:@distube/prism-media@latest",
131
131
  "tiny-typed-emitter": "^2.1.0",
132
- tslib: "^2.6.0",
132
+ tslib: "^2.6.1",
133
133
  undici: "^5.22.1"
134
134
  },
135
135
  devDependencies: {
@@ -144,21 +144,21 @@ var require_package = __commonJS({
144
144
  "@discordjs/voice": "^0.16.0",
145
145
  "@distubejs/docgen": "distubejs/docgen",
146
146
  "@types/jest": "^29.5.3",
147
- "@types/node": "^20.4.2",
148
- "@typescript-eslint/eslint-plugin": "^6.1.0",
149
- "@typescript-eslint/parser": "^6.1.0",
150
- "babel-jest": "^29.6.1",
147
+ "@types/node": "^20.4.5",
148
+ "@typescript-eslint/eslint-plugin": "^6.2.0",
149
+ "@typescript-eslint/parser": "^6.2.0",
150
+ "babel-jest": "^29.6.2",
151
151
  "discord.js": "^14.11.0",
152
152
  eslint: "^8.45.0",
153
153
  "eslint-config-distube": "^1.6.4",
154
- "eslint-config-prettier": "^8.8.0",
155
- "eslint-plugin-deprecation": "^1.4.1",
156
- "eslint-plugin-jsdoc": "^46.4.4",
154
+ "eslint-config-prettier": "^8.9.0",
155
+ "eslint-plugin-deprecation": "^1.5.0",
156
+ "eslint-plugin-jsdoc": "^46.4.5",
157
157
  husky: "^8.0.3",
158
- jest: "^29.6.1",
158
+ jest: "^29.6.2",
159
159
  "jsdoc-babel": "^0.5.0",
160
160
  "nano-staged": "^0.8.0",
161
- "npm-check-updates": "^16.10.16",
161
+ "npm-check-updates": "^16.10.17",
162
162
  pinst: "^3.0.0",
163
163
  prettier: "^3.0.0",
164
164
  tsup: "^7.1.0",
@@ -1155,17 +1155,14 @@ var _DisTubeStream = class _DisTubeStream {
1155
1155
  "2",
1156
1156
  "-f"
1157
1157
  ];
1158
- if (!options.type) {
1158
+ if (!options.type)
1159
1159
  args.push("opus", "-acodec", "libopus");
1160
- } else {
1160
+ else
1161
1161
  args.push("s16le");
1162
- }
1163
- if (typeof options.seek === "number" && options.seek > 0) {
1162
+ if (typeof options.seek === "number" && options.seek > 0)
1164
1163
  args.unshift("-ss", options.seek.toString());
1165
- }
1166
- if (Array.isArray(options.ffmpegArgs)) {
1164
+ if (Array.isArray(options.ffmpegArgs) && options.ffmpegArgs.length)
1167
1165
  args.push(...options.ffmpegArgs);
1168
- }
1169
1166
  this.stream = new import_prism_media.FFmpeg({ args, shell: false });
1170
1167
  this.stream._readableState && (this.stream._readableState.highWaterMark = 1 << 25);
1171
1168
  }
@@ -1768,17 +1765,15 @@ __name(_DisTubeVoiceManager, "DisTubeVoiceManager");
1768
1765
  var DisTubeVoiceManager = _DisTubeVoiceManager;
1769
1766
 
1770
1767
  // src/core/manager/FilterManager.ts
1771
- var _validate, validate_fn, _resolveName, resolveName_fn, _resolveValue, resolveValue_fn, _apply, apply_fn, _removeFn, removeFn_get;
1768
+ var _resolve, resolve_fn, _apply, apply_fn, _removeFn, removeFn_fn;
1772
1769
  var _FilterManager = class _FilterManager extends BaseManager {
1773
1770
  constructor(queue) {
1774
1771
  super(queue.distube);
1775
- __privateAdd(this, _validate);
1776
- __privateAdd(this, _resolveName);
1777
- __privateAdd(this, _resolveValue);
1772
+ __privateAdd(this, _resolve);
1778
1773
  __privateAdd(this, _apply);
1779
1774
  __privateAdd(this, _removeFn);
1780
1775
  /**
1781
- * Collection of {@link FilterResolvable}.
1776
+ * Collection of {@link Filter}.
1782
1777
  * @name FilterManager#collection
1783
1778
  * @type {Discord.Collection<string, DisTubeVoice>}
1784
1779
  */
@@ -1793,28 +1788,18 @@ var _FilterManager = class _FilterManager extends BaseManager {
1793
1788
  */
1794
1789
  add(filterOrFilters, override = false) {
1795
1790
  if (Array.isArray(filterOrFilters)) {
1796
- const resolvedFilters = filterOrFilters.map((f) => __privateMethod(this, _validate, validate_fn).call(this, f));
1797
- const newFilters = resolvedFilters.reduceRight((unique, o) => {
1798
- if (!unique.some((obj) => obj === o && obj.name === o) && !unique.some((obj) => obj !== o.name && obj.name !== o.name)) {
1799
- if (!this.has(o))
1800
- unique.push(o);
1801
- if (this.has(o) && override) {
1802
- this.remove(o);
1803
- unique.push(o);
1804
- }
1805
- }
1806
- return unique;
1807
- }, []).reverse();
1808
- return this.set([...this.collection.values(), ...newFilters]);
1809
- } else if (typeof filterOrFilters === "string") {
1810
- return this.set([...this.collection.values(), filterOrFilters]);
1791
+ for (const filter of filterOrFilters) {
1792
+ const f = __privateMethod(this, _resolve, resolve_fn).call(this, filter);
1793
+ if (override || !this.has(f))
1794
+ this.collection.set(f.name, f);
1795
+ }
1796
+ } else {
1797
+ const f = __privateMethod(this, _resolve, resolve_fn).call(this, filterOrFilters);
1798
+ if (override || !this.has(f))
1799
+ this.collection.set(f.name, f);
1811
1800
  }
1812
- throw new DisTubeError(
1813
- "INVALID_TYPE",
1814
- ["FilterResolvable", "Array<FilterResolvable>"],
1815
- filterOrFilters,
1816
- "filterOrFilters"
1817
- );
1801
+ __privateMethod(this, _apply, apply_fn).call(this);
1802
+ return this;
1818
1803
  }
1819
1804
  /**
1820
1805
  * Clear enabled filters of the manager
@@ -1832,9 +1817,9 @@ var _FilterManager = class _FilterManager extends BaseManager {
1832
1817
  if (!Array.isArray(filters))
1833
1818
  throw new DisTubeError("INVALID_TYPE", "Array<FilterResolvable>", filters, "filters");
1834
1819
  this.collection.clear();
1835
- for (const filter of filters) {
1836
- const resolved = __privateMethod(this, _validate, validate_fn).call(this, filter);
1837
- this.collection.set(__privateMethod(this, _resolveName, resolveName_fn).call(this, resolved), resolved);
1820
+ for (const f of filters) {
1821
+ const filter = __privateMethod(this, _resolve, resolve_fn).call(this, f);
1822
+ this.collection.set(filter.name, filter);
1838
1823
  }
1839
1824
  __privateMethod(this, _apply, apply_fn).call(this);
1840
1825
  return this;
@@ -1845,18 +1830,10 @@ var _FilterManager = class _FilterManager extends BaseManager {
1845
1830
  * @returns {FilterManager}
1846
1831
  */
1847
1832
  remove(filterOrFilters) {
1848
- if (Array.isArray(filterOrFilters)) {
1849
- filterOrFilters.map(__privateGet(this, _removeFn, removeFn_get));
1850
- } else if (typeof filterOrFilters === "string") {
1851
- __privateGet(this, _removeFn, removeFn_get).call(this, filterOrFilters);
1852
- } else {
1853
- throw new DisTubeError(
1854
- "INVALID_TYPE",
1855
- ["FilterResolvable", "Array<FilterResolvable>"],
1856
- filterOrFilters,
1857
- "filterOrFilters"
1858
- );
1859
- }
1833
+ if (Array.isArray(filterOrFilters))
1834
+ filterOrFilters.map((f) => __privateMethod(this, _removeFn, removeFn_fn).call(this, f));
1835
+ else
1836
+ __privateMethod(this, _removeFn, removeFn_fn).call(this, filterOrFilters);
1860
1837
  __privateMethod(this, _apply, apply_fn).call(this);
1861
1838
  return this;
1862
1839
  }
@@ -1866,46 +1843,52 @@ var _FilterManager = class _FilterManager extends BaseManager {
1866
1843
  * @returns {boolean}
1867
1844
  */
1868
1845
  has(filter) {
1869
- return this.collection.has(__privateMethod(this, _resolveName, resolveName_fn).call(this, filter));
1846
+ return this.collection.has(typeof filter === "string" ? filter : __privateMethod(this, _resolve, resolve_fn).call(this, filter).name);
1870
1847
  }
1871
1848
  /**
1872
- * Array of enabled filter name
1849
+ * Array of enabled filter names
1873
1850
  * @type {Array<string>}
1874
1851
  * @readonly
1875
1852
  */
1876
1853
  get names() {
1877
- return this.collection.map((f) => __privateMethod(this, _resolveName, resolveName_fn).call(this, f));
1854
+ return [...this.collection.keys()];
1878
1855
  }
1856
+ /**
1857
+ * Array of enabled filters
1858
+ * @type {Array<Filter>}
1859
+ * @readonly
1860
+ */
1879
1861
  get values() {
1880
- return this.collection.map((f) => __privateMethod(this, _resolveValue, resolveValue_fn).call(this, f));
1862
+ return [...this.collection.values()];
1863
+ }
1864
+ get ffmpegArgs() {
1865
+ return this.size ? ["-af", this.values.map((f) => f.value).join(",")] : [];
1881
1866
  }
1882
1867
  toString() {
1883
1868
  return this.names.toString();
1884
1869
  }
1885
1870
  };
1886
- _validate = new WeakSet();
1887
- validate_fn = /* @__PURE__ */ __name(function(filter) {
1888
- if (typeof filter === "string" && Object.prototype.hasOwnProperty.call(this.distube.filters, filter) || typeof filter === "object" && typeof filter.name === "string" && typeof filter.value === "string") {
1871
+ _resolve = new WeakSet();
1872
+ resolve_fn = /* @__PURE__ */ __name(function(filter) {
1873
+ if (typeof filter === "object" && typeof filter.name === "string" && typeof filter.value === "string") {
1889
1874
  return filter;
1890
1875
  }
1876
+ if (typeof filter === "string" && Object.prototype.hasOwnProperty.call(this.distube.filters, filter)) {
1877
+ return {
1878
+ name: filter,
1879
+ value: this.distube.filters[filter]
1880
+ };
1881
+ }
1891
1882
  throw new DisTubeError("INVALID_TYPE", "FilterResolvable", filter, "filter");
1892
- }, "#validate");
1893
- _resolveName = new WeakSet();
1894
- resolveName_fn = /* @__PURE__ */ __name(function(filter) {
1895
- return typeof filter === "string" ? filter : filter.name;
1896
- }, "#resolveName");
1897
- _resolveValue = new WeakSet();
1898
- resolveValue_fn = /* @__PURE__ */ __name(function(filter) {
1899
- return typeof filter === "string" ? this.distube.filters[filter] : filter.value;
1900
- }, "#resolveValue");
1883
+ }, "#resolve");
1901
1884
  _apply = new WeakSet();
1902
1885
  apply_fn = /* @__PURE__ */ __name(function() {
1903
1886
  this.queue.beginTime = this.queue.currentTime;
1904
1887
  this.queues.playSong(this.queue);
1905
1888
  }, "#apply");
1906
1889
  _removeFn = new WeakSet();
1907
- removeFn_get = /* @__PURE__ */ __name(function() {
1908
- return (f) => this.collection.delete(__privateMethod(this, _resolveName, resolveName_fn).call(this, __privateMethod(this, _validate, validate_fn).call(this, f)));
1890
+ removeFn_fn = /* @__PURE__ */ __name(function(f) {
1891
+ return this.collection.delete(__privateMethod(this, _resolve, resolve_fn).call(this, f).name);
1909
1892
  }, "#removeFn");
1910
1893
  __name(_FilterManager, "FilterManager");
1911
1894
  var FilterManager = _FilterManager;
@@ -1987,9 +1970,12 @@ var _QueueManager = class _QueueManager extends GuildIdManager {
1987
1970
  */
1988
1971
  createStream(queue) {
1989
1972
  const { duration, formats, isLive, source, streamURL } = queue.songs[0];
1990
- const ffmpegArgs = queue.filters.size ? ["-af", queue.filters.values.join(",")] : void 0;
1991
- const seek = duration ? queue.beginTime : void 0;
1992
- const streamOptions = { ffmpegArgs, seek, isLive, type: this.options.streamType };
1973
+ const streamOptions = {
1974
+ ffmpegArgs: queue.filters.ffmpegArgs,
1975
+ seek: duration ? queue.beginTime : void 0,
1976
+ isLive,
1977
+ type: this.options.streamType
1978
+ };
1993
1979
  if (source === "youtube")
1994
1980
  return DisTubeStream.YouTube(formats, streamOptions);
1995
1981
  return DisTubeStream.DirectLink(streamURL, streamOptions);