UNPKG

seyfert

Version:

The most advanced framework for discord bots

51 lines (50 loc) 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PermissionsBitField = void 0; const types_1 = require("../../types"); const BitField_1 = require("./BitField"); class PermissionsBitField extends BitField_1.BitField { Flags = types_1.PermissionFlagsBits; static All = Object.values(types_1.PermissionFlagsBits).reduce((acc, value) => acc | value, 0n); constructor(bitfields) { super(); if (bitfields) this.bit = this.resolve(bitfields); } has(...bits) { return super.has(...bits) || super.has('Administrator'); } strictHas(...bits) { return super.has(...bits); } resolve(...bits) { return bits.reduce((acc, cur) => acc | PermissionsBitField.resolve(cur), BitField_1.BitField.None); } static resolve(...bits) { let bitsResult = 0n; for (const bit of bits) { switch (typeof bit) { case 'string': bitsResult |= PermissionsBitField.resolve(types_1.PermissionFlagsBits[bit]); break; case 'number': bitsResult |= BigInt(bit); break; case 'bigint': bitsResult |= bit; break; case 'object': { if (!Array.isArray(bit)) { throw new TypeError(`Cannot resolve permission: ${bit}`); } bitsResult |= bit.reduce((acc, val) => PermissionsBitField.resolve(val) | acc, BitField_1.BitField.None); break; } default: throw new TypeError(`Cannot resolve permission: ${typeof bit === 'symbol' ? String(bit) : bit}`); } } return bitsResult; } } exports.PermissionsBitField = PermissionsBitField;