UNPKG

lavaclient

Version:

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

25 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.nextOrThrow = exports.DefaultLoadBalancer = void 0; const DefaultLoadBalancer = (cluster, penaltyProviders = []) => { const available = () => [...cluster.nodes.values()].filter((it) => it.ws.active); const penalties = (node) => node.penalties.calculate() + penaltyProviders.reduce((acc, it) => acc + it.calculate(node), 0); return { next: () => { const nodes = available(); if (nodes.length <= 1) { return nodes[0] ?? null; } return nodes.sort((a, b) => penalties(a) - penalties(b))[0] ?? null; }, }; }; exports.DefaultLoadBalancer = DefaultLoadBalancer; const nextOrThrow = (lb) => { const node = lb.next(); if (!node) throw new Error("No nodes available"); return node; }; exports.nextOrThrow = nextOrThrow; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFsYW5jZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2x1c3Rlci9iYWxhbmNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwQk8sTUFBTSxtQkFBbUIsR0FBd0IsQ0FBQyxPQUFPLEVBQUUsbUJBQTJDLEVBQUUsRUFBRSxFQUFFO0lBQy9HLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbkcsT0FBTztRQUNILElBQUksRUFBRSxHQUFHLEVBQUU7WUFDUCxNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUUxQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNuQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7YUFDM0I7WUFHRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3hFLENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBakJXLFFBQUEsbUJBQW1CLHVCQWlCOUI7QUFZSyxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQWdCLEVBQUUsRUFBRTtJQUM1QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDLElBQUk7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDakQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBSlcsUUFBQSxXQUFXLGVBSXRCIn0=