UNPKG

@firesystem/core

Version:

Virtual File System core interfaces and types

71 lines (60 loc) 2.12 kB
import type { FileEntry, FileStat, FileMetadata } from "../types/FileEntry"; import type { Disposable } from "../types/Common"; import type { FSEvent } from "../types/Events"; import type { IFileSystemCapabilities } from "./FileSystemCapabilities"; /** * Virtual File System interface * Provides a uniform API for different storage backends */ export interface IFileSystem { // File operations readFile(path: string): Promise<FileEntry>; writeFile( path: string, content: any, metadata?: FileMetadata, ): Promise<FileEntry>; deleteFile(path: string): Promise<void>; exists(path: string): Promise<boolean>; // Directory operations readDir(path: string): Promise<FileEntry[]>; mkdir(path: string, recursive?: boolean): Promise<FileEntry>; rmdir(path: string, recursive?: boolean): Promise<void>; // File system operations rename(oldPath: string, newPath: string): Promise<FileEntry>; move(sourcePaths: string[], targetPath: string): Promise<void>; copy(sourcePath: string, targetPath: string): Promise<FileEntry>; // Watch operations watch(pattern: string, callback: (event: FSEvent) => void): Disposable; // Utility operations stat(path: string): Promise<FileStat>; glob(pattern: string): Promise<string[]>; // Storage management clear(): Promise<void>; size(): Promise<number>; // Permission checking /** * Verifica se o caminho pode ser modificado (escrita/delete) * @returns true se permitido, false se readonly ou sem permissão */ canModify(path: string): Promise<boolean>; /** * Verifica se pode criar arquivos no diretório * @returns true se permitido, false se readonly ou sem permissão */ canCreateIn(parentPath: string): Promise<boolean>; // Atomic operations /** * Escreve arquivo de forma atômica (write to temp + rename) * Fallback para writeFile normal se não suportado */ writeFileAtomic?( path: string, content: any, metadata?: FileMetadata, ): Promise<FileEntry>; /** * Retorna as capacidades deste file system */ readonly capabilities?: IFileSystemCapabilities; }