UNPKG

@message-in-the-middle/core

Version:

Framework-agnostic middleware pattern for message queue processing. Core package with all middlewares.

36 lines (35 loc) 1.28 kB
import { InboundMiddleware, MessageContext } from '../types'; export interface DeduplicationStore { has(key: string): Promise<boolean>; set(key: string, ttlSeconds?: number): Promise<void>; destroy?(): Promise<void> | void; } export declare class DeduplicateInboundMiddleware<T = any> implements InboundMiddleware<T> { private readonly store; private readonly options; constructor(store: DeduplicationStore, options?: { keyExtractor?: (context: MessageContext<T>) => string; ttlSeconds?: number; throwOnDuplicate?: boolean; }); process(context: MessageContext<T>, next: () => Promise<void>): Promise<void>; } export interface InMemoryDeduplicationStoreOptions { cleanupIntervalMs?: number; maxSize?: number; } export declare class InMemoryDeduplicationStore implements DeduplicationStore { private store; private cleanupInterval; private readonly cleanupIntervalMs; private readonly maxSize; constructor(options?: InMemoryDeduplicationStoreOptions); has(key: string): Promise<boolean>; set(key: string, ttlSeconds?: number): Promise<void>; destroy(): Promise<void>; cleanup(): number; size(): number; clear(): void; private startCleanup; private evictOldest; }