/// /// /// import { Libzip } from '@yarnpkg/libzip'; import { ReadStream, WriteStream } from 'fs'; import { WatchOptions, WatchCallback, Watcher, Dir, Stats, BigIntStats, StatSyncOptions, StatOptions } from './FakeFS'; import { FakeFS, MkdirOptions, RmdirOptions, WriteFileOptions, OpendirOptions } from './FakeFS'; import { CreateReadStreamOptions, CreateWriteStreamOptions, BasePortableFakeFS, ExtractHintOptions, WatchFileCallback, WatchFileOptions, StatWatcher } from './FakeFS'; import * as errors from './errors'; import { FSPath, PortablePath, Filename } from './path'; import * as statUtils from './statUtils'; export type ZipCompression = `mixed` | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9; export declare const DEFAULT_COMPRESSION_LEVEL: ZipCompression; export type ZipBufferOptions = { libzip: Libzip; readOnly?: boolean; stats?: Stats; level?: ZipCompression; }; export type ZipPathOptions = ZipBufferOptions & { baseFs?: FakeFS; create?: boolean; }; export declare function makeEmptyArchive(): Buffer; export declare class ZipFS extends BasePortableFakeFS { private readonly libzip; private readonly baseFs; private readonly path; private readonly stats; private readonly zip; private readonly lzSource; private readonly level; private readonly listings; private readonly entries; /** * A cache of indices mapped to file sources. * Populated by `setFileSource` calls. * Required for supporting read after write. */ private readonly fileSources; private symlinkCount; private readonly fds; private nextFd; private ready; private readOnly; constructor(p: PortablePath, opts: ZipPathOptions); /** * Create a ZipFS in memory * @param data If null; an empty zip file will be created */ constructor(data: Buffer | null, opts: ZipBufferOptions); makeLibzipError(error: number): errors.LibzipError; getExtractHint(hints: ExtractHintOptions): boolean; getAllFiles(): PortablePath[]; getRealPath(): PortablePath; getBufferAndClose(): Buffer; private prepareClose; saveAndClose(): void; discardAndClose(): void; resolve(p: PortablePath): PortablePath; openPromise(p: PortablePath, flags: string, mode?: number): Promise; openSync(p: PortablePath, flags: string, mode?: number): number; hasOpenFileHandles(): boolean; opendirPromise(p: PortablePath, opts?: OpendirOptions): Promise>; opendirSync(p: PortablePath, opts?: OpendirOptions): Dir; readPromise(fd: number, buffer: Buffer, offset?: number, length?: number, position?: number | null): Promise; readSync(fd: number, buffer: Buffer, offset?: number, length?: number, position?: number | null): number; writePromise(fd: number, buffer: Buffer, offset?: number, length?: number, position?: number): Promise; writePromise(fd: number, buffer: string, position?: number): Promise; writeSync(fd: number, buffer: Buffer, offset?: number, length?: number, position?: number): number; writeSync(fd: number, buffer: string, position?: number): number; closePromise(fd: number): Promise; closeSync(fd: number): void; createReadStream(p: PortablePath | null, { encoding }?: CreateReadStreamOptions): ReadStream; createWriteStream(p: PortablePath | null, { encoding }?: CreateWriteStreamOptions): WriteStream; realpathPromise(p: PortablePath): Promise; realpathSync(p: PortablePath): PortablePath; existsPromise(p: PortablePath): Promise; existsSync(p: PortablePath): boolean; accessPromise(p: PortablePath, mode?: number): Promise; accessSync(p: PortablePath, mode?: number): void; statPromise(p: PortablePath): Promise; statPromise(p: PortablePath, opts: (StatOptions & { bigint?: false | undefined; }) | undefined): Promise; statPromise(p: PortablePath, opts: StatOptions & { bigint: true; }): Promise; statPromise(p: PortablePath, opts?: StatOptions): Promise; statSync(p: PortablePath): Stats; statSync(p: PortablePath, opts?: StatSyncOptions & { bigint?: false | undefined; throwIfNoEntry: false; }): Stats | undefined; statSync(p: PortablePath, opts: StatSyncOptions & { bigint: true; throwIfNoEntry: false; }): BigIntStats | undefined; statSync(p: PortablePath, opts?: StatSyncOptions & { bigint?: false | undefined; }): Stats; statSync(p: PortablePath, opts: StatSyncOptions & { bigint: true; }): BigIntStats; statSync(p: PortablePath, opts: StatSyncOptions & { bigint: boolean; throwIfNoEntry?: false | undefined; }): Stats | BigIntStats; statSync(p: PortablePath, opts?: StatSyncOptions): Stats | BigIntStats | undefined; fstatPromise(fd: number): Promise; fstatPromise(fd: number, opts: { bigint: true; }): Promise; fstatPromise(fd: number, opts?: { bigint: boolean; }): Promise; fstatSync(fd: number): Stats; fstatSync(fd: number, opts: { bigint: true; }): BigIntStats; fstatSync(fd: number, opts?: { bigint: boolean; }): BigIntStats | Stats; lstatPromise(p: PortablePath): Promise; lstatPromise(p: PortablePath, opts: (StatOptions & { bigint?: false | undefined; }) | undefined): Promise; lstatPromise(p: PortablePath, opts: StatOptions & { bigint: true; }): Promise; lstatPromise(p: PortablePath, opts?: StatOptions): Promise; lstatSync(p: PortablePath): Stats; lstatSync(p: PortablePath, opts?: StatSyncOptions & { bigint?: false | undefined; throwIfNoEntry: false; }): Stats | undefined; lstatSync(p: PortablePath, opts: StatSyncOptions & { bigint: true; throwIfNoEntry: false; }): BigIntStats | undefined; lstatSync(p: PortablePath, opts?: StatSyncOptions & { bigint?: false | undefined; }): Stats; lstatSync(p: PortablePath, opts: StatSyncOptions & { bigint: true; }): BigIntStats; lstatSync(p: PortablePath, opts: StatSyncOptions & { bigint: boolean; throwIfNoEntry?: false | undefined; }): Stats | BigIntStats; lstatSync(p: PortablePath, opts?: StatSyncOptions): Stats | BigIntStats | undefined; private statImpl; private getUnixMode; private registerListing; private registerEntry; private unregisterListing; private unregisterEntry; private deleteEntry; private resolveFilename; private allocateBuffer; private allocateUnattachedSource; private allocateSource; private setFileSource; private isSymbolicLink; private getFileSource; fchmodPromise(fd: number, mask: number): Promise; fchmodSync(fd: number, mask: number): void; chmodPromise(p: PortablePath, mask: number): Promise; chmodSync(p: PortablePath, mask: number): void; fchownPromise(fd: number, uid: number, gid: number): Promise; fchownSync(fd: number, uid: number, gid: number): void; chownPromise(p: PortablePath, uid: number, gid: number): Promise; chownSync(p: PortablePath, uid: number, gid: number): void; renamePromise(oldP: PortablePath, newP: PortablePath): Promise; renameSync(oldP: PortablePath, newP: PortablePath): never; copyFilePromise(sourceP: PortablePath, destP: PortablePath, flags?: number): Promise; copyFileSync(sourceP: PortablePath, destP: PortablePath, flags?: number): void; private prepareCopyFile; appendFilePromise(p: FSPath, content: string | Buffer | ArrayBuffer | DataView, opts?: WriteFileOptions): Promise; appendFileSync(p: FSPath, content: string | Buffer | ArrayBuffer | DataView, opts?: WriteFileOptions): void; private fdToPath; writeFilePromise(p: FSPath, content: string | Buffer | ArrayBuffer | DataView, opts?: WriteFileOptions): Promise; writeFileSync(p: FSPath, content: string | Buffer | ArrayBuffer | DataView, opts?: WriteFileOptions): void; private prepareWriteFile; unlinkPromise(p: PortablePath): Promise; unlinkSync(p: PortablePath): void; utimesPromise(p: PortablePath, atime: Date | string | number, mtime: Date | string | number): Promise; utimesSync(p: PortablePath, atime: Date | string | number, mtime: Date | string | number): void; lutimesPromise(p: PortablePath, atime: Date | string | number, mtime: Date | string | number): Promise; lutimesSync(p: PortablePath, atime: Date | string | number, mtime: Date | string | number): void; private utimesImpl; mkdirPromise(p: PortablePath, opts?: MkdirOptions): Promise; mkdirSync(p: PortablePath, { mode, recursive }?: MkdirOptions): string | undefined; rmdirPromise(p: PortablePath, opts?: RmdirOptions): Promise; rmdirSync(p: PortablePath, { recursive }?: RmdirOptions): void; private hydrateDirectory; linkPromise(existingP: PortablePath, newP: PortablePath): Promise; linkSync(existingP: PortablePath, newP: PortablePath): void; symlinkPromise(target: PortablePath, p: PortablePath): Promise; symlinkSync(target: PortablePath, p: PortablePath): void; readFilePromise(p: FSPath, encoding: 'utf8'): Promise; readFilePromise(p: FSPath, encoding?: string): Promise; readFileSync(p: FSPath, encoding: 'utf8'): string; readFileSync(p: FSPath, encoding?: string): Buffer; private readFileBuffer; readdirPromise(p: PortablePath): Promise>; readdirPromise(p: PortablePath, opts: { withFileTypes: false; } | null): Promise>; readdirPromise(p: PortablePath, opts: { withFileTypes: true; }): Promise>; readdirPromise(p: PortablePath, opts: { withFileTypes: boolean; }): Promise | Array>; readdirSync(p: PortablePath): Array; readdirSync(p: PortablePath, opts: { withFileTypes: false; } | null): Array; readdirSync(p: PortablePath, opts: { withFileTypes: true; }): Array; readdirSync(p: PortablePath, opts: { withFileTypes: boolean; }): Array | Array; readlinkPromise(p: PortablePath): Promise; readlinkSync(p: PortablePath): PortablePath; private prepareReadlink; truncatePromise(p: PortablePath, len?: number): Promise; truncateSync(p: PortablePath, len?: number): void; ftruncatePromise(fd: number, len?: number): Promise; ftruncateSync(fd: number, len?: number): void; watch(p: PortablePath, cb?: WatchCallback): Watcher; watch(p: PortablePath, opts: WatchOptions, cb?: WatchCallback): Watcher; watchFile(p: PortablePath, cb: WatchFileCallback): StatWatcher; watchFile(p: PortablePath, opts: WatchFileOptions, cb: WatchFileCallback): StatWatcher; unwatchFile(p: PortablePath, cb?: WatchFileCallback): void; }