UNPKG

@mastra/core

Version:
59 lines 2.42 kB
import EventEmitter from 'node:events'; import type { IMastraLogger } from '../../logger/index.js'; import { PubSub } from '../pubsub.js'; import type { LeaseProvider, PubSubDeliveryMode } from '../pubsub.js'; import type { Event, EventCallback, SubscribeOptions } from '../types.js'; export interface EventEmitterPubSubOptions { /** * Optional logger for surfacing batched-delivery errors. Falls back to * `console.error` when not provided. */ logger?: IMastraLogger; } export declare class EventEmitterPubSub extends PubSub implements LeaseProvider { get supportedModes(): ReadonlyArray<PubSubDeliveryMode>; /** * `EventEmitterPubSub` is strictly in-process, so the `AckHandleBuffer` * queue it uses for batching shares the same lifetime as everything * else here. Nothing more durable is promised, and nothing less is * needed. */ get supportsNativeBatching(): boolean; private emitter; private groups; private groupCounters; private groupListeners; private pendingNacks; private deliveryAttempts; private fanoutWrappers; private batchBuffers; private readonly logger?; constructor(existingEmitter?: EventEmitter, options?: EventEmitterPubSubOptions); /** * Debug-hostile silent failures are the default for emitter listeners. * Surface buffer-side errors on a single channel so they're at least visible. */ private logBufferError; publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>, _options?: { localOnly?: boolean; }): Promise<void>; subscribe(topic: string, cb: EventCallback, options?: SubscribeOptions): Promise<void>; unsubscribe(topic: string, cb: EventCallback): Promise<void>; flush(): Promise<void>; /** * Clean up all listeners during graceful shutdown. */ close(): Promise<void>; private subscribeWithGroup; private deliverToGroup; private leases; acquireLease(key: string, owner: string, ttlMs: number): Promise<{ acquired: boolean; owner?: string; }>; getLeaseOwner(key: string): Promise<string | undefined>; releaseLease(key: string, owner: string): Promise<void>; renewLease(key: string, owner: string, ttlMs: number): Promise<boolean>; transferLease(key: string, fromOwner: string, toOwner: string, ttlMs: number): Promise<boolean>; } //# sourceMappingURL=index.d.ts.map