chore: perfomance

This commit is contained in:
MARCROCK22 2024-10-26 21:26:35 +00:00
parent 7591c11446
commit b1e66f05dc
6 changed files with 49 additions and 57 deletions

View File

@ -77,12 +77,10 @@ export class LimitedMemoryAdapter<T> implements Adapter {
const storageArray = Array.from(this.storage.values()); const storageArray = Array.from(this.storage.values());
const keySet = new Set(keys); const keySet = new Set(keys);
return storageArray return storageArray.flatMap(storageEntry => {
.flatMap(storageEntry => { const entries = Array.from(storageEntry.entries());
const entries = Array.from(storageEntry.entries()); return entries.filter(([key]) => keySet.has(key)).map(([, value]) => this.options.decode(value.value as T));
return entries.filter(([key]) => keySet.has(key)).map(([, value]) => this.options.decode(value.value as T)); });
})
.filter(Boolean);
} }
get(key: string) { get(key: string) {

View File

@ -27,13 +27,12 @@ export class Bans extends GuildBasedResource<any, GatewayGuildBanModifyDispatchD
} }
override bulk(ids: string[], guild: string): ReturnCache<GuildBanStructure[]> { override bulk(ids: string[], guild: string): ReturnCache<GuildBanStructure[]> {
return fakePromise(super.bulk(ids, guild)).then( return fakePromise(super.bulk(ids, guild)).then(bans =>
bans => bans
bans .map(rawBan => {
.map(rawBan => { return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined;
return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined; })
}) .filter(x => x !== undefined),
.filter(Boolean) as GuildBanStructure[],
); );
} }
@ -42,13 +41,12 @@ export class Bans extends GuildBasedResource<any, GatewayGuildBanModifyDispatchD
} }
override values(guild: string): ReturnCache<GuildBanStructure[]> { override values(guild: string): ReturnCache<GuildBanStructure[]> {
return fakePromise(super.values(guild)).then( return fakePromise(super.values(guild)).then(bans =>
bans => bans
bans .map(rawBan => {
.map(rawBan => { return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined;
return rawBan ? Transformers.GuildBan(this.client, rawBan, guild) : undefined; })
}) .filter(x => x !== undefined),
.filter(Boolean) as GuildBanStructure[],
); );
} }

View File

@ -80,7 +80,7 @@ export class Guilds extends BaseResource<any, APIGuild | GatewayGuildCreateDispa
this.cache.voiceStates?.hashId(id), this.cache.voiceStates?.hashId(id),
this.cache.presences?.hashId(id), this.cache.presences?.hashId(id),
this.cache.stageInstances?.hashId(id), this.cache.stageInstances?.hashId(id),
].filter(Boolean) as string[], ].filter(x => x !== undefined),
); );
await super.remove(id); await super.remove(id);

View File

@ -39,14 +39,13 @@ export class Members extends GuildBasedResource<any, APIGuildMember> {
override bulk(ids: string[], guild: string): ReturnCache<GuildMemberStructure[]> { override bulk(ids: string[], guild: string): ReturnCache<GuildMemberStructure[]> {
return fakePromise(super.bulk(ids, guild)).then(members => return fakePromise(super.bulk(ids, guild)).then(members =>
fakePromise(this.client.cache.users?.bulkRaw(ids)).then( fakePromise(this.client.cache.users?.bulkRaw(ids)).then(users =>
users => members
members .map(rawMember => {
.map(rawMember => { const user = users?.find(x => x.id === rawMember.id);
const user = users?.find(x => x.id === rawMember.id); return user ? Transformers.GuildMember(this.client, rawMember, user, guild) : undefined;
return user ? Transformers.GuildMember(this.client, rawMember, user, guild) : undefined; })
}) .filter(x => x !== undefined),
.filter(Boolean) as GuildMemberStructure[],
), ),
); );
} }
@ -57,14 +56,13 @@ export class Members extends GuildBasedResource<any, APIGuildMember> {
override values(guild: string): ReturnCache<GuildMemberStructure[]> { override values(guild: string): ReturnCache<GuildMemberStructure[]> {
return fakePromise(super.values(guild)).then(members => return fakePromise(super.values(guild)).then(members =>
fakePromise(this.client.cache.users?.valuesRaw()).then( fakePromise(this.client.cache.users?.valuesRaw()).then(users =>
users => members
members .map(rawMember => {
.map(rawMember => { const user = users?.find(x => x.id === rawMember.id);
const user = users?.find(x => x.id === rawMember.id); return user ? Transformers.GuildMember(this.client, rawMember, user, rawMember.guild_id) : undefined;
return user ? Transformers.GuildMember(this.client, rawMember, user, rawMember.guild_id) : undefined; })
}) .filter(x => x !== undefined),
.filter(Boolean) as GuildMemberStructure[],
), ),
); );
} }

View File

@ -36,19 +36,18 @@ export class Messages extends GuildRelatedResource<any, APIMessage> {
} }
override bulk(ids: string[]): ReturnCache<MessageStructure[]> { override bulk(ids: string[]): ReturnCache<MessageStructure[]> {
return fakePromise(super.bulk(ids) as APIMessageResource[]).then( return fakePromise(super.bulk(ids) as APIMessageResource[]).then(messages =>
messages => messages
messages .map(rawMessage => {
.map(rawMessage => { return this.cache.users && rawMessage?.user_id
return this.cache.users && rawMessage?.user_id ? fakePromise(
? fakePromise( this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined,
this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined, ).then(user => {
).then(user => { return user ? Transformers.Message(this.client, { ...rawMessage, author: user }) : undefined;
return user ? Transformers.Message(this.client, { ...rawMessage, author: user }) : undefined; })
}) : undefined;
: undefined; })
}) .filter(x => x !== undefined),
.filter(Boolean) as MessageStructure[],
); );
} }
@ -61,13 +60,13 @@ export class Messages extends GuildRelatedResource<any, APIMessage> {
const hashes: (string | undefined)[] = this.cache.users const hashes: (string | undefined)[] = this.cache.users
? messages.map(x => (x.user_id ? this.cache.users?.hashId(x.user_id) : undefined)) ? 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 return messages
.map(message => { .map(message => {
const user = users.find(user => user.id === message.user_id); const user = users.find(user => user.id === message.user_id);
return user ? Transformers.Message(this.client, { ...message, author: user }) : undefined; return user ? Transformers.Message(this.client, { ...message, author: user }) : undefined;
}) })
.filter(Boolean) as MessageStructure[]; .filter(x => x !== undefined);
}); });
}); });
} }

View File

@ -28,11 +28,10 @@ export class VoiceStates extends GuildBasedResource<any, APIVoiceState> {
} }
override bulk(ids: string[], guild: string): ReturnCache<VoiceStateStructure[]> { override bulk(ids: string[], guild: string): ReturnCache<VoiceStateStructure[]> {
return fakePromise(super.bulk(ids, guild)).then( return fakePromise(super.bulk(ids, guild)).then(states =>
states => states
states .map(state => (state ? Transformers.VoiceState(this.client, state) : undefined))
.map(state => (state ? Transformers.VoiceState(this.client, state) : undefined)) .filter(x => x !== undefined),
.filter(y => !!y) as VoiceStateStructure[],
); );
} }