UNPKG

lavaclient

Version:

A simple, easy-to-use, and flexible lavalink client for node.js

78 lines 6.2 kB
"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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