mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-19 04:53:30 +01:00
types: make event emitters use mapped event types (#7019)
This commit is contained in:
70
typings/index.d.ts
vendored
70
typings/index.d.ts
vendored
@@ -609,6 +609,12 @@ export class ClientVoiceManager {
|
||||
|
||||
export { Collection } from '@discordjs/collection';
|
||||
|
||||
export interface CollectorEventTypes<K, V, F extends unknown[] = []> {
|
||||
collect: [V, ...F];
|
||||
dispose: [V, ...F];
|
||||
end: [collected: Collection<K, V>, reason: string];
|
||||
}
|
||||
|
||||
export abstract class Collector<K, V, F extends unknown[] = []> extends EventEmitter {
|
||||
protected constructor(client: Client, options?: CollectorOptions<[V, ...F]>);
|
||||
private _timeout: NodeJS.Timeout | null;
|
||||
@@ -633,11 +639,15 @@ export abstract class Collector<K, V, F extends unknown[] = []> extends EventEmi
|
||||
public abstract collect(...args: unknown[]): K | null | Promise<K | null>;
|
||||
public abstract dispose(...args: unknown[]): K | null;
|
||||
|
||||
public on(event: 'collect' | 'dispose', listener: (...args: [V, ...F]) => Awaitable<void>): this;
|
||||
public on(event: 'end', listener: (collected: Collection<K, V>, reason: string) => Awaitable<void>): this;
|
||||
public on<EventKey extends keyof CollectorEventTypes<K, V, F>>(
|
||||
event: EventKey,
|
||||
listener: (...args: CollectorEventTypes<K, V, F>[EventKey]) => Awaitable<void>,
|
||||
): this;
|
||||
|
||||
public once(event: 'collect' | 'dispose', listener: (...args: [V, ...F]) => Awaitable<void>): this;
|
||||
public once(event: 'end', listener: (collected: Collection<K, V>, reason: string) => Awaitable<void>): this;
|
||||
public once<EventKey extends keyof CollectorEventTypes<K, V, F>>(
|
||||
event: EventKey,
|
||||
listener: (...args: CollectorEventTypes<K, V, F>[EventKey]) => Awaitable<void>,
|
||||
): this;
|
||||
}
|
||||
|
||||
export interface ApplicationCommandInteractionOptionResolver<Cached extends CacheType = CacheType>
|
||||
@@ -1829,6 +1839,16 @@ export class SelectMenuInteraction<Cached extends CacheType = CacheType> extends
|
||||
public inRawGuild(): this is SelectMenuInteraction<'raw'>;
|
||||
}
|
||||
|
||||
export interface ShardEventTypes {
|
||||
spawn: [child: ChildProcess];
|
||||
death: [child: ChildProcess];
|
||||
disconnect: [];
|
||||
ready: [];
|
||||
reconnection: [];
|
||||
error: [error: Error];
|
||||
message: [message: any];
|
||||
}
|
||||
|
||||
export class Shard extends EventEmitter {
|
||||
private constructor(manager: ShardingManager, id: number);
|
||||
private _evals: Map<string, Promise<unknown>>;
|
||||
@@ -1853,17 +1873,15 @@ export class Shard extends EventEmitter {
|
||||
public send(message: unknown): Promise<Shard>;
|
||||
public spawn(timeout?: number): Promise<ChildProcess>;
|
||||
|
||||
public on(event: 'spawn' | 'death', listener: (child: ChildProcess) => Awaitable<void>): this;
|
||||
public on(event: 'disconnect' | 'ready' | 'reconnecting', listener: () => Awaitable<void>): this;
|
||||
public on(event: 'error', listener: (error: Error) => Awaitable<void>): this;
|
||||
public on(event: 'message', listener: (message: any) => Awaitable<void>): this;
|
||||
public on(event: string, listener: (...args: any[]) => Awaitable<void>): this;
|
||||
public on<K extends keyof ShardEventTypes>(
|
||||
event: K,
|
||||
listener: (...args: ShardEventTypes[K]) => Awaitable<void>,
|
||||
): this;
|
||||
|
||||
public once(event: 'spawn' | 'death', listener: (child: ChildProcess) => Awaitable<void>): this;
|
||||
public once(event: 'disconnect' | 'ready' | 'reconnecting', listener: () => Awaitable<void>): this;
|
||||
public once(event: 'error', listener: (error: Error) => Awaitable<void>): this;
|
||||
public once(event: 'message', listener: (message: any) => Awaitable<void>): this;
|
||||
public once(event: string, listener: (...args: any[]) => Awaitable<void>): this;
|
||||
public once<K extends keyof ShardEventTypes>(
|
||||
event: K,
|
||||
listener: (...args: ShardEventTypes[K]) => Awaitable<void>,
|
||||
): this;
|
||||
}
|
||||
|
||||
export class ShardClientUtil {
|
||||
@@ -2352,6 +2370,14 @@ export class WebSocketManager extends EventEmitter {
|
||||
private triggerClientReady(): void;
|
||||
}
|
||||
|
||||
export interface WebSocketShardEvents {
|
||||
ready: [];
|
||||
resumed: [];
|
||||
invalidSession: [];
|
||||
close: [event: CloseEvent];
|
||||
allReady: [unavailableGuilds?: Set<Snowflake>];
|
||||
}
|
||||
|
||||
export class WebSocketShard extends EventEmitter {
|
||||
private constructor(manager: WebSocketManager, id: number);
|
||||
private sequence: number;
|
||||
@@ -2394,15 +2420,15 @@ export class WebSocketShard extends EventEmitter {
|
||||
|
||||
public send(data: unknown, important?: boolean): void;
|
||||
|
||||
public on(event: 'ready' | 'resumed' | 'invalidSession', listener: () => Awaitable<void>): this;
|
||||
public on(event: 'close', listener: (event: CloseEvent) => Awaitable<void>): this;
|
||||
public on(event: 'allReady', listener: (unavailableGuilds?: Set<Snowflake>) => Awaitable<void>): this;
|
||||
public on(event: string, listener: (...args: any[]) => Awaitable<void>): this;
|
||||
public on<K extends keyof WebSocketShardEvents>(
|
||||
event: K,
|
||||
listener: (...args: WebSocketShardEvents[K]) => Awaitable<void>,
|
||||
): this;
|
||||
|
||||
public once(event: 'ready' | 'resumed' | 'invalidSession', listener: () => Awaitable<void>): this;
|
||||
public once(event: 'close', listener: (event: CloseEvent) => Awaitable<void>): this;
|
||||
public once(event: 'allReady', listener: (unavailableGuilds?: Set<Snowflake>) => Awaitable<void>): this;
|
||||
public once(event: string, listener: (...args: any[]) => Awaitable<void>): this;
|
||||
public once<K extends keyof WebSocketShardEvents>(
|
||||
event: K,
|
||||
listener: (...args: WebSocketShardEvents[K]) => Awaitable<void>,
|
||||
): this;
|
||||
}
|
||||
|
||||
export class Widget extends Base {
|
||||
|
||||
Reference in New Issue
Block a user