From b1e66f05dc4f8ad5fca0a134d2e9c72a8ad78fb8 Mon Sep 17 00:00:00 2001 From: MARCROCK22 Date: Sat, 26 Oct 2024 21:26:35 +0000 Subject: [PATCH] chore: perfomance --- src/cache/adapters/limited.ts | 10 ++++------ src/cache/resources/bans.ts | 26 ++++++++++++------------- src/cache/resources/guilds.ts | 2 +- src/cache/resources/members.ts | 30 ++++++++++++++--------------- src/cache/resources/messages.ts | 29 ++++++++++++++-------------- src/cache/resources/voice-states.ts | 9 ++++----- 6 files changed, 49 insertions(+), 57 deletions(-) diff --git a/src/cache/adapters/limited.ts b/src/cache/adapters/limited.ts index 054b402..557734c 100644 --- a/src/cache/adapters/limited.ts +++ b/src/cache/adapters/limited.ts @@ -77,12 +77,10 @@ export class LimitedMemoryAdapter implements Adapter { const storageArray = Array.from(this.storage.values()); const keySet = new Set(keys); - return storageArray - .flatMap(storageEntry => { - const entries = Array.from(storageEntry.entries()); - return entries.filter(([key]) => keySet.has(key)).map(([, value]) => this.options.decode(value.value as T)); - }) - .filter(Boolean); + return storageArray.flatMap(storageEntry => { + const entries = Array.from(storageEntry.entries()); + return entries.filter(([key]) => keySet.has(key)).map(([, value]) => this.options.decode(value.value as T)); + }); } get(key: string) { diff --git a/src/cache/resources/bans.ts b/src/cache/resources/bans.ts index b71d7ee..e63d762 100644 --- a/src/cache/resources/bans.ts +++ b/src/cache/resources/bans.ts @@ -27,13 +27,12 @@ export class Bans extends GuildBasedResource { - return fakePromise(super.bulk(ids, guild)).then( - bans => - bans - .map(rawBan => { - return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined; - }) - .filter(Boolean) as GuildBanStructure[], + return fakePromise(super.bulk(ids, guild)).then(bans => + bans + .map(rawBan => { + return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined; + }) + .filter(x => x !== undefined), ); } @@ -42,13 +41,12 @@ export class Bans extends GuildBasedResource { - return fakePromise(super.values(guild)).then( - bans => - bans - .map(rawBan => { - return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined; - }) - .filter(Boolean) as GuildBanStructure[], + return fakePromise(super.values(guild)).then(bans => + bans + .map(rawBan => { + return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined; + }) + .filter(x => x !== undefined), ); } diff --git a/src/cache/resources/guilds.ts b/src/cache/resources/guilds.ts index 058e510..7d5f966 100644 --- a/src/cache/resources/guilds.ts +++ b/src/cache/resources/guilds.ts @@ -80,7 +80,7 @@ export class Guilds extends BaseResource x !== undefined), ); await super.remove(id); diff --git a/src/cache/resources/members.ts b/src/cache/resources/members.ts index 91af8ae..b576455 100644 --- a/src/cache/resources/members.ts +++ b/src/cache/resources/members.ts @@ -39,14 +39,13 @@ export class Members extends GuildBasedResource { override bulk(ids: string[], guild: string): ReturnCache { return fakePromise(super.bulk(ids, guild)).then(members => - fakePromise(this.client.cache.users?.bulkRaw(ids)).then( - users => - members - .map(rawMember => { - const user = users?.find(x => x.id === rawMember.id); - return user ? Transformers.GuildMember(this.client, rawMember, user, guild) : undefined; - }) - .filter(Boolean) as GuildMemberStructure[], + fakePromise(this.client.cache.users?.bulkRaw(ids)).then(users => + members + .map(rawMember => { + const user = users?.find(x => x.id === rawMember.id); + return user ? Transformers.GuildMember(this.client, rawMember, user, guild) : undefined; + }) + .filter(x => x !== undefined), ), ); } @@ -57,14 +56,13 @@ export class Members extends GuildBasedResource { override values(guild: string): ReturnCache { return fakePromise(super.values(guild)).then(members => - fakePromise(this.client.cache.users?.valuesRaw()).then( - users => - members - .map(rawMember => { - const user = users?.find(x => x.id === rawMember.id); - return user ? Transformers.GuildMember(this.client, rawMember, user, rawMember.guild_id) : undefined; - }) - .filter(Boolean) as GuildMemberStructure[], + fakePromise(this.client.cache.users?.valuesRaw()).then(users => + members + .map(rawMember => { + const user = users?.find(x => x.id === rawMember.id); + return user ? Transformers.GuildMember(this.client, rawMember, user, rawMember.guild_id) : undefined; + }) + .filter(x => x !== undefined), ), ); } diff --git a/src/cache/resources/messages.ts b/src/cache/resources/messages.ts index 847859d..651dc28 100644 --- a/src/cache/resources/messages.ts +++ b/src/cache/resources/messages.ts @@ -36,19 +36,18 @@ export class Messages extends GuildRelatedResource { } override bulk(ids: string[]): ReturnCache { - return fakePromise(super.bulk(ids) as APIMessageResource[]).then( - messages => - messages - .map(rawMessage => { - return this.cache.users && rawMessage?.user_id - ? fakePromise( - this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined, - ).then(user => { - return user ? Transformers.Message(this.client, { ...rawMessage, author: user }) : undefined; - }) - : undefined; - }) - .filter(Boolean) as MessageStructure[], + return fakePromise(super.bulk(ids) as APIMessageResource[]).then(messages => + messages + .map(rawMessage => { + return this.cache.users && rawMessage?.user_id + ? fakePromise( + this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined, + ).then(user => { + return user ? Transformers.Message(this.client, { ...rawMessage, author: user }) : undefined; + }) + : undefined; + }) + .filter(x => x !== undefined), ); } @@ -61,13 +60,13 @@ export class Messages extends GuildRelatedResource { const hashes: (string | undefined)[] = this.cache.users ? messages.map(x => (x.user_id ? this.cache.users?.hashId(x.user_id) : undefined)) : []; - return fakePromise(this.cache.adapter.bulkGet(hashes.filter(Boolean) as string[]) as APIUser[]).then(users => { + return fakePromise(this.cache.adapter.bulkGet(hashes.filter(x => x !== undefined)) as APIUser[]).then(users => { return messages .map(message => { const user = users.find(user => user.id === message.user_id); return user ? Transformers.Message(this.client, { ...message, author: user }) : undefined; }) - .filter(Boolean) as MessageStructure[]; + .filter(x => x !== undefined); }); }); } diff --git a/src/cache/resources/voice-states.ts b/src/cache/resources/voice-states.ts index 82d8f63..c324267 100644 --- a/src/cache/resources/voice-states.ts +++ b/src/cache/resources/voice-states.ts @@ -28,11 +28,10 @@ export class VoiceStates extends GuildBasedResource { } override bulk(ids: string[], guild: string): ReturnCache { - return fakePromise(super.bulk(ids, guild)).then( - states => - states - .map(state => (state ? Transformers.VoiceState(this.client, state) : undefined)) - .filter(y => !!y) as VoiceStateStructure[], + return fakePromise(super.bulk(ids, guild)).then(states => + states + .map(state => (state ? Transformers.VoiceState(this.client, state) : undefined)) + .filter(x => x !== undefined), ); }