UNPKG

tero

Version:

tero is a JSON document Manager, with ACID complaint and backup recovery mechanism.

63 lines (62 loc) 2.06 kB
export interface LogEntry { lsn: number; transactionId: string; operation: 'BEGIN' | 'WRITE' | 'DELETE' | 'COMMIT' | 'ROLLBACK' | 'CHECKPOINT'; key?: string; beforeImage?: any; afterImage?: any; timestamp: number; checksum: string; } export declare class WriteAheadLog { private logPath; private currentLSN; private logBuffer; private readonly BUFFER_SIZE; private readonly LOG_FILE_SIZE_LIMIT; constructor(dbPath: string); private initializeWAL; private recoverFromLog; private calculateChecksum; private verifyChecksum; writeLog(entry: Omit<LogEntry, 'lsn' | 'checksum' | 'timestamp'>): number; private flushBuffer; private checkLogRotation; private rotateLog; getLogEntries(fromLSN?: number): LogEntry[]; forceFlush(): void; getCurrentLSN(): number; } export declare class LockManager { private locks; private readonly DEADLOCK_TIMEOUT; acquireLock(key: string, transactionId: string, lockType: 'shared' | 'exclusive'): Promise<void>; private canGrantLock; releaseLock(key: string, transactionId: string): void; private processWaitQueue; private removeLockRequest; releaseAllLocks(transactionId: string): void; detectDeadlock(): string[]; } export declare class ACIDStorageEngine { private wal; private lockManager; private dbPath; private activeTransactions; constructor(dbPath: string); private initializeStorage; private performCrashRecovery; private redoOperation; private redoDelete; private undoOperation; beginTransaction(): string; write(transactionId: string, key: string, data: any): Promise<void>; read(transactionId: string, key: string): Promise<any>; delete(transactionId: string, key: string): Promise<void>; commitTransaction(transactionId: string): Promise<void>; rollbackTransaction(transactionId: string): Promise<void>; private deepMerge; getActiveTransactions(): string[]; forceCheckpoint(): void; destroy(): void; }