From a6d004565838ab0d65e802804d9da39d1fe77c8e Mon Sep 17 00:00:00 2001 From: ITOH Date: Sat, 29 May 2021 22:31:49 +0200 Subject: [PATCH 1/3] change: use Object.keys --- src/structures/channel.ts | 8 ++++++++ src/structures/guild.ts | 12 +++++++----- src/structures/member.ts | 23 ++++++++++++----------- src/structures/message.ts | 12 ++++++------ src/structures/role.ts | 12 +++++++----- src/structures/voice_state.ts | 16 ++++++++++------ 6 files changed, 50 insertions(+), 33 deletions(-) diff --git a/src/structures/channel.ts b/src/structures/channel.ts index da2fe761f..c716a8ac1 100644 --- a/src/structures/channel.ts +++ b/src/structures/channel.ts @@ -115,6 +115,14 @@ export async function createDiscordenoChannel(data: Channel, guildId?: bigint) { ); }); + (Object.keys(rest) as (keyof typeof rest)[]).forEach((key) => { + eventHandlers.debug?.("loop", `Running forEach loop in createDiscordenoChannel function.`); + + props[key] = createNewProp( + CHANNEL_SNOWFLAKES.includes(key) ? (rest[key] ? snowflakeToBigint(rest[key] as string) : undefined) : rest[key] + ); + }); + // Set the guildId seperately because sometimes guildId is not included props.guildId = createNewProp(snowflakeToBigint(guildId?.toString() || data.guildId || "")); diff --git a/src/structures/guild.ts b/src/structures/guild.ts index b4ed5cd9a..363d26c78 100644 --- a/src/structures/guild.ts +++ b/src/structures/guild.ts @@ -268,17 +268,19 @@ export async function createDiscordenoGuild(data: Guild, shardId: number) { ); const props: Record> = {}; - for (const [key, value] of Object.entries(rest)) { + (Object.keys(rest) as (keyof typeof rest)[]).forEach((key) => { eventHandlers.debug?.("loop", `Running for of loop in createDiscordenoGuild function.`); const toggleBits = guildToggles[key as keyof typeof guildToggles]; if (toggleBits) { - bitfield |= value ? toggleBits : 0n; - continue; + bitfield |= rest[key] ? toggleBits : 0n; + return; } - props[key] = createNewProp(GUILD_SNOWFLAKES.includes(key) ? (value ? snowflakeToBigint(value) : undefined) : value); - } + props[key] = createNewProp( + GUILD_SNOWFLAKES.includes(key) ? (rest[key] ? snowflakeToBigint(rest[key] as string) : undefined) : rest[key] + ); + }); const hashes = [ { name: "icon", toggle: guildToggles.animatedIcon, value: icon }, diff --git a/src/structures/member.ts b/src/structures/member.ts index 7166f34ea..62e187d34 100644 --- a/src/structures/member.ts +++ b/src/structures/member.ts @@ -137,32 +137,31 @@ export async function createDiscordenoMember( let bitfield = 0n; const props: Record> = {}; - - for (const [key, value] of Object.entries(user)) { + (Object.keys(user) as (keyof typeof user)[]).forEach((key) => { eventHandlers.debug?.("loop", `Running for of for Object.keys(user) loop in DiscordenoMember function.`); const toggleBits = memberToggles[key as keyof typeof memberToggles]; if (toggleBits) { - bitfield |= value ? toggleBits : 0n; - continue; + bitfield |= user[key] ? toggleBits : 0n; + return; } if (key === "avatar") { - const transformed = value ? iconHashToBigInt(value) : undefined; + const transformed = user[key] ? iconHashToBigInt(user[key] as string) : undefined; if (transformed?.animated) bitfield |= memberToggles.animatedAvatar; props.avatar = createNewProp(transformed?.bigint); - continue; + return; } if (key === "discriminator") { - props.discriminator = createNewProp(Number(value)); - continue; + props.discriminator = createNewProp(Number(user[key])); + return; } props[key] = createNewProp( - MEMBER_SNOWFLAKES.includes(key) ? (value ? snowflakeToBigint(value) : undefined) : value + MEMBER_SNOWFLAKES.includes(key) ? (user[key] ? snowflakeToBigint(user[key] as string) : undefined) : user[key] ); - } + }); const member: DiscordenoMember = Object.create(baseMember, { ...props, @@ -230,7 +229,9 @@ export interface DiscordenoMember extends Omit & { joinedAt?: number; premiumSince?: number; diff --git a/src/structures/message.ts b/src/structures/message.ts index 8a68805db..10112ed94 100644 --- a/src/structures/message.ts +++ b/src/structures/message.ts @@ -209,22 +209,22 @@ export async function createDiscordenoMessage(data: Message) { let bitfield = 0n; const props: Record> = {}; - for (const [key, value] of Object.entries(rest)) { + (Object.keys(rest) as (keyof typeof rest)[]).forEach((key) => { eventHandlers.debug?.("loop", `Running for of loop in createDiscordenoMessage function.`); const toggleBits = messageToggles[key as keyof typeof messageToggles]; if (toggleBits) { - bitfield |= value ? toggleBits : 0n; - continue; + bitfield |= rest[key] ? toggleBits : 0n; + return; } // Don't add member to props since it would overwrite the message.member getter - if (key === "member") continue; + if (key === "member") return; props[key] = createNewProp( - MESSAGE_SNOWFLAKES.includes(key) ? (value ? snowflakeToBigint(value) : undefined) : value + MESSAGE_SNOWFLAKES.includes(key) ? (rest[key] ? snowflakeToBigint(rest[key] as string) : undefined) : rest[key] ); - } + }); props.authorId = createNewProp(snowflakeToBigint(author.id)); props.isBot = createNewProp(author.bot || false); diff --git a/src/structures/role.ts b/src/structures/role.ts index 8d6d7d88c..9a1105a39 100644 --- a/src/structures/role.ts +++ b/src/structures/role.ts @@ -115,17 +115,19 @@ export async function createDiscordenoRole( let bitfield = 0n; const props: Record> = {}; - for (const [key, value] of Object.entries(rest)) { + (Object.keys(rest) as (keyof typeof rest)[]).forEach((key) => { eventHandlers.debug?.("loop", `Running for of loop in createDiscordenoRole function.`); const toggleBits = roleToggles[key as keyof typeof roleToggles]; if (toggleBits) { - bitfield |= value ? toggleBits : 0n; - continue; + bitfield |= rest[key] ? toggleBits : 0n; + return; } - props[key] = createNewProp(ROLE_SNOWFLAKES.includes(key) ? (value ? snowflakeToBigint(value) : undefined) : value); - } + props[key] = createNewProp( + ROLE_SNOWFLAKES.includes(key) ? (rest[key] ? snowflakeToBigint(rest[key] as string) : undefined) : rest[key] + ); + }); const role: DiscordenoRole = Object.create(baseRole, { ...props, diff --git a/src/structures/voice_state.ts b/src/structures/voice_state.ts index 9cfc133f6..dd82b0f94 100644 --- a/src/structures/voice_state.ts +++ b/src/structures/voice_state.ts @@ -81,22 +81,26 @@ export async function createDiscordenoVoiceState(guildId: bigint, data: VoiceSta let bitfield = 0n; const props: Record> = {}; - for (const [key, value] of Object.entries(data)) { + (Object.keys(data) as (keyof typeof data)[]).forEach((key) => { eventHandlers.debug?.("loop", `Running for of loop in createDiscordenoVoiceState function.`); // We don't need to cache member twice. It will be in cache.members - if (key === "member") continue; + if (key === "member") return; const toggleBits = voiceStateToggles[key as keyof typeof voiceStateToggles]; if (toggleBits) { - bitfield |= value ? toggleBits : 0n; - continue; + bitfield |= data[key] ? toggleBits : 0n; + return; } props[key] = createNewProp( - VOICE_STATE_SNOWFLAKES.includes(key) ? (value ? snowflakeToBigint(value) : undefined) : value + VOICE_STATE_SNOWFLAKES.includes(key) + ? data[key] + ? snowflakeToBigint(data[key] as string) + : undefined + : data[key] ); - } + }); const voiceState: DiscordenoVoiceState = Object.create(baseRole, { ...props, From b59a2ae18acff2d1d5e4ac317f1a54b3d246c4d9 Mon Sep 17 00:00:00 2001 From: itohatweb Date: Sat, 29 May 2021 20:32:26 +0000 Subject: [PATCH 2/3] change: prettier code --- src/structures/member.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/structures/member.ts b/src/structures/member.ts index 62e187d34..6883acf76 100644 --- a/src/structures/member.ts +++ b/src/structures/member.ts @@ -229,9 +229,7 @@ export interface DiscordenoMember extends Omit & { joinedAt?: number; premiumSince?: number; From 521e6352e0bad528cb06224da3c730bb74f2532b Mon Sep 17 00:00:00 2001 From: ITOH Date: Sun, 30 May 2021 00:42:05 +0200 Subject: [PATCH 3/3] Update channel.ts --- src/structures/channel.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/structures/channel.ts b/src/structures/channel.ts index c716a8ac1..226105756 100644 --- a/src/structures/channel.ts +++ b/src/structures/channel.ts @@ -107,14 +107,6 @@ export async function createDiscordenoChannel(data: Channel, guildId?: bigint) { const { lastPinTimestamp, permissionOverwrites = [], ...rest } = data; const props: Record = {}; - Object.entries(rest).forEach(([key, value]) => { - eventHandlers.debug?.("loop", `Running forEach loop in createDiscordenoChannel function.`); - - props[key] = createNewProp( - CHANNEL_SNOWFLAKES.includes(key) ? (value ? snowflakeToBigint(value) : undefined) : value - ); - }); - (Object.keys(rest) as (keyof typeof rest)[]).forEach((key) => { eventHandlers.debug?.("loop", `Running forEach loop in createDiscordenoChannel function.`);