diff --git a/src/Client.ts b/src/Client.ts index 3a79a2a3..14c41187 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,4 +1,4 @@ -import { Accessor, batch, createSignal, Setter } from "solid-js"; +import { Accessor, Setter, batch, createSignal } from "solid-js"; import { AsyncEventEmitter } from "@vladfrangu/async_event_emitter"; import type { DataLogin, RevoltConfig } from "revolt-api"; @@ -271,9 +271,8 @@ export class Client extends AsyncEventEmitter { } }); - this.events.on( - "event", - (event) => handleEventV1(this, event, this.#setReady), + this.events.on("event", (event) => + handleEventV1(this, event, this.#setReady), ); } @@ -397,9 +396,9 @@ export class Client extends AsyncEventEmitter { */ proxyFile(url: string): string | undefined { if (this.configuration?.features.january.enabled) { - return `${this.configuration.features.january.url}/proxy?url=${ - encodeURIComponent(url) - }`; + return `${this.configuration.features.january.url}/proxy?url=${encodeURIComponent( + url, + )}`; } else { return url; } diff --git a/src/classes/Channel.ts b/src/classes/Channel.ts index 02220ccc..5e3972e4 100644 --- a/src/classes/Channel.ts +++ b/src/classes/Channel.ts @@ -98,8 +98,8 @@ export class Channel { return this.type === "SavedMessages" ? this.user?.username : this.type === "DirectMessage" - ? this.recipient?.username - : this.name; + ? this.recipient?.username + : this.name; } /** @@ -135,7 +135,7 @@ export class Channel { */ get typing() { return [...this.typingIds.values()].map( - (id) => this.#collection.client.users.get(id)! + (id) => this.#collection.client.users.get(id)!, ); } @@ -161,7 +161,7 @@ export class Channel { get recipient() { return this.type === "DirectMessage" ? this.recipients?.find( - (user) => user?.id !== this.#collection.client.user!.id + (user) => user?.id !== this.#collection.client.user!.id, ) : undefined; } @@ -178,7 +178,7 @@ export class Channel { */ get user() { return this.#collection.client.users.get( - this.#collection.getUnderlyingObject(this.id).userId! + this.#collection.getUnderlyingObject(this.id).userId!, ); } @@ -194,7 +194,7 @@ export class Channel { */ get owner() { return this.#collection.client.users.get( - this.#collection.getUnderlyingObject(this.id).ownerId! + this.#collection.getUnderlyingObject(this.id).ownerId!, ); } @@ -210,7 +210,7 @@ export class Channel { */ get server() { return this.#collection.client.servers.get( - this.#collection.getUnderlyingObject(this.id).serverId! + this.#collection.getUnderlyingObject(this.id).serverId!, ); } @@ -329,12 +329,12 @@ export class Channel { (role) => bitwiseAndEq( this.rolePermissions?.[role]?.d ?? 0, - Permission.ViewChannel + Permission.ViewChannel, ) || bitwiseAndEq( this.server?.roles.get(role)?.permissions.d ?? 0, - Permission.ViewChannel - ) + Permission.ViewChannel, + ), ) ); } @@ -354,7 +354,7 @@ export class Channel { havePermission(...permission: (keyof typeof Permission)[]) { return bitwiseAndEq( this.permission, - ...permission.map((x) => Permission[x]) + ...permission.map((x) => Permission[x]), ); } @@ -366,7 +366,7 @@ export class Channel { orPermission(...permission: (keyof typeof Permission)[]) { return ( permission.findIndex((x) => - bitwiseAndEq(this.permission, Permission[x]) + bitwiseAndEq(this.permission, Permission[x]), ) !== -1 ); } @@ -378,13 +378,13 @@ export class Channel { */ async fetchMembers() { const members = await this.#collection.client.api.get( - `/channels/${this.id as ""}/members` + `/channels/${this.id as ""}/members`, ); return batch(() => members.map((user) => - this.#collection.client.users.getOrCreate(user._id, user) - ) + this.#collection.client.users.getOrCreate(user._id, user), + ), ); } @@ -395,13 +395,16 @@ export class Channel { */ async fetchWebhooks() { const webhooks = await this.#collection.client.api.get( - `/channels/${this.id as ""}/webhooks` + `/channels/${this.id as ""}/webhooks`, ); return batch(() => webhooks.map((webhook) => - this.#collection.client.channelWebhooks.getOrCreate(webhook.id, webhook) - ) + this.#collection.client.channelWebhooks.getOrCreate( + webhook.id, + webhook, + ), + ), ); } @@ -438,7 +441,7 @@ export class Channel { */ async addMember(user_id: string) { return await this.#collection.client.api.put( - `/channels/${this.id as ""}/recipients/${user_id as ""}` + `/channels/${this.id as ""}/recipients/${user_id as ""}`, ); } @@ -449,7 +452,7 @@ export class Channel { */ async removeMember(user_id: string) { return await this.#collection.client.api.delete( - `/channels/${this.id as ""}/recipients/${user_id as ""}` + `/channels/${this.id as ""}/recipients/${user_id as ""}`, ); } @@ -461,7 +464,7 @@ export class Channel { */ async sendMessage( data: string | DataMessageSend, - idempotencyKey: string = ulid() + idempotencyKey: string = ulid(), ) { const msg: DataMessageSend = typeof data === "string" ? { content: data } : data; @@ -480,13 +483,13 @@ export class Channel { headers: { "Idempotency-Key": idempotencyKey, }, - } + }, ); return this.#collection.client.messages.getOrCreate( message._id, message, - true + true, ); } @@ -498,7 +501,7 @@ export class Channel { */ async fetchMessage(messageId: string) { const message = await this.#collection.client.api.get( - `/channels/${this.id as ""}/messages/${messageId as ""}` + `/channels/${this.id as ""}/messages/${messageId as ""}`, ); return this.#collection.client.messages.getOrCreate(message._id, message); @@ -517,15 +520,15 @@ export class Channel { path: "/channels/{target}/messages"; })["params"], "include_users" - > + >, ) { const messages = (await this.#collection.client.api.get( `/channels/${this.id as ""}/messages`, - { ...params } + { ...params }, )) as ApiMessage[]; return messages.map((message) => - this.#collection.client.messages.getOrCreate(message._id, message) + this.#collection.client.messages.getOrCreate(message._id, message), ); } @@ -542,22 +545,22 @@ export class Channel { path: "/channels/{target}/messages"; })["params"], "include_users" - > + >, ) { const data = (await this.#collection.client.api.get( `/channels/${this.id as ""}/messages`, - { ...params, include_users: true } + { ...params, include_users: true }, )) as { messages: ApiMessage[]; users: ApiUser[]; members?: ApiMember[] }; return batch(() => ({ messages: data.messages.map((message) => - this.#collection.client.messages.getOrCreate(message._id, message) + this.#collection.client.messages.getOrCreate(message._id, message), ), users: data.users.map((user) => - this.#collection.client.users.getOrCreate(user._id, user) + this.#collection.client.users.getOrCreate(user._id, user), ), members: data.members?.map((member) => - this.#collection.client.serverMembers.getOrCreate(member._id, member) + this.#collection.client.serverMembers.getOrCreate(member._id, member), ), })); } @@ -571,13 +574,13 @@ export class Channel { async search(params: Omit) { const messages = (await this.#collection.client.api.post( `/channels/${this.id as ""}/search`, - params + params, )) as ApiMessage[]; return batch(() => messages.map((message) => - this.#collection.client.messages.getOrCreate(message._id, message) - ) + this.#collection.client.messages.getOrCreate(message._id, message), + ), ); } @@ -593,18 +596,18 @@ export class Channel { { ...params, include_users: true, - } + }, )) as { messages: ApiMessage[]; users: ApiUser[]; members?: ApiMember[] }; return batch(() => ({ messages: data.messages.map((message) => - this.#collection.client.messages.getOrCreate(message._id, message) + this.#collection.client.messages.getOrCreate(message._id, message), ), users: data.users.map((user) => - this.#collection.client.users.getOrCreate(user._id, user) + this.#collection.client.users.getOrCreate(user._id, user), ), members: data.members?.map((member) => - this.#collection.client.serverMembers.getOrCreate(member._id, member) + this.#collection.client.serverMembers.getOrCreate(member._id, member), ), })); } @@ -619,7 +622,7 @@ export class Channel { `/channels/${this.id as ""}/messages/bulk`, { ids, - } + }, ); } @@ -630,7 +633,7 @@ export class Channel { */ async createInvite() { return await this.#collection.client.api.post( - `/channels/${this.id as ""}/invites` + `/channels/${this.id as ""}/invites`, ); } @@ -650,7 +653,7 @@ export class Channel { message?: Message | string, skipRateLimiter?: boolean, skipRequest?: boolean, - skipNextMarking?: boolean + skipNextMarking?: boolean, ) { if (!message && this.#manuallyMarked) { this.#manuallyMarked = false; @@ -687,7 +690,7 @@ export class Channel { const performAck = () => { this.#ackLimit = undefined; this.#collection.client.api.put( - `/channels/${this.id}/ack/${lastMessageId as ""}` + `/channels/${this.id}/ack/${lastMessageId as ""}`, ); }; @@ -715,7 +718,7 @@ export class Channel { async setPermissions(role_id = "default", permissions: Override) { return await this.#collection.client.api.put( `/channels/${this.id as ""}/permissions/${role_id as ""}`, - { permissions } + { permissions }, ); } diff --git a/src/classes/ChannelWebhook.ts b/src/classes/ChannelWebhook.ts index aa73fcf9..871a6457 100644 --- a/src/classes/ChannelWebhook.ts +++ b/src/classes/ChannelWebhook.ts @@ -60,7 +60,7 @@ export class ChannelWebhook { */ get channel() { return this.#collection.client.channels.get( - this.#collection.getUnderlyingObject(this.id).channelId + this.#collection.getUnderlyingObject(this.id).channelId, ); } @@ -75,17 +75,18 @@ export class ChannelWebhook { * Edit this webhook * TODO: not in production */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any async edit(data: any /*: DataEditWebhook*/) { const webhook = await this.#collection.client.api.patch( // @ts-expect-error not in prod `/webhooks/${this.id as ""}/${this.token as ""}`, - data + data, ); this.#collection.updateUnderlyingObject( this.id, // @ts-expect-error not in prod - hydrate("channelWebhook", webhook, this.#collection.client) + hydrate("channelWebhook", webhook, this.#collection.client), ); } @@ -96,7 +97,7 @@ export class ChannelWebhook { async delete() { await this.#collection.client.api.delete( // @ts-expect-error not in prod - `/webhooks/${this.id}/${this.token}` + `/webhooks/${this.id}/${this.token}`, ); this.#collection.delete(this.id); diff --git a/src/classes/Emoji.ts b/src/classes/Emoji.ts index 2bf03aed..b2f6aed7 100644 --- a/src/classes/Emoji.ts +++ b/src/classes/Emoji.ts @@ -53,7 +53,7 @@ export class Emoji { */ get creator() { return this.#collection.client.users.get( - this.#collection.getUnderlyingObject(this.id).creatorId + this.#collection.getUnderlyingObject(this.id).creatorId, ); } diff --git a/src/classes/File.ts b/src/classes/File.ts index ce40d07c..ae00f5d1 100644 --- a/src/classes/File.ts +++ b/src/classes/File.ts @@ -45,7 +45,7 @@ export class File { */ constructor( client: Client, - file: Pick & Partial + file: Pick & Partial, ) { this.#client = client; this.id = file._id; diff --git a/src/classes/MFA.ts b/src/classes/MFA.ts index 739c1e86..c3f126ba 100644 --- a/src/classes/MFA.ts +++ b/src/classes/MFA.ts @@ -90,7 +90,7 @@ export class MFATicket { constructor( client: Client, ticket: TicketType, - mutate: SetStoreFunction + mutate: SetStoreFunction, ) { this.#client = client; this.#ticket = ticket; @@ -139,7 +139,7 @@ export class MFATicket { headers: { "X-MFA-Ticket": this.token, }, - } + }, ); this.#mutate("recovery_active", true); diff --git a/src/classes/Message.ts b/src/classes/Message.ts index 76a7b38c..fee8f4cc 100644 --- a/src/classes/Message.ts +++ b/src/classes/Message.ts @@ -72,7 +72,7 @@ export class Message { */ get channel() { return this.#collection.client.channels.get( - this.#collection.getUnderlyingObject(this.id).channelId + this.#collection.getUnderlyingObject(this.id).channelId, ); } @@ -105,7 +105,7 @@ export class Message { */ get author() { return this.#collection.client.users.get( - this.#collection.getUnderlyingObject(this.id).authorId! + this.#collection.getUnderlyingObject(this.id).authorId!, ); } @@ -208,7 +208,9 @@ export class Message { return ( this.masquerade?.name ?? - (webhook ? webhook.name : this.member?.nickname ?? this.author?.username) + (webhook + ? webhook.name + : (this.member?.nickname ?? this.author?.username)) ); } @@ -229,7 +231,7 @@ export class Message { this.masqueradeAvatarURL ?? (webhook ? webhook.avatarURL - : this.member?.avatarURL ?? this.author?.avatarURL) + : (this.member?.avatarURL ?? this.author?.avatarURL)) ); } @@ -244,8 +246,8 @@ export class Message { (webhook ? webhook.avatarURL : this.member - ? this.member?.animatedAvatarURL - : this.author?.animatedAvatarURL) + ? this.member?.animatedAvatarURL + : this.author?.animatedAvatarURL) ); } @@ -271,7 +273,7 @@ export class Message { async edit(data: DataEditMessage) { return await this.#collection.client.api.patch( `/channels/${this.channelId as ""}/messages/${this.id as ""}`, - data + data, ); } @@ -280,7 +282,7 @@ export class Message { */ async delete() { return await this.#collection.client.api.delete( - `/channels/${this.channelId as ""}/messages/${this.id as ""}` + `/channels/${this.channelId as ""}/messages/${this.id as ""}`, ); } @@ -300,7 +302,7 @@ export class Message { | (Omit & { nonce?: string; }), - mention = true + mention = true, ) { const obj = typeof data === "string" ? { content: data } : data; return this.channel?.sendMessage({ @@ -314,7 +316,7 @@ export class Message { */ async clearReactions() { return await this.#collection.client.api.delete( - `/channels/${this.channelId as ""}/messages/${this.id as ""}/reactions` + `/channels/${this.channelId as ""}/messages/${this.id as ""}/reactions`, ); } @@ -326,7 +328,7 @@ export class Message { return await this.#collection.client.api.put( `/channels/${this.channelId as ""}/messages/${this.id as ""}/reactions/${ emoji as "" - }` + }`, ); } @@ -338,7 +340,7 @@ export class Message { return await this.#collection.client.api.delete( `/channels/${this.channelId as ""}/messages/${this.id as ""}/reactions/${ emoji as "" - }` + }`, ); } } diff --git a/src/classes/MessageEmbed.ts b/src/classes/MessageEmbed.ts index f0ae016d..a1a65473 100644 --- a/src/classes/MessageEmbed.ts +++ b/src/classes/MessageEmbed.ts @@ -60,7 +60,7 @@ export class ImageEmbed extends MessageEmbed { */ constructor( client: Client, - embed: Omit + embed: Omit, ) { super(client, "Image"); @@ -93,7 +93,7 @@ export class VideoEmbed extends MessageEmbed { */ constructor( client: Client, - embed: Omit + embed: Omit, ) { super(client, "Video"); @@ -132,7 +132,7 @@ export class WebsiteEmbed extends MessageEmbed { */ constructor( client: Client, - embed: Omit + embed: Omit, ) { super(client, "Website"); @@ -179,7 +179,7 @@ export class WebsiteEmbed extends MessageEmbed { return `https://open.spotify.com/embed/${this.specialContent.content_type}/${this.specialContent.id}`; case "Soundcloud": return `https://w.soundcloud.com/player/?url=${encodeURIComponent( - this.url! + this.url!, )}&color=%23FF7F50&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true`; case "Bandcamp": { return `https://bandcamp.com/EmbeddedPlayer/${this.specialContent.content_type.toLowerCase()}=${ @@ -211,7 +211,7 @@ export class TextEmbed extends MessageEmbed { */ constructor( client: Client, - embed: Omit + embed: Omit, ) { super(client, "Text"); diff --git a/src/classes/PublicInvite.ts b/src/classes/PublicInvite.ts index 68444d87..b55416f0 100644 --- a/src/classes/PublicInvite.ts +++ b/src/classes/PublicInvite.ts @@ -108,7 +108,7 @@ export class ServerPublicInvite extends PublicChannelInvite { return this.client!.servers.getOrCreate( invite.server._id, invite.server, - true + true, ); }); } else { diff --git a/src/classes/Server.ts b/src/classes/Server.ts index 38f58a81..04196fa8 100644 --- a/src/classes/Server.ts +++ b/src/classes/Server.ts @@ -77,7 +77,7 @@ export class Server { */ get owner() { return this.#collection.client.users.get( - this.#collection.getUnderlyingObject(this.id).ownerId + this.#collection.getUnderlyingObject(this.id).ownerId, ); } @@ -222,7 +222,7 @@ export class Server { if (uncategorised.size > 0) { const channels = [...uncategorised].map( - (key) => this.#collection.client.channels.get(key)! + (key) => this.#collection.client.channels.get(key)!, ); if (defaultCategory) { @@ -275,7 +275,7 @@ export class Server { */ get mentions() { const arr = this.channels.map((channel) => - Array.from(channel.mentions?.values() ?? []) + Array.from(channel.mentions?.values() ?? []), ); return ([] as string[]).concat(...arr); @@ -327,7 +327,7 @@ export class Server { havePermission(...permission: (keyof typeof Permission)[]) { return bitwiseAndEq( this.permission, - ...permission.map((x) => Permission[x]) + ...permission.map((x) => Permission[x]), ); } @@ -339,7 +339,7 @@ export class Server { orPermission(...permission: (keyof typeof Permission)[]) { return ( permission.findIndex((x) => - bitwiseAndEq(this.permission, Permission[x]) + bitwiseAndEq(this.permission, Permission[x]), ) !== -1 ); } @@ -364,7 +364,7 @@ export class Server { async createChannel(data: DataCreateServerChannel) { const channel = await this.#collection.client.api.post( `/servers/${this.id as ""}/channels`, - data + data, ); return this.#collection.client.channels.getOrCreate(channel._id, channel); @@ -381,11 +381,11 @@ export class Server { "server", await this.#collection.client.api.patch( `/servers/${this.id as ""}`, - data + data, ), this.#collection.client, - false - ) + false, + ), ); } @@ -396,14 +396,14 @@ export class Server { $delete(leaveEvent?: boolean) { batch(() => { const server = this.#collection.client.servers.getUnderlyingObject( - this.id + this.id, ); // Avoid race conditions if (server.id) { this.#collection.client.emit( leaveEvent ? "serverLeave" : "serverDelete", - server + server, ); for (const channel of this.channelIds) { @@ -448,18 +448,18 @@ export class Server { */ async banUser( user: string | User | ServerMember, - options: DataBanCreate = {} + options: DataBanCreate = {}, ) { const userId = user instanceof User ? user.id : user instanceof ServerMember - ? user.id.user - : user; + ? user.id.user + : user; const ban = await this.#collection.client.api.put( `/servers/${this.id as ""}/bans/${userId as ""}`, - options + options, ); return new ServerBan(this.#collection.client, ban); @@ -475,9 +475,9 @@ export class Server { typeof user === "string" ? user : user instanceof User - ? user.id - : user.id.user - }` + ? user.id + : user.id.user + }`, ); } @@ -488,7 +488,7 @@ export class Server { async unbanUser(user: string | User) { const userId = user instanceof User ? user.id : user; return await this.#collection.client.api.delete( - `/servers/${this.id as ""}/bans/${userId}` + `/servers/${this.id as ""}/bans/${userId}`, ); } @@ -498,11 +498,11 @@ export class Server { */ async fetchInvites() { const invites = await this.#collection.client.api.get( - `/servers/${this.id as ""}/invites` + `/servers/${this.id as ""}/invites`, ); return invites.map((invite) => - ChannelInvite.from(this.#collection.client, invite) + ChannelInvite.from(this.#collection.client, invite), ); } @@ -512,17 +512,17 @@ export class Server { */ async fetchBans() { const { users, bans } = await this.#collection.client.api.get( - `/servers/${this.id as ""}/bans` + `/servers/${this.id as ""}/bans`, ); const userDict = users.reduce( (d, c) => ({ ...d, [c._id]: c }), - {} as Record + {} as Record, ); return bans.map( (ban) => - new ServerBan(this.#collection.client, ban, userDict[ban._id.user]) + new ServerBan(this.#collection.client, ban, userDict[ban._id.user]), ); } @@ -534,7 +534,7 @@ export class Server { async setPermissions(roleId = "default", permissions: Override | number) { return await this.#collection.client.api.put( `/servers/${this.id as ""}/permissions/${roleId as ""}`, - { permissions: permissions as Override } + { permissions: permissions as Override }, ); } @@ -547,7 +547,7 @@ export class Server { `/servers/${this.id as ""}/roles`, { name, - } + }, ); } @@ -559,7 +559,7 @@ export class Server { async editRole(roleId: string, data: DataEditRole) { return await this.#collection.client.api.patch( `/servers/${this.id as ""}/roles/${roleId as ""}`, - data + data, ); } @@ -569,7 +569,7 @@ export class Server { */ async deleteRole(roleId: string) { return await this.#collection.client.api.delete( - `/servers/${this.id as ""}/roles/${roleId as ""}` + `/servers/${this.id as ""}/roles/${roleId as ""}`, ); } @@ -600,7 +600,7 @@ export class Server { const data = await this.#collection.client.api.get( `/servers/${this.id as ""}/members`, - { exclude_offline: excludeOffline } + { exclude_offline: excludeOffline }, ); batch(() => { @@ -611,7 +611,7 @@ export class Server { this.#collection.client.users.getOrCreate(user._id, user); this.#collection.client.serverMembers.getOrCreate( data.members[i]._id, - data.members[i] + data.members[i], ); } } @@ -619,11 +619,11 @@ export class Server { for (let i = 0; i < data.users.length; i++) { this.#collection.client.users.getOrCreate( data.users[i]._id, - data.users[i] + data.users[i], ); this.#collection.client.serverMembers.getOrCreate( data.members[i]._id, - data.members[i] + data.members[i], ); } } @@ -644,15 +644,15 @@ export class Server { async fetchMembers() { const data = (await this.#collection.client.api.get( // @ts-expect-error TODO weird typing issue - `/servers/${this.id as ""}/members` + `/servers/${this.id as ""}/members`, )) as AllMemberResponse; return batch(() => ({ members: data.members.map((member) => - this.#collection.client.serverMembers.getOrCreate(member._id, member) + this.#collection.client.serverMembers.getOrCreate(member._id, member), ), users: data.users.map((user) => - this.#collection.client.users.getOrCreate(user._id, user) + this.#collection.client.users.getOrCreate(user._id, user), ), })); } @@ -667,16 +667,16 @@ export class Server { `/servers/${ this.id as "" }/members_experimental_query?experimental_api=true&query=${encodeURIComponent( - query - )}` as never + query, + )}` as never, )) as AllMemberResponse; return batch(() => ({ members: data.members.map((member) => - this.#collection.client.serverMembers.getOrCreate(member._id, member) + this.#collection.client.serverMembers.getOrCreate(member._id, member), ), users: data.users.map((user) => - this.#collection.client.users.getOrCreate(user._id, user) + this.#collection.client.users.getOrCreate(user._id, user), ), })); } @@ -688,7 +688,7 @@ export class Server { */ async createEmoji( autumnId: string, - options: Omit + options: Omit, ) { const emoji = await this.#collection.client.api.put( `/custom/emoji/${autumnId as ""}`, @@ -698,7 +698,7 @@ export class Server { id: this.id, }, ...options, - } + }, ); return this.#collection.client.emojis.getOrCreate(emoji._id, emoji, true); @@ -710,13 +710,13 @@ export class Server { */ async fetchEmojis() { const emojis = await this.#collection.client.api.get( - `/servers/${this.id as ""}/emojis` + `/servers/${this.id as ""}/emojis`, ); return batch(() => emojis.map((emoji) => - this.#collection.client.emojis.getOrCreate(emoji._id, emoji) - ) + this.#collection.client.emojis.getOrCreate(emoji._id, emoji), + ), ); } diff --git a/src/classes/ServerBan.ts b/src/classes/ServerBan.ts index 2d20307b..52a44165 100644 --- a/src/classes/ServerBan.ts +++ b/src/classes/ServerBan.ts @@ -39,7 +39,7 @@ export class ServerBan { */ async pardon() { await this.client.api.delete( - `/servers/${this.id.server as ""}/bans/${this.id.user as ""}` + `/servers/${this.id.server as ""}/bans/${this.id.user as ""}`, ); } } diff --git a/src/classes/ServerMember.ts b/src/classes/ServerMember.ts index d408061f..6a97e122 100644 --- a/src/classes/ServerMember.ts +++ b/src/classes/ServerMember.ts @@ -183,7 +183,7 @@ export class ServerMember { ) { return bitwiseAndEq( this.getPermissions(target), - ...permission.map((x) => Permission[x]) + ...permission.map((x) => Permission[x]), ); } @@ -224,7 +224,7 @@ export class ServerMember { async edit(data: DataMemberEdit) { await this.#collection.client.api.patch( `/servers/${this.id.server as ""}/members/${this.id.user as ""}`, - data + data, ); } diff --git a/src/classes/SystemMessage.ts b/src/classes/SystemMessage.ts index 7e8b04e0..e0d37104 100644 --- a/src/classes/SystemMessage.ts +++ b/src/classes/SystemMessage.ts @@ -64,7 +64,7 @@ export class TextSystemMessage extends SystemMessage { */ constructor( client: Client, - systemMessage: API.SystemMessage & { type: "text" } + systemMessage: API.SystemMessage & { type: "text" }, ) { super(client, systemMessage.type); this.content = systemMessage.content; @@ -92,7 +92,7 @@ export class UserSystemMessage extends SystemMessage { | "user_left" | "user_kicked" | "user_banned"; - } + }, ) { super(client, systemMessage.type); this.userId = systemMessage.id; @@ -121,7 +121,7 @@ export class UserModeratedSystemMessage extends UserSystemMessage { client: Client, systemMessage: API.SystemMessage & { type: "user_added" | "user_remove"; - } + }, ) { super(client, systemMessage); this.byId = systemMessage.by; @@ -154,7 +154,7 @@ export class ChannelEditSystemMessage extends SystemMessage { | "channel_renamed" | "channel_description_changed" | "channel_icon_changed"; - } + }, ) { super(client, systemMessage.type); this.byId = systemMessage.by; @@ -183,7 +183,7 @@ export class ChannelRenamedSystemMessage extends ChannelEditSystemMessage { client: Client, systemMessage: API.SystemMessage & { type: "channel_renamed"; - } + }, ) { super(client, systemMessage); this.name = systemMessage.name; @@ -206,7 +206,7 @@ export class ChannelOwnershipChangeSystemMessage extends SystemMessage { client: Client, systemMessage: API.SystemMessage & { type: "channel_ownership_changed"; - } + }, ) { super(client, systemMessage.type); this.fromId = systemMessage.from; diff --git a/src/classes/User.ts b/src/classes/User.ts index b664c910..4243f22e 100644 --- a/src/classes/User.ts +++ b/src/classes/User.ts @@ -161,7 +161,7 @@ export class User { * Presence */ get presence() { - return this.online ? this.status?.presence ?? "Online" : "Invisible"; + return this.online ? (this.status?.presence ?? "Online") : "Invisible"; } /** @@ -171,8 +171,8 @@ export class User { */ statusMessage(translate: (presence: Presence) => string = (a) => a) { return this.online - ? this.status?.text ?? - (this.presence === "Focus" ? translate("Focus") : undefined) + ? (this.status?.text ?? + (this.presence === "Focus" ? translate("Focus") : undefined)) : undefined; } @@ -197,10 +197,10 @@ export class User { this.#collection.client.channels.find( (channel) => (channel.type === "Group" || channel.type === "DirectMessage") && - channel.recipientIds.has(this.id) + channel.recipientIds.has(this.id), ) || this.#collection.client.serverMembers.find( - (member) => member.id.user === this.id + (member) => member.id.user === this.id, ) ) { if (this.#collection.client.user?.bot || this.bot) { @@ -222,7 +222,7 @@ export class User { `/users/${ this.id === this.#collection.client.user?.id ? "@me" : this.id }`, - data + data, ); } @@ -244,7 +244,7 @@ export class User { */ async openDM() { let dm = [...this.#collection.client.channels.values()].find( - (x) => x.type === "DirectMessage" && x.recipient == this + (x) => x.type === "DirectMessage" && x.recipient == this, ); if (dm) { @@ -252,12 +252,12 @@ export class User { this.#collection.client.channels.updateUnderlyingObject( dm.id, "active", - true + true, ); } } else { const data = await this.#collection.client.api.get( - `/users/${this.id as ""}/dm` + `/users/${this.id as ""}/dm`, ); dm = this.#collection.client.channels.getOrCreate(data._id, data)!; @@ -305,7 +305,7 @@ export class User { async fetchProfile() { return new UserProfile( this.#collection.client, - await this.#collection.client.api.get(`/users/${this.id as ""}/profile`) + await this.#collection.client.api.get(`/users/${this.id as ""}/profile`), ); } @@ -315,7 +315,7 @@ export class User { */ async fetchMutual() { return await this.#collection.client.api.get( - `/users/${this.id as ""}/mutual` + `/users/${this.id as ""}/mutual`, ); } } diff --git a/src/collections/AccountCollection.ts b/src/collections/AccountCollection.ts index bcdcd8f2..18f1331b 100644 --- a/src/collections/AccountCollection.ts +++ b/src/collections/AccountCollection.ts @@ -89,7 +89,7 @@ export class AccountCollection { confirmPasswordReset( token: string, newPassword: string, - removeSessions: boolean + removeSessions: boolean, ) { return this.client.api.patch("/auth/account/reset_password", { token, diff --git a/src/collections/BotCollection.ts b/src/collections/BotCollection.ts index 03296b18..ed6dcd15 100644 --- a/src/collections/BotCollection.ts +++ b/src/collections/BotCollection.ts @@ -32,7 +32,7 @@ export class BotCollection extends ClassCollection { const data = (await this.client.api.get("/bots/@me")) as OwnedBotsResponse; return batch(() => { data.users.forEach((user) => - this.client.users.getOrCreate(user._id, user) + this.client.users.getOrCreate(user._id, user), ); return data.bots.map((bot) => this.getOrCreate(bot._id, bot)); }); diff --git a/src/collections/ChannelCollection.ts b/src/collections/ChannelCollection.ts index 9d4c6d57..39ed2e62 100644 --- a/src/collections/ChannelCollection.ts +++ b/src/collections/ChannelCollection.ts @@ -44,7 +44,7 @@ export class ChannelCollection extends ClassCollection< } else { const instance = new Channel(this, id); this.create(id, "channel", instance, this.client, data); - isNew && this.client.emit("channelCreate", instance); + if (isNew) this.client.emit("channelCreate", instance); return instance; } } diff --git a/src/collections/ChannelWebhookCollection.ts b/src/collections/ChannelWebhookCollection.ts index 2c49ee7f..5fa0fd91 100644 --- a/src/collections/ChannelWebhookCollection.ts +++ b/src/collections/ChannelWebhookCollection.ts @@ -36,7 +36,7 @@ export class ChannelWebhookCollection extends ClassCollection< if (webhook) return webhook; const data = await this.client.api.get( // @ts-expect-error not in prod - `/webhooks/${id as ""}/${token as ""}` + `/webhooks/${id as ""}/${token as ""}`, ); // @ts-expect-error not in prod return this.getOrCreate(data.id, data); diff --git a/src/collections/Collection.ts b/src/collections/Collection.ts index 83808f4e..a0683772 100644 --- a/src/collections/Collection.ts +++ b/src/collections/Collection.ts @@ -59,7 +59,7 @@ export abstract class Collection { * @param cb Callback for each pair */ abstract forEach( - cb: (value: T, key: string, map: ReactiveMap) => void + cb: (value: T, key: string, map: ReactiveMap) => void, ): void; /** @@ -169,7 +169,7 @@ export abstract class StoreCollection extends Collection { type: keyof Hydrators, instance: T, context: unknown, - data?: unknown + data?: unknown, ) { this.#storage.hydrate(id, type, context, data); this.#objects.set(id, instance); diff --git a/src/collections/EmojiCollection.ts b/src/collections/EmojiCollection.ts index 86f6efbb..559ffad5 100644 --- a/src/collections/EmojiCollection.ts +++ b/src/collections/EmojiCollection.ts @@ -31,7 +31,7 @@ export class EmojiCollection extends ClassCollection { } else { const instance = new Emoji(this, id); this.create(id, "emoji", instance, this.client, data); - isNew && this.client.emit("emojiCreate", instance); + if (isNew) this.client.emit("emojiCreate", instance); return instance; } } diff --git a/src/collections/MessageCollection.ts b/src/collections/MessageCollection.ts index 7bb9975c..23b1a0c0 100644 --- a/src/collections/MessageCollection.ts +++ b/src/collections/MessageCollection.ts @@ -21,7 +21,7 @@ export class MessageCollection extends ClassCollection< if (message && !this.isPartial(messageId)) return message; const data = await this.client.api.get( - `/channels/${channelId as ""}/messages/${messageId as ""}` + `/channels/${channelId as ""}/messages/${messageId as ""}`, ); return this.getOrCreate(data._id, data, false); @@ -39,7 +39,7 @@ export class MessageCollection extends ClassCollection< } else { const instance = new Message(this, id); this.create(id, "message", instance, this.client, data); - isNew && this.client.emit("messageCreate", instance); + if (isNew) this.client.emit("messageCreate", instance); return instance; } } diff --git a/src/collections/ServerCollection.ts b/src/collections/ServerCollection.ts index 1496902c..8605db79 100644 --- a/src/collections/ServerCollection.ts +++ b/src/collections/ServerCollection.ts @@ -48,7 +48,7 @@ export class ServerCollection extends ClassCollection { } else { const instance = new Server(this, id); this.create(id, "server", instance, this.client, data); - isNew && this.client.emit("serverCreate", instance); + if (isNew) this.client.emit("serverCreate", instance); return instance; } } @@ -78,7 +78,7 @@ export class ServerCollection extends ClassCollection { async createServer(data: DataCreateServer) { const { server, channels } = await this.client.api.post( `/servers/create`, - data + data, ); return batch(() => { diff --git a/src/collections/ServerMemberCollection.ts b/src/collections/ServerMemberCollection.ts index 7461d15e..59094f04 100644 --- a/src/collections/ServerMemberCollection.ts +++ b/src/collections/ServerMemberCollection.ts @@ -51,7 +51,7 @@ export class ServerMemberCollection extends ClassCollection< `/servers/${serverId as ""}/members/${userId as ""}`, { roles: false, - } + }, // TODO: fix typings in revolt-api )) as API.Member; @@ -73,7 +73,7 @@ export class ServerMemberCollection extends ClassCollection< "serverMember", instance, this.client, - data + data, ); return instance; } diff --git a/src/collections/SessionCollection.ts b/src/collections/SessionCollection.ts index 60e04b91..f08ca4b7 100644 --- a/src/collections/SessionCollection.ts +++ b/src/collections/SessionCollection.ts @@ -20,7 +20,7 @@ export class SessionCollection extends ClassCollection< async fetch(): Promise { const data = await this.client.api.get("/auth/session/all"); return batch(() => - data.map((session) => this.getOrCreate(session._id, session)) + data.map((session) => this.getOrCreate(session._id, session)), ); } diff --git a/src/events/EventClient.ts b/src/events/EventClient.ts index f7308f02..55f89168 100644 --- a/src/events/EventClient.ts +++ b/src/events/EventClient.ts @@ -1,4 +1,4 @@ -import { Accessor, createSignal, Setter } from "solid-js"; +import { Accessor, Setter, createSignal } from "solid-js"; import { AsyncEventEmitter } from "@vladfrangu/async_event_emitter"; import { Error } from "revolt-api"; @@ -56,10 +56,9 @@ type Events> = { /** * Simple wrapper around the Revolt websocket service. */ -export class EventClient - extends AsyncEventEmitter< - Events> - > { +export class EventClient< + T extends AvailableProtocols, +> extends AsyncEventEmitter>> { readonly options: EventClientOptions; #protocolVersion: T; @@ -77,7 +76,7 @@ export class EventClient #connectTimeoutReference: number | undefined; #lastError: // eslint-disable-next-line @typescript-eslint/no-explicit-any - { type: "socket"; data: any } | { type: "revolt"; data: Error } | undefined; + { type: "socket"; data: any } | { type: "revolt"; data: Error } | undefined; /** * Create a new event client. @@ -195,7 +194,7 @@ export class EventClient * @param event Event */ send(event: EventProtocol["client"]) { - this.options.debug && console.debug("[C->S]", event); + if (this.options.debug) console.debug("[C->S]", event); if (!this.#socket) throw "Socket closed, trying to send."; this.#socket.send(JSON.stringify(event)); } @@ -205,7 +204,7 @@ export class EventClient * @param event Event */ handle(event: EventProtocol["server"]) { - this.options.debug && console.debug("[S->C]", event); + if (this.options.debug) console.debug("[S->C]", event); switch (event.type) { case "Ping": this.send({ @@ -216,7 +215,7 @@ export class EventClient case "Pong": clearTimeout(this.#pongTimeoutReference); this.#setPing(+new Date() - event.data); - this.options.debug && console.debug(`[ping] ${this.ping()}ms`); + if (this.options.debug) console.debug(`[ping] ${this.ping()}ms`); return; case "Error": this.#lastError = { diff --git a/src/events/v1.ts b/src/events/v1.ts index c0eb3e46..c76bca1b 100644 --- a/src/events/v1.ts +++ b/src/events/v1.ts @@ -188,7 +188,7 @@ type ReadyData = { export async function handleEvent( client: Client, event: ServerMessage, - setReady: Setter + setReady: Setter, ) { if (client.options.debug) { console.debug("[S->C]", event); @@ -255,7 +255,7 @@ export async function handleEvent( client.channels.updateUnderlyingObject( event.channel, "lastMessageId", - event._id + event._id, ); }); } @@ -274,7 +274,7 @@ export async function handleEvent( "message", { ...event.data, channel: event.channel }, client, - false + false, ), editedAt: new Date(), }); @@ -294,14 +294,14 @@ export async function handleEvent( client.messages.updateUnderlyingObject(event.id, "embeds", (embeds) => [ ...(embeds ?? []), ...(event.append.embeds?.map((embed) => - MessageEmbed.from(client, embed) + MessageEmbed.from(client, embed), ) ?? []), ]); client.messages.updateUnderlyingObject( event.id, "channelId", - event.channel + event.channel, ); client.emit("messageUpdate", message, previousMessage); @@ -331,8 +331,8 @@ export async function handleEvent( return undefined!; }) .filter((x) => x), - client.channels.get(event.channel) - ) + client.channels.get(event.channel), + ), ); break; } @@ -352,7 +352,7 @@ export async function handleEvent( "messageReactionAdd", message, event.user_id, - event.emoji_id + event.emoji_id, ); } break; @@ -371,7 +371,7 @@ export async function handleEvent( "messageReactionRemove", message, event.user_id, - event.emoji_id + event.emoji_id, ); } break; @@ -446,7 +446,7 @@ export async function handleEvent( client.emit( "channelGroupJoin", channel, - await client.users.fetch(event.user) + await client.users.fetch(event.user), ); } break; @@ -463,7 +463,7 @@ export async function handleEvent( client.emit( "channelGroupLeave", channel, - client.users.getOrPartial(event.user)! + client.users.getOrPartial(event.user)!, ); } break; @@ -480,7 +480,7 @@ export async function handleEvent( client.emit( "channelStartTyping", channel, - client.users.getOrPartial(event.user)! + client.users.getOrPartial(event.user)!, ); } break; @@ -497,7 +497,7 @@ export async function handleEvent( client.emit( "channelStopTyping", channel, - client.users.getOrPartial(event.user)! + client.users.getOrPartial(event.user)!, ); } break; @@ -612,7 +612,7 @@ export async function handleEvent( client.serverMembers.getOrCreate(id, { _id: id, joined_at: new Date().toUTCString(), - }) + }), ); } break; @@ -622,7 +622,7 @@ export async function handleEvent( if (member) { const previousMember = { ...client.serverMembers.getUnderlyingObject( - event.id.server + event.id.user + event.id.server + event.id.user, ), }; @@ -649,7 +649,7 @@ export async function handleEvent( client.serverMembers.updateUnderlyingObject( event.id.server + event.id.user, - changes as never + changes as never, ); client.emit("serverMemberUpdate", member, previousMember); @@ -664,7 +664,7 @@ export async function handleEvent( type: "ServerDelete", id: event.id, }, - setReady + setReady, ); return; @@ -677,7 +677,7 @@ export async function handleEvent( if (client.serverMembers.getOrPartial(id)) { const member = client.serverMembers.getUnderlyingObject( - id.server + id.user + id.server + id.user, ); client.emit("serverMemberLeave", member); @@ -733,7 +733,7 @@ export async function handleEvent( relationship: event.user.relationship!, }, }, - setReady + setReady, ); break; } @@ -747,7 +747,7 @@ export async function handleEvent( online: event.online, }, }, - setReady + setReady, ); break; } @@ -767,7 +767,7 @@ export async function handleEvent( .filter((message) => message.authorId === event.user_id) .map((message) => message.id), }, - setReady + setReady, ); handleEvent( @@ -784,7 +784,7 @@ export async function handleEvent( }, clear: ["Avatar", "StatusPresence", "StatusText"], }, - setReady + setReady, ); }); diff --git a/src/hydration/index.ts b/src/hydration/index.ts index 8d872acb..7c3f742f 100644 --- a/src/hydration/index.ts +++ b/src/hydration/index.ts @@ -55,19 +55,20 @@ export type Hydrate = { function hydrateInternal( hydration: Hydrate, input: Input, - context: unknown + context: unknown, ): Output { return (Object.keys(input) as (keyof Input)[]).reduce((acc, key) => { let targetKey, value; try { targetKey = hydration.keyMapping[key] ?? key; value = hydration.functions[targetKey as keyof Output](input, context); - } catch (err) { - if (key === "partial") + } catch { + if (key === "partial") { return { ...acc, partial: input["partial" as never], }; + } if (key === "type") return acc; console.debug(`Skipping key ${String(key)} during hydration!`); return acc; @@ -112,11 +113,11 @@ export function hydrate( type: T, input: Partial>, context: unknown, - initial?: boolean + initial?: boolean, ) { return hydrateInternal( hydrators[type] as never, initial ? { ...hydrators[type].initialHydration(), ...input } : input, - context + context, ) as ExtractOutput; } diff --git a/src/hydration/server.ts b/src/hydration/server.ts index f47e0be9..af80f0fc 100644 --- a/src/hydration/server.ts +++ b/src/hydration/server.ts @@ -52,7 +52,7 @@ export const serverHydration: Hydrate = { systemMessages: (server) => server.system_messages ?? {}, roles: (server) => new ReactiveMap( - Object.keys(server.roles!).map((id) => [id, server.roles![id]]) + Object.keys(server.roles!).map((id) => [id, server.roles![id]]), ), defaultPermissions: (server) => server.default_permissions, icon: (server, ctx) => new File(ctx as Client, server.icon!), diff --git a/src/lib/merge.ts b/src/lib/merge.ts index 7c74bd8e..99324d55 100644 --- a/src/lib/merge.ts +++ b/src/lib/merge.ts @@ -5,9 +5,8 @@ export type Merge = { [k in NonCommonKeys]?: PickTypeOf; }; -type PickTypeOf = K extends AllKeys - ? PickType - : never; +type PickTypeOf = + K extends AllKeys ? PickType : never; // eslint-disable-next-line type PickType> = T extends { [k in K]?: any } diff --git a/src/permissions/calculator.ts b/src/permissions/calculator.ts index fa37931b..ec52f604 100644 --- a/src/permissions/calculator.ts +++ b/src/permissions/calculator.ts @@ -63,7 +63,7 @@ export function calculatePermission( ); for (const permission of permissions) { - perm = (perm | BigInt(permission.a)) & (~BigInt(permission.d)); + perm = (perm | BigInt(permission.a)) & ~BigInt(permission.d); } } @@ -119,14 +119,13 @@ export function calculatePermission( if (!member) return 0; // 5. Calculate server base permissions. - let perm = BigInt( - calculatePermission(client, server, options), - ); + let perm = BigInt(calculatePermission(client, server, options)); // 6. Apply default allows and denies for channel. if (target.defaultPermissions) { - perm = (perm | BigInt(target.defaultPermissions.a)) & - (~BigInt(target.defaultPermissions.d)); + perm = + (perm | BigInt(target.defaultPermissions.a)) & + ~BigInt(target.defaultPermissions.d); } // 7. If user has roles, iterate in order. @@ -137,7 +136,7 @@ export function calculatePermission( for (const id of roles) { const override = target.rolePermissions[id]; if (override) { - perm = (perm & BigInt(override.a)) & (~BigInt(override.d)); + perm = perm & BigInt(override.a) & ~BigInt(override.d); } } }