UNPKG

@discord-player/utils

Version:
223 lines (216 loc) 17.5 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __typeError = (msg) => { throw TypeError(msg); }; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); // src/index.ts var src_exports = {}; __export(src_exports, { Collection: () => Collection, EventEmitter: () => import_node_events.EventEmitter, PlayerException: () => PlayerException, Queue: () => Queue, createEnum: () => createEnum, keyMirror: () => createEnum, version: () => version }); module.exports = __toCommonJS(src_exports); // src/Collection.ts var import_collection = require("@discordjs/collection"); var _array; var _Collection = class _Collection extends import_collection.Collection { constructor() { super(...arguments); __privateAdd(this, _array); } /** * @returns {Array<V>} Array of this collection */ array() { if (__privateGet(this, _array)) return __privateGet(this, _array); __privateSet(this, _array, [...this.values()]); return __privateGet(this, _array); } set(key, value) { __privateSet(this, _array, null); super.set(key, value); return this; } delete(key) { __privateSet(this, _array, null); return super.delete(key); } }; _array = new WeakMap(); __name(_Collection, "Collection"); var Collection = _Collection; // src/Queue.ts var import_util = require("util"); var _Queue = class _Queue { constructor(strategy = "FIFO", initializer = []) { this.strategy = strategy; __publicField(this, "store"); if (!["FIFO", "LIFO"].includes(strategy)) throw new TypeError(`Invalid queue strategy "${strategy}"!`); this.store = Array.isArray(initializer) ? initializer : []; Object.defineProperty(this, "store", { writable: true, configurable: true, enumerable: false }); } get data() { return this.toArray(); } static from(data, strategy = "FIFO") { return new _Queue(strategy, data); } isFIFO() { return this.strategy === "FIFO"; } isLIFO() { return this.strategy === "LIFO"; } add(item) { if (this.strategy === "FIFO") { if (Array.isArray(item)) { this.store.push(...item); } else { this.store.push(item); } } else { if (Array.isArray(item)) { this.store.unshift(...item); } else { this.store.unshift(item); } } } clear() { this.store = []; } shuffle() { for (let i = this.store.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [this.store[i], this.store[j]] = [this.store[j], this.store[i]]; } } remove(itemFilter) { const items = this.store.filter(itemFilter); if (items.length) this.store = this.store.filter((res) => !items.includes(res)); } removeOne(itemFilter) { const item = this.store.findIndex(itemFilter); if (item > -1) this.store.splice(item, 1); } find(itemFilter) { return this.store.find(itemFilter); } filter(itemFilter) { return this.store.filter(itemFilter); } some(itemFilter) { return this.store.some(itemFilter); } every(itemFilter) { return this.store.every(itemFilter); } map(itemFilter) { const arr = this.toArray(); return arr.map(itemFilter); } at(idx) { const arr = this.toArray(); return typeof Array.prototype.at === "function" ? arr.at(idx) : arr[idx]; } dispatch() { return this.store.shift(); } clone() { return new _Queue(this.strategy, this.store.slice()); } get size() { return this.store.length; } toString() { return `Queue<${this.store.length} items>`; } toArray() { return this.store.slice(); } toJSON() { return this.store; } [import_util.inspect.custom]() { return `${this.constructor.name} { strategy: '${this.strategy}', data: ${(0, import_util.inspect)(this.data, { showHidden: false, colors: true, depth: 1, maxArrayLength: 5 })} }`; } }; __name(_Queue, "Queue"); var Queue = _Queue; // src/EventEmitter.ts var import_node_events = require("events"); // src/utils.ts function createEnum(data) { const obj = {}; for (const item of data) obj[item] = item; return Object.freeze(obj); } __name(createEnum, "createEnum"); // src/Errors.ts var _PlayerException = class _PlayerException extends Error { constructor(message) { super( typeof message === "string" ? message : JSON.stringify(message, null, 2) ); } }; __name(_PlayerException, "PlayerException"); var PlayerException = _PlayerException; // src/version.ts var version = ( /* @__MACRO__ getVersion */ "7.1.0" ); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Collection, EventEmitter, PlayerException, Queue, createEnum, keyMirror, version }); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9Db2xsZWN0aW9uLnRzIiwgIi4uL3NyYy9RdWV1ZS50cyIsICIuLi9zcmMvRXZlbnRFbWl0dGVyLnRzIiwgIi4uL3NyYy91dGlscy50cyIsICIuLi9zcmMvRXJyb3JzLnRzIiwgIi4uL3NyYy92ZXJzaW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9RdWV1ZSc7XG5leHBvcnQgKiBmcm9tICcuL0V2ZW50RW1pdHRlcic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vRXJyb3JzJztcblxuZXhwb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4vdmVyc2lvbic7IiwgImltcG9ydCB7IENvbGxlY3Rpb24gYXMgQ29sbGVjdGlvbk5hdGl2ZSB9IGZyb20gJ0BkaXNjb3JkanMvY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uPEsgPSB1bmtub3duLCBWID0gdW5rbm93bj4gZXh0ZW5kcyBDb2xsZWN0aW9uTmF0aXZlPFxuICBLLFxuICBWPlxue1xuICAjYXJyYXk6IFZbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcnJheTxWPn0gQXJyYXkgb2YgdGhpcyBjb2xsZWN0aW9uXG4gICAqL1xuICBwdWJsaWMgYXJyYXkoKTogVltdIHtcbiAgICBpZiAodGhpcy4jYXJyYXkpIHJldHVybiB0aGlzLiNhcnJheTtcbiAgICB0aGlzLiNhcnJheSA9IFsuLi50aGlzLnZhbHVlcygpXTtcbiAgICByZXR1cm4gdGhpcy4jYXJyYXk7XG4gIH1cblxuICBwdWJsaWMgc2V0KGtleTogSywgdmFsdWU6IFYpOiB0aGlzIHtcbiAgICB0aGlzLiNhcnJheSA9IG51bGw7XG4gICAgc3VwZXIuc2V0KGtleSwgdmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShrZXk6IEspOiBib29sZWFuIHtcbiAgICB0aGlzLiNhcnJheSA9IG51bGw7XG4gICAgcmV0dXJuIHN1cGVyLmRlbGV0ZShrZXkpO1xuICB9XG59IiwgImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcblxuZXhwb3J0IHR5cGUgUXVldWVTdHJhdGVneSA9ICdMSUZPJyB8ICdGSUZPJztcblxuZXhwb3J0IHR5cGUgUXVldWVJdGVtRmlsdGVyPFQsIFIgPSBib29sZWFuPiA9IChcbnZhbHVlOiBULFxuaWR4OiBudW1iZXIsXG5hcnJheTogVFtdKVxuPT4gUjtcblxuZXhwb3J0IGNsYXNzIFF1ZXVlPFQgPSB1bmtub3duPiB7XG4gIHB1YmxpYyBzdG9yZTogVFtdO1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gIHB1YmxpYyBzdHJhdGVneTogUXVldWVTdHJhdGVneSA9ICdGSUZPJyxcbiAgaW5pdGlhbGl6ZXI6IFRbXSA9IFtdKVxuICB7XG4gICAgaWYgKCFbJ0ZJRk8nLCAnTElGTyddLmluY2x1ZGVzKHN0cmF0ZWd5KSlcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIHF1ZXVlIHN0cmF0ZWd5IFwiJHtzdHJhdGVneX1cIiFgKTtcbiAgICB0aGlzLnN0b3JlID0gQXJyYXkuaXNBcnJheShpbml0aWFsaXplcikgPyBpbml0aWFsaXplciA6IFtdO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzdG9yZScsIHtcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5KCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb208VD4oZGF0YTogVFtdLCBzdHJhdGVneTogUXVldWVTdHJhdGVneSA9ICdGSUZPJykge1xuICAgIHJldHVybiBuZXcgUXVldWU8VD4oc3RyYXRlZ3ksIGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGlzRklGTygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJhdGVneSA9PT0gJ0ZJRk8nO1xuICB9XG5cbiAgcHVibGljIGlzTElGTygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJhdGVneSA9PT0gJ0xJRk8nO1xuICB9XG5cbiAgcHVibGljIGFkZChpdGVtOiBUIHwgVFtdKSB7XG4gICAgaWYgKHRoaXMuc3RyYXRlZ3kgPT09ICdGSUZPJykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5wdXNoKC4uLml0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9yZS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICB0aGlzLnN0b3JlLnVuc2hpZnQoLi4uaXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3JlLnVuc2hpZnQoaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc3RvcmUgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBzaHVmZmxlKCkge1xuICAgIGZvciAobGV0IGkgPSB0aGlzLnN0b3JlLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoaSArIDEpKTtcbiAgICAgIFt0aGlzLnN0b3JlW2ldLCB0aGlzLnN0b3JlW2pdXSA9IFt0aGlzLnN0b3JlW2pdLCB0aGlzLnN0b3JlW2ldXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGl0ZW1GaWx0ZXI6IFF1ZXVlSXRlbUZpbHRlcjxUPikge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zdG9yZS5maWx0ZXIoaXRlbUZpbHRlcik7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aClcbiAgICB0aGlzLnN0b3JlID0gdGhpcy5zdG9yZS5maWx0ZXIoKHJlcykgPT4gIWl0ZW1zLmluY2x1ZGVzKHJlcykpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZU9uZShpdGVtRmlsdGVyOiBRdWV1ZUl0ZW1GaWx0ZXI8VD4pIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5zdG9yZS5maW5kSW5kZXgoaXRlbUZpbHRlcik7XG4gICAgaWYgKGl0ZW0gPiAtMSkgdGhpcy5zdG9yZS5zcGxpY2UoaXRlbSwgMSk7XG4gIH1cblxuICBwdWJsaWMgZmluZChpdGVtRmlsdGVyOiBRdWV1ZUl0ZW1GaWx0ZXI8VD4pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5maW5kKGl0ZW1GaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihpdGVtRmlsdGVyOiBRdWV1ZUl0ZW1GaWx0ZXI8VD4pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5maWx0ZXIoaXRlbUZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgc29tZShpdGVtRmlsdGVyOiBRdWV1ZUl0ZW1GaWx0ZXI8VD4pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zb21lKGl0ZW1GaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIGV2ZXJ5KGl0ZW1GaWx0ZXI6IFF1ZXVlSXRlbUZpbHRlcjxUPikge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmV2ZXJ5KGl0ZW1GaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIG1hcDxSID0gVD4oaXRlbUZpbHRlcjogUXVldWVJdGVtRmlsdGVyPFQsIFI+KSB7XG4gICAgY29uc3QgYXJyID0gdGhpcy50b0FycmF5KCk7XG4gICAgcmV0dXJuIGFyci5tYXAoaXRlbUZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgYXQoaWR4OiBudW1iZXIpIHtcbiAgICBjb25zdCBhcnIgPSB0aGlzLnRvQXJyYXkoKTtcbiAgICByZXR1cm4gdHlwZW9mIEFycmF5LnByb3RvdHlwZS5hdCA9PT0gJ2Z1bmN0aW9uJyA/IGFyci5hdChpZHgpIDogYXJyW2lkeF07XG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2goKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2hpZnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IFF1ZXVlKHRoaXMuc3RyYXRlZ3ksIHRoaXMuc3RvcmUuc2xpY2UoKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgUXVldWU8JHt0aGlzLnN0b3JlLmxlbmd0aH0gaXRlbXM+YDtcbiAgfVxuXG4gIHB1YmxpYyB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlO1xuICB9XG5cbiAgcHVibGljIFtpbnNwZWN0LmN1c3RvbV0oKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0ge1xcbiAgc3RyYXRlZ3k6ICcke1xuICAgIHRoaXMuc3RyYXRlZ3l9JyxcXG4gIGRhdGE6ICR7XG4gICAgaW5zcGVjdCh0aGlzLmRhdGEsIHtcbiAgICAgIHNob3dIaWRkZW46IGZhbHNlLFxuICAgICAgY29sb3JzOiB0cnVlLFxuICAgICAgZGVwdGg6IDEsXG4gICAgICBtYXhBcnJheUxlbmd0aDogNVxuICAgIH0pfVxcbn1gO1xuICB9XG59IiwgImV4cG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ25vZGU6ZXZlbnRzJzsiLCAiZnVuY3Rpb24gY3JlYXRlRW51bTxLIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPihkYXRhOiBLW10pIHtcbiAgY29uc3Qgb2JqID0ge30gYXMgUmVjb3JkPEssIEs+O1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhKSBvYmpbaXRlbV0gPSBpdGVtO1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKG9iaik7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZUVudW0sIGNyZWF0ZUVudW0gYXMga2V5TWlycm9yIH07IiwgImV4cG9ydCB0eXBlIFBsYXllckV4Y2VwdGlvbk1lc3NhZ2UgPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IGNsYXNzIFBsYXllckV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IFBsYXllckV4Y2VwdGlvbk1lc3NhZ2UpIHtcbiAgICBzdXBlcihcbiAgICAgIHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJyA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdlLCBudWxsLCAyKVxuICAgICk7XG4gIH1cbn0iLCAiXG5cblxuXG5cblxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSAvKiBAX19NQUNST19fIGdldFZlcnNpb24gKi9cIjcuMS4wXCI7Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsd0JBQStDO0FBQS9DO0FBRU8sSUFBTSxjQUFOLE1BQU0sb0JBQTZDLGtCQUFBQSxXQUcxRDtBQUFBLEVBSE87QUFBQTtBQUlMO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLFFBQWE7QUFDbEIsUUFBSSxtQkFBSyxRQUFRLFFBQU8sbUJBQUs7QUFDN0IsdUJBQUssUUFBUyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUM7QUFDL0IsV0FBTyxtQkFBSztBQUFBLEVBQ2Q7QUFBQSxFQUVPLElBQUksS0FBUSxPQUFnQjtBQUNqQyx1QkFBSyxRQUFTO0FBQ2QsVUFBTSxJQUFJLEtBQUssS0FBSztBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRU8sT0FBTyxLQUFpQjtBQUM3Qix1QkFBSyxRQUFTO0FBQ2QsV0FBTyxNQUFNLE9BQU8sR0FB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