distube 3.0.0-beta.8 → 3.0.2

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 (158) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +64 -51
  3. package/dist/DisTube.d.ts +522 -0
  4. package/dist/DisTube.d.ts.map +1 -0
  5. package/dist/DisTube.js +794 -0
  6. package/dist/DisTube.js.map +1 -0
  7. package/dist/constant.d.ts +130 -0
  8. package/dist/constant.d.ts.map +1 -0
  9. package/dist/constant.js +150 -0
  10. package/dist/constant.js.map +1 -0
  11. package/dist/core/DisTubeBase.d.ts +55 -0
  12. package/dist/core/DisTubeBase.d.ts.map +1 -0
  13. package/dist/core/DisTubeBase.js +76 -0
  14. package/dist/core/DisTubeBase.js.map +1 -0
  15. package/dist/core/DisTubeHandler.d.ts +95 -0
  16. package/dist/core/DisTubeHandler.d.ts.map +1 -0
  17. package/dist/core/DisTubeHandler.js +337 -0
  18. package/dist/core/DisTubeHandler.js.map +1 -0
  19. package/dist/core/DisTubeOptions.d.ts +26 -0
  20. package/dist/core/DisTubeOptions.d.ts.map +1 -0
  21. package/dist/core/DisTubeOptions.js +93 -0
  22. package/dist/core/DisTubeOptions.js.map +1 -0
  23. package/dist/core/DisTubeStream.d.ts +52 -0
  24. package/dist/core/DisTubeStream.d.ts.map +1 -0
  25. package/dist/core/DisTubeStream.js +111 -0
  26. package/dist/core/DisTubeStream.js.map +1 -0
  27. package/dist/core/index.d.ts +7 -0
  28. package/dist/core/index.d.ts.map +1 -0
  29. package/dist/core/index.js +19 -0
  30. package/dist/core/index.js.map +1 -0
  31. package/dist/core/manager/BaseManager.d.ts +18 -0
  32. package/dist/core/manager/BaseManager.d.ts.map +1 -0
  33. package/dist/core/manager/BaseManager.js +44 -0
  34. package/dist/core/manager/BaseManager.js.map +1 -0
  35. package/dist/core/manager/QueueManager.d.ts +60 -0
  36. package/dist/core/manager/QueueManager.d.ts.map +1 -0
  37. package/dist/core/manager/QueueManager.js +202 -0
  38. package/dist/core/manager/QueueManager.js.map +1 -0
  39. package/dist/core/manager/index.d.ts +3 -0
  40. package/dist/core/manager/index.d.ts.map +1 -0
  41. package/dist/core/manager/index.js +15 -0
  42. package/dist/core/manager/index.js.map +1 -0
  43. package/dist/core/voice/DJSAdapter.d.ts +4 -0
  44. package/dist/core/voice/DJSAdapter.d.ts.map +1 -0
  45. package/dist/core/voice/DJSAdapter.js +61 -0
  46. package/dist/core/voice/DJSAdapter.js.map +1 -0
  47. package/dist/core/voice/DisTubeVoice.d.ts +85 -0
  48. package/dist/core/voice/DisTubeVoice.d.ts.map +1 -0
  49. package/dist/core/voice/DisTubeVoice.js +246 -0
  50. package/dist/core/voice/DisTubeVoice.js.map +1 -0
  51. package/dist/core/voice/DisTubeVoiceManager.d.ts +41 -0
  52. package/dist/core/voice/DisTubeVoiceManager.d.ts.map +1 -0
  53. package/dist/core/voice/DisTubeVoiceManager.js +67 -0
  54. package/dist/core/voice/DisTubeVoiceManager.js.map +1 -0
  55. package/dist/core/voice/index.d.ts +4 -0
  56. package/dist/core/voice/index.d.ts.map +1 -0
  57. package/dist/core/voice/index.js +16 -0
  58. package/dist/core/voice/index.js.map +1 -0
  59. package/dist/index.d.ts +8 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +23 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/plugin/http.d.ts +8 -0
  64. package/dist/plugin/http.d.ts.map +1 -0
  65. package/dist/plugin/http.js +20 -0
  66. package/dist/plugin/http.js.map +1 -0
  67. package/dist/plugin/https.d.ts +14 -0
  68. package/dist/plugin/https.d.ts.map +1 -0
  69. package/dist/plugin/https.js +50 -0
  70. package/dist/plugin/https.js.map +1 -0
  71. package/dist/plugin/index.d.ts +4 -0
  72. package/dist/plugin/index.d.ts.map +1 -0
  73. package/dist/plugin/index.js +16 -0
  74. package/dist/plugin/index.js.map +1 -0
  75. package/dist/plugin/youtube-dl.d.ts +11 -0
  76. package/dist/plugin/youtube-dl.d.ts.map +1 -0
  77. package/dist/plugin/youtube-dl.js +75 -0
  78. package/dist/plugin/youtube-dl.js.map +1 -0
  79. package/dist/struct/CustomPlugin.d.ts +27 -0
  80. package/dist/struct/CustomPlugin.d.ts.map +1 -0
  81. package/dist/struct/CustomPlugin.js +35 -0
  82. package/dist/struct/CustomPlugin.js.map +1 -0
  83. package/dist/struct/DisTubeError.d.ts +56 -0
  84. package/dist/struct/DisTubeError.d.ts.map +1 -0
  85. package/dist/struct/DisTubeError.js +75 -0
  86. package/dist/struct/DisTubeError.js.map +1 -0
  87. package/dist/struct/ExtractorPlugin.d.ts +29 -0
  88. package/dist/struct/ExtractorPlugin.d.ts.map +1 -0
  89. package/dist/struct/ExtractorPlugin.js +32 -0
  90. package/dist/struct/ExtractorPlugin.js.map +1 -0
  91. package/dist/struct/Playlist.d.ts +42 -0
  92. package/dist/struct/Playlist.d.ts.map +1 -0
  93. package/dist/struct/Playlist.js +104 -0
  94. package/dist/struct/Playlist.js.map +1 -0
  95. package/dist/struct/Plugin.d.ts +82 -0
  96. package/dist/struct/Plugin.d.ts.map +1 -0
  97. package/dist/struct/Plugin.js +108 -0
  98. package/dist/struct/Plugin.js.map +1 -0
  99. package/dist/struct/Queue.d.ts +217 -0
  100. package/dist/struct/Queue.d.ts.map +1 -0
  101. package/dist/struct/Queue.js +481 -0
  102. package/dist/struct/Queue.js.map +1 -0
  103. package/dist/struct/SearchResult.d.ts +28 -0
  104. package/dist/struct/SearchResult.d.ts.map +1 -0
  105. package/dist/struct/SearchResult.js +79 -0
  106. package/dist/struct/SearchResult.js.map +1 -0
  107. package/dist/struct/Song.d.ts +68 -0
  108. package/dist/struct/Song.d.ts.map +1 -0
  109. package/dist/struct/Song.js +229 -0
  110. package/dist/struct/Song.js.map +1 -0
  111. package/dist/struct/TaskQueue.d.ts +33 -0
  112. package/dist/struct/TaskQueue.d.ts.map +1 -0
  113. package/dist/struct/TaskQueue.js +58 -0
  114. package/dist/struct/TaskQueue.js.map +1 -0
  115. package/dist/struct/index.d.ts +10 -0
  116. package/dist/struct/index.d.ts.map +1 -0
  117. package/dist/struct/index.js +22 -0
  118. package/dist/struct/index.js.map +1 -0
  119. package/dist/tsconfig.tsbuildinfo +1 -0
  120. package/dist/type.d.ts +159 -0
  121. package/dist/type.d.ts.map +1 -0
  122. package/dist/type.js +3 -0
  123. package/dist/type.js.map +1 -0
  124. package/dist/util.d.ts +47 -0
  125. package/dist/util.d.ts.map +1 -0
  126. package/dist/util.js +205 -0
  127. package/dist/util.js.map +1 -0
  128. package/package.json +88 -62
  129. package/src/DisTube.js +0 -851
  130. package/src/DisTubeBase.js +0 -39
  131. package/src/DisTubeHandler.js +0 -440
  132. package/src/DisTubeOptions.js +0 -82
  133. package/src/Filter.js +0 -36
  134. package/src/Playlist.js +0 -75
  135. package/src/Plugin/CustomPlugin.js +0 -26
  136. package/src/Plugin/ExtractorPlugin.js +0 -25
  137. package/src/Plugin/Plugin.js +0 -36
  138. package/src/Plugin/http.js +0 -27
  139. package/src/Plugin/https.js +0 -27
  140. package/src/Queue.js +0 -340
  141. package/src/SearchResult.js +0 -57
  142. package/src/Song.js +0 -169
  143. package/src/util.js +0 -65
  144. package/typings/DisTube.d.ts +0 -518
  145. package/typings/DisTubeBase.d.ts +0 -31
  146. package/typings/DisTubeHandler.d.ts +0 -130
  147. package/typings/DisTubeOptions.d.ts +0 -5
  148. package/typings/Filter.d.ts +0 -83
  149. package/typings/Playlist.d.ts +0 -58
  150. package/typings/Plugin/CustomPlugin.d.ts +0 -21
  151. package/typings/Plugin/ExtractorPlugin.d.ts +0 -20
  152. package/typings/Plugin/Plugin.d.ts +0 -31
  153. package/typings/Plugin/http.d.ts +0 -4
  154. package/typings/Plugin/https.d.ts +0 -4
  155. package/typings/Queue.d.ts +0 -227
  156. package/typings/SearchResult.d.ts +0 -51
  157. package/typings/Song.d.ts +0 -153
  158. package/typings/util.d.ts +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Playlist.js","sourceRoot":"","sources":["../../src/struct/Playlist.ts"],"names":[],"mappings":"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","sourcesContent":["import { DisTubeError, formatDuration } from \"..\";\nimport type ytpl from \"@distube/ytpl\";\nimport type { PlaylistInfo, Song } from \"..\";\nimport type { GuildMember, User } from \"discord.js\";\n\n/**\n * Class representing a playlist.\n * @prop {string} source Playlist source\n */\nexport class Playlist implements PlaylistInfo {\n source: string;\n member?: GuildMember;\n user?: User;\n songs: Song[];\n name: string;\n url?: string;\n thumbnail?: string;\n [x: string]: any;\n /**\n * Create a playlist\n * @param {Song[]|PlaylistInfo} playlist Playlist\n * @param {Discord.GuildMember} member Requested user\n * @param {Object} properties Custom properties\n */\n constructor(playlist: Song[] | ytpl.result | PlaylistInfo, member?: GuildMember, properties: any = {}) {\n if (typeof playlist !== \"object\") {\n throw new DisTubeError(\"INVALID_TYPE\", [\"Array<Song>\", \"object\"], playlist, \"playlist\");\n }\n if (typeof properties !== \"object\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", properties, \"properties\");\n }\n // FIXME\n const info = playlist as any;\n /**\n * The source of the playlist\n * @type {string}\n */\n this.source = (info.source || properties.source || \"youtube\").toLowerCase();\n /**\n * Playlist songs.\n * @type {Array<Song>}\n */\n this.songs = Array.isArray(info) ? info : info.items || info.songs;\n if (!Array.isArray(this.songs) || !this.songs.length) {\n throw new DisTubeError(\"EMPTY_PLAYLIST\");\n }\n this._patchMember(member || info.member);\n /**\n * Playlist name.\n * @type {string}\n */\n this.name =\n info.name ||\n info.title ||\n (this.songs[0].name\n ? `${this.songs[0].name} and ${this.songs.length - 1} more songs.`\n : `${this.songs.length} songs playlist`);\n /**\n * Playlist URL.\n * @type {string}\n */\n this.url = info.url || info.webpage_url;\n /**\n * Playlist thumbnail.\n * @type {?string}\n */\n this.thumbnail = info.thumbnail?.url || info.thumbnail || this.songs[0].thumbnail;\n for (const [key, value] of Object.entries(properties)) {\n this[key] = value;\n }\n }\n\n /**\n * Playlist duration in second.\n * @type {number}\n */\n get duration() {\n return this.songs?.reduce((prev, next) => prev + (next.duration || 0), 0) || 0;\n }\n\n /**\n * Formatted duration string `hh:mm:ss`.\n * @type {string}\n */\n get formattedDuration() {\n return formatDuration(this.duration);\n }\n\n /**\n * @param {?Discord.GuildMember} [member] Requested user\n * @private\n * @returns {Playlist}\n */\n _patchMember(member?: GuildMember): Playlist {\n if (member) {\n /**\n * User requested.\n * @type {?Discord.GuildMember}\n */\n this.member = member;\n /**\n * User requested.\n * @type {?Discord.User}\n */\n this.user = this.member?.user;\n }\n this.songs.map(s => s.constructor.name === \"Song\" && s._patchPlaylist(this, this.member));\n return this;\n }\n}\n\nexport default Playlist;\n"]}
