UNPKG

hamok

Version:

Lightweight Distributed Object Storage on RAFT consensus algorithm

66 lines 2.78 kB
import { EventEmitter } from 'events'; import { HamokConnection } from './HamokConnection'; import { HamokRecordSnapshot } from '../HamokSnapshot'; import { HamokCodec } from '../common/HamokCodec'; export type HamokRecordObject = Record<string, unknown>; type InsertRemovePayload<T, K extends keyof T> = { key: K; value: T[K]; }; type UpdatePayload<T, K extends keyof T> = { key: K; oldValue: T[K]; newValue: T[K]; }; export type HamokRecordEventMap<T> = { 'insert': [InsertRemovePayload<T, keyof T>]; 'update': [UpdatePayload<T, keyof T>]; 'remove': [InsertRemovePayload<T, keyof T>]; 'clear': []; 'close': []; }; export declare interface HamokRecord<T extends HamokRecordObject> { on<U extends keyof HamokRecordEventMap<T>>(event: U, listener: (...args: HamokRecordEventMap<T>[U]) => void): this; off<U extends keyof HamokRecordEventMap<T>>(event: U, listener: (...args: HamokRecordEventMap<T>[U]) => void): this; once<U extends keyof HamokRecordEventMap<T>>(event: U, listener: (...args: HamokRecordEventMap<T>[U]) => void): this; emit<U extends keyof HamokRecordEventMap<T>>(event: U, ...args: HamokRecordEventMap<T>[U]): boolean; } /** * Replicated storage replicates all entries on all distributed storages */ export declare class HamokRecord<T extends HamokRecordObject> extends EventEmitter { readonly connection: HamokConnection<string, string>; private _payloadsCodec?; private _closed; equalValues: <K extends keyof T>(a: T[K], b: T[K]) => boolean; private _object; private _initializing?; constructor(connection: HamokConnection<string, string>, setup?: { equalValues?: <K extends keyof T>(a: T[K], b: T[K]) => boolean; payloadsCodec?: Map<keyof T, HamokCodec<T[keyof T], string>>; initalObject?: Partial<T>; }); get id(): string; get ready(): Promise<this>; get closed(): boolean; get instance(): T; close(): void; clear(): Promise<void>; get<K extends keyof T>(key: K): T[K] | undefined; set<K extends keyof T>(key: K, value: T[K]): Promise<T[K] | undefined>; insert<K extends keyof T>(key: K, value: T[K]): Promise<T[K] | undefined>; insertInstance(instance: Partial<T>): Promise<Partial<T> | undefined>; updateIf<K extends keyof T>(key: K, value: T[K], oldValue: T[K]): Promise<boolean>; updateInstanceIf(newValue: Partial<T>, oldValue: Partial<T>): Promise<boolean>; delete<K extends keyof T>(key: K): Promise<boolean>; /** * Exports the storage data */ export(): HamokRecordSnapshot; import(data: HamokRecordSnapshot, eventing?: boolean): void; private _import; private _encodeValue; private _decodeValue; } export {}; //# sourceMappingURL=HamokRecord.d.ts.map