File size: 1,610 Bytes
68d7816 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation';
import type { TextDecodeErrors } from '#/_base/execEnv/decodeText';
export interface HostFileStat {
readonly isFile: boolean;
readonly isDirectory: boolean;
readonly isSymbolicLink?: boolean;
readonly size: number;
readonly mtimeMs?: number;
readonly ino?: number;
}
export interface HostDirEntry {
readonly name: string;
readonly isFile: boolean;
readonly isDirectory: boolean;
readonly isSymbolicLink?: boolean;
}
export interface IHostFileSystem {
readonly _serviceBrand: undefined;
readText(
path: string,
options?: { encoding?: BufferEncoding; errors?: TextDecodeErrors },
): Promise<string>;
writeText(path: string, data: string): Promise<void>;
appendText(path: string, data: string): Promise<void>;
readBytes(path: string, n?: number, offset?: number): Promise<Uint8Array>;
writeBytes(path: string, data: Uint8Array): Promise<void>;
readLines(
path: string,
options?: { encoding?: BufferEncoding; errors?: TextDecodeErrors },
): AsyncGenerator<string>;
createExclusive(path: string, data: Uint8Array): Promise<boolean>;
stat(path: string): Promise<HostFileStat>;
lstat(path: string): Promise<HostFileStat>;
readdir(path: string): Promise<readonly HostDirEntry[]>;
mkdir(path: string, options?: { readonly recursive?: boolean }): Promise<void>;
remove(path: string): Promise<void>;
realpath(path: string): Promise<string>;
}
export const IHostFileSystem: ServiceIdentifier<IHostFileSystem> =
createDecorator<IHostFileSystem>('hostFileSystem');
|