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

50 lines (49 loc) 1.54 kB
import type { Event, EventbaseConfig } from './types.js'; type QueryOptions = { limit?: number; offset?: number; sort?: { [key: string]: 1 | -1; }; project?: { [key: string]: 1; }; }; export interface MetaData { dateCreated: string; dateModified: string; changes: number; } type SubscriptionCallback<T extends object> = (key: string, data: T, meta: MetaData, event: Event) => void; type SubscriptionQuery = { [key: string]: any; }; export declare function createEventbase(config: EventbaseConfig): Promise<{ closed: boolean; get: <T extends object>(id: string) => Promise<{ meta: MetaData; data: T; } | null>; put: <T extends object>(id: string, data: T) => Promise<{ meta: MetaData; data: T; }>; insert: <T extends object>(data: T) => Promise<{ id: string; meta: MetaData; data: T; }>; delete: (id: string) => Promise<{ purged: number; }>; keys: (pattern?: string) => Promise<string[]>; subscribe: <T extends object>(query: SubscriptionQuery, callback: SubscriptionCallback<T>) => () => void; query: <T extends object>(queryObject: object, options?: QueryOptions) => Promise<T[]>; count: (queryObject: object) => Promise<number>; getLastAccessed: () => number; getActiveSubscriptions: () => number; deleteStream: () => Promise<void>; close: () => Promise<void>; }>; export { createEventbaseManager } from './manager.js'; export default createEventbase;