distube 4.0.0-dev.2 → 4.0.0-dev.5

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 (129) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +604 -8
  3. package/dist/index.js +2437 -22
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +2375 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +72 -45
  8. package/dist/DisTube.d.ts +0 -54
  9. package/dist/DisTube.d.ts.map +0 -1
  10. package/dist/DisTube.js +0 -279
  11. package/dist/DisTube.js.map +0 -1
  12. package/dist/constant.d.ts +0 -27
  13. package/dist/constant.d.ts.map +0 -1
  14. package/dist/constant.js +0 -47
  15. package/dist/constant.js.map +0 -1
  16. package/dist/core/DisTubeBase.d.ts +0 -14
  17. package/dist/core/DisTubeBase.d.ts.map +0 -1
  18. package/dist/core/DisTubeBase.js +0 -31
  19. package/dist/core/DisTubeBase.js.map +0 -1
  20. package/dist/core/DisTubeHandler.d.ts +0 -27
  21. package/dist/core/DisTubeHandler.d.ts.map +0 -1
  22. package/dist/core/DisTubeHandler.js +0 -230
  23. package/dist/core/DisTubeHandler.js.map +0 -1
  24. package/dist/core/DisTubeOptions.d.ts +0 -23
  25. package/dist/core/DisTubeOptions.d.ts.map +0 -1
  26. package/dist/core/DisTubeOptions.js +0 -90
  27. package/dist/core/DisTubeOptions.js.map +0 -1
  28. package/dist/core/DisTubeStream.d.ts +0 -19
  29. package/dist/core/DisTubeStream.d.ts.map +0 -1
  30. package/dist/core/DisTubeStream.js +0 -72
  31. package/dist/core/DisTubeStream.js.map +0 -1
  32. package/dist/core/index.d.ts +0 -7
  33. package/dist/core/index.d.ts.map +0 -1
  34. package/dist/core/index.js +0 -19
  35. package/dist/core/index.js.map +0 -1
  36. package/dist/core/manager/BaseManager.d.ts +0 -7
  37. package/dist/core/manager/BaseManager.d.ts.map +0 -1
  38. package/dist/core/manager/BaseManager.js +0 -16
  39. package/dist/core/manager/BaseManager.js.map +0 -1
  40. package/dist/core/manager/FilterManager.d.ts +0 -16
  41. package/dist/core/manager/FilterManager.d.ts.map +0 -1
  42. package/dist/core/manager/FilterManager.js +0 -88
  43. package/dist/core/manager/FilterManager.js.map +0 -1
  44. package/dist/core/manager/GuildIdManager.d.ts +0 -9
  45. package/dist/core/manager/GuildIdManager.d.ts.map +0 -1
  46. package/dist/core/manager/GuildIdManager.js +0 -25
  47. package/dist/core/manager/GuildIdManager.js.map +0 -1
  48. package/dist/core/manager/QueueManager.d.ts +0 -11
  49. package/dist/core/manager/QueueManager.d.ts.map +0 -1
  50. package/dist/core/manager/QueueManager.js +0 -172
  51. package/dist/core/manager/QueueManager.js.map +0 -1
  52. package/dist/core/manager/index.d.ts +0 -5
  53. package/dist/core/manager/index.d.ts.map +0 -1
  54. package/dist/core/manager/index.js +0 -17
  55. package/dist/core/manager/index.js.map +0 -1
  56. package/dist/core/voice/DisTubeVoice.d.ts +0 -32
  57. package/dist/core/voice/DisTubeVoice.d.ts.map +0 -1
  58. package/dist/core/voice/DisTubeVoice.js +0 -190
  59. package/dist/core/voice/DisTubeVoice.js.map +0 -1
  60. package/dist/core/voice/DisTubeVoiceManager.d.ts +0 -10
  61. package/dist/core/voice/DisTubeVoiceManager.d.ts.map +0 -1
  62. package/dist/core/voice/DisTubeVoiceManager.js +0 -36
  63. package/dist/core/voice/DisTubeVoiceManager.js.map +0 -1
  64. package/dist/core/voice/index.d.ts +0 -3
  65. package/dist/core/voice/index.d.ts.map +0 -1
  66. package/dist/core/voice/index.js +0 -15
  67. package/dist/core/voice/index.js.map +0 -1
  68. package/dist/index.d.ts.map +0 -1
  69. package/dist/plugin/http.d.ts +0 -10
  70. package/dist/plugin/http.d.ts.map +0 -1
  71. package/dist/plugin/http.js +0 -18
  72. package/dist/plugin/http.js.map +0 -1
  73. package/dist/plugin/https.d.ts +0 -19
  74. package/dist/plugin/https.d.ts.map +0 -1
  75. package/dist/plugin/https.js +0 -47
  76. package/dist/plugin/https.js.map +0 -1
  77. package/dist/plugin/index.d.ts +0 -3
  78. package/dist/plugin/index.d.ts.map +0 -1
  79. package/dist/plugin/index.js +0 -15
  80. package/dist/plugin/index.js.map +0 -1
  81. package/dist/struct/CustomPlugin.d.ts +0 -10
  82. package/dist/struct/CustomPlugin.d.ts.map +0 -1
  83. package/dist/struct/CustomPlugin.js +0 -16
  84. package/dist/struct/CustomPlugin.js.map +0 -1
  85. package/dist/struct/DisTubeError.d.ts +0 -55
  86. package/dist/struct/DisTubeError.d.ts.map +0 -1
  87. package/dist/struct/DisTubeError.js +0 -64
  88. package/dist/struct/DisTubeError.js.map +0 -1
  89. package/dist/struct/ExtractorPlugin.d.ts +0 -13
  90. package/dist/struct/ExtractorPlugin.d.ts.map +0 -1
  91. package/dist/struct/ExtractorPlugin.js +0 -16
  92. package/dist/struct/ExtractorPlugin.js.map +0 -1
  93. package/dist/struct/Playlist.d.ts +0 -25
  94. package/dist/struct/Playlist.d.ts.map +0 -1
  95. package/dist/struct/Playlist.js +0 -77
  96. package/dist/struct/Playlist.js.map +0 -1
  97. package/dist/struct/Plugin.d.ts +0 -17
  98. package/dist/struct/Plugin.d.ts.map +0 -1
  99. package/dist/struct/Plugin.js +0 -37
  100. package/dist/struct/Plugin.js.map +0 -1
  101. package/dist/struct/Queue.d.ts +0 -49
  102. package/dist/struct/Queue.d.ts.map +0 -1
  103. package/dist/struct/Queue.js +0 -272
  104. package/dist/struct/Queue.js.map +0 -1
  105. package/dist/struct/SearchResult.d.ts +0 -19
  106. package/dist/struct/SearchResult.d.ts.map +0 -1
  107. package/dist/struct/SearchResult.js +0 -30
  108. package/dist/struct/SearchResult.js.map +0 -1
  109. package/dist/struct/Song.d.ts +0 -43
  110. package/dist/struct/Song.d.ts.map +0 -1
  111. package/dist/struct/Song.js +0 -138
  112. package/dist/struct/Song.js.map +0 -1
  113. package/dist/struct/TaskQueue.d.ts +0 -8
  114. package/dist/struct/TaskQueue.d.ts.map +0 -1
  115. package/dist/struct/TaskQueue.js +0 -39
  116. package/dist/struct/TaskQueue.js.map +0 -1
  117. package/dist/struct/index.d.ts +0 -10
  118. package/dist/struct/index.d.ts.map +0 -1
  119. package/dist/struct/index.js +0 -22
  120. package/dist/struct/index.js.map +0 -1
  121. package/dist/tsconfig.tsbuildinfo +0 -1
  122. package/dist/type.d.ts +0 -104
  123. package/dist/type.d.ts.map +0 -1
  124. package/dist/type.js +0 -3
  125. package/dist/type.js.map +0 -1
  126. package/dist/util.d.ts +0 -22
  127. package/dist/util.d.ts.map +0 -1
  128. package/dist/util.js +0 -189
  129. package/dist/util.js.map +0 -1
