import { Link, Superblock } from '../core'; import Stats from './Stats'; import Dirent from './Dirent'; import StatFs from './StatFs'; import { TSetTimeout } from '../setTimeoutUnref'; import { Writable } from 'stream'; import { constants } from '../constants'; import { EventEmitter } from 'events'; import { TDataOut } from '../encoding'; import * as misc from './types/misc'; import * as opts from './types/options'; import { FsCallbackApi, WritevCallback } from './types/FsCallbackApi'; import { ToTreeOptions } from '../print'; import type { PathLike, symlink } from './types/misc'; import type { FsPromisesApi, FsSynchronousApi } from './types'; import { Dir } from './Dir'; import { DirectoryJSON, NestedDirectoryJSON } from '../core/json'; import { TFileId } from '../core/types'; export interface IError extends Error { code?: string; } export type TData = TDataOut | ArrayBufferView | DataView; export type TFlags = string | number; export type TMode = string | number; export type TTime = number | string | Date; export type TFlagsCopy = typeof constants.COPYFILE_EXCL | typeof constants.COPYFILE_FICLONE | typeof constants.COPYFILE_FICLONE_FORCE; export interface IAppendFileOptions extends opts.IFileOptions { } export interface IWatchFileOptions { persistent?: boolean; interval?: number; } export interface IWatchOptions extends opts.IOptions { persistent?: boolean; recursive?: boolean; } export declare function pathToSteps(path: PathLike): string[]; export declare function dataToStr(data: TData, encoding?: string): string; export declare function toUnixTimestamp(time: any): any; /** * `Volume` represents a file system. */ export declare class Volume implements FsCallbackApi, FsSynchronousApi { readonly _core: Superblock; static readonly fromJSON: (json: DirectoryJSON, cwd?: string) => Volume; static readonly fromNestedJSON: (json: NestedDirectoryJSON, cwd?: string) => Volume; StatWatcher: new () => StatWatcher; ReadStream: new (...args: any[]) => misc.IReadStream; WriteStream: new (...args: any[]) => IWriteStream; FSWatcher: new () => FSWatcher; realpath: { (path: PathLike, callback: misc.TCallback): void; (path: PathLike, options: opts.IRealpathOptions | string, callback: misc.TCallback): void; native: { (path: PathLike, callback: misc.TCallback): void; (path: PathLike, options: opts.IRealpathOptions | string, callback: misc.TCallback): void; }; }; realpathSync: { (path: PathLike, options?: opts.IRealpathOptions | string): TDataOut; native: (path: PathLike, options?: opts.IRealpathOptions | string) => TDataOut; }; private promisesApi; get promises(): FsPromisesApi; constructor(_core?: Superblock); private wrapAsync; toTree(opts?: ToTreeOptions): string; reset(): void; toJSON(paths?: PathLike | PathLike[], json?: {}, isRelative?: boolean, asBuffer?: boolean): DirectoryJSON; fromJSON(json: DirectoryJSON, cwd?: string): void; fromNestedJSON(json: NestedDirectoryJSON, cwd?: string): void; mountSync(mountpoint: string, json: DirectoryJSON): void; openSync: (path: PathLike, flags: TFlags, mode?: TMode) => number; open: { (path: PathLike, flags: TFlags, /* ... */ callback: misc.TCallback): void; (path: PathLike, flags: TFlags, mode: TMode, callback: misc.TCallback): void; }; closeSync: (fd: number) => void; close: (fd: number, callback: misc.TCallback) => void; readSync: (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset: number, length: number, position: number | null) => number; read: (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset: number, length: number, position: number | null, callback: (err?: Error | null, bytesRead?: number, buffer?: Buffer | ArrayBufferView | DataView) => void) => void; readv: { (fd: number, buffers: ArrayBufferView[], callback: misc.TCallback2): void; (fd: number, buffers: ArrayBufferView[], position: number | null, callback: misc.TCallback2): void; }; readvSync: (fd: number, buffers: ArrayBufferView[], position?: number | null) => number; private readonly _readfile; readFileSync: (file: TFileId, options?: opts.IReadFileOptions | string) => TDataOut; readFile: { (id: TFileId, callback: misc.TCallback): any; (id: TFileId, options: opts.IReadFileOptions | string, callback: misc.TCallback): any; }; private _write; writeSync: { (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset?: number, length?: number, position?: number | null): number; (fd: number, str: string, position?: number, encoding?: BufferEncoding): number; }; write: { (fd: number, buffer: Buffer | ArrayBufferView | DataView, callback: (...args: any[]) => void): any; (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset: number, callback: (...args: any[]) => void): any; (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset: number, length: number, callback: (...args: any[]) => void): any; (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset: number, length: number, position: number, callback: (...args: any[]) => void): any; (fd: number, str: string, callback: (...args: any[]) => void): any; (fd: number, str: string, position: number, callback: (...args: any[]) => void): any; (fd: number, str: string, position: number, encoding: BufferEncoding, callback: (...args: any[]) => void): any; }; private writevBase; writev: { (fd: number, buffers: ArrayBufferView[], callback: WritevCallback): void; (fd: number, buffers: ArrayBufferView[], position: number | null, callback: WritevCallback): void; }; writevSync: (fd: number, buffers: ArrayBufferView[], position?: number | null) => number; writeFileSync: (id: TFileId, data: TData, options?: opts.IWriteFileOptions) => void; writeFile: { (id: TFileId, data: TData, callback: misc.TCallback): void; (id: TFileId, data: TData, options: opts.IWriteFileOptions | string, callback: misc.TCallback): void; }; private _copyFile; copyFileSync: (src: PathLike, dest: PathLike, flags?: TFlagsCopy) => void; copyFile: { (src: PathLike, dest: PathLike, callback: misc.TCallback): any; (src: PathLike, dest: PathLike, flags: TFlagsCopy, callback: misc.TCallback): any; }; private readonly _cp; private isSrcSubdir; private cpFileSync; private cpDirSync; private cpSymlinkSync; linkSync: (existingPath: PathLike, newPath: PathLike) => void; link: (existingPath: PathLike, newPath: PathLike, callback: misc.TCallback) => void; unlinkSync: (path: PathLike) => void; unlink: (path: PathLike, callback: misc.TCallback) => void; /** * `type` argument works only on Windows. * @param target * @param path * @param type */ symlinkSync: (target: PathLike, path: PathLike, type?: symlink.Type) => void; symlink: { (target: PathLike, path: PathLike, callback: misc.TCallback): any; (target: PathLike, path: PathLike, type: symlink.Type, callback: misc.TCallback): any; }; private readonly _lstat; lstatSync: { (path: PathLike): Stats; (path: PathLike, options: { throwIfNoEntry?: true | undefined; }): Stats; (path: PathLike, options: { bigint: false; throwIfNoEntry?: true | undefined; }): Stats; (path: PathLike, options: { bigint: true; throwIfNoEntry?: true | undefined; }): Stats; (path: PathLike, options: { throwIfNoEntry: false; }): Stats | undefined; (path: PathLike, options: { bigint: false; throwIfNoEntry: false; }): Stats | undefined; (path: PathLike, options: { bigint: true; throwIfNoEntry: false; }): Stats | undefined; }; lstat(path: PathLike, callback: misc.TCallback): void; lstat(path: PathLike, options: opts.IStatOptions, callback: misc.TCallback): void; private _stat; statSync(path: PathLike): Stats; statSync(path: PathLike, options: { throwIfNoEntry?: true; }): Stats; statSync(path: PathLike, options: { throwIfNoEntry: false; }): Stats | undefined; statSync(path: PathLike, options: { bigint: false; throwIfNoEntry?: true; }): Stats; statSync(path: PathLike, options: { bigint: true; throwIfNoEntry?: true; }): Stats; statSync(path: PathLike, options: { bigint: false; throwIfNoEntry: false; }): Stats | undefined; statSync(path: PathLike, options: { bigint: true; throwIfNoEntry: false; }): Stats | undefined; stat(path: PathLike, callback: misc.TCallback): void; stat(path: PathLike, options: opts.IStatOptions, callback: misc.TCallback): void; private fstatBase; fstatSync(fd: number): Stats; fstatSync(fd: number, options: { bigint: false; }): Stats; fstatSync(fd: number, options: { bigint: true; }): Stats; fstat(fd: number, callback: misc.TCallback): void; fstat(fd: number, options: opts.IFStatOptions, callback: misc.TCallback): void; renameSync: (oldPath: PathLike, newPath: PathLike) => void; rename: (oldPath: PathLike, newPath: PathLike, callback: misc.TCallback) => void; private _exists; existsSync: (path: PathLike) => boolean; exists: (path: PathLike, callback: (exists: boolean) => void) => void; private _access; accessSync: (path: PathLike, mode?: number) => void; access: { (path: PathLike, callback: misc.TCallback): any; (path: PathLike, mode: number, callback: misc.TCallback): any; }; appendFileSync: (id: TFileId, data: TData, options?: IAppendFileOptions | string) => void; appendFile: { (id: TFileId, data: TData, callback: misc.TCallback): any; (id: TFileId, data: TData, options: IAppendFileOptions | string, callback: misc.TCallback): any; }; private readonly _readdir; readdirSync: (path: PathLike, options?: opts.IReaddirOptions | string) => TDataOut[] | Dirent[]; readdir: { (path: PathLike, callback: misc.TCallback): any; (path: PathLike, options: opts.IReaddirOptions | string, callback: misc.TCallback): any; }; private readonly _readlink; readlinkSync: (path: PathLike, options?: opts.IOptions) => TDataOut; readlink: { (path: PathLike, callback: misc.TCallback): any; (path: PathLike, options: opts.IOptions, callback: misc.TCallback): any; }; private readonly _fsync; fsyncSync: (fd: number) => void; fsync: (fd: number, callback: misc.TCallback) => void; private readonly _fdatasync; fdatasyncSync: (fd: number) => void; fdatasync: (fd: number, callback: misc.TCallback) => void; private readonly _ftruncate; ftruncateSync: (fd: number, len?: number) => void; ftruncate: { (fd: number, callback: misc.TCallback): any; (fd: number, len: number, callback: misc.TCallback): any; }; private readonly _truncate; /** * `id` should be a file descriptor or a path. `id` as file descriptor will * not be supported soon. */ truncateSync: (id: TFileId, len?: number) => void; truncate: { (id: TFileId, callback: misc.TCallback): any; (id: TFileId, len: number, callback: misc.TCallback): any; }; private readonly _futimes; futimesSync: (fd: number, atime: TTime, mtime: TTime) => void; futimes: (fd: number, atime: TTime, mtime: TTime, callback: misc.TCallback) => void; private readonly _utimes; utimesSync: (path: PathLike, atime: TTime, mtime: TTime) => void; utimes: (path: PathLike, atime: TTime, mtime: TTime, callback: misc.TCallback) => void; lutimesSync: (path: PathLike, atime: TTime, mtime: TTime) => void; lutimes: (path: PathLike, atime: TTime, mtime: TTime, callback: misc.TCallback) => void; mkdirSync: { (path: PathLike, options: opts.IMkdirOptions & { recursive: true; }): string | undefined; (path: PathLike, options?: TMode | (opts.IMkdirOptions & { recursive?: false; })): void; (path: PathLike, options?: TMode | opts.IMkdirOptions): string | undefined; }; mkdir: { (path: PathLike, callback: misc.TCallback): any; (path: PathLike, mode: TMode | (opts.IMkdirOptions & { recursive?: false; }), callback: misc.TCallback): any; (path: PathLike, mode: opts.IMkdirOptions & { recursive: true; }, callback: misc.TCallback): any; (path: PathLike, mode: TMode | opts.IMkdirOptions, callback: misc.TCallback): any; }; private readonly _mkdtemp; mkdtempSync: (prefix: string, options?: opts.IOptions) => TDataOut; mkdtemp: { (prefix: string, callback: misc.TCallback): any; (prefix: string, options: opts.IOptions, callback: misc.TCallback): any; }; rmdirSync: (path: PathLike, options?: opts.IRmdirOptions) => void; rmdir: { (path: PathLike, callback: misc.TCallback): any; (path: PathLike, options: opts.IRmdirOptions, callback: misc.TCallback): any; }; rmSync: (path: PathLike, options?: opts.IRmOptions) => void; rm: { (path: PathLike, callback: misc.TCallback): void; (path: PathLike, options: opts.IRmOptions, callback: misc.TCallback): void; }; private readonly _fchmod; fchmodSync: (fd: number, mode: TMode) => void; fchmod: (fd: number, mode: TMode, callback: misc.TCallback) => void; private readonly _chmod; chmodSync: (path: PathLike, mode: TMode) => void; chmod: (path: PathLike, mode: TMode, callback: misc.TCallback) => void; private readonly _lchmod; lchmodSync: (path: PathLike, mode: TMode) => void; lchmod: (path: PathLike, mode: TMode, callback: misc.TCallback) => void; private readonly _fchown; fchownSync: (fd: number, uid: number, gid: number) => void; fchown: (fd: number, uid: number, gid: number, callback: misc.TCallback) => void; private readonly _chown; chownSync: (path: PathLike, uid: number, gid: number) => void; chown: (path: PathLike, uid: number, gid: number, callback: misc.TCallback) => void; private readonly _lchown; lchownSync: (path: PathLike, uid: number, gid: number) => void; lchown: (path: PathLike, uid: number, gid: number, callback: misc.TCallback) => void; private statWatchers; watchFile(path: PathLike, listener: (curr: Stats, prev: Stats) => void): StatWatcher; watchFile(path: PathLike, options: IWatchFileOptions, listener: (curr: Stats, prev: Stats) => void): StatWatcher; unwatchFile(path: PathLike, listener?: (curr: Stats, prev: Stats) => void): void; createReadStream(path: misc.PathLike, options?: opts.IReadStreamOptions | string): misc.IReadStream; createWriteStream(path: PathLike, options?: opts.IWriteStreamOptions | string): IWriteStream; watch(path: PathLike, options?: IWatchOptions | string, listener?: (eventType: string, filename: string) => void): FSWatcher; cpSync: (src: string | URL, dest: string | URL, options?: opts.ICpOptions) => void; cp: { (src: string | URL, dest: string | URL, callback: misc.TCallback): any; (src: string | URL, dest: string | URL, options: opts.ICpOptions, callback: misc.TCallback): any; }; private _statfs; statfsSync(path: PathLike): StatFs; statfsSync(path: PathLike, options: { bigint: false; }): StatFs; statfsSync(path: PathLike, options: { bigint: true; }): StatFs; statfs(path: PathLike, callback: misc.TCallback): void; statfs(path: PathLike, options: opts.IStafsOptions, callback: misc.TCallback): void; openAsBlob: (path: PathLike, options?: opts.IOpenAsBlobOptions) => Promise; glob: FsCallbackApi['glob']; globSync: FsSynchronousApi['globSync']; private readonly _globSync; private readonly _opendir; opendirSync: (path: PathLike, options?: opts.IOpendirOptions | string) => Dir; opendir: { (path: PathLike, callback: misc.TCallback): any; (path: PathLike, options: opts.IOpendirOptions | string, callback: misc.TCallback): any; }; } export declare class StatWatcher extends EventEmitter { vol: Volume; filename: string; interval: number; timeoutRef?: any; setTimeout: TSetTimeout; prev: Stats; constructor(vol: Volume); private loop; private hasChanged; private onInterval; start(path: string, persistent?: boolean, interval?: number): void; stop(): void; } export interface IWriteStream extends Writable { bytesWritten: number; path: string; pending: boolean; new (path: PathLike, options: opts.IWriteStreamOptions): any; open(): any; close(): any; } export declare class FSWatcher extends EventEmitter { _vol: Volume; _filename: string; _steps: string[]; _filenameEncoded: TDataOut; _recursive: boolean; _encoding: BufferEncoding; _link: Link; _timer: any; private _listenerRemovers; constructor(vol: Volume); private _getName; private _onParentChild; private _emit; private _persist; start(path: PathLike, persistent?: boolean, recursive?: boolean, encoding?: BufferEncoding): void; close(): void; }