UNPKG

@markwylde/eventbase

Version:

A distributed, event-sourced, key-value database built on top of **NATS JetStream**. Eventbase provides a simple yet powerful API for storing, retrieving, and subscribing to data changes, with automatic state synchronization across distributed instances a

65 lines (64 loc) 2.3 kB
import { EventEmitter } from 'events'; import type { EventbaseConfig } from './types.js'; export type EventbaseManagerConfig = { dbPath?: string; getStatsStreamName?: (streamName: string) => string; nats: EventbaseConfig['nats']; keepAliveSeconds?: number; onMessage?: EventbaseConfig['onMessage']; cleanupIntervalMs?: number; }; export declare class EventbaseManager extends EventEmitter { private config; private instances; private dbPath?; private nats; private keepAliveSeconds; private onMessage?; private cleanupIntervalMs; private cleanupInterval; private getStatsStreamName?; constructor(config: EventbaseManagerConfig); private startCleanupInterval; private stopCleanupInterval; getStream(streamName: string): Promise<{ closed: boolean; get: <T extends object>(id: string) => Promise<{ meta: import("./index.js").MetaData; data: T; } | null>; put: <T extends object>(id: string, data: T) => Promise<{ meta: import("./index.js").MetaData; data: T; }>; insert: <T extends object>(data: T) => Promise<{ id: string; meta: import("./index.js").MetaData; data: T; }>; delete: (id: string) => Promise<{ purged: number; }>; keys: (pattern?: string) => Promise<string[]>; subscribe: <T extends object>(query: { [key: string]: any; }, callback: (key: string, data: T, meta: import("./index.js").MetaData, event: import("./types.js").Event) => void) => () => void; query: <T extends object>(queryObject: object, options?: { limit?: number; offset?: number; sort?: { [key: string]: 1 | -1; }; project?: { [key: string]: 1; }; }) => Promise<T[]>; count: (queryObject: object) => Promise<number>; getLastAccessed: () => number; getActiveSubscriptions: () => number; deleteStream: () => Promise<void>; close: () => Promise<void>; }>; closeAll(): Promise<void>; } export declare function createEventbaseManager(config: EventbaseManagerConfig): EventbaseManager;