UNPKG

seyfert

Version:

The most advanced framework for discord bots

77 lines (76 loc) 3.44 kB
import type { ApiRequestOptions, CustomWorkerClientEvents, HttpMethods } from '../..'; import type { Identify } from '../../common'; import type { GatewayDispatchPayload } from '../../types'; export interface WorkerShardInfo { open: boolean; shardId: number; latency: number; resumable: boolean; workerId: number; } export type WorkerInfo = { shards: WorkerShardInfo[]; }; type CreateWorkerMessage<T extends string, D extends object = object> = { type: T; workerId: number; } & D; export type WorkerRequestConnect = CreateWorkerMessage<'CONNECT_QUEUE', { shardId: number; }>; export type WorkerRequestConnectResharding = CreateWorkerMessage<'CONNECT_QUEUE_RESHARDING', { shardId: number; }>; export type WorkerReceivePayload = CreateWorkerMessage<'RECEIVE_PAYLOAD', { shardId: number; payload: GatewayDispatchPayload; }>; export type WorkerSendResultPayload = CreateWorkerMessage<'RESULT_PAYLOAD', { nonce: string; }>; export type WorkerSendCacheRequest = CreateWorkerMessage<'CACHE_REQUEST', { nonce: string; method: 'scan' | 'bulkGet' | 'get' | 'bulkSet' | 'set' | 'bulkPatch' | 'patch' | 'values' | 'keys' | 'count' | 'bulkRemove' | 'remove' | 'flush' | 'contains' | 'getToRelationship' | 'bulkAddToRelationShip' | 'addToRelationship' | 'removeRelationship' | 'removeToRelationship'; args: unknown[]; }>; export type WorkerSendShardInfo = CreateWorkerMessage<'SHARD_INFO', WorkerShardInfo & { nonce: string; }>; export type WorkerSendInfo = CreateWorkerMessage<'WORKER_INFO', WorkerInfo & { nonce: string; }>; export type WorkerReady = CreateWorkerMessage<'WORKER_READY'>; export type WorkerReadyResharding = CreateWorkerMessage<'WORKER_READY_RESHARDING'>; export type WorkerShardsConnected = CreateWorkerMessage<'WORKER_SHARDS_CONNECTED'>; export type WorkerStart = CreateWorkerMessage<'WORKER_START'>; export type WorkerStartResharding = CreateWorkerMessage<'WORKER_START_RESHARDING'>; export type WorkerDisconnectedAllShardsResharding = CreateWorkerMessage<'DISCONNECTED_ALL_SHARDS_RESHARDING'>; export type WorkerSendApiRequest = CreateWorkerMessage<'WORKER_API_REQUEST', { method: HttpMethods; url: `/${string}`; requestOptions: ApiRequestOptions; nonce: string; }>; export type WorkerSendEvalResponse = CreateWorkerMessage<'EVAL_RESPONSE', { response: unknown; nonce: string; }>; export type WorkerSendToWorkerEval = CreateWorkerMessage<'EVAL_TO_WORKER', { func: string; nonce: string; vars: string; toWorkerId: number; }>; export type BaseWorkerMessage = WorkerRequestConnect | WorkerReceivePayload | WorkerSendResultPayload | WorkerSendCacheRequest | WorkerSendShardInfo | WorkerSendInfo | WorkerReady | WorkerShardsConnected | WorkerSendApiRequest | WorkerSendEvalResponse | WorkerSendToWorkerEval | WorkerStart | WorkerStartResharding | WorkerRequestConnectResharding | WorkerReadyResharding | WorkerDisconnectedAllShardsResharding; export type CustomWorkerClientMessages = { [K in keyof CustomWorkerClientEvents]: Identify<{ type: K; workerId: number; } & Identify<CustomWorkerClientEvents[K] extends never ? {} : CustomWorkerClientEvents[K]>>; }; export type WorkerMessages = { [K in BaseWorkerMessage['type']]: Identify<Extract<BaseWorkerMessage, { type: K; }>>; }[BaseWorkerMessage['type']] | CustomWorkerClientMessages[keyof CustomWorkerClientMessages]; export {};