@loom-io/core
Version:
A file system wrapper for Node.js and Bun
70 lines (69 loc) • 2.26 kB
TypeScript
import type { Directory } from "./core/dir.js";
import { LoomFile } from "./core/file.js";
export declare enum PLUGIN_TYPE {
FILE_CONVERTER = 0
}
export declare enum FILE_SIZE_UNIT {
BYTE = "B",
KILOBYTE = "KB",
MEGABYTE = "MB",
GIGABYTE = "GB",
TERABYTE = "TB",
PETABYTE = "PB",
EXABYTE = "EB",
ZETTABYTE = "ZB",
YOTTABYTE = "YB"
}
export interface LoomSourceAdapter {
file: (path: string) => MaybePromise<LoomFile>;
dir: (path: string) => MaybePromise<Directory>;
}
export type MaybePromise<T> = Promise<T> | T;
export interface ObjectDirentInterface {
isDirectory(): boolean;
isFile(): boolean;
name: string;
path: string;
}
export type rmdirOptions = {
recursive?: boolean;
force?: boolean;
};
export interface FileHandlerReadOptions {
offset?: number;
length?: number;
position?: number;
}
export interface ReadBuffer {
bytesRead: number;
buffer: Buffer;
}
export interface FileHandler {
read(options: FileHandlerReadOptions): MaybePromise<ReadBuffer>;
read(buffer: Buffer): MaybePromise<ReadBuffer>;
read(buffer: Buffer, options: FileHandlerReadOptions): MaybePromise<ReadBuffer>;
close(): MaybePromise<void>;
}
export interface SourceAdapter<TStat extends FileStat = FileStat> {
readFile(path: string): MaybePromise<Buffer>;
readFile(path: string, encoding: BufferEncoding): MaybePromise<string>;
readFile(path: string, encoding?: BufferEncoding): MaybePromise<Buffer | string>;
writeFile(path: string, content: string | Buffer): MaybePromise<void>;
deleteFile(path: string): MaybePromise<void>;
openFile(path: string): MaybePromise<FileHandler>;
stat(path: string): MaybePromise<TStat>;
readdir(path: string): MaybePromise<ObjectDirentInterface[]>;
mkdir(path: string): MaybePromise<void>;
rmdir(path: string, options?: rmdirOptions): MaybePromise<void>;
dirExists(path: string): MaybePromise<boolean>;
fileExists(path: string): MaybePromise<boolean>;
isCopyable(adapter: SourceAdapter): MaybePromise<boolean>;
copyFile(from: string, to: string): MaybePromise<void>;
}
export interface FileStat {
size: number;
mtime: Date;
atime?: Date;
ctime?: Date;
birthtime?: Date;
}