UNPKG

seyfert

Version:

The most advanced framework for discord bots

57 lines (56 loc) 2.79 kB
import { type Awaitable, Logger } from '../common'; import type { WorkerSendApiRequest } from '../websocket/discord/worker'; import type { APIRoutes } from './Routes'; import { Bucket } from './bucket'; import { type ApiHandlerInternalOptions, type ApiHandlerOptions, type ApiRequestOptions, type HttpMethods, type RawFile, type RequestHeaders } from './shared'; export interface ApiHandler { debugger?: Logger; } export type OnRatelimitCallback = (response: Response, request: ApiRequestOptions) => Awaitable<any>; export declare class ApiHandler { #private; options: ApiHandlerInternalOptions; globalBlock: boolean; ratelimits: Map<string, Bucket>; readyQueue: (() => void)[]; cdn: import("./Routes").CDNRoute; workerPromises?: Map<string, { resolve: (value: any) => any; reject: (error: any) => any; }>; onRatelimit?: OnRatelimitCallback; constructor(options: ApiHandlerOptions); set debug(active: boolean); get proxy(): APIRoutes; globalUnblock(): void; private sendMessage; protected postMessage<T = unknown>(body: WorkerSendApiRequest): Promise<T>; request<T = unknown>(method: HttpMethods, url: `/${string}`, { auth, ...request }?: ApiRequestOptions): Promise<T>; parseError(method: HttpMethods, route: `/${string}`, response: Response, result: string | Record<string, any>): Error; parseValidationError(data: Record<string, any>, path?: string, errors?: string[]): string[]; handle50X(method: HttpMethods, url: `/${string}`, request: ApiRequestOptions, next: () => void): Promise<unknown>; handle429(route: string, method: HttpMethods, url: `/${string}`, request: ApiRequestOptions, response: Response, result: string, next: () => void, reject: (err: unknown) => void, now: number): Promise<unknown>; clearResetInterval(route: string): void; setResetBucket(route: string, resp: Response, now: number, headerNow: number): void; setRatelimitsBucket(route: string, resp: Response): void; parseRequest(options: { url: string; headers: RequestHeaders; request: ApiRequestOptions; }): { data: string | FormData | undefined; finalUrl: `/${string}`; }; routefy(url: string, method: HttpMethods): `/${string}`; } export type RequestOptions = Pick<ApiRequestOptions, 'reason' | 'auth' | 'appendToFormData' | 'token'>; export type RestArguments<B extends Record<string, any> | undefined, Q extends never | Record<string, any> = never, F extends RawFile[] = RawFile[]> = ({ body: B; files?: F; } | (Q extends never | undefined ? {} : { query?: Q; })) & RequestOptions; export type RestArgumentsNoBody<Q extends never | Record<string, any> = never> = { query?: Q; files?: RawFile[]; } & RequestOptions;