UNPKG

@aeolun/graphql-redis-subscriptions

Version:
49 lines (48 loc) 1.87 kB
/// <reference types="node" /> import { Cluster, Redis, RedisOptions } from 'ioredis'; import { PubSubEngine } from 'graphql-subscriptions-continued'; type RedisClient = Redis | Cluster; type OnMessage<T> = (message: T) => void; type DeserializerContext = { channel: string; pattern?: string; }; export interface PubSubRedisOptions { connection?: RedisOptions | string; triggerTransform?: TriggerTransform; connectionListener?: (err: Error) => void; publisher?: RedisClient; subscriber?: RedisClient; reviver?: Reviver; serializer?: Serializer; deserializer?: Deserializer; messageEventName?: string; pmessageEventName?: string; } export declare class RedisPubSub extends PubSubEngine { constructor(options?: PubSubRedisOptions); publish<T>(trigger: string, payload: T): Promise<void>; subscribe<T = any>(trigger: string, onMessage: OnMessage<T>, options?: unknown): Promise<number>; unsubscribe(subId: number): void; asyncIterator<T>(triggers: string | string[], options?: unknown): any; getSubscriber(): RedisClient; getPublisher(): RedisClient; close(): Promise<'OK'[]>; private readonly serializer?; private readonly deserializer?; private readonly triggerTransform; private readonly redisSubscriber; private readonly redisPublisher; private readonly reviver; private readonly subscriptionMap; private readonly subsRefsMap; private currentSubscriptionId; private onMessage; } export type Path = Array<string | number>; export type Trigger = string | Path; export type TriggerTransform = (trigger: Trigger, channelOptions?: unknown) => string; export type Reviver = (key: any, value: any) => any; export type Serializer = (source: any) => string; export type Deserializer = (source: string | Buffer, context: DeserializerContext) => any; export {};