UNPKG

autotel

Version:
38 lines (36 loc) 1.53 kB
interface DrainPipelineOptions<T = unknown> { batch?: { /** Maximum events per batch. @default 50 */ size?: number; /** Max time an event can stay buffered before flush. @default 5000 */ intervalMs?: number; }; retry?: { /** Total attempts including first try. @default 3 */ maxAttempts?: number; /** Delay strategy between attempts. @default 'exponential' */ backoff?: 'exponential' | 'linear' | 'fixed'; /** Base delay for first retry. @default 1000 */ initialDelayMs?: number; /** Max delay cap. @default 30000 */ maxDelayMs?: number; /** Add random jitter to delays. @default true */ jitter?: boolean; }; /** Max buffered events before dropping. @default 1000 */ maxBufferSize?: number; /** Overflow policy. @default 'oldest' */ dropPolicy?: 'oldest' | 'newest'; /** Called when events are dropped from overflow or exhausted retries. */ onDropped?: (events: T[], error?: Error) => void; } interface PipelineDrainFn<T> { (ctx: T): void; /** Flush all buffered events. */ flush: () => Promise<void>; /** Flush and stop scheduling future timer work. */ shutdown: () => Promise<void>; readonly pending: number; } declare function createDrainPipeline<T = unknown>(options?: DrainPipelineOptions<T>): (drain: (batch: T[]) => void | Promise<void>) => PipelineDrainFn<T>; export { type DrainPipelineOptions, type PipelineDrainFn, createDrainPipeline };