@valkey/client
Version:
The source code and documentation for this package are in the main [node-redis](https://github.com/redis/node-redis) repo.
51 lines (50 loc) • 2.2 kB
TypeScript
/// <reference types="node" />
import { ValkeyCommandArgument } from "../commands";
export declare enum PubSubType {
CHANNELS = "CHANNELS",
PATTERNS = "PATTERNS",
SHARDED = "SHARDED"
}
export type PubSubListener<RETURN_BUFFERS extends boolean = false> = <T extends RETURN_BUFFERS extends true ? Buffer : string>(message: T, channel: T) => unknown;
export interface ChannelListeners {
unsubscribing: boolean;
buffers: Set<PubSubListener<true>>;
strings: Set<PubSubListener<false>>;
}
export type PubSubTypeListeners = Map<string, ChannelListeners>;
export type PubSubCommand = ReturnType<typeof PubSub.prototype.subscribe | typeof PubSub.prototype.unsubscribe | typeof PubSub.prototype.extendTypeListeners>;
export declare class PubSub {
#private;
static isStatusReply(reply: Array<Buffer>): boolean;
static isShardedUnsubscribe(reply: Array<Buffer>): boolean;
get isActive(): boolean;
subscribe<T extends boolean>(type: PubSubType, channels: string | Array<string>, listener: PubSubListener<T>, returnBuffers?: T): {
args: ValkeyCommandArgument[];
channelsCounter: number;
resolve: () => void;
reject: () => void;
} | undefined;
extendChannelListeners(type: PubSubType, channel: string, listeners: ChannelListeners): {
args: (string | Buffer)[];
channelsCounter: number;
resolve: () => number;
reject: () => void;
} | undefined;
extendTypeListeners(type: PubSubType, listeners: PubSubTypeListeners): {
args: ValkeyCommandArgument[];
channelsCounter: number;
resolve: () => number;
reject: () => void;
} | undefined;
unsubscribe<T extends boolean>(type: PubSubType, channels?: string | Array<string>, listener?: PubSubListener<T>, returnBuffers?: T): {
args: ValkeyCommandArgument[];
channelsCounter: number;
resolve: () => void;
reject: undefined;
} | undefined;
reset(): void;
resubscribe(): Array<PubSubCommand>;
handleMessageReply(reply: Array<Buffer>): boolean;
removeShardedListeners(channel: string): ChannelListeners;
getTypeListeners(type: PubSubType): PubSubTypeListeners;
}