UNPKG

hennus-api

Version:

Esta es una libreria para el bot Hennus

166 lines (165 loc) 5.44 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BitField = void 0; const Error_1 = require("../../core/Error"); class BitField { constructor(bits) { this.Flags = {}; this.DefaultBit = 0; if (bits) this.bitfield = this.resolve(bits); } ; any(bit) { const resolvedBit = this.resolve(bit); const bitfield = this.bitfield; if (typeof bitfield === "bigint" && typeof resolvedBit === "bigint") return (bitfield & resolvedBit) !== BigInt(this.DefaultBit); else if (typeof bitfield === "number" && typeof resolvedBit === "number") return (bitfield & resolvedBit) !== this.DefaultBit; else return false; } ; equals(bit) { return this.bitfield === this.resolve(bit); } ; has(bit) { const resolvedBit = this.resolve(bit); const bitfield = this.bitfield; if (typeof bitfield === "bigint" && typeof resolvedBit === "bigint") return (bitfield & resolvedBit) === resolvedBit; else if (typeof bitfield === "number" && typeof resolvedBit === "number") return (bitfield & resolvedBit) === resolvedBit; else return false; } ; missing(bits, ...hasParams) { return new BitField(bits).remove(this).toArray(...hasParams); } ; freeze() { return Object.freeze(this); } ; add(...bits) { let total = this.DefaultBit; for (const bit of bits) { total = this.bitwiseOr(total, this.resolve(bit)); } if (Object.isFrozen(this)) return new BitField(this.bitwiseOr(this.bitfield, total)); this.bitfield = this.bitwiseOr(this.bitfield, total); return this; } ; bitwiseOr(a, b) { if (typeof a === "bigint" && typeof b === "bigint") return (a | b); else if (typeof a === "number" && typeof b === "number") return (a | b); else return (Number(a) | Number(b)); } ; remove(...bits) { let total = this.DefaultBit; for (const bit of bits) { total = this.bitwiseOr(total, this.resolve(bit)); } if (Object.isFrozen(this)) return new BitField(this.bitwiseAnd(this.bitfield, this.bitwiseNot(total))); this.bitfield = this.bitwiseAnd(this.bitfield, this.bitwiseNot(total)); return this; } ; bitwiseAnd(a, b) { if (typeof a === "bigint" && typeof b === "bigint") return (a & b); else if (typeof a === "number" && typeof b === "number") return (a & b); else return (Number(a) & Number(b)); } ; bitwiseNot(a) { if (typeof a === "bigint") return ~a; else if (typeof a === "number") return ~a; else return ~a; } ; serialize(...hasParams) { const serialized = {}; const paramsArray = hasParams; for (const [flag, bit] of Object.entries(this.Flags)) { if (isNaN(parseFloat(flag))) { serialized[flag] = this.has(bit, ...paramsArray); } } return serialized; } ; toArray(...hasParams) { return [...this[Symbol.iterator](...hasParams)]; } ; toJSON() { return typeof this.bitfield === 'number' ? this.bitfield : this.bitfield.toString(); } ; valueOf() { return this.bitfield; } ; *[Symbol.iterator](...hasParams) { for (const bitName of Object.keys(this.Flags)) { if (isNaN(Number(bitName)) && this.has(bitName, ...hasParams)) yield bitName; } ; } ; resolve(bit) { const DefaultBit = this.DefaultBit; if (typeof DefaultBit === typeof bit && bit >= DefaultBit) return bit; if (bit instanceof BitField) return bit.bitfield; if (Array.isArray(bit)) return bit.map(p => this.resolve(p)).reduce((prev, p) => this.bitwiseOr(prev, p), DefaultBit); if (typeof bit === 'string') { if (!isNaN(Number(bit))) return typeof DefaultBit === 'bigint' ? BigInt(bit) : Number(bit); if (this.Flags[bit] !== undefined) return this.Flags[bit]; } ; throw new Error_1.HennusError(Error_1.errorCodes.BitsError); } ; } exports.BitField = BitField; ; __exportStar(require("./intentsbitfield"), exports); __exportStar(require("./overwritesbitfields"), exports); __exportStar(require("./permissions"), exports); __exportStar(require("./flagsbifields"), exports);