@@ -1,190 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
- if (kind === "m") throw new TypeError("Private method is not writable");
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
- };
13
- var _DisTubeVoice_instances, _DisTubeVoice_channel, _DisTubeVoice_volume, _DisTubeVoice_join;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.DisTubeVoice = void 0;
16
- const tiny_typed_emitter_1 = require("tiny-typed-emitter");
17
- const __1 = require("../..");
18
- const voice_1 = require("@discordjs/voice");
19
- class DisTubeVoice extends tiny_typed_emitter_1.TypedEmitter {
20
- constructor(voiceManager, channel) {
21
- super();
22
- _DisTubeVoice_instances.add(this);
23
- this.isDisconnected = false;
24
- _DisTubeVoice_channel.set(this, void 0);
25
- _DisTubeVoice_volume.set(this, 100);
26
- if (!(0, __1.isSupportedVoiceChannel)(channel)) {
27
- throw new __1.DisTubeError("INVALID_TYPE", "BaseGuildVoiceChannel", channel, "channel");
28
- }
29
- if (!channel.joinable) {
30
- if (channel.full)
31
- throw new __1.DisTubeError("VOICE_FULL");
32
- else
33
- throw new __1.DisTubeError("VOICE_MISSING_PERMS");
34
- }
35
- this.id = channel.guild.id;
36
- this.channel = channel;
37
- this.voices = voiceManager;
38
- this.voices.add(this.id, this);
39
- this.audioPlayer = (0, voice_1.createAudioPlayer)()
40
- .on(voice_1.AudioPlayerStatus.Idle, oldState => {
41
- if (oldState.status !== voice_1.AudioPlayerStatus.Idle) {
42
- delete this.audioResource;
43
- this.emit("finish");
44
- }
45
- })
46
- .on("error", error => {
47
- if (this.emittedError)
48
- return;
49
- this.emittedError = true;
50
- this.emit("error", error);
51
- });
52
- this.connection
53
- .on(voice_1.VoiceConnectionStatus.Disconnected, (_, newState) => {
54
- if (newState.reason === voice_1.VoiceConnectionDisconnectReason.WebSocketClose && newState.closeCode === 4014) {
55
- (0, __1.entersState)(this.connection, voice_1.VoiceConnectionStatus.Connecting, 5e3).catch(() => {
56
- this.leave();
57
- });
58
- }
59
- else if (this.connection.rejoinAttempts < 5) {
60
- setTimeout(() => {
61
- this.connection.rejoin();
62
- }, (this.connection.rejoinAttempts + 1) * 5e3).unref();
63
- }
64
- else if (this.connection.state.status !== voice_1.VoiceConnectionStatus.Destroyed) {
65
- this.leave(new __1.DisTubeError("VOICE_RECONNECT_FAILED"));
66
- }
67
- })
68
- .on(voice_1.VoiceConnectionStatus.Destroyed, () => {
69
- this.leave(new __1.DisTubeError("VOICE_RECONNECT_FAILED"));
70
- });
71
- this.connection.subscribe(this.audioPlayer);
72
- }
73
- get channel() {
74
- return __classPrivateFieldGet(this, _DisTubeVoice_channel, "f");
75
- }
76
- set channel(channel) {
77
- if (!(0, __1.isSupportedVoiceChannel)(channel)) {
78
- throw new __1.DisTubeError("INVALID_TYPE", "BaseGuildVoiceChannel", channel, "DisTubeVoice#channel");
79
- }
80
- if (channel.guild.id !== this.id)
81
- throw new __1.DisTubeError("VOICE_CHANGE_GUILD");
82
- this.connection = __classPrivateFieldGet(this, _DisTubeVoice_instances, "m", _DisTubeVoice_join).call(this, channel);
83
- this.audioResource?.encoder?.setBitrate(channel.bitrate);
84
- __classPrivateFieldSet(this, _DisTubeVoice_channel, channel, "f");
85
- }
86
- async join(channel) {
87
- const TIMEOUT = 30e3;
88
- if (channel) {
89
- this.channel = channel;
90
- }
91
- try {
92
- await (0, __1.entersState)(this.connection, voice_1.VoiceConnectionStatus.Ready, TIMEOUT);
93
- }
94
- catch {
95
- if (this.connection.state.status !== voice_1.VoiceConnectionStatus.Destroyed) {
96
- this.connection.destroy();
97
- }
98
- this.voices.remove(this.id);
99
- throw new __1.DisTubeError("VOICE_CONNECT_FAILED", TIMEOUT / 1e3);
100
- }
101
- return this;
102
- }
103
- leave(error) {
104
- this.stop(true);
105
- if (!this.isDisconnected) {
106
- this.emit("disconnect", error);
107
- this.isDisconnected = true;
108
- }
109
- if (this.connection.state.status !== voice_1.VoiceConnectionStatus.Destroyed)
110
- this.connection.destroy();
111
- this.voices.remove(this.id);
112
- }
113
- stop(force = false) {
114
- this.audioPlayer.stop(force);
115
- }
116
- play(stream) {
117
- this.emittedError = false;
118
- stream.stream.on("error", (error) => {
119
- if (this.emittedError || error.code === "ERR_STREAM_PREMATURE_CLOSE")
120
- return;
121
- this.emittedError = true;
122
- this.emit("error", error);
123
- });
124
- this.audioResource = (0, voice_1.createAudioResource)(stream.stream, {
125
- inputType: stream.type,
126
- inlineVolume: true,
127
- });
128
- this.volume = __classPrivateFieldGet(this, _DisTubeVoice_volume, "f");
129
- this.audioResource.encoder?.setBitrate(this.channel.bitrate);
130
- this.audioPlayer.play(this.audioResource);
131
- }
132
- set volume(volume) {
133
- if (typeof volume !== "number" || isNaN(volume)) {
134
- throw new __1.DisTubeError("INVALID_TYPE", "number", volume, "volume");
135
- }
136
- if (volume < 0) {
137
- throw new __1.DisTubeError("NUMBER_COMPARE", "Volume", "bigger or equal to", 0);
138
- }
139
- __classPrivateFieldSet(this, _DisTubeVoice_volume, volume, "f");
140
- this.audioResource?.volume?.setVolume(Math.pow(__classPrivateFieldGet(this, _DisTubeVoice_volume, "f") / 100, 0.5 / Math.log10(2)));
141
- }
142
- get volume() {
143
- return __classPrivateFieldGet(this, _DisTubeVoice_volume, "f");
144
- }
145
- get playbackDuration() {
146
- return (this.audioResource?.playbackDuration ?? 0) / 1000;
147
- }
148
- pause() {
149
- this.audioPlayer.pause();
150
- }
151
- unpause() {
152
- this.audioPlayer.unpause();
153
- }
154
- get selfDeaf() {
155
- return this.connection.joinConfig.selfDeaf;
156
- }
157
- get selfMute() {
158
- return this.connection.joinConfig.selfMute;
159
- }
160
- setSelfDeaf(selfDeaf) {
161
- if (typeof selfDeaf !== "boolean") {
162
- throw new __1.DisTubeError("INVALID_TYPE", "boolean", selfDeaf, "selfDeaf");
163
- }
164
- return this.connection.rejoin({
165
- ...this.connection.joinConfig,
166
- selfDeaf,
167
- });
168
- }
169
- setSelfMute(selfMute) {
170
- if (typeof selfMute !== "boolean") {
171
- throw new __1.DisTubeError("INVALID_TYPE", "boolean", selfMute, "selfMute");
172
- }
173
- return this.connection.rejoin({
174
- ...this.connection.joinConfig,
175
- selfMute,
176
- });
177
- }
178
- get voiceState() {
179
- return this.channel?.guild?.me?.voice;
180
- }
181
- }
182
- exports.DisTubeVoice = DisTubeVoice;
183
- _DisTubeVoice_channel = new WeakMap(), _DisTubeVoice_volume = new WeakMap(), _DisTubeVoice_instances = new WeakSet(), _DisTubeVoice_join = function _DisTubeVoice_join(channel) {
184
- return (0, voice_1.joinVoiceChannel)({
185
- channelId: channel.id,
186
- guildId: this.id,
187
- adapterCreator: channel.guild.voiceAdapterCreator,
188
- });
189
- };
190
- //# sourceMappingURL=DisTubeVoice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DisTubeVoice.js","sourceRoot":"","sources":["../../../src/core/voice/DisTubeVoice.ts"],"names":[],"mappings":"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","sourcesContent":["import { TypedEmitter } from \"tiny-typed-emitter\";\nimport { DisTubeError, entersState, isSupportedVoiceChannel } from \"../..\";\nimport {\n AudioPlayerStatus,\n VoiceConnectionDisconnectReason,\n VoiceConnectionStatus,\n createAudioPlayer,\n createAudioResource,\n joinVoiceChannel,\n} from \"@discordjs/voice\";\nimport type { DisTubeStream, DisTubeVoiceEvents, DisTubeVoiceManager } from \"../..\";\nimport type { AudioPlayer, AudioResource, VoiceConnection } from \"@discordjs/voice\";\nimport type { Snowflake, VoiceBasedChannel, VoiceState } from \"discord.js\";\n\n/**\n * Create a voice connection to the voice channel\n */\nexport class DisTubeVoice extends TypedEmitter<DisTubeVoiceEvents> {\n readonly id: Snowflake;\n readonly voices: DisTubeVoiceManager;\n readonly audioPlayer: AudioPlayer;\n connection!: VoiceConnection;\n audioResource?: AudioResource;\n emittedError!: boolean;\n isDisconnected = false;\n #channel!: VoiceBasedChannel;\n #volume = 100;\n constructor(voiceManager: DisTubeVoiceManager, channel: VoiceBasedChannel) {\n super();\n if (!isSupportedVoiceChannel(channel)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"BaseGuildVoiceChannel\", channel, \"channel\");\n }\n if (!channel.joinable) {\n if (channel.full) throw new DisTubeError(\"VOICE_FULL\");\n else throw new DisTubeError(\"VOICE_MISSING_PERMS\");\n }\n this.id = channel.guild.id;\n this.channel = channel;\n /**\n * The voice manager that instantiated this connection\n * @type {DisTubeVoiceManager}\n */\n this.voices = voiceManager;\n this.voices.add(this.id, this);\n this.audioPlayer = createAudioPlayer()\n .on(AudioPlayerStatus.Idle, oldState => {\n if (oldState.status !== AudioPlayerStatus.Idle) {\n delete this.audioResource;\n this.emit(\"finish\");\n }\n })\n .on(\"error\", error => {\n if (this.emittedError) return;\n this.emittedError = true;\n this.emit(\"error\", error);\n });\n this.connection\n .on(VoiceConnectionStatus.Disconnected, (_, newState) => {\n if (newState.reason === VoiceConnectionDisconnectReason.WebSocketClose && newState.closeCode === 4014) {\n entersState(this.connection, VoiceConnectionStatus.Connecting, 5e3).catch(() => {\n this.leave();\n });\n } else if (this.connection.rejoinAttempts < 5) {\n setTimeout(() => {\n this.connection.rejoin();\n }, (this.connection.rejoinAttempts + 1) * 5e3).unref();\n } else if (this.connection.state.status !== VoiceConnectionStatus.Destroyed) {\n this.leave(new DisTubeError(\"VOICE_RECONNECT_FAILED\"));\n }\n })\n .on(VoiceConnectionStatus.Destroyed, () => {\n this.leave(new DisTubeError(\"VOICE_RECONNECT_FAILED\"));\n });\n this.connection.subscribe(this.audioPlayer);\n /**\n * Get or set the volume percentage\n * @name DisTubeVoice#volume\n * @type {number}\n */\n }\n get channel() {\n return this.#channel;\n }\n set channel(channel: VoiceBasedChannel) {\n if (!isSupportedVoiceChannel(channel)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"BaseGuildVoiceChannel\", channel, \"DisTubeVoice#channel\");\n }\n if (channel.guild.id !== this.id) throw new DisTubeError(\"VOICE_CHANGE_GUILD\");\n this.connection = this.#join(channel);\n this.audioResource?.encoder?.setBitrate(channel.bitrate);\n this.#channel = channel;\n }\n #join(channel: VoiceBasedChannel) {\n return joinVoiceChannel({\n channelId: channel.id,\n guildId: this.id,\n adapterCreator: channel.guild.voiceAdapterCreator as any,\n });\n }\n /**\n * Join a voice channel with this connection\n * @param {Discord.BaseGuildVoiceChannel} [channel] A voice channel\n * @returns {Promise<DisTubeVoice>}\n */\n async join(channel?: VoiceBasedChannel): Promise<DisTubeVoice> {\n const TIMEOUT = 30e3;\n if (channel) {\n this.channel = channel;\n }\n try {\n await entersState(this.connection, VoiceConnectionStatus.Ready, TIMEOUT);\n } catch {\n if (this.connection.state.status !== VoiceConnectionStatus.Destroyed) {\n this.connection.destroy();\n }\n this.voices.remove(this.id);\n throw new DisTubeError(\"VOICE_CONNECT_FAILED\", TIMEOUT / 1e3);\n }\n return this;\n }\n /**\n * Leave the voice channel of this connection\n * @param {Error} [error] Optional, an error to emit with 'error' event.\n */\n leave(error?: Error) {\n this.stop(true);\n if (!this.isDisconnected) {\n this.emit(\"disconnect\", error);\n this.isDisconnected = true;\n }\n if (this.connection.state.status !== VoiceConnectionStatus.Destroyed) this.connection.destroy();\n this.voices.remove(this.id);\n }\n /**\n * Stop the playing stream\n * @param {boolean} [force=false] If true, will force the {@link DisTubeVoice#audioPlayer} to enter the Idle state\n * even if the {@link DisTubeVoice#audioResource} has silence padding frames.\n * @private\n */\n stop(force = false) {\n this.audioPlayer.stop(force);\n }\n /**\n * Play a readable stream\n * @private\n * @param {DisTubeStream} stream Readable stream\n */\n play(stream: DisTubeStream) {\n this.emittedError = false;\n stream.stream.on(\"error\", (error: NodeJS.ErrnoException) => {\n if (this.emittedError || error.code === \"ERR_STREAM_PREMATURE_CLOSE\") return;\n this.emittedError = true;\n this.emit(\"error\", error);\n });\n this.audioResource = createAudioResource(stream.stream, {\n inputType: stream.type,\n inlineVolume: true,\n });\n this.volume = this.#volume;\n this.audioResource.encoder?.setBitrate(this.channel.bitrate);\n this.audioPlayer.play(this.audioResource);\n }\n set volume(volume: number) {\n if (typeof volume !== \"number\" || isNaN(volume)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"number\", volume, \"volume\");\n }\n if (volume < 0) {\n throw new DisTubeError(\"NUMBER_COMPARE\", \"Volume\", \"bigger or equal to\", 0);\n }\n this.#volume = volume;\n this.audioResource?.volume?.setVolume(Math.pow(this.#volume / 100, 0.5 / Math.log10(2)));\n }\n get volume() {\n return this.#volume;\n }\n /**\n * Playback duration of the audio resource in seconds\n * @type {number}\n */\n get playbackDuration() {\n return (this.audioResource?.playbackDuration ?? 0) / 1000;\n }\n pause() {\n this.audioPlayer.pause();\n }\n unpause() {\n this.audioPlayer.unpause();\n }\n /**\n * Whether the bot is self-deafened\n * @type {boolean}\n */\n get selfDeaf(): boolean {\n return this.connection.joinConfig.selfDeaf;\n }\n /**\n * Whether the bot is self-muted\n * @type {boolean}\n */\n get selfMute(): boolean {\n return this.connection.joinConfig.selfMute;\n }\n /**\n * Self-deafens/undeafens the bot.\n * @param {boolean} selfDeaf Whether or not the bot should be self-deafened\n * @returns {boolean} true if the voice state was successfully updated, otherwise false\n */\n setSelfDeaf(selfDeaf: boolean): boolean {\n if (typeof selfDeaf !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", selfDeaf, \"selfDeaf\");\n }\n return this.connection.rejoin({\n ...this.connection.joinConfig,\n selfDeaf,\n });\n }\n /**\n * Self-mutes/unmutes the bot.\n * @param {boolean} selfMute Whether or not the bot should be self-muted\n * @returns {boolean} true if the voice state was successfully updated, otherwise false\n */\n setSelfMute(selfMute: boolean): boolean {\n if (typeof selfMute !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", selfMute, \"selfMute\");\n }\n return this.connection.rejoin({\n ...this.connection.joinConfig,\n selfMute,\n });\n }\n /**\n * The voice state of this connection\n * @type {Discord.VoiceState?}\n */\n get voiceState(): VoiceState | undefined {\n return this.channel?.guild?.me?.voice;\n }\n}\n"]}
@@ -1,10 +0,0 @@
1
- import { DisTubeVoice } from ".";
2
- import { GuildIdManager } from "../manager";
3
- import type { GuildIdResolvable } from "../..";
4
- import type { VoiceBasedChannel } from "discord.js";
5
- export declare class DisTubeVoiceManager extends GuildIdManager<DisTubeVoice> {
6
- create(channel: VoiceBasedChannel): DisTubeVoice;
7
- join(channel: VoiceBasedChannel): Promise<DisTubeVoice>;
8
- leave(guild: GuildIdResolvable): void;
9
- }
10
- //# sourceMappingURL=DisTubeVoiceManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DisTubeVoiceManager.d.ts","sourceRoot":"","sources":["../../../src/core/voice/DisTubeVoiceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,YAAY,CAAC;IAmBnE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY;IAYhD,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IASvD,KAAK,CAAC,KAAK,EAAE,iBAAiB;CAW/B"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DisTubeVoiceManager = void 0;
4
- const _1 = require(".");
5
- const __1 = require("../..");
6
- const manager_1 = require("../manager");
7
- const voice_1 = require("@discordjs/voice");
8
- class DisTubeVoiceManager extends manager_1.GuildIdManager {
9
- create(channel) {
10
- const existing = this.get(channel.guild.id);
11
- if (existing) {
12
- return existing;
13
- }
14
- return new _1.DisTubeVoice(this, channel);
15
- }
16
- join(channel) {
17
- const existing = this.get(channel.guild.id);
18
- if (existing)
19
- return existing.join(channel);
20
- return this.create(channel).join();
21
- }
22
- leave(guild) {
23
- const voice = this.get(guild);
24
- if (voice) {
25
- voice.leave();
26
- }
27
- else {
28
- const connection = (0, voice_1.getVoiceConnection)((0, __1.resolveGuildId)(guild));
29
- if (connection && connection.state.status !== voice_1.VoiceConnectionStatus.Destroyed) {
30
- connection.destroy();
31
- }
32
- }
33
- }
34
- }
35
- exports.DisTubeVoiceManager = DisTubeVoiceManager;
36
- //# sourceMappingURL=DisTubeVoiceManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DisTubeVoiceManager.js","sourceRoot":"","sources":["../../../src/core/voice/DisTubeVoiceManager.ts"],"names":[],"mappings":";;;AAAA,wBAAiC;AACjC,6BAAuC;AACvC,wCAA4C;AAC5C,4CAA6E;AAQ7E,MAAa,mBAAoB,SAAQ,wBAA4B;IAmBnE,MAAM,CAAC,OAA0B;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,IAAI,eAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAMD,IAAI,CAAC,OAA0B;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAKD,KAAK,CAAC,KAAwB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;SACf;aAAM;YACL,MAAM,UAAU,GAAG,IAAA,0BAAkB,EAAC,IAAA,kBAAc,EAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,6BAAqB,CAAC,SAAS,EAAE;gBAC7E,UAAU,CAAC,OAAO,EAAE,CAAC;aACtB;SACF;IACH,CAAC;CACF;AAnDD,kDAmDC","sourcesContent":["import { DisTubeVoice } from \".\";\nimport { resolveGuildId } from \"../..\";\nimport { GuildIdManager } from \"../manager\";\nimport { VoiceConnectionStatus, getVoiceConnection } from \"@discordjs/voice\";\nimport type { GuildIdResolvable } from \"../..\";\nimport type { VoiceBasedChannel } from \"discord.js\";\n\n/**\n * Manages voice connections for {@link DisTube}\n * @extends BaseManager\n */\nexport class DisTubeVoiceManager extends GuildIdManager<DisTubeVoice> {\n /**\n * Get a {@link DisTubeVoice}.\n * @method get\n * @memberof DisTubeVoiceManager#\n * @param {GuildIdResolvable} guild The queue resolvable to resolve\n * @returns {DisTubeVoice?}\n */\n /**\n * Collection of {@link DisTubeVoice}.\n * @name DisTubeVoiceManager#collection\n * @type {Discord.Collection<string, DisTubeVoice>}\n */\n /**\n * Create a {@link DisTubeVoice}\n * @param {Discord.BaseGuildVoiceChannel} channel A voice channel to join\n * @returns {DisTubeVoice}\n * @private\n */\n create(channel: VoiceBasedChannel): DisTubeVoice {\n const existing = this.get(channel.guild.id);\n if (existing) {\n return existing;\n }\n return new DisTubeVoice(this, channel);\n }\n /**\n * Join a voice channel\n * @param {Discord.BaseGuildVoiceChannel} channel A voice channel to join\n * @returns {Promise<DisTubeVoice>}\n */\n join(channel: VoiceBasedChannel): Promise<DisTubeVoice> {\n const existing = this.get(channel.guild.id);\n if (existing) return existing.join(channel);\n return this.create(channel).join();\n }\n /**\n * Leave the connected voice channel in a guild\n * @param {GuildIdResolvable} guild Queue Resolvable\n */\n leave(guild: GuildIdResolvable) {\n const voice = this.get(guild);\n if (voice) {\n voice.leave();\n } else {\n const connection = getVoiceConnection(resolveGuildId(guild));\n if (connection && connection.state.status !== VoiceConnectionStatus.Destroyed) {\n connection.destroy();\n }\n }\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- export * from "./DisTubeVoice";
2
- export * from "./DisTubeVoiceManager";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/voice/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./DisTubeVoice"), exports);
14
- __exportStar(require("./DisTubeVoiceManager"), exports);
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/voice/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA+B;AAC/B,wDAAsC","sourcesContent":["export * from \"./DisTubeVoice\";\nexport * from \"./DisTubeVoiceManager\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -1,10 +0,0 @@
1
- import { ExtractorPlugin } from "..";
2
- import type { GuildMember } from "discord.js";
3
- export declare class HTTPPlugin extends ExtractorPlugin {
4
- validate(url: string): Promise<boolean>;
5
- resolve(url: string, options?: {
6
- member?: GuildMember;
7
- metadata?: any;
8
- }): Promise<import("..").Song<any>>;
9
- }
10
- //# sourceMappingURL=http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/plugin/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAqC,MAAM,IAAI,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,UAAW,SAAQ,eAAe;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAO;CAGlF"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HTTPPlugin = void 0;
7
- const http_1 = __importDefault(require("http"));
8
- const __1 = require("..");
9
- class HTTPPlugin extends __1.ExtractorPlugin {
10
- async validate(url) {
11
- return (0, __1.validateAudioURL)(http_1.default, "http:", url);
12
- }
13
- async resolve(url, options = {}) {
14
- return (0, __1.resolveHttpSong)(url, { ...options, source: "http" });
15
- }
16
- }
17
- exports.HTTPPlugin = HTTPPlugin;
18
- //# sourceMappingURL=http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/plugin/http.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,0BAAwE;AAGxE,MAAa,UAAW,SAAQ,mBAAe;IAC7C,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,OAAO,IAAA,oBAAgB,EAAC,cAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,UAAoD,EAAE;QAC/E,OAAO,IAAA,mBAAe,EAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AARD,gCAQC","sourcesContent":["import http from \"http\";\nimport { ExtractorPlugin, resolveHttpSong, validateAudioURL } from \"..\";\nimport type { GuildMember } from \"discord.js\";\n\nexport class HTTPPlugin extends ExtractorPlugin {\n async validate(url: string) {\n return validateAudioURL(http, \"http:\", url);\n }\n\n async resolve(url: string, options: { member?: GuildMember; metadata?: any } = {}) {\n return resolveHttpSong(url, { ...options, source: \"http\" });\n }\n}\n"]}
@@ -1,19 +0,0 @@
1
- import https from "https";
2
- import { ExtractorPlugin, Song } from "..";
3
- import type http from "http";
4
- import type { GuildMember } from "discord.js";
5
- export declare const getResponseHeaders: (httpModule: typeof http | typeof https, url: string) => Promise<http.IncomingHttpHeaders>;
6
- export declare const validateAudioURL: (httpModule: typeof http | typeof https, protocol: string, url: string) => Promise<boolean>;
7
- export declare const resolveHttpSong: (url: string, options: {
8
- source: "http" | "https";
9
- member?: GuildMember;
10
- metadata?: any;
11
- }) => Promise<Song<any>>;
12
- export declare class HTTPSPlugin extends ExtractorPlugin {
13
- validate(url: string): Promise<boolean>;
14
- resolve(url: string, options?: {
15
- member?: GuildMember;
16
- metadata?: any;
17
- }): Promise<Song<any>>;
18
- }
19
- //# sourceMappingURL=https.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"https.d.ts","sourceRoot":"","sources":["../../src/plugin/https.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,kBAAkB,eACjB,WAAW,GAAG,YAAY,OACjC,MAAM,KACV,QAAQ,KAAK,mBAAmB,CAQ/B,CAAC;AAEL,eAAO,MAAM,gBAAgB,eAAsB,WAAW,GAAG,YAAY,YAAY,MAAM,OAAO,MAAM,qBAU3G,CAAC;AAEF,eAAO,MAAM,eAAe,QACrB,MAAM,WACF;IAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,uBAW5E,CAAC;AAEF,qBAAa,WAAY,SAAQ,eAAe;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAO;CAGlF"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HTTPSPlugin = exports.resolveHttpSong = exports.validateAudioURL = exports.getResponseHeaders = void 0;
7
- const https_1 = __importDefault(require("https"));
8
- const url_1 = require("url");
9
- const __1 = require("..");
10
- const getResponseHeaders = async (httpModule, url) => new Promise((resolve, reject) => {
11
- httpModule
12
- .get(url)
13
- .on("response", res => {
14
- resolve(res.headers);
15
- })
16
- .on("error", reject);
17
- });
18
- exports.getResponseHeaders = getResponseHeaders;
19
- const validateAudioURL = async (httpModule, protocol, url) => {
20
- if (new url_1.URL(url).protocol.toLowerCase() !== protocol) {
21
- return false;
22
- }
23
- const headers = await (0, exports.getResponseHeaders)(httpModule, url), type = headers["content-type"];
24
- if (type?.startsWith("audio")) {
25
- return true;
26
- }
27
- return false;
28
- };
29
- exports.validateAudioURL = validateAudioURL;
30
- const resolveHttpSong = async (url, options) => {
31
- url = url.replace(/\/+$/, "");
32
- return new __1.Song({
33
- name: url.substring(url.lastIndexOf("/") + 1).replace(/((\?|#).*)?$/, "") || url,
34
- url,
35
- }, options);
36
- };
37
- exports.resolveHttpSong = resolveHttpSong;
38
- class HTTPSPlugin extends __1.ExtractorPlugin {
39
- async validate(url) {
40
- return (0, exports.validateAudioURL)(https_1.default, "https:", url);
41
- }
42
- async resolve(url, options = {}) {
43
- return (0, exports.resolveHttpSong)(url, { ...options, source: "https" });
44
- }
45
- }
46
- exports.HTTPSPlugin = HTTPSPlugin;
47
- //# sourceMappingURL=https.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"https.js","sourceRoot":"","sources":["../../src/plugin/https.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,6BAA0B;AAC1B,0BAA2C;AAIpC,MAAM,kBAAkB,GAAG,KAAK,EACrC,UAAsC,EACtC,GAAW,EACwB,EAAE,CACrC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,UAAU;SACP,GAAG,CAAC,GAAG,CAAC;SACR,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC;SACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAXQ,QAAA,kBAAkB,sBAW1B;AAEE,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAsC,EAAE,QAAgB,EAAE,GAAW,EAAE,EAAE;IAC9G,IAAI,IAAI,SAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;QACpD,OAAO,KAAK,CAAC;KACd;IACD,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAkB,EAAC,UAAU,EAAE,GAAG,CAAC,EACvD,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,IAAI,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;QAC7B,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B;AAEK,MAAM,eAAe,GAAG,KAAK,EAClC,GAAW,EACX,OAA2E,EAE3E,EAAE;IACF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9B,OAAO,IAAI,QAAI,CACb;QACE,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,GAAG;QAChF,GAAG;KACJ,EACD,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B;AAEF,MAAa,WAAY,SAAQ,mBAAe;IAC9C,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,OAAO,IAAA,wBAAgB,EAAC,eAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,UAAoD,EAAE;QAC/E,OAAO,IAAA,uBAAe,EAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF;AARD,kCAQC","sourcesContent":["import https from \"https\";\nimport { URL } from \"url\";\nimport { ExtractorPlugin, Song } from \"..\";\nimport type http from \"http\";\nimport type { GuildMember } from \"discord.js\";\n\nexport const getResponseHeaders = async (\n httpModule: typeof http | typeof https,\n url: string,\n): Promise<http.IncomingHttpHeaders> =>\n new Promise((resolve, reject) => {\n httpModule\n .get(url)\n .on(\"response\", res => {\n resolve(res.headers);\n })\n .on(\"error\", reject);\n });\n\nexport const validateAudioURL = async (httpModule: typeof http | typeof https, protocol: string, url: string) => {\n if (new URL(url).protocol.toLowerCase() !== protocol) {\n return false;\n }\n const headers = await getResponseHeaders(httpModule, url),\n type = headers[\"content-type\"];\n if (type?.startsWith(\"audio\")) {\n return true;\n }\n return false;\n};\n\nexport const resolveHttpSong = async (\n url: string,\n options: { source: \"http\" | \"https\"; member?: GuildMember; metadata?: any },\n // eslint-disable-next-line @typescript-eslint/require-await\n) => {\n url = url.replace(/\\/+$/, \"\");\n return new Song(\n {\n name: url.substring(url.lastIndexOf(\"/\") + 1).replace(/((\\?|#).*)?$/, \"\") || url,\n url,\n },\n options,\n );\n};\n\nexport class HTTPSPlugin extends ExtractorPlugin {\n async validate(url: string) {\n return validateAudioURL(https, \"https:\", url);\n }\n\n async resolve(url: string, options: { member?: GuildMember; metadata?: any } = {}) {\n return resolveHttpSong(url, { ...options, source: \"https\" });\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- export * from "./http";
2
- export * from "./https";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./http"), exports);
14
- __exportStar(require("./https"), exports);
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuB;AACvB,0CAAwB","sourcesContent":["export * from \"./http\";\nexport * from \"./https\";\n"]}
@@ -1,10 +0,0 @@
1
- import { Plugin } from ".";
2
- import { PluginType } from "..";
3
- import type { VoiceBasedChannel } from "discord.js";
4
- import type { Awaitable, CustomPluginPlayOptions } from "..";
5
- export declare abstract class CustomPlugin extends Plugin {
6
- type: PluginType;
7
- abstract play(voiceChannel: VoiceBasedChannel, song: string, options: CustomPluginPlayOptions): Awaitable<void>;
8
- validate(song: string): Awaitable<boolean>;
9
- }
10
- //# sourceMappingURL=CustomPlugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CustomPlugin.d.ts","sourceRoot":"","sources":["../../src/struct/CustomPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAgC,MAAM,IAAI,CAAC;AAO3F,8BAAsB,YAAa,SAAQ,MAAM;IAC/C,IAAI,aAAqB;IASzB,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC;IAM/G,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;CAG3C"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CustomPlugin = void 0;
4
- const _1 = require(".");
5
- const __1 = require("..");
6
- class CustomPlugin extends _1.Plugin {
7
- constructor() {
8
- super(...arguments);
9
- this.type = __1.PluginType.CUSTOM;
10
- }
11
- validate(song) {
12
- return false;
13
- }
14
- }
15
- exports.CustomPlugin = CustomPlugin;
16
- //# sourceMappingURL=CustomPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CustomPlugin.js","sourceRoot":"","sources":["../../src/struct/CustomPlugin.ts"],"names":[],"mappings":";;;AACA,wBAA2B;AAC3B,0BAAgC;AAShC,MAAsB,YAAa,SAAQ,SAAM;IAAjD;;QACE,SAAI,GAAG,cAAU,CAAC,MAAM,CAAC;IAkB3B,CAAC;IAHC,QAAQ,CAAC,IAAY;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAnBD,oCAmBC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Plugin } from \".\";\nimport { PluginType } from \"..\";\nimport type { VoiceBasedChannel } from \"discord.js\";\nimport type { Awaitable, CustomPluginPlayOptions, Playlist, SearchResult, Song } from \"..\";\n\n/**\n * Custom Plugin\n * @extends Plugin\n * @abstract\n */\nexport abstract class CustomPlugin extends Plugin {\n type = PluginType.CUSTOM;\n /**\n * This method will be executed if the `song` string is validated.\n * @param {Discord.BaseGuildVoiceChannel} voiceChannel The voice channel will be joined\n * @param {string} song Validated `song`\n * @param {CustomPluginPlayOptions} [options] Optional options\n * @returns {Promise<void>}\n * @abstract\n */\n abstract play(voiceChannel: VoiceBasedChannel, song: string, options: CustomPluginPlayOptions): Awaitable<void>;\n /**\n * Check if the {@link DisTube#play} `song` parameter is working with this plugin\n * @param {string} song String need to validate\n * @returns {boolean|Promise<boolean>}\n */\n validate(song: string): Awaitable<boolean> {\n return false;\n }\n}\n\n/**\n * @typedef {Object} CustomPluginPlayOptions\n * @param {Discord.GuildMember} [member] Requested user\n * @param {Discord.BaseGuildTextChannel} [textChannel] Default {@link Queue#textChannel}\n * @param {boolean} [skip=false]\n * Skip the playing song (if exists) and play the added song/playlist if `position` is 1.\n * If `position` is defined and not equal to 1, it will skip to the next song instead of the added song\n * @param {number} [position=0] Position of the song/playlist to add to the queue,\n * <= 0 to add to the end of the queue.\n * @param {*} [metadata] Optional metadata that can be attached to the song/playlist will be played.\n */\n\n/**\n * This method will be executed if the url is validated.\n * @param {Discord.BaseGuildVoiceChannel} voiceChannel The voice channel will be joined\n * @param {string} song Validated `song`\n * @param {CustomPluginPlayOptions} [options] Optional options\n * @returns {Promise<void>}\n * @abstract\n * @method play\n * @memberof CustomPlugin#\n */\n"]}
@@ -1,55 +0,0 @@
1
- declare const ERROR_MESSAGES: {
2
- INVALID_TYPE: (expected: (number | string) | readonly (number | string)[], got: any, name?: string | undefined) => string;
3
- NUMBER_COMPARE: (name: string, expected: string, value: number) => string;
4
- EMPTY_ARRAY: (name: string) => string;
5
- EMPTY_FILTERED_ARRAY: (name: string, type: string) => string;
6
- EMPTY_STRING: (name: string) => string;
7
- INVALID_KEY: (obj: string, key: string) => string;
8
- MISSING_KEY: (obj: string, key: string) => string;
9
- MISSING_KEYS: (obj: string, key: string[], all: boolean) => string;
10
- MISSING_INTENTS: (i: string) => string;
11
- DISABLED_OPTION: (o: string) => string;
12
- ENABLED_OPTION: (o: string) => string;
13
- NOT_IN_VOICE: string;
14
- VOICE_FULL: string;
15
- VOICE_CONNECT_FAILED: (s: number) => string;
16
- VOICE_MISSING_PERMS: string;
17
- VOICE_RECONNECT_FAILED: string;
18
- VOICE_CHANGE_GUILD: string;
19
- NO_QUEUE: string;
20
- QUEUE_EXIST: string;
21
- PAUSED: string;
22
- RESUMED: string;
23
- NO_PREVIOUS: string;
24
- NO_UP_NEXT: string;
25
- NO_SONG_POSITION: string;
26
- NO_PLAYING: string;
27
- NO_RESULT: string;
28
- NO_RELATED: string;
29
- CANNOT_PLAY_RELATED: string;
30
- UNAVAILABLE_VIDEO: string;
31
- UNPLAYABLE_FORMATS: string;
32
- NON_NSFW: string;
33
- NOT_SUPPORTED_URL: string;
34
- CANNOT_RESOLVE_SONG: (t: any) => string;
35
- NO_VALID_SONG: string;
36
- EMPTY_FILTERED_PLAYLIST: string;
37
- EMPTY_PLAYLIST: string;
38
- };
39
- declare type ErrorMessages = typeof ERROR_MESSAGES;
40
- declare type ErrorCodes = keyof ErrorMessages;
41
- declare type ErrorCode = {
42
- [K in ErrorCodes]-?: ErrorMessages[K] extends string ? K : never;
43
- }[ErrorCodes];
44
- declare type ErrorCodeTemplate = Exclude<keyof typeof ERROR_MESSAGES, ErrorCode>;
45
- export declare class DisTubeError<T extends string> extends Error {
46
- errorCode: string;
47
- constructor(code: ErrorCode);
48
- constructor(code: T extends ErrorCodeTemplate ? T : never, ...args: Parameters<ErrorMessages[typeof code]>);
49
- constructor(code: ErrorCodeTemplate, _: never);
50
- constructor(code: T extends ErrorCodes ? "This is built-in error code" : T, message: string);
51
- get name(): string;
52
- get code(): string;
53
- }
54
- export {};
55
- //# sourceMappingURL=DisTubeError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DisTubeError.d.ts","sourceRoot":"","sources":["../../src/struct/DisTubeError.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,cAAc;6BACO,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,GAAG;2BAI5D,MAAM,YAAY,MAAM,SAAS,MAAM;wBAC1C,MAAM;iCACG,MAAM,QAAQ,MAAM;yBAC5B,MAAM;uBACR,MAAM,OAAO,MAAM;uBACnB,MAAM,OAAO,MAAM;wBAClB,MAAM,OAAO,MAAM,EAAE,OAAO,OAAO;yBAGlC,MAAM;yBACN,MAAM;wBACP,MAAM;;;8BAIA,MAAM;;;;;;;;;;;;;;;;;;;6BAqBP,GAAG;;;;CAM7B,CAAC;AAEF,aAAK,aAAa,GAAG,OAAO,cAAc,CAAC;AAC3C,aAAK,UAAU,GAAG,MAAM,aAAa,CAAC;AACtC,aAAK,SAAS,GAAG;KAAG,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC,UAAU,CAAC,CAAC;AAClG,aAAK,iBAAiB,GAAG,OAAO,CAAC,MAAM,OAAO,cAAc,EAAE,SAAS,CAAC,CAAC;AAMzE,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,KAAK;IACvD,SAAS,EAAE,MAAM,CAAC;gBACN,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,CAAC,SAAS,iBAAiB,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC;gBAC9F,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK;gBACjC,IAAI,EAAE,CAAC,SAAS,UAAU,GAAG,6BAA6B,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM;IAS3F,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;CACF"}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DisTubeError = void 0;
4
- const node_util_1 = require("node:util");
5
- const ERROR_MESSAGES = {
6
- INVALID_TYPE: (expected, got, name) => `Expected ${Array.isArray(expected) ? expected.map(e => (typeof e === "number" ? e : `'${e}'`)).join(" or ") : `'${expected}'`}${name ? ` for '${name}'` : ""}, but got ${(0, node_util_1.inspect)(got)}`,
7
- NUMBER_COMPARE: (name, expected, value) => `'${name}' must be ${expected} ${value}`,
8
- EMPTY_ARRAY: (name) => `'${name}' is an empty array`,
9
- EMPTY_FILTERED_ARRAY: (name, type) => `There is no valid '${type}' in the '${name}' array`,
10
- EMPTY_STRING: (name) => `'${name}' string must not be empty`,
11
- INVALID_KEY: (obj, key) => `'${key}' does not need to be provided in ${obj}`,
12
- MISSING_KEY: (obj, key) => `'${key}' needs to be provided in ${obj}`,
13
- MISSING_KEYS: (obj, key, all) => `${key.map(k => `'${k}'`).join(all ? " and " : " or ")} need to be provided in ${obj}`,
14
- MISSING_INTENTS: (i) => `${i} intent must be provided for the Client`,
15
- DISABLED_OPTION: (o) => `DisTubeOptions.${o} is disabled`,
16
- ENABLED_OPTION: (o) => `DisTubeOptions.${o} is enabled`,
17
- NOT_IN_VOICE: "User is not in any voice channel",
18
- VOICE_FULL: "The voice channel is full",
19
- VOICE_CONNECT_FAILED: (s) => `Cannot connect to the voice channel after ${s} seconds`,
20
- VOICE_MISSING_PERMS: "You do not have permission to join this voice channel",
21
- VOICE_RECONNECT_FAILED: "Cannot reconnect to the voice channel",
22
- VOICE_CHANGE_GUILD: "Cannot join a channel in a different guild",
23
- NO_QUEUE: "There is no playing queue in this guild",
24
- QUEUE_EXIST: "This guild has a Queue already",
25
- PAUSED: "The queue has been paused already",
26
- RESUMED: "The queue has been playing already",
27
- NO_PREVIOUS: "There is no previous song in this queue",
28
- NO_UP_NEXT: "There is no up next song",
29
- NO_SONG_POSITION: "Does not have any song at this position",
30
- NO_PLAYING: "There is no playing song in the queue",
31
- NO_RESULT: "No result found",
32
- NO_RELATED: "Cannot find any related songs",
33
- CANNOT_PLAY_RELATED: "Cannot play the related song",
34
- UNAVAILABLE_VIDEO: "This video is unavailable",
35
- UNPLAYABLE_FORMATS: "No playable format found",
36
- NON_NSFW: "Cannot play age-restricted content in non-NSFW channel",
37
- NOT_SUPPORTED_URL: "This url is not supported",
38
- CANNOT_RESOLVE_SONG: (t) => `Cannot resolve ${(0, node_util_1.inspect)(t)} to a Song`,
39
- NO_VALID_SONG: "'songs' array does not have any valid Song, SearchResult or url",
40
- EMPTY_FILTERED_PLAYLIST: "There is no valid video in the playlist\n" +
41
- "Maybe age-restricted contents is filtered because you are in non-NSFW channel",
42
- EMPTY_PLAYLIST: "There is no valid video in the playlist",
43
- };
44
- const errMsg = (msg, ...args) => (typeof msg === "string" ? msg : msg(...args));
45
- const haveCode = (code) => Object.keys(ERROR_MESSAGES).includes(code);
46
- class DisTubeError extends Error {
47
- constructor(code, ...args) {
48
- if (haveCode(code))
49
- super(errMsg(ERROR_MESSAGES[code], ...args));
50
- else
51
- super(...args);
52
- this.errorCode = code;
53
- if (Error.captureStackTrace)
54
- Error.captureStackTrace(this, DisTubeError);
55
- }
56
- get name() {
57
- return `DisTubeError [${this.errorCode}]`;
58
- }
59
- get code() {
60
- return this.errorCode;
61
- }
62
- }
63
- exports.DisTubeError = DisTubeError;
64
- //# sourceMappingURL=DisTubeError.js.map