import { Snapshot } from "../dto/snapshot.js"; import type { Database, DatabaseData, DatabaseRecord } from "../types/database.js"; import type { StorageEngine } from "../types/storage.js"; /** * 데이터 지속성을 위한 저장소 상태를 관리하는 클래스입니다. */ export declare class LightStorage { /** * 현재 메모리에 로드된 데이터베이스 맵 객체 */ private database; /** * 외부 조회를 위해 캐싱한 데이터베이스 레코드 객체 */ private databaseRecord; /** * 저장소 버전 관리를 위한 Timestamp(ms) */ private updateTimestamp; /** * LightDB 저장소 그룹의 기준 키이자 메타 정보를 저장하는 키 (커스텀 가능) */ private storageKey; private storage; /** * 새로운 저장소 인스턴스를 생성합니다. * @param [storage] - 외부 커스텀 스토리지 (선택 사항) */ constructor(storage?: StorageEngine); /** * 외부에서 저장소 키를 받기 위한 메서드입니다. */ onSetStorageKey: (key: string) => void; getDatabase(): Database; /** * 현재 메모리에 로드된 전체 데이터베이스 레코드 캐시를 반환합니다. * @returns 전체 데이터베이스 레코드 객체 */ getDatabaseRecord(): DatabaseRecord; /** * WebRtc를 통해 방장과의 저장소 동기화를 위한 메서드입니다. */ syncStorage(snapshot: Snapshot): void; getSnapshot(): Snapshot; clear(): void; /** * 메모리 할당 해제를 위한 메서드입니다. */ destroy(): void; set(table: string, data: DatabaseData): void; remove(table: string): void; get(table: string): DatabaseData | undefined; setDatabase(snapshot: Snapshot): void; /** * 저장소 데이터를 불러와 반환합니다. * @returns 저장소 데이터가 담긴 {@link Snapshot} 객체 * @throws 저장소 데이터가 올바른 저장소 메타 또는 스냅샷 형태가 아닐때 발생합니다. */ getStorage(): Snapshot; /** * 저장소에 데이터를 테이블 단위로 저장합니다. * @param [snapshot] 저장소에 저장할 {@link Snapshot} 객체 * @throws 저장소의 용량이 부족할때(QuotaExceededError) 발생합니다. */ setStorage(snapshot?: Snapshot, removeTables?: string[]): void; private loadStorage; /** * 테이블 데이터를 저장할 저장소 키를 생성합니다. * @param table - 저장소 키를 생성할 테이블 키 * @returns 인코딩된 테이블 저장소 키 */ private getTableStorageKey; /** * 저장소 메타 문자열을 해석합니다. * @param data - 저장소 메타 또는 기존 스냅샷 문자열 * @returns 테이블 단위 저장소 메타이며, 기존 스냅샷 형식이면 `null`을 반환합니다. * @throws 저장소 메타 구조가 올바르지 않을 때 발생합니다. */ private parseStorageMeta; /** * 특정 테이블 데이터를 테이블 전용 저장소 키에 저장합니다. * @param table - 저장할 테이블 키 * @param data - 저장할 테이블 데이터 */ private setTableStorage; /** * 현재 데이터베이스의 테이블 목록과 업데이트 시간을 저장소 메타에 저장합니다. * @param [snapshot] - 메타 정보를 구성할 {@link Snapshot} 객체 */ private setStorageMeta; /** * 현재 메모리에 로드된 모든 테이블 저장소 키를 삭제합니다. */ private removeTableStorageItems; } //# sourceMappingURL=storage.d.ts.map