diff --git a/.eslintrc.json b/.eslintrc.json index 286cbf33..9f9b0a51 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -17,7 +17,7 @@ "strings": false, "identifiers": false, "templates": false, - "skipWords": ["uri"], + "skipWords": ["uri", "webhook", "unreads"], "minLength": 3 } ], diff --git a/src/Client.ts b/src/Client.ts index aa1164cf..fec6fe05 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,7 +1,7 @@ import { Accessor, Setter, createSignal } from "solid-js"; import EventEmitter from "eventemitter3"; -import { API, DataCreateAccount, Metadata, Role } from "revolt-api"; +import { API, DataCreateAccount, Role } from "revolt-api"; import type { DataLogin, RevoltConfig } from "revolt-api"; import { Channel, Emoji, Message, Server, ServerMember, User } from "./classes"; diff --git a/src/classes/Channel.ts b/src/classes/Channel.ts index 3786c0ad..8c484d0f 100644 --- a/src/classes/Channel.ts +++ b/src/classes/Channel.ts @@ -32,6 +32,10 @@ export class Channel { this.id = id; } + /** + * Write to string as a channel mention + * @returns Formatted String + */ toString() { return `<#${this.id}>`; } @@ -594,6 +598,9 @@ export class Channel { } } + /** + * Send the actual acknowledgement request + */ const performAck = () => { this.#ackLimit = undefined; this.#collection.client.api.put( diff --git a/src/classes/File.ts b/src/classes/File.ts index f5dd10e3..4988c09a 100644 --- a/src/classes/File.ts +++ b/src/classes/File.ts @@ -85,7 +85,7 @@ export class File { } /** - * Whether this file should be spoilered + * Whether this file should have a spoiler */ get isSpoiler() { return this.filename.toLowerCase().startsWith("spoiler_"); diff --git a/src/classes/Server.ts b/src/classes/Server.ts index 543604f0..204860a6 100644 --- a/src/classes/Server.ts +++ b/src/classes/Server.ts @@ -322,7 +322,7 @@ export class Server { * @returns The newly-created channel */ async createChannel(data: DataCreateChannel) { - let channel = await this.#collection.client.api.post( + const channel = await this.#collection.client.api.post( `/servers/${this.id as ""}/channels`, data ); diff --git a/src/classes/ServerMember.ts b/src/classes/ServerMember.ts index 6412124c..8c5624aa 100644 --- a/src/classes/ServerMember.ts +++ b/src/classes/ServerMember.ts @@ -1,6 +1,5 @@ import type { DataBanCreate, - DataEditMessage, DataMemberEdit, MemberCompositeKey, } from "revolt-api"; diff --git a/src/classes/SystemMessage.ts b/src/classes/SystemMessage.ts index 1487bfae..00cce6fa 100644 --- a/src/classes/SystemMessage.ts +++ b/src/classes/SystemMessage.ts @@ -57,6 +57,11 @@ export abstract class SystemMessage { export class TextSystemMessage extends SystemMessage { readonly content: string; + /** + * Construct System Message + * @param client Client + * @param systemMessage System Message + */ constructor( client: Client, systemMessage: API.SystemMessage & { type: "text" } @@ -72,6 +77,11 @@ export class TextSystemMessage extends SystemMessage { export class UserSystemMessage extends SystemMessage { readonly userId: string; + /** + * Construct System Message + * @param client Client + * @param systemMessage System Message + */ constructor( client: Client, systemMessage: API.SystemMessage & { @@ -102,6 +112,11 @@ export class UserSystemMessage extends SystemMessage { export class UserModeratedSystemMessage extends UserSystemMessage { readonly byId: string; + /** + * Construct System Message + * @param client Client + * @param systemMessage System Message + */ constructor( client: Client, systemMessage: API.SystemMessage & { @@ -127,6 +142,11 @@ export class UserModeratedSystemMessage extends UserSystemMessage { export class ChannelEditSystemMessage extends SystemMessage { readonly byId: string; + /** + * Construct System Message + * @param client Client + * @param systemMessage System Message + */ constructor( client: Client, systemMessage: API.SystemMessage & { @@ -154,6 +174,11 @@ export class ChannelEditSystemMessage extends SystemMessage { export class ChannelRenamedSystemMessage extends ChannelEditSystemMessage { readonly name: string; + /** + * Construct System Message + * @param client Client + * @param systemMessage System Message + */ constructor( client: Client, systemMessage: API.SystemMessage & { @@ -172,6 +197,11 @@ export class ChannelOwnershipChangeSystemMessage extends SystemMessage { readonly fromId: string; readonly toId: string; + /** + * Construct System Message + * @param client Client + * @param systemMessage System Message + */ constructor( client: Client, systemMessage: API.SystemMessage & { diff --git a/src/classes/User.ts b/src/classes/User.ts index 75d623ec..1190f4dd 100644 --- a/src/classes/User.ts +++ b/src/classes/User.ts @@ -22,8 +22,8 @@ export class User { } /** - * Convert to string - * @returns String + * Write to string as a user mention + * @returns Formatted String */ toString() { return `<@${this.id}>`; diff --git a/src/collections/BotCollection.ts b/src/collections/BotCollection.ts index 698e0c65..0dbc10d7 100644 --- a/src/collections/BotCollection.ts +++ b/src/collections/BotCollection.ts @@ -5,6 +5,9 @@ import { HydratedBot } from "../hydration/bot"; import { ClassCollection } from "."; +/** + * Collection of Bots + */ export class BotCollection extends ClassCollection { /** * Fetch bot by ID diff --git a/src/collections/ChannelCollection.ts b/src/collections/ChannelCollection.ts index 2cc35319..753ac087 100644 --- a/src/collections/ChannelCollection.ts +++ b/src/collections/ChannelCollection.ts @@ -3,6 +3,9 @@ import { HydratedChannel } from "../hydration"; import { ClassCollection } from "."; +/** + * Collection of Channels + */ export class ChannelCollection extends ClassCollection< Channel, HydratedChannel @@ -12,7 +15,7 @@ export class ChannelCollection extends ClassCollection< * @param id Id */ override delete(id: string): void { - let channel = this.get(id); + const channel = this.get(id); channel?.server?.channelIds.delete(id); super.delete(id); } diff --git a/src/collections/ChannelUnreadCollection.ts b/src/collections/ChannelUnreadCollection.ts index 5eb30072..d36e629b 100644 --- a/src/collections/ChannelUnreadCollection.ts +++ b/src/collections/ChannelUnreadCollection.ts @@ -4,6 +4,9 @@ import { HydratedChannelUnread } from "../hydration"; import { ClassCollection } from "."; +/** + * Collection of Channel Unreads + */ export class ChannelUnreadCollection extends ClassCollection< ChannelUnread, HydratedChannelUnread diff --git a/src/collections/Collection.ts b/src/collections/Collection.ts index 0505c1e5..12509f2f 100644 --- a/src/collections/Collection.ts +++ b/src/collections/Collection.ts @@ -168,7 +168,7 @@ export abstract class StoreCollection extends Collection { id: string, type: keyof Hydrators, instance: T, - context: any, + context: unknown, data?: unknown ) { this.#storage.hydrate(id, type, context, data); @@ -232,6 +232,10 @@ export abstract class StoreCollection extends Collection { export class ClassCollection extends StoreCollection { readonly client: Client; + /** + * Create generic class collection + * @param client Client + */ constructor(client: Client) { super(); this.client = client; diff --git a/src/collections/EmojiCollection.ts b/src/collections/EmojiCollection.ts index 4c5faef8..f9ca975a 100644 --- a/src/collections/EmojiCollection.ts +++ b/src/collections/EmojiCollection.ts @@ -3,6 +3,9 @@ import { HydratedEmoji } from "../hydration"; import { ClassCollection } from "."; +/** + * Collection of Emoji + */ export class EmojiCollection extends ClassCollection { /** * Fetch emoji by ID diff --git a/src/collections/MessageCollection.ts b/src/collections/MessageCollection.ts index b1b7563b..b4130247 100644 --- a/src/collections/MessageCollection.ts +++ b/src/collections/MessageCollection.ts @@ -3,6 +3,9 @@ import { HydratedMessage } from "../hydration"; import { ClassCollection } from "."; +/** + * Collection of Messages + */ export class MessageCollection extends ClassCollection< Message, HydratedMessage diff --git a/src/collections/ServerCollection.ts b/src/collections/ServerCollection.ts index 3e750d25..f7891e49 100644 --- a/src/collections/ServerCollection.ts +++ b/src/collections/ServerCollection.ts @@ -5,6 +5,9 @@ import { HydratedServer } from "../hydration"; import { ClassCollection } from "."; +/** + * Collection of Servers + */ export class ServerCollection extends ClassCollection { /** * Fetch server by ID diff --git a/src/collections/ServerMemberCollection.ts b/src/collections/ServerMemberCollection.ts index 718af43a..fd6c25d5 100644 --- a/src/collections/ServerMemberCollection.ts +++ b/src/collections/ServerMemberCollection.ts @@ -3,6 +3,9 @@ import { HydratedServerMember } from "../hydration"; import { ClassCollection } from "."; +/** + * Collection of Server Members + */ export class ServerMemberCollection extends ClassCollection< ServerMember, HydratedServerMember diff --git a/src/collections/UserCollection.ts b/src/collections/UserCollection.ts index 05ba3de5..5ad5cc5f 100644 --- a/src/collections/UserCollection.ts +++ b/src/collections/UserCollection.ts @@ -3,6 +3,9 @@ import { HydratedUser } from "../hydration"; import { ClassCollection } from "."; +/** + * Collection of Users + */ export class UserCollection extends ClassCollection { /** * Fetch user by ID diff --git a/src/events/v1.ts b/src/events/v1.ts index 427729aa..db0bf033 100644 --- a/src/events/v1.ts +++ b/src/events/v1.ts @@ -247,7 +247,7 @@ export async function handleEvent( // TODO: this should not be necessary in future protocols: if (event.author && client.options.eagerFetching) { await client.users.fetch(event.author); - let serverId = client.channels.get(event.channel)?.serverId; + const serverId = client.channels.get(event.channel)?.serverId; if (serverId) await client.serverMembers.fetch(serverId, event.author); } @@ -772,20 +772,7 @@ export async function handleEvent( break; } case "Auth": { - /*if (typeof client.#session === "string") throw "Unreachable code"; - - switch (event.event_type) { - case "DeleteSession": - if (event.session_id === client.#session!._id) { - // TODO: logout - } - break; - case "DeleteAllSessions": - if (event.exclude_session_id !== client.#session!._id) { - // TODO: logout - } - break; - }*/ + // TODO: implement DeleteSession and DeleteAllSessions break; } } diff --git a/src/hydration/index.ts b/src/hydration/index.ts index cabdb598..649eb872 100644 --- a/src/hydration/index.ts +++ b/src/hydration/index.ts @@ -25,7 +25,7 @@ export type { HydratedUser } from "./user"; */ export type MappingFns = Record< Key, - (value: Input, context: any) => Output[Key] + (value: Input, context: unknown) => Output[Key] >; /** @@ -51,7 +51,7 @@ export type Hydrate = { function hydrateInternal( hydration: Hydrate, input: Input, - context: any + context: unknown ): Output { return (Object.keys(input) as (keyof Input)[]).reduce((acc, key) => { let targetKey, value; @@ -100,7 +100,7 @@ type ExtractOutput = T extends Hydrate ? O : never; export function hydrate( type: T, input: Partial>, - context: any, + context: unknown, initial?: boolean ) { return hydrateInternal( diff --git a/src/storage/ObjectStorage.ts b/src/storage/ObjectStorage.ts index 43a16c16..c0fd8977 100644 --- a/src/storage/ObjectStorage.ts +++ b/src/storage/ObjectStorage.ts @@ -35,7 +35,7 @@ export class ObjectStorage { * @param context Context * @param data Input Data */ - hydrate(id: string, type: keyof Hydrators, context: any, data?: unknown) { + hydrate(id: string, type: keyof Hydrators, context: unknown, data?: unknown) { if (data) { this.set(id, hydrate(type, data as never, context, true) as T); }