From 0a0630c0498d8ae24e703a2bfdf978541deb9b60 Mon Sep 17 00:00:00 2001 From: DraftMan Date: Mon, 28 Jun 2021 12:54:14 +0200 Subject: [PATCH] =?UTF-8?q?revert(BitField):=20=E2=8F=AA=20Bring=20back-co?= =?UTF-8?q?mpatibility=20after=20BitField=20serialization=20(#5910)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/BitField.js | 8 ++++++-- typings/index.d.ts | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/util/BitField.js b/src/util/BitField.js index 7cc30afcc4f5..889dbf27e517 100644 --- a/src/util/BitField.js +++ b/src/util/BitField.js @@ -129,9 +129,10 @@ class BitField { /** * Data that can be resolved to give a bitfield. This can be: * * A bit number (this can be a number literal or a value taken from {@link BitField.FLAGS}) + * * A string bit number * * An instance of BitField * * An Array of BitFieldResolvable - * @typedef {number|bigint|BitField|BitFieldResolvable[]} BitFieldResolvable + * @typedef {number|string|bigint|BitField|BitFieldResolvable[]} BitFieldResolvable */ /** @@ -144,7 +145,10 @@ class BitField { 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) => prev | p, defaultBit); - if (typeof bit === 'string' && typeof this.FLAGS[bit] !== 'undefined') return this.FLAGS[bit]; + if (typeof bit === 'string') { + if (typeof this.FLAGS[bit] !== 'undefined') return this.FLAGS[bit]; + if (!isNaN(bit)) return typeof defaultBit === 'bigint' ? BigInt(bit) : Number(bit); + } throw new RangeError('BITFIELD_INVALID', bit); } } diff --git a/typings/index.d.ts b/typings/index.d.ts index c3083c54daa4..e0b12db2d92d 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -365,7 +365,7 @@ declare module 'discord.js' { public valueOf(): N; public [Symbol.iterator](): IterableIterator; public static FLAGS: unknown; - public static resolve(bit?: BitFieldResolvable): number | bigint; + public static resolve(bit?: BitFieldResolvable): number | bigint; } export class ButtonInteraction extends MessageComponentInteraction { @@ -2874,9 +2874,10 @@ declare module 'discord.js' { } type BitFieldResolvable = - | RecursiveReadonlyArray>> + | RecursiveReadonlyArray>> | T | N + | `${bigint}` | Readonly>; type BufferResolvable = Buffer | string;