@@ -0,0 +1,82 @@
1
+ import type { Client, TextChannel } from "discord.js";
2
+ import type { DisTube, DisTubeEvents, DisTubeHandler, DisTubeVoiceManager, Options, PluginType, QueueManager, Song } from "..";
3
+ /**
4
+ * DisTube Plugin
5
+ * @abstract
6
+ * @private
7
+ */
8
+ export declare abstract class Plugin {
9
+ type: PluginType;
10
+ distube: DisTube;
11
+ init(distube: DisTube): void;
12
+ /**
13
+ * Type of the plugin
14
+ * @name Plugin#type
15
+ * @type {PluginType}
16
+ */
17
+ /**
18
+ * Emit the {@link DisTube} of this base
19
+ * @param {string} eventName Event name
20
+ * @param {...any} args arguments
21
+ * @returns {boolean}
22
+ */
23
+ emit(eventName: keyof DisTubeEvents, ...args: any): boolean;
24
+ /**
25
+ * Emit error event
26
+ * @param {Error} error error
27
+ * @param {Discord.TextChannel?} channel Text channel where the error is encountered.
28
+ */
29
+ emitError(error: Error, channel?: TextChannel): void;
30
+ /**
31
+ * The queue manager
32
+ * @type {QueueManager}
33
+ * @readonly
34
+ */
35
+ get queues(): QueueManager;
36
+ /**
37
+ * The voice manager
38
+ * @type {DisTubeVoiceManager}
39
+ * @readonly
40
+ */
41
+ get voices(): DisTubeVoiceManager;
42
+ /**
43
+ * Discord.js client
44
+ * @type {Discord.Client}
45
+ * @readonly
46
+ */
47
+ get client(): Client;
48
+ /**
49
+ * DisTube options
50
+ * @type {DisTubeOptions}
51
+ * @readonly
52
+ */
53
+ get options(): Options;
54
+ /**
55
+ * DisTube handler
56
+ * @type {DisTubeHandler}
57
+ * @readonly
58
+ */
59
+ get handler(): DisTubeHandler;
60
+ /**
61
+ * Check if the url is working with this plugin
62
+ * @param {string} url Input url
63
+ * @returns {Promise<boolean>}
64
+ */
65
+ validate(url: string): Promise<boolean>;
66
+ /**
67
+ * Get the stream url from {@link Song#url}. Returns {@link Song#url} by default.
68
+ * Not needed if the plugin plays song from YouTube.
69
+ * @param {string} url Input url
70
+ * @returns {Promise<string>}
71
+ */
72
+ getStreamURL(url: string): Promise<string>;
73
+ /**
74
+ * (Optional) Get related songs from a supported url. {@link Song#member} should be `undefined`.
75
+ * Not needed to add {@link Song#related} because it will be added with this function later.
76
+ * @param {string} url Input url
77
+ * @returns {Promise<Song[]>}
78
+ */
79
+ getRelatedSongs(url: string): Promise<Song[]>;
80
+ }
81
+ export default Plugin;
82
+ //# sourceMappingURL=Plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/struct/Plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,IAAI,EACL,MAAM,IAAI,CAAC;AAEZ;;;;GAIG;AACH,8BAAsB,MAAM;IAC1B,IAAI,EAAG,UAAU,CAAC;IAClB,OAAO,EAAG,OAAO,CAAC;IAClB,IAAI,CAAC,OAAO,EAAE,OAAO;IAOrB;;;;OAIG;IACH;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,OAAO;IAG3D;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,WAAW;IAG7C;;;;OAIG;IACH,IAAI,MAAM,IAAI,YAAY,CAEzB;IACD;;;;OAIG;IACH,IAAI,MAAM,IAAI,mBAAmB,CAEhC;IACD;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD;;;;OAIG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IACD;;;;OAIG;IACH,IAAI,OAAO,IAAI,cAAc,CAE5B;IACD;;;;OAIG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAG7C;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAGhD;;;;;OAKG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAGpD;AAED,eAAe,MAAM,CAAC"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Plugin = void 0;
4
+ /**
5
+ * DisTube Plugin
6
+ * @abstract
7
+ * @private
8
+ */
9
+ class Plugin {
10
+ init(distube) {
11
+ /**
12
+ * DisTube
13
+ * @type {DisTube}
14
+ */
15
+ this.distube = distube;
16
+ }
17
+ /**
18
+ * Type of the plugin
19
+ * @name Plugin#type
20
+ * @type {PluginType}
21
+ */
22
+ /**
23
+ * Emit the {@link DisTube} of this base
24
+ * @param {string} eventName Event name
25
+ * @param {...any} args arguments
26
+ * @returns {boolean}
27
+ */
28
+ emit(eventName, ...args) {
29
+ return this.distube.emit(eventName, ...args);
30
+ }
31
+ /**
32
+ * Emit error event
33
+ * @param {Error} error error
34
+ * @param {Discord.TextChannel?} channel Text channel where the error is encountered.
35
+ */
36
+ emitError(error, channel) {
37
+ this.distube.emitError(error, channel);
38
+ }
39
+ /**
40
+ * The queue manager
41
+ * @type {QueueManager}
42
+ * @readonly
43
+ */
44
+ get queues() {
45
+ return this.distube.queues;
46
+ }
47
+ /**
48
+ * The voice manager
49
+ * @type {DisTubeVoiceManager}
50
+ * @readonly
51
+ */
52
+ get voices() {
53
+ return this.distube.voices;
54
+ }
55
+ /**
56
+ * Discord.js client
57
+ * @type {Discord.Client}
58
+ * @readonly
59
+ */
60
+ get client() {
61
+ return this.distube.client;
62
+ }
63
+ /**
64
+ * DisTube options
65
+ * @type {DisTubeOptions}
66
+ * @readonly
67
+ */
68
+ get options() {
69
+ return this.distube.options;
70
+ }
71
+ /**
72
+ * DisTube handler
73
+ * @type {DisTubeHandler}
74
+ * @readonly
75
+ */
76
+ get handler() {
77
+ return this.distube.handler;
78
+ }
79
+ /**
80
+ * Check if the url is working with this plugin
81
+ * @param {string} url Input url
82
+ * @returns {Promise<boolean>}
83
+ */
84
+ async validate(url) {
85
+ return false;
86
+ }
87
+ /**
88
+ * Get the stream url from {@link Song#url}. Returns {@link Song#url} by default.
89
+ * Not needed if the plugin plays song from YouTube.
90
+ * @param {string} url Input url
91
+ * @returns {Promise<string>}
92
+ */
93
+ async getStreamURL(url) {
94
+ return url;
95
+ }
96
+ /**
97
+ * (Optional) Get related songs from a supported url. {@link Song#member} should be `undefined`.
98
+ * Not needed to add {@link Song#related} because it will be added with this function later.
99
+ * @param {string} url Input url
100
+ * @returns {Promise<Song[]>}
101
+ */
102
+ async getRelatedSongs(url) {
103
+ return [];
104
+ }
105
+ }
106
+ exports.Plugin = Plugin;
107
+ exports.default = Plugin;
108
+ //# sourceMappingURL=Plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/struct/Plugin.ts"],"names":[],"mappings":";;;AAaA;;;;GAIG;AACH,MAAsB,MAAM;IAG1B,IAAI,CAAC,OAAgB;QACnB;;;WAGG;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IACD;;;;OAIG;IACH;;;;;OAKG;IACH,IAAI,CAAC,SAA8B,EAAE,GAAG,IAAS;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD;;;;OAIG;IACH,SAAS,CAAC,KAAY,EAAE,OAAqB;QAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD;;;;OAIG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IACD;;;;OAIG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IACD;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,GAAW;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAlGD,wBAkGC;AAED,kBAAe,MAAM,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/require-await, @typescript-eslint/no-unused-vars */\nimport type { Client, TextChannel } from \"discord.js\";\nimport type {\n DisTube,\n DisTubeEvents,\n DisTubeHandler,\n DisTubeVoiceManager,\n Options,\n PluginType,\n QueueManager,\n Song,\n} from \"..\";\n\n/**\n * DisTube Plugin\n * @abstract\n * @private\n */\nexport abstract class Plugin {\n type!: PluginType;\n distube!: DisTube;\n init(distube: DisTube) {\n /**\n * DisTube\n * @type {DisTube}\n */\n this.distube = distube;\n }\n /**\n * Type of the plugin\n * @name Plugin#type\n * @type {PluginType}\n */\n /**\n * Emit the {@link DisTube} of this base\n * @param {string} eventName Event name\n * @param {...any} args arguments\n * @returns {boolean}\n */\n emit(eventName: keyof DisTubeEvents, ...args: any): boolean {\n return this.distube.emit(eventName, ...args);\n }\n /**\n * Emit error event\n * @param {Error} error error\n * @param {Discord.TextChannel?} channel Text channel where the error is encountered.\n */\n emitError(error: Error, channel?: TextChannel) {\n this.distube.emitError(error, channel);\n }\n /**\n * The queue manager\n * @type {QueueManager}\n * @readonly\n */\n get queues(): QueueManager {\n return this.distube.queues;\n }\n /**\n * The voice manager\n * @type {DisTubeVoiceManager}\n * @readonly\n */\n get voices(): DisTubeVoiceManager {\n return this.distube.voices;\n }\n /**\n * Discord.js client\n * @type {Discord.Client}\n * @readonly\n */\n get client(): Client {\n return this.distube.client;\n }\n /**\n * DisTube options\n * @type {DisTubeOptions}\n * @readonly\n */\n get options(): Options {\n return this.distube.options;\n }\n /**\n * DisTube handler\n * @type {DisTubeHandler}\n * @readonly\n */\n get handler(): DisTubeHandler {\n return this.distube.handler;\n }\n /**\n * Check if the url is working with this plugin\n * @param {string} url Input url\n * @returns {Promise<boolean>}\n */\n async validate(url: string): Promise<boolean> {\n return false;\n }\n /**\n * Get the stream url from {@link Song#url}. Returns {@link Song#url} by default.\n * Not needed if the plugin plays song from YouTube.\n * @param {string} url Input url\n * @returns {Promise<string>}\n */\n async getStreamURL(url: string): Promise<string> {\n return url;\n }\n /**\n * (Optional) Get related songs from a supported url. {@link Song#member} should be `undefined`.\n * Not needed to add {@link Song#related} because it will be added with this function later.\n * @param {string} url Input url\n * @returns {Promise<Song[]>}\n */\n async getRelatedSongs(url: string): Promise<Song[]> {\n return [];\n }\n}\n\nexport default Plugin;\n"]}
@@ -0,0 +1,217 @@
1
+ /// <reference types="node" />
2
+ import { DisTubeBase } from "../core";
3
+ import { RepeatMode, Song, TaskQueue } from "..";
4
+ import type { GuildMember, Snowflake, TextChannel } from "discord.js";
5
+ import type { DisTube, DisTubeVoice, DisTubeVoiceEvents, SearchResult } from "..";
6
+ /**
7
+ * Represents a queue.
8
+ * @extends DisTubeBase
9
+ */
10
+ export declare class Queue extends DisTubeBase {
11
+ id: Snowflake;
12
+ /**
13
+ * Voice connection of this queue
14
+ */
15
+ voice: DisTubeVoice;
16
+ /**
17
+ * List of songs in the queue (The first one is the playing song)
18
+ */
19
+ songs: Song[];
20
+ /**
21
+ * List of the previous songs.
22
+ */
23
+ previousSongs: Song[];
24
+ /**
25
+ * Whether stream is currently stopped.
26
+ * @private
27
+ */
28
+ stopped: boolean;
29
+ /**
30
+ * Whether or not the last song was skipped to next song.
31
+ * @private
32
+ */
33
+ next: boolean;
34
+ /**
35
+ * Whether or not the last song was skipped to previous song.
36
+ * @private
37
+ */
38
+ prev: boolean;
39
+ /**
40
+ * Whether or not the stream is currently playing.
41
+ */
42
+ playing: boolean;
43
+ /**
44
+ * Whether or not the stream is currently paused.
45
+ */
46
+ paused: boolean;
47
+ /**
48
+ * Type of repeat mode (`0` is disabled, `1` is repeating a song, `2` is repeating all the queue).
49
+ * Default value: `0` (disabled)
50
+ */
51
+ repeatMode: RepeatMode;
52
+ /**
53
+ * Whether or not the autoplay mode is enabled.
54
+ * Default value: `false`
55
+ */
56
+ autoplay: boolean;
57
+ /**
58
+ * Enabled audio filters.
59
+ * Available filters: {@link Filters}
60
+ */
61
+ filters: string[];
62
+ /**
63
+ * What time in the song to begin (in seconds).
64
+ */
65
+ beginTime: number;
66
+ /**
67
+ * The text channel of the Queue. (Default: where the first command is called).
68
+ */
69
+ textChannel?: TextChannel;
70
+ /**
71
+ * Timeout for checking empty channel
72
+ * @private
73
+ */
74
+ emptyTimeout?: NodeJS.Timeout;
75
+ /**
76
+ * The client user as a `GuildMember` of this queue's guild
77
+ */
78
+ clientMember: GuildMember;
79
+ /**
80
+ * Task queuing system
81
+ */
82
+ taskQueue: TaskQueue;
83
+ listeners?: DisTubeVoiceEvents;
84
+ /**
85
+ * Create a queue for the guild
86
+ * @param {DisTube} distube DisTube
87
+ * @param {DisTubeVoice} voice Voice connection
88
+ * @param {Song|Song[]} song First song(s)
89
+ * @param {Discord.TextChannel?} textChannel Default text channel
90
+ */
91
+ constructor(distube: DisTube, voice: DisTubeVoice, song: Song | Song[], textChannel?: TextChannel);
92
+ /**
93
+ * Formatted duration string.
94
+ * @type {string}
95
+ */
96
+ get formattedDuration(): string;
97
+ /**
98
+ * Queue's duration.
99
+ * @type {number}
100
+ */
101
+ get duration(): number;
102
+ /**
103
+ * What time in the song is playing (in seconds).
104
+ * @type {number}
105
+ */
106
+ get currentTime(): number;
107
+ /**
108
+ * Formatted {@link Queue#currentTime} string.
109
+ * @type {string}
110
+ */
111
+ get formattedCurrentTime(): string;
112
+ /**
113
+ * The voice channel playing in.
114
+ * @type {Discord.VoiceChannel|Discord.StageChannel|null}
115
+ */
116
+ get voiceChannel(): import("discord.js").VoiceChannel | import("discord.js").StageChannel | null;
117
+ get volume(): number;
118
+ set volume(value: number);
119
+ /**
120
+ * Add a Song or an array of Song to the queue
121
+ * @param {Song|Song[]} song Song to add
122
+ * @param {number} [position=-1] Position to add, < 0 to add to the end of the queue
123
+ * @param {boolean} [queuing=true] Wether or not waiting for unfinished tasks
124
+ * @throws {Error}
125
+ * @returns {Queue} The guild queue
126
+ */
127
+ addToQueue(song: Song | SearchResult | (Song | SearchResult)[], position?: number): Queue;
128
+ /**
129
+ * Pause the guild stream
130
+ * @returns {Queue} The guild queue
131
+ */
132
+ pause(): Queue;
133
+ /**
134
+ * Resume the guild stream
135
+ * @returns {Queue} The guild queue
136
+ */
137
+ resume(): Queue;
138
+ /**
139
+ * Set the guild stream's volume
140
+ * @param {number} percent The percentage of volume you want to set
141
+ * @returns {Queue} The guild queue
142
+ */
143
+ setVolume(percent: number): Queue;
144
+ /**
145
+ * Skip the playing song if there is a next song in the queue.
146
+ * <info>If {@link Queue#autoplay} is `true` and there is no up next song,
147
+ * DisTube will add and play a related song.</info>
148
+ * @returns {Promise<Song>} The song will skip to
149
+ * @throws {Error}
150
+ */
151
+ skip(): Promise<Song>;
152
+ /**
153
+ * Play the previous song if exists
154
+ * @returns {Song} The guild queue
155
+ * @throws {Error}
156
+ */
157
+ previous(): Promise<Song>;
158
+ /**
159
+ * Shuffle the queue's songs
160
+ * @returns {Promise<Queue>} The guild queue
161
+ */
162
+ shuffle(): Promise<Queue>;
163
+ /**
164
+ * Jump to the song position in the queue.
165
+ * The next one is 1, 2,...
166
+ * The previous one is -1, -2,...
167
+ * @param {number} position The song position to play
168
+ * @returns {Promise<Queue>} The guild queue
169
+ * @throws {Error} if `num` is invalid number
170
+ */
171
+ jump(position: number): Promise<Queue>;
172
+ /**
173
+ * Set the repeat mode of the guild queue.\
174
+ * Toggle mode `(Disabled -> Song -> Queue -> Disabled ->...)` if `mode` is `undefined`
175
+ * @param {RepeatMode?} [mode] The repeat modes (toggle if `undefined`)
176
+ * @returns {RepeatMode} The new repeat mode
177
+ */
178
+ setRepeatMode(mode?: RepeatMode): RepeatMode;
179
+ /**
180
+ * Enable or disable filter(s) of the queue.
181
+ * Available filters: {@link Filters}
182
+ * @param {string|string[]|false} filter A filter name, an array of filter name or `false` to clear all the filters
183
+ * @param {boolean} [force=false] Force enable the input filter(s) even if it's enabled
184
+ * @returns {Array<string>} Enabled filters.
185
+ * @throws {Error}
186
+ */
187
+ setFilter(filter: string | string[] | false, force?: boolean): Array<string>;
188
+ /**
189
+ * Set the playing time to another position
190
+ * @param {number} time Time in seconds
191
+ * @returns {Queue} The guild queue
192
+ */
193
+ seek(time: number): Queue;
194
+ /**
195
+ * Add a related song of the playing song to the queue
196
+ * @returns {Promise<Song>} The added song
197
+ * @throws {Error}
198
+ */
199
+ addRelatedSong(): Promise<Song>;
200
+ /**
201
+ * Stop the guild stream
202
+ */
203
+ stop(): Promise<void>;
204
+ /**
205
+ * Delete the queue from the manager
206
+ * (This does not leave the queue even if {@link DisTubeOptions|DisTubeOptions.leaveOnStop} is enabled)
207
+ * @private
208
+ */
209
+ delete(): void;
210
+ /**
211
+ * Toggle autoplay mode
212
+ * @returns {boolean} Autoplay mode state
213
+ */
214
+ toggleAutoplay(): boolean;
215
+ }
216
+ export default Queue;
217
+ //# sourceMappingURL=Queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../src/struct/Queue.ts"],"names":[],"mappings":"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"}