UNPKG

@nexica/nestjs-trpc

Version:
46 lines (45 loc) 1.46 kB
import { EventEmitter } from 'events'; export interface SubscriptionHelperOptions<T = unknown> { eventEmitter: EventEmitter; eventName: string; errorEventName?: string; maxQueueSize?: number; dropNewOnFull?: boolean; timeout?: number; throwOnTimeout?: boolean; resilientMode?: boolean; filter?: (event: unknown) => boolean; transform?: (event: unknown) => T; typeGuard?: (event: unknown) => event is T; signal?: AbortSignal; onError?: (error: Error, context: { eventName: string; stats: SubscriptionStats; }) => void; } export interface SubscriptionStats { eventsProcessed: number; errorsEncountered: number; currentQueueSize: number; startTime: number; lastEventTime: number | null; } export interface SubscriptionController { close(): void; isClosed(): boolean; getStats(): SubscriptionStats; } export declare function createEventSubscription<T>(options: SubscriptionHelperOptions<T>): { subscription: AsyncIterable<T>; controller: SubscriptionController; }; export declare const createMockEventEmitter: () => { emitter: EventEmitter<[never]>; emit: (event: string, data: unknown) => boolean; emitError: (event: string, error: Error) => boolean; }; export declare const createSubscriptionTester: <T>(subscription: AsyncIterable<T>) => { next: () => Promise<T>; collect: (count: number) => Promise<T[]>; close: () => void; };