UNPKG

@evolvejs/evolava

Version:

a lavalink client for evolvejs

98 lines 3.38 kB
"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