@nexica/nestjs-trpc
Version:
NestJS TRPC Bridge
46 lines (45 loc) • 1.46 kB
TypeScript
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;
};