@evolvejs/evolava
Version:
a lavalink client for evolvejs
98 lines • 3.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Queue = void 0;
const objex_1 = require("@evolvejs/objex");
class Queue extends objex_1.Objex {
constructor(player, options) {
super();
this.player = player;
this.repeatTrack = options.repeatTrack || false;
this.repeatQueue = options.repeatQueue || false;
this.skipOnError = options.skipOnError || false;
}
get duration() {
return this.map((x) => x.length).reduce((acc, val) => acc + val, 0);
}
get empty() {
return !this.size;
}
toggleRepeat(type) {
if (type === "track") {
this.repeatTrack = true;
this.repeatQueue = false;
return this.repeatTrack;
}
else if (type === "queue") {
this.repeatQueue = true;
this.repeatTrack = false;
return this.repeatQueue;
}
else {
this.repeatQueue = false;
this.repeatTrack = false;
return false;
}
}
add(data) {
if (!data)
throw new TypeError(`Queue#add() Provided argument is not of type "Track" or "Track[]".`);
if (Array.isArray(data)) {
for (let i = 0; i < data.length; i++) {
this.set(this.size + 1, data[i]);
}
}
else {
this.set(this.size + 1, data);
}
}
remove(pos) {
const track = this.toArray()[pos || 0];
this.delete(track[0]);
return track[1];
}
wipe(start, end) {
if (!start)
throw new RangeError(`Queue#wipe() "start" parameter missing.`);
if (!end)
throw new RangeError(`Queue#wipe() "end" parameter missing.`);
if (start >= end)
throw new RangeError(`Queue#wipe() Start parameter must be smaller than end.`);
if (start >= this.size)
throw new RangeError(`Queue#wipe() Start parameter must be smaller than queue length.`);
const bucket = [];
const trackArr = this.toArray();
for (let i = start; i === end; i++) {
const track = trackArr[i];
bucket.push(track[1]);
this.delete(track[0]);
}
return bucket;
}
clearQueue() {
let curr = this.get(0);
this.clear();
if (curr)
this.set(1, curr);
}
moveTrack(from, to) {
if (!from)
throw new RangeError(`Queue#moveTrack() "from" parameter missing.`);
if (!to)
throw new RangeError(`Queue#moveTrack() "to" parameter missing.`);
if (to > this.size)
throw new RangeError(`Queue#moveTrack() The new position cannot be greater than ${this.size}.`);
if (this.player.playing && (to === 0 || from === 0))
throw new Error(`Queue#moveTrack() Cannot change position or replace currently playing track.`);
const arr = [...this.values()];
const track = arr.splice(from, 1)[0];
if (!track)
throw new RangeError(`Queue#moveTrack() No track found at the given position.`);
arr.splice(to, 0, track);
this.clearQueue();
for (let i = 0; i < arr.length; i++) {
this.set(i + 1, arr[i]);
}
}
}
exports.Queue = Queue;
//# sourceMappingURL=EvoLavaQueue.js.map