UNPKG

@firesystem/indexeddb

Version:

IndexedDB implementation of Virtual File System

63 lines (59 loc) 2.38 kB
import { BaseFileSystem, TypedEventEmitter, FileSystemEventPayloads, IFileSystemCapabilities, FileEntry, FileMetadata, FSEvent, Disposable, FileStat } from '@firesystem/core'; interface IndexedDBConfig { dbName: string; version?: number; storeName?: string; enableExternalSync?: boolean; deepChangeDetection?: boolean; } declare class IndexedDBFileSystem extends BaseFileSystem { private db; private config; private watchers; private isInitialized; readonly events: TypedEventEmitter<FileSystemEventPayloads>; private broadcastChannel; private fileSnapshots; private pollingInterval; private enableExternalSync; private deepChangeDetection; readonly capabilities: IFileSystemCapabilities; constructor(config: IndexedDBConfig); private ensureDB; initialize(): Promise<void>; private loadAllFiles; readFile(path: string): Promise<FileEntry>; writeFile(path: string, content: any, metadata?: FileMetadata): Promise<FileEntry>; deleteFile(path: string): Promise<void>; exists(path: string): Promise<boolean>; readDir(path: string): Promise<FileEntry[]>; mkdir(path: string, recursive?: boolean): Promise<FileEntry>; rmdir(path: string, recursive?: boolean): Promise<void>; rename(oldPath: string, newPath: string): Promise<FileEntry>; move(sourcePaths: string[], targetPath: string): Promise<void>; copy(sourcePath: string, targetPath: string): Promise<FileEntry>; watch(pattern: string, callback: (event: FSEvent) => void): Disposable; stat(path: string): Promise<FileStat>; glob(pattern: string): Promise<string[]>; clear(): Promise<void>; size(): Promise<number>; private calculateHash; private calculateSize; private ensureParentExists; private deleteRecursive; private matchesPattern; private notifyWatchers; private generateWatcherId; private ensureRootExists; private setupBroadcastChannel; private broadcastChange; startWatching(pollingIntervalMs?: number): Promise<void>; stopWatching(): Promise<void>; private updateFileSnapshots; private checkForExternalChanges; private performDeepContentCheck; dispose(): void; canModify(path: string): Promise<boolean>; canCreateIn(parentPath: string): Promise<boolean>; } export { type IndexedDBConfig, IndexedDBFileSystem };