lavaclient
Version:
A simple, easy-to-use, and flexible lavalink client for node.js
78 lines • 6.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Cluster = void 0;
const tslib_1 = require("tslib");
const WS = tslib_1.__importStar(require("lavalink-ws-client"));
const tiny_typed_emitter_1 = require("tiny-typed-emitter");
const balancer_js_1 = require("./balancer.js");
const node_js_1 = require("./node.js");
const players_js_1 = require("./players.js");
class Cluster extends tiny_typed_emitter_1.TypedEmitter {
options;
nodes = new Map();
balancer;
players;
userId = undefined;
connectedAt = undefined;
readyAt = undefined;
constructor(options) {
super();
this.options = options;
this.players = new players_js_1.ClusterPlayerManager(this, options.players ?? {});
this.balancer = (options?.loadBalancer ?? balancer_js_1.DefaultLoadBalancer)(this);
for (const nodeOptions of options.nodes) {
const node = new node_js_1.ClusterNode(this, nodeOptions);
this.nodes.set(node.identifier, node);
node.ws.once("ready", () => {
if (this.ready) {
this.readyAt = performance.now();
this.emit("ready", { took: this.uptime });
}
});
}
}
get ready() {
return every(this.nodes.values(), (it) => it.ws.state === WS.LavalinkWSClientState.Ready);
}
get rest() {
return (0, balancer_js_1.nextOrThrow)(this.balancer).rest;
}
get api() {
return (0, balancer_js_1.nextOrThrow)(this.balancer).api;
}
get uptime() {
const reference = this.readyAt ?? this.connectedAt;
return reference ? performance.now() - reference : -1;
}
connect(options = {}) {
if (options.userId)
this.userId = options.userId;
for (const [k, v] of this.nodes) {
this.debug({ system: "ws", message: `connecting to node: ${k}` });
v.connect(options);
}
this.connectedAt = Date.now();
}
disconnect() {
for (const [k, v] of this.nodes) {
this.debug({ system: "ws", message: `disconnecting from node: ${k}` });
v.disconnect();
}
}
debug(event, node) {
if (node && this.listenerCount("nodeDebug"))
this.emit("nodeDebug", node, event);
if (this.listenerCount("debug"))
this.emit("debug", event);
}
}
exports.Cluster = Cluster;
const every = (iterator, fn) => {
let idx = 0;
for (const value of iterator)
if (!fn(value, idx++))
return false;
return true;
};
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsdXN0ZXIvY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFvQkEsK0RBQXlDO0FBRXpDLDJEQUFrRDtBQUlsRCwrQ0FBb0c7QUFDcEcsdUNBQTREO0FBQzVELDZDQUFpRjtBQUtqRixNQUFhLE9BQVEsU0FBUSxpQ0FBMkI7SUF3Qi9CO0lBcEJaLEtBQUssR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUs1QyxRQUFRLENBQWU7SUFLdkIsT0FBTyxDQUFnQjtJQUtoQyxNQUFNLEdBQXVCLFNBQVMsQ0FBQztJQUUvQixXQUFXLEdBQXVCLFNBQVMsQ0FBQztJQUM1QyxPQUFPLEdBQXVCLFNBQVMsQ0FBQztJQUVoRCxZQUFxQixPQUF1QjtRQUN4QyxLQUFLLEVBQUUsQ0FBQztRQURTLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBR3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxpQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLFlBQVksSUFBSSxpQ0FBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJFLEtBQUssTUFBTSxXQUFXLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLHFCQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FB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