summaryrefslogtreecommitdiff
path: root/node_modules/discord.js/src/util/BitField.js
diff options
context:
space:
mode:
author8cy <[email protected]>2020-04-03 02:48:28 -0700
committer8cy <[email protected]>2020-04-03 02:48:28 -0700
commitf9159ea2d994e14180fb02ab562f0119513e67cf (patch)
tree09d14cdf05456567156738b681379d4bccd64e5c /node_modules/discord.js/src/util/BitField.js
parent2020/04/03, 02:42, V1.2.1 (diff)
downloads5nical-f9159ea2d994e14180fb02ab562f0119513e67cf.tar.xz
s5nical-f9159ea2d994e14180fb02ab562f0119513e67cf.zip
2020/04/03, 02:47, V1.2.2
Diffstat (limited to 'node_modules/discord.js/src/util/BitField.js')
-rw-r--r--node_modules/discord.js/src/util/BitField.js160
1 files changed, 0 insertions, 160 deletions
diff --git a/node_modules/discord.js/src/util/BitField.js b/node_modules/discord.js/src/util/BitField.js
deleted file mode 100644
index e0f86b1..0000000
--- a/node_modules/discord.js/src/util/BitField.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * Data structure that makes it easy to interact with a bitfield.
- */
-class BitField {
- /**
- * @param {BitFieldResolvable} [bits=0] Bits(s) to read from
- */
- constructor(bits) {
- /**
- * Bitfield of the packed bits
- * @type {number}
- */
- this.bitfield = this.constructor.resolve(bits);
- }
-
- /**
- * Checks whether the bitfield has a bit, or any of multiple bits.
- * @param {BitFieldResolvable} bit Bit(s) to check for
- * @returns {boolean}
- */
- any(bit) {
- return (this.bitfield & this.constructor.resolve(bit)) !== 0;
- }
-
- /**
- * Checks if this bitfield equals another
- * @param {BitFieldResolvable} bit Bit(s) to check for
- * @returns {boolean}
- */
- equals(bit) {
- return this.bitfield === this.constructor.resolve(bit);
- }
-
- /**
- * Checks whether the bitfield has a bit, or multiple bits.
- * @param {BitFieldResolvable} bit Bit(s) to check for
- * @returns {boolean}
- */
- has(bit) {
- if (Array.isArray(bit)) return bit.every(p => this.has(p));
- bit = this.constructor.resolve(bit);
- return (this.bitfield & bit) === bit;
- }
-
- /**
- * Gets all given bits that are missing from the bitfield.
- * @param {BitFieldResolvable} bits Bits(s) to check for
- * @param {...*} hasParams Additional parameters for the has method, if any
- * @returns {string[]}
- */
- missing(bits, ...hasParams) {
- if (!Array.isArray(bits)) bits = new this.constructor(bits).toArray(false);
- return bits.filter(p => !this.has(p, ...hasParams));
- }
-
- /**
- * Freezes these bits, making them immutable.
- * @returns {Readonly<BitField>} These bits
- */
- freeze() {
- return Object.freeze(this);
- }
-
- /**
- * Adds bits to these ones.
- * @param {...BitFieldResolvable} [bits] Bits to add
- * @returns {BitField} These bits or new BitField if the instance is frozen.
- */
- add(...bits) {
- let total = 0;
- for (const bit of bits) {
- total |= this.constructor.resolve(bit);
- }
- if (Object.isFrozen(this)) return new this.constructor(this.bitfield | total);
- this.bitfield |= total;
- return this;
- }
-
- /**
- * Removes bits from these.
- * @param {...BitFieldResolvable} [bits] Bits to remove
- * @returns {BitField} These bits or new BitField if the instance is frozen.
- */
- remove(...bits) {
- let total = 0;
- for (const bit of bits) {
- total |= this.constructor.resolve(bit);
- }
- if (Object.isFrozen(this)) return new this.constructor(this.bitfield & ~total);
- this.bitfield &= ~total;
- return this;
- }
-
- /**
- * Gets an object mapping field names to a {@link boolean} indicating whether the
- * bit is available.
- * @param {...*} hasParams Additional parameters for the has method, if any
- * @returns {Object}
- */
- serialize(...hasParams) {
- const serialized = {};
- for (const flag of Object.keys(this.constructor.FLAGS)) {
- serialized[flag] = this.has(this.constructor.FLAGS[flag], ...hasParams);
- }
- return serialized;
- }
-
- /**
- * Gets an {@link Array} of bitfield names based on the bits available.
- * @param {...*} hasParams Additional parameters for the has method, if any
- * @returns {string[]}
- */
- toArray(...hasParams) {
- return Object.keys(this.constructor.FLAGS).filter(bit => this.has(bit, ...hasParams));
- }
-
- toJSON() {
- return this.bitfield;
- }
-
- valueOf() {
- return this.bitfield;
- }
-
- *[Symbol.iterator]() {
- yield* this.toArray();
- }
-
- /**
- * Data that can be resolved to give a bitfield. This can be:
- * * A string (see {@link BitField.FLAGS})
- * * A bit number
- * * An instance of BitField
- * * An Array of BitFieldResolvable
- * @typedef {string|number|BitField|BitFieldResolvable[]} BitFieldResolvable
- */
-
- /**
- * Resolves bitfields to their numeric form.
- * @param {BitFieldResolvable} [bit=0] - bit(s) to resolve
- * @returns {number}
- */
- static resolve(bit = 0) {
- if (typeof bit === 'number' && bit >= 0) return bit;
- if (bit instanceof BitField) return bit.bitfield;
- if (Array.isArray(bit)) return bit.map(p => this.resolve(p)).reduce((prev, p) => prev | p, 0);
- if (typeof bit === 'string' && typeof this.FLAGS[bit] !== 'undefined') return this.FLAGS[bit];
- throw new RangeError('Invalid bitfield flag or number.');
- }
-}
-
-/**
- * Numeric bitfield flags.
- * <info>Defined in extension classes</info>
- * @type {Object}
- * @abstract
- */
-BitField.FLAGS = {};
-
-module.exports = BitField;