seyfert
Version:
The most advanced framework for discord bots
51 lines (50 loc) • 1.9 kB
JavaScript
;
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;