///
declare namespace StreamZip {
interface StreamZipOptions {
/**
* File to read
* @default undefined
*/
file?: string;
/**
* Alternatively, you can pass fd here
* @default undefined
*/
fd?: number;
/**
* You will be able to work with entries inside zip archive,
* otherwise the only way to access them is entry event
* @default true
*/
storeEntries?: boolean;
/**
* By default, entry name is checked for malicious characters, like ../ or c:\123,
* pass this flag to disable validation error
* @default false
*/
skipEntryNameValidation?: boolean;
/**
* Filesystem read chunk size
* @default automatic based on file size
*/
chunkSize?: number;
}
interface ZipEntry {
/**
* file name
*/
name: string;
/**
* true if it's a directory entry
*/
isDirectory: boolean;
/**
* true if it's a file entry, see also isDirectory
*/
isFile: boolean;
/**
* file comment
*/
comment: string;
/**
* if the file is encrypted
*/
encrypted: boolean;
/**
* version made by
*/
verMade: number;
/**
* version needed to extract
*/
version: number;
/**
* encrypt, decrypt flags
*/
flags: number;
/**
* compression method
*/
method: number;
/**
* modification time
*/
time: number;
/**
* uncompressed file crc-32 value
*/
crc: number;
/**
* compressed size
*/
compressedSize: number;
/**
* uncompressed size
*/
size: number;
/**
* volume number start
*/
diskStart: number;
/**
* internal file attributes
*/
inattr: number;
/**
* external file attributes
*/
attr: number;
/**
* LOC header offset
*/
offset: number;
}
class StreamZipAsync {
constructor(config: StreamZipOptions);
entriesCount: Promise;
comment: Promise;
entry(name: string): Promise;
entries(): Promise<{ [name: string]: ZipEntry }>;
entryData(entry: string | ZipEntry): Promise;
stream(entry: string | ZipEntry): Promise;
extract(entry: string | ZipEntry | null, outPath: string): Promise;
on(event: 'entry', handler: (entry: ZipEntry) => void): void;
on(event: 'extract', handler: (entry: ZipEntry, outPath: string) => void): void;
close(): Promise;
}
}
type StreamZipOptions = StreamZip.StreamZipOptions;
type ZipEntry = StreamZip.ZipEntry;
declare class StreamZip {
constructor(config: StreamZipOptions);
/**
* number of entries in the archive
*/
entriesCount: number;
/**
* archive comment
*/
comment: string;
on(event: 'error', handler: (error: any) => void): void;
on(event: 'entry', handler: (entry: ZipEntry) => void): void;
on(event: 'ready', handler: () => void): void;
on(event: 'extract', handler: (entry: ZipEntry, outPath: string) => void): void;
entry(name: string): ZipEntry | undefined;
entries(): { [name: string]: ZipEntry };
stream(
entry: string | ZipEntry,
callback: (err: any | null, stream?: NodeJS.ReadableStream) => void
): void;
entryDataSync(entry: string | ZipEntry): Buffer;
openEntry(
entry: string | ZipEntry,
callback: (err: any | null, entry?: ZipEntry) => void,
sync: boolean
): void;
extract(
entry: string | ZipEntry | null,
outPath: string,
callback: (err?: any, res?: number) => void
): void;
close(callback?: (err?: any) => void): void;
static async: typeof StreamZip.StreamZipAsync;
}
export = StreamZip;