for-modules 1.0.0

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.
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Rest = void 0;
7
+ var _axios = _interopRequireDefault(require("axios"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
11
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
12
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
13
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
14
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
15
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ /** Handles the requests sent to the Lavalink REST API. */
19
+ var Rest = exports.Rest = /*#__PURE__*/function () {
20
+ /** The Node that this Rest instance is connected to. */
21
+
22
+ /** The ID of the current session. */
23
+
24
+ /** The password for the Node. */
25
+
26
+ /** The URL of the Node. */
27
+
28
+ function Rest(node) {
29
+ _classCallCheck(this, Rest);
30
+ this.node = node;
31
+ this.url = "http".concat(node.options.secure ? "s" : "", "://").concat(node.options.host, ":").concat(node.options.port);
32
+ this.sessionId = node.sessionId;
33
+ this.password = node.options.password;
34
+ }
35
+
36
+ /**
37
+ * Sets the session ID.
38
+ * @returns {string} Returns the session ID.
39
+ */
40
+ return _createClass(Rest, [{
41
+ key: "setSessionId",
42
+ value: function setSessionId(sessionId) {
43
+ this.sessionId = sessionId;
44
+ return this.sessionId;
45
+ }
46
+
47
+ /** Retrieves all the players that are currently running on the node. */
48
+ }, {
49
+ key: "getAllPlayers",
50
+ value: (function () {
51
+ var _getAllPlayers = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
52
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
53
+ while (1) switch (_context.prev = _context.next) {
54
+ case 0:
55
+ _context.next = 2;
56
+ return this.get("/v4/sessions/".concat(this.sessionId, "/players"));
57
+ case 2:
58
+ return _context.abrupt("return", _context.sent);
59
+ case 3:
60
+ case "end":
61
+ return _context.stop();
62
+ }
63
+ }, _callee, this);
64
+ }));
65
+ function getAllPlayers() {
66
+ return _getAllPlayers.apply(this, arguments);
67
+ }
68
+ return getAllPlayers;
69
+ }() /** Sends a PATCH request to update player related data. */)
70
+ }, {
71
+ key: "updatePlayer",
72
+ value: (function () {
73
+ var _updatePlayer = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(options) {
74
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
75
+ while (1) switch (_context2.prev = _context2.next) {
76
+ case 0:
77
+ _context2.next = 2;
78
+ return this.patch("/v4/sessions/".concat(this.sessionId, "/players/").concat(options.guildId, "?noReplace=false"), options.data);
79
+ case 2:
80
+ return _context2.abrupt("return", _context2.sent);
81
+ case 3:
82
+ case "end":
83
+ return _context2.stop();
84
+ }
85
+ }, _callee2, this);
86
+ }));
87
+ function updatePlayer(_x) {
88
+ return _updatePlayer.apply(this, arguments);
89
+ }
90
+ return updatePlayer;
91
+ }() /** Sends a DELETE request to the server to destroy the player. */)
92
+ }, {
93
+ key: "destroyPlayer",
94
+ value: (function () {
95
+ var _destroyPlayer = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(guildId) {
96
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
97
+ while (1) switch (_context3.prev = _context3.next) {
98
+ case 0:
99
+ _context3.next = 2;
100
+ return this["delete"]("/v4/sessions/".concat(this.sessionId, "/players/").concat(guildId));
101
+ case 2:
102
+ return _context3.abrupt("return", _context3.sent);
103
+ case 3:
104
+ case "end":
105
+ return _context3.stop();
106
+ }
107
+ }, _callee3, this);
108
+ }));
109
+ function destroyPlayer(_x2) {
110
+ return _destroyPlayer.apply(this, arguments);
111
+ }
112
+ return destroyPlayer;
113
+ }() /* Sends a GET request to the specified endpoint and returns the response data. */)
114
+ }, {
115
+ key: "request",
116
+ value: (function () {
117
+ var _request = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(method, endpoint, body) {
118
+ var config, response, _error$response;
119
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
120
+ while (1) switch (_context4.prev = _context4.next) {
121
+ case 0:
122
+ config = {
123
+ method: method,
124
+ url: this.url + endpoint,
125
+ headers: {
126
+ "Content-Type": "application/json",
127
+ Authorization: this.password
128
+ },
129
+ data: body
130
+ };
131
+ _context4.prev = 1;
132
+ _context4.next = 4;
133
+ return (0, _axios["default"])(config);
134
+ case 4:
135
+ response = _context4.sent;
136
+ return _context4.abrupt("return", response.data);
137
+ case 8:
138
+ _context4.prev = 8;
139
+ _context4.t0 = _context4["catch"](1);
140
+ if ((_context4.t0 === null || _context4.t0 === void 0 || (_error$response = _context4.t0.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 404) {
141
+ this.node.destroy();
142
+ this.node.manager.createNode(this.node.options).connect();
143
+ }
144
+ return _context4.abrupt("return", null);
145
+ case 12:
146
+ case "end":
147
+ return _context4.stop();
148
+ }
149
+ }, _callee4, this, [[1, 8]]);
150
+ }));
151
+ function request(_x3, _x4, _x5) {
152
+ return _request.apply(this, arguments);
153
+ }
154
+ return request;
155
+ }() /* Sends a GET request to the specified endpoint and returns the response data. */)
156
+ }, {
157
+ key: "get",
158
+ value: (function () {
159
+ var _get = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(endpoint) {
160
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
161
+ while (1) switch (_context5.prev = _context5.next) {
162
+ case 0:
163
+ _context5.next = 2;
164
+ return this.request("GET", endpoint);
165
+ case 2:
166
+ return _context5.abrupt("return", _context5.sent);
167
+ case 3:
168
+ case "end":
169
+ return _context5.stop();
170
+ }
171
+ }, _callee5, this);
172
+ }));
173
+ function get(_x6) {
174
+ return _get.apply(this, arguments);
175
+ }
176
+ return get;
177
+ }() /* Sends a PATCH request to the specified endpoint and returns the response data. */)
178
+ }, {
179
+ key: "patch",
180
+ value: (function () {
181
+ var _patch = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(endpoint, body) {
182
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
183
+ while (1) switch (_context6.prev = _context6.next) {
184
+ case 0:
185
+ _context6.next = 2;
186
+ return this.request("PATCH", endpoint, body);
187
+ case 2:
188
+ return _context6.abrupt("return", _context6.sent);
189
+ case 3:
190
+ case "end":
191
+ return _context6.stop();
192
+ }
193
+ }, _callee6, this);
194
+ }));
195
+ function patch(_x7, _x8) {
196
+ return _patch.apply(this, arguments);
197
+ }
198
+ return patch;
199
+ }() /* Sends a POST request to the specified endpoint and returns the response data. */)
200
+ }, {
201
+ key: "post",
202
+ value: (function () {
203
+ var _post = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(endpoint, body) {
204
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
205
+ while (1) switch (_context7.prev = _context7.next) {
206
+ case 0:
207
+ _context7.next = 2;
208
+ return this.request("POST", endpoint, body);
209
+ case 2:
210
+ return _context7.abrupt("return", _context7.sent);
211
+ case 3:
212
+ case "end":
213
+ return _context7.stop();
214
+ }
215
+ }, _callee7, this);
216
+ }));
217
+ function post(_x9, _x10) {
218
+ return _post.apply(this, arguments);
219
+ }
220
+ return post;
221
+ }() /* Sends a DELETE request to the specified endpoint and returns the response data. */)
222
+ }, {
223
+ key: "delete",
224
+ value: (function () {
225
+ var _delete2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(endpoint) {
226
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
227
+ while (1) switch (_context8.prev = _context8.next) {
228
+ case 0:
229
+ _context8.next = 2;
230
+ return this.request("DELETE", endpoint);
231
+ case 2:
232
+ return _context8.abrupt("return", _context8.sent);
233
+ case 3:
234
+ case "end":
235
+ return _context8.stop();
236
+ }
237
+ }, _callee8, this);
238
+ }));
239
+ function _delete(_x11) {
240
+ return _delete2.apply(this, arguments);
241
+ }
242
+ return _delete;
243
+ }())
244
+ }]);
245
+ }();
246
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImUiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwibiIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJhIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVzdCIsImV4cG9ydHMiLCJub2RlIiwidXJsIiwiY29uY2F0Iiwib3B0aW9ucyIsInNlY3VyZSIsImhvc3QiLCJwb3J0Iiwic2Vzc2lvbklkIiwicGFzc3dvcmQiLCJzZXRTZXNzaW9uSWQiLCJfZ2V0QWxsUGxheWVycyIsIl9jYWxsZWUiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiZ2V0IiwiZ2V0QWxsUGxheWVycyIsIl91cGRhdGVQbGF5ZXIiLCJfY2FsbGVlMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhdGNoIiwiZ3VpbGRJZCIsImRhdGEiLCJ1cGRhdGVQbGF5ZXIiLCJfeCIsIl9kZXN0cm95UGxheWVyIiwiX2NhbGxlZTMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJkZXN0cm95UGxheWVyIiwiX3gyIiwiX3JlcXVlc3QiLCJfY2FsbGVlNCIsImVuZHBvaW50IiwiYm9keSIsImNvbmZpZyIsInJlc3BvbnNlIiwiX2Vycm9yJHJlc3BvbnNlIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJheGlvcyIsInQwIiwic3RhdHVzIiwiZGVzdHJveSIsIm1hbmFnZXIiLCJjcmVhdGVOb2RlIiwiY29ubmVjdCIsInJlcXVlc3QiLCJfeDMiLCJfeDQiLCJfeDUiLCJfZ2V0IiwiX2NhbGxlZTUiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJfeDYiLCJfcGF0Y2giLCJfY2FsbGVlNiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsIl94NyIsIl94OCIsIl9wb3N0IiwiX2NhbGxlZTciLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJwb3N0IiwiX3g5IiwiX3gxMCIsIl9kZWxldGUyIiwiX2NhbGxlZTgiLCJfY2FsbGVlOCQiLCJfY29udGV4dDgiLCJkZWxldGUiLCJfeDExIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0cnVjdHVyZXMvUmVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlIH0gZnJvbSBcIi4vTm9kZVwiO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVxdWVzdENvbmZpZywgQXhpb3NSZXNwb25zZSB9IGZyb20gXCJheGlvc1wiO1xuXG4vKiogSGFuZGxlcyB0aGUgcmVxdWVzdHMgc2VudCB0byB0aGUgTGF2YWxpbmsgUkVTVCBBUEkuICovXG5leHBvcnQgY2xhc3MgUmVzdCB7XG5cdC8qKiBUaGUgTm9kZSB0aGF0IHRoaXMgUmVzdCBpbnN0YW5jZSBpcyBjb25uZWN0ZWQgdG8uICovXG5cdHByaXZhdGUgbm9kZTogTm9kZTtcblx0LyoqIFRoZSBJRCBvZiB0aGUgY3VycmVudCBzZXNzaW9uLiAqL1xuXHRwcml2YXRlIHNlc3Npb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIHBhc3N3b3JkIGZvciB0aGUgTm9kZS4gKi9cblx0cHJpdmF0ZSByZWFkb25seSBwYXNzd29yZDogc3RyaW5nO1xuXHQvKiogVGhlIFVSTCBvZiB0aGUgTm9kZS4gKi9cblx0cHJpdmF0ZSByZWFkb25seSB1cmw6IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihub2RlOiBOb2RlKSB7XG5cdFx0dGhpcy5ub2RlID0gbm9kZTtcblx0XHR0aGlzLnVybCA9IGBodHRwJHtub2RlLm9wdGlvbnMuc2VjdXJlID8gXCJzXCIgOiBcIlwifTovLyR7bm9kZS5vcHRpb25zLmhvc3R9OiR7bm9kZS5vcHRpb25zLnBvcnR9YDtcblx0XHR0aGlzLnNlc3Npb25JZCA9IG5vZGUuc2Vzc2lvbklkO1xuXHRcdHRoaXMucGFzc3dvcmQgPSBub2RlLm9wdGlvbnMucGFzc3dvcmQ7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgc2Vzc2lvbiBJRC5cblx0ICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc2Vzc2lvbiBJRC5cblx0ICovXG5cdHB1YmxpYyBzZXRTZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHRoaXMuc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuXHRcdHJldHVybiB0aGlzLnNlc3Npb25JZDtcblx0fVxuXG5cdC8qKiBSZXRyaWV2ZXMgYWxsIHRoZSBwbGF5ZXJzIHRoYXQgYXJlIGN1cnJlbnRseSBydW5uaW5nIG9uIHRoZSBub2RlLiAqL1xuXHRwdWJsaWMgYXN5bmMgZ2V0QWxsUGxheWVycygpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gYXdhaXQgdGhpcy5nZXQoYC92NC9zZXNzaW9ucy8ke3RoaXMuc2Vzc2lvbklkfS9wbGF5ZXJzYCk7XG5cdH1cblxuXHQvKiogU2VuZHMgYSBQQVRDSCByZXF1ZXN0IHRvIHVwZGF0ZSBwbGF5ZXIgcmVsYXRlZCBkYXRhLiAqL1xuXHRwdWJsaWMgYXN5bmMgdXBkYXRlUGxheWVyKG9wdGlvbnM6IHBsYXlPcHRpb25zKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0cmV0dXJuIGF3YWl0IHRoaXMucGF0Y2goYC92NC9zZXNzaW9ucy8ke3RoaXMuc2Vzc2lvbklkfS9wbGF5ZXJzLyR7b3B0aW9ucy5ndWlsZElkfT9ub1JlcGxhY2U9ZmFsc2VgLCBvcHRpb25zLmRhdGEpO1xuXHR9XG5cblx0LyoqIFNlbmRzIGEgREVMRVRFIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB0byBkZXN0cm95IHRoZSBwbGF5ZXIuICovXG5cdHB1YmxpYyBhc3luYyBkZXN0cm95UGxheWVyKGd1aWxkSWQ6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHJldHVybiBhd2FpdCB0aGlzLmRlbGV0ZShgL3Y0L3Nlc3Npb25zLyR7dGhpcy5zZXNzaW9uSWR9L3BsYXllcnMvJHtndWlsZElkfWApO1xuXHR9XG5cblx0LyogU2VuZHMgYSBHRVQgcmVxdWVzdCB0byB0aGUgc3BlY2lmaWVkIGVuZHBvaW50IGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBkYXRhLiAqL1xuXHRwcml2YXRlIGFzeW5jIHJlcXVlc3QobWV0aG9kOiBNZXRob2QsIGVuZHBvaW50OiBzdHJpbmcsIGJvZHk/OiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0Y29uc3QgY29uZmlnOiBBeGlvc1JlcXVlc3RDb25maWcgPSB7XG5cdFx0XHRtZXRob2QsXG5cdFx0XHR1cmw6IHRoaXMudXJsICsgZW5kcG9pbnQsXG5cdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuXHRcdFx0XHRBdXRob3JpemF0aW9uOiB0aGlzLnBhc3N3b3JkLFxuXHRcdFx0fSxcblx0XHRcdGRhdGE6IGJvZHksXG5cdFx0fTtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zKGNvbmZpZykgYXMgQXhpb3NSZXNwb25zZVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlLmRhdGE7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGlmIChlcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDA0KSB7XG5cdFx0XHRcdHRoaXMubm9kZS5kZXN0cm95KCk7XG5cdFx0XHRcdHRoaXMubm9kZS5tYW5hZ2VyLmNyZWF0ZU5vZGUodGhpcy5ub2RlLm9wdGlvbnMpLmNvbm5lY3QoKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdC8qIFNlbmRzIGEgR0VUIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBlbmRwb2ludCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgZGF0YS4gKi9cblx0cHVibGljIGFzeW5jIGdldChlbmRwb2ludDogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdChcIkdFVFwiLCBlbmRwb2ludCk7XG5cdH1cblxuXHQvKiBTZW5kcyBhIFBBVENIIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBlbmRwb2ludCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgZGF0YS4gKi9cblx0cHVibGljIGFzeW5jIHBhdGNoKGVuZHBvaW50OiBzdHJpbmcsIGJvZHk6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiUEFUQ0hcIiwgZW5kcG9pbnQsIGJvZHkpO1xuXHR9XG5cblx0LyogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBlbmRwb2ludCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgZGF0YS4gKi9cblx0cHVibGljIGFzeW5jIHBvc3QoZW5kcG9pbnQ6IHN0cmluZywgYm9keTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHJldHVybiBhd2FpdCB0aGlzLnJlcXVlc3QoXCJQT1NUXCIsIGVuZHBvaW50LCBib2R5KTtcblx0fVxuXG5cdC8qIFNlbmRzIGEgREVMRVRFIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBlbmRwb2ludCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgZGF0YS4gKi9cblx0cHVibGljIGFzeW5jIGRlbGV0ZShlbmRwb2ludDogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdChcIkRFTEVURVwiLCBlbmRwb2ludCk7XG5cdH1cbn1cblxuaW50ZXJmYWNlIHBsYXlPcHRpb25zIHtcblx0Z3VpbGRJZDogc3RyaW5nO1xuXHRkYXRhOiB7XG5cdFx0LyoqIFRoZSBiYXNlNjQgZW5jb2RlZCB0cmFjay4gKi9cblx0XHRlbmNvZGVkVHJhY2s/OiBzdHJpbmc7XG5cdFx0LyoqIFRoZSB0cmFjayBJRC4gKi9cblx0XHRpZGVudGlmaWVyPzogc3RyaW5nO1xuXHRcdC8qKiBUaGUgdHJhY2sgdGltZSB0byBzdGFydCBhdC4gKi9cblx0XHRzdGFydFRpbWU/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSB0cmFjayB0aW1lIHRvIGVuZCBhdC4gKi9cblx0XHRlbmRUaW1lPzogbnVtYmVyO1xuXHRcdC8qKiBUaGUgcGxheWVyIHZvbHVtZSBsZXZlbC4gKi9cblx0XHR2b2x1bWU/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBwbGF5ZXIgcG9zaXRpb24gaW4gYSB0cmFjay4gKi9cblx0XHRwb3NpdGlvbj86IG51bWJlcjtcblx0XHQvKiogV2hldGhlciB0aGUgcGxheWVyIGlzIHBhdXNlZC4gKi9cblx0XHRwYXVzZWQ/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgYXVkaW8gZWZmZWN0cy4gKi9cblx0XHRmaWx0ZXJzPzogb2JqZWN0O1xuXHRcdC8qKiB2b2ljZSBwYXlsb2FkLiAqL1xuXHRcdHZvaWNlPzoge1xuXHRcdFx0dG9rZW46IHN0cmluZztcblx0XHRcdHNlc3Npb25JZDogc3RyaW5nO1xuXHRcdFx0ZW5kcG9pbnQ6IHN0cmluZztcblx0XHR9O1xuXHRcdC8qKiBXaGV0aGVyIHRvIG5vdCByZXBsYWNlIHRoZSB0cmFjayBpZiBhIHBsYXkgcGF5bG9hZCBpcyBzZW50LiAqL1xuXHRcdG5vUmVwbGFjZT86IGJvb2xlYW47XG5cdH07XG59XG5cbmV4cG9ydCB0eXBlIE1ldGhvZCA9IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUEFUQ0hcIiB8IFwiREVMRVRFXCI7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7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
@@ -0,0 +1,174 @@
1
+ import { ClientUser, User } from "discord.js";
2
+ import { Manager } from "./Manager";
3
+ import { Node, NodeStats } from "./Node";
4
+ import { Player, Track, UnresolvedTrack } from "./Player";
5
+ import { Queue } from "./Queue";
6
+ export declare abstract class TrackUtils {
7
+ static trackPartial: string[] | null;
8
+ private static manager;
9
+ /** @hidden */
10
+ static init(manager: Manager): void;
11
+ static setTrackPartial(partial: string[]): void;
12
+ /**
13
+ * Checks if the provided argument is a valid Track or UnresolvedTrack, if provided an array then every element will be checked.
14
+ * @param trackOrTracks
15
+ */
16
+ static validate(trackOrTracks: unknown): boolean;
17
+ /**
18
+ * Checks if the provided argument is a valid UnresolvedTrack.
19
+ * @param track
20
+ */
21
+ static isUnresolvedTrack(track: unknown): boolean;
22
+ /**
23
+ * Checks if the provided argument is a valid Track.
24
+ * @param track
25
+ */
26
+ static isTrack(track: unknown): boolean;
27
+ /**
28
+ * Builds a Track from the raw data from Lavalink and a optional requester.
29
+ * @param data
30
+ * @param requester
31
+ */
32
+ static build(data: TrackData, requester?: User | ClientUser): Track;
33
+ /**
34
+ * Builds a UnresolvedTrack to be resolved before being played .
35
+ * @param query
36
+ * @param requester
37
+ */
38
+ static buildUnresolved(query: string | UnresolvedQuery, requester?: User | ClientUser): UnresolvedTrack;
39
+ static getClosestTrack(unresolvedTrack: UnresolvedTrack): Promise<Track>;
40
+ }
41
+ /** Gets or extends structures to extend the built in, or already extended, classes to add more functionality. */
42
+ export declare abstract class Structure {
43
+ /**
44
+ * Extends a class.
45
+ * @param name
46
+ * @param extender
47
+ */
48
+ static extend<K extends keyof Extendable, T extends Extendable[K]>(name: K, extender: (target: Extendable[K]) => T): T;
49
+ /**
50
+ * Get a structure from available structures by name.
51
+ * @param name
52
+ */
53
+ static get<K extends keyof Extendable>(name: K): Extendable[K];
54
+ }
55
+ export declare class Plugin {
56
+ load(manager: Manager): void;
57
+ unload(manager: Manager): void;
58
+ }
59
+ export interface UnresolvedQuery {
60
+ /** The title of the unresolved track. */
61
+ title: string;
62
+ /** The author of the unresolved track. If provided it will have a more precise search. */
63
+ author?: string;
64
+ /** The duration of the unresolved track. If provided it will have a more precise search. */
65
+ duration?: number;
66
+ }
67
+ export type Sizes = "0" | "1" | "2" | "3" | "default" | "mqdefault" | "hqdefault" | "maxresdefault";
68
+ export type LoadType = "track" | "playlist" | "search" | "empty" | "error";
69
+ export type State = "CONNECTED" | "CONNECTING" | "DISCONNECTED" | "DISCONNECTING" | "DESTROYING" | "MOVING";
70
+ export type PlayerEvents = TrackStartEvent | TrackEndEvent | TrackStuckEvent | TrackExceptionEvent | WebSocketClosedEvent;
71
+ export type PlayerEventType = "TrackStartEvent" | "TrackEndEvent" | "TrackExceptionEvent" | "TrackStuckEvent" | "WebSocketClosedEvent";
72
+ export type TrackEndReason = "finished" | "loadFailed" | "stopped" | "replaced" | "cleanup";
73
+ export type Severity = "common" | "suspicious" | "fault";
74
+ export interface TrackData {
75
+ /** The track information. */
76
+ encoded: string;
77
+ /** The detailed information of the track. */
78
+ info: TrackDataInfo;
79
+ /** Additional track info provided by plugins. */
80
+ pluginInfo: Record<string, string>;
81
+ }
82
+ export interface TrackDataInfo {
83
+ identifier: string;
84
+ isSeekable: boolean;
85
+ author: string;
86
+ length: number;
87
+ isrc?: string;
88
+ isStream: boolean;
89
+ title: string;
90
+ uri?: string;
91
+ artworkUrl?: string;
92
+ sourceName?: TrackSourceName;
93
+ }
94
+ export type TrackSourceName = "deezer" | "spotify" | "soundcloud" | "youtube";
95
+ export interface Extendable {
96
+ Player: typeof Player;
97
+ Queue: typeof Queue;
98
+ Node: typeof Node;
99
+ }
100
+ export interface VoiceState {
101
+ op: "voiceUpdate";
102
+ guildId: string;
103
+ event: VoiceServer;
104
+ sessionId?: string;
105
+ }
106
+ export interface VoiceServer {
107
+ token: string;
108
+ guild_id: string;
109
+ endpoint: string;
110
+ }
111
+ export interface VoiceState {
112
+ guild_id: string;
113
+ user_id: string;
114
+ session_id: string;
115
+ channel_id: string;
116
+ }
117
+ export interface VoicePacket {
118
+ t?: "VOICE_SERVER_UPDATE" | "VOICE_STATE_UPDATE";
119
+ d: VoiceState | VoiceServer;
120
+ }
121
+ export interface NodeMessage extends NodeStats {
122
+ type: PlayerEventType;
123
+ op: "stats" | "playerUpdate" | "event";
124
+ guildId: string;
125
+ }
126
+ export interface PlayerEvent {
127
+ op: "event";
128
+ type: PlayerEventType;
129
+ guildId: string;
130
+ }
131
+ export interface Exception {
132
+ message: string;
133
+ severity: Severity;
134
+ cause: string;
135
+ }
136
+ export interface TrackStartEvent extends PlayerEvent {
137
+ type: "TrackStartEvent";
138
+ track: TrackData;
139
+ }
140
+ export interface TrackEndEvent extends PlayerEvent {
141
+ type: "TrackEndEvent";
142
+ track: TrackData;
143
+ reason: TrackEndReason;
144
+ }
145
+ export interface TrackExceptionEvent extends PlayerEvent {
146
+ exception?: Exception;
147
+ guildId: string;
148
+ type: "TrackExceptionEvent";
149
+ }
150
+ export interface TrackStuckEvent extends PlayerEvent {
151
+ type: "TrackStuckEvent";
152
+ thresholdMs: number;
153
+ }
154
+ export interface WebSocketClosedEvent extends PlayerEvent {
155
+ type: "WebSocketClosedEvent";
156
+ code: number;
157
+ reason: string;
158
+ byRemote: boolean;
159
+ }
160
+ export interface PlayerUpdate {
161
+ op: "playerUpdate";
162
+ /** The guild id of the player. */
163
+ guildId: string;
164
+ state: {
165
+ /** Unix timestamp in milliseconds. */
166
+ time: number;
167
+ /** The position of the track in milliseconds. */
168
+ position: number;
169
+ /** Whether Lavalink is connected to the voice gateway. */
170
+ connected: boolean;
171
+ /** The ping of the node to the Discord voice server in milliseconds (-1 if not connected). */
172
+ ping: number;
173
+ };
174
+ }