distube 5.0.6 → 5.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -387,7 +387,7 @@ declare class TaskQueue {
387
387
  /**
388
388
  * Waits for last task finished and queues a new task
389
389
  */
390
- queuing(): Promise<void>;
390
+ queuing(isPlay?: boolean): Promise<void>;
391
391
  /**
392
392
  * Removes the finished task and processes the next task
393
393
  */
@@ -396,6 +396,10 @@ declare class TaskQueue {
396
396
  * The remaining number of tasks
397
397
  */
398
398
  get remaining(): number;
399
+ /**
400
+ * Whether or not having a play task
401
+ */
402
+ get hasPlayTask(): boolean;
399
403
  }
400
404
 
401
405
  /**
package/dist/index.d.ts CHANGED
@@ -387,7 +387,7 @@ declare class TaskQueue {
387
387
  /**
388
388
  * Waits for last task finished and queues a new task
389
389
  */
390
- queuing(): Promise<void>;
390
+ queuing(isPlay?: boolean): Promise<void>;
391
391
  /**
392
392
  * Removes the finished task and processes the next task
393
393
  */
@@ -396,6 +396,10 @@ declare class TaskQueue {
396
396
  * The remaining number of tasks
397
397
  */
398
398
  get remaining(): number;
399
+ /**
400
+ * Whether or not having a play task
401
+ */
402
+ get hasPlayTask(): boolean;
399
403
  }
400
404
 
401
405
  /**
package/dist/index.js CHANGED
@@ -217,7 +217,9 @@ var Task = class {
217
217
  }
218
218
  resolve;
219
219
  promise;
220
- constructor() {
220
+ isPlay;
221
+ constructor(isPlay) {
222
+ this.isPlay = isPlay;
221
223
  this.promise = new Promise((res) => {
222
224
  this.resolve = res;
223
225
  });
@@ -234,9 +236,9 @@ var TaskQueue = class {
234
236
  /**
235
237
  * Waits for last task finished and queues a new task
236
238
  */
237
- queuing() {
239
+ queuing(isPlay = false) {
238
240
  const next = this.remaining ? this.#tasks[this.#tasks.length - 1].promise : Promise.resolve();
239
- this.#tasks.push(new Task());
241
+ this.#tasks.push(new Task(isPlay));
240
242
  return next;
241
243
  }
242
244
  /**
@@ -251,6 +253,12 @@ var TaskQueue = class {
251
253
  get remaining() {
252
254
  return this.#tasks.length;
253
255
  }
256
+ /**
257
+ * Whether or not having a play task
258
+ */
259
+ get hasPlayTask() {
260
+ return this.#tasks.some((t) => t.isPlay);
261
+ }
254
262
  };
255
263
 
256
264
  // src/struct/Playlist.ts
@@ -1901,9 +1909,6 @@ var Queue = class extends DisTubeBase {
1901
1909
  async stop() {
1902
1910
  await this._taskQueue.queuing();
1903
1911
  try {
1904
- this.playing = false;
1905
- this.paused = false;
1906
- this.stopped = true;
1907
1912
  this.voice.stop();
1908
1913
  this.remove();
1909
1914
  } finally {
@@ -1914,14 +1919,12 @@ var Queue = class extends DisTubeBase {
1914
1919
  * Remove the queue from the manager
1915
1920
  */
1916
1921
  remove() {
1922
+ this.playing = false;
1923
+ this.paused = false;
1917
1924
  this.stopped = true;
1918
1925
  this.songs = [];
1919
1926
  this.previousSongs = [];
1920
- if (this._listeners) {
1921
- for (const event of objectKeys(this._listeners)) {
1922
- this.voice.off(event, this._listeners[event]);
1923
- }
1924
- }
1927
+ if (this._listeners) for (const event of objectKeys(this._listeners)) this.voice.off(event, this._listeners[event]);
1925
1928
  this.queues.remove(this.id);
1926
1929
  this.emit("deleteQueue" /* DELETE_QUEUE */, this);
1927
1930
  }
@@ -2291,7 +2294,7 @@ var DisTube = class extends import_tiny_typed_emitter3.TypedEmitter {
2291
2294
  throw new DisTubeError("INVALID_TYPE", "Discord.GuildMember", member, "options.member");
2292
2295
  }
2293
2296
  const queue = this.getQueue(voiceChannel) || await this.queues.create(voiceChannel, textChannel);
2294
- await queue._taskQueue.queuing();
2297
+ await queue._taskQueue.queuing(true);
2295
2298
  try {
2296
2299
  this.debug(`[${queue.id}] Playing input: ${song}`);
2297
2300
  const resolved = await this.handler.resolve(song, { member, metadata });
@@ -2327,6 +2330,7 @@ ${e.message}`;
2327
2330
  }
2328
2331
  throw e;
2329
2332
  } finally {
2333
+ if (!queue.songs.length && !queue._taskQueue.hasPlayTask) queue.remove();
2330
2334
  queue._taskQueue.resolve();
2331
2335
  }
2332
2336
  }
@@ -2503,7 +2507,7 @@ ${e.message}`;
2503
2507
  };
2504
2508
 
2505
2509
  // src/index.ts
2506
- var version = "5.0.6";
2510
+ var version = "5.0.7";
2507
2511
  // Annotate the CommonJS export names for ESM import in node:
2508
2512
  0 && (module.exports = {
2509
2513
  BaseManager,