///
import { ClientRequest, RequestOptions } from "http";
import { Duplex, PassThrough, Readable, Stream, Transform } from "stream";
export interface PullStream extends Duplex {
stream(eof: number | string, includeEof: boolean): PassThrough;
pull(eof: number | string, includeEof: boolean): Promise;
}
export interface Entry extends PassThrough {
autodrain(): Transform & {
promise(): Promise;
};
buffer(): Promise;
path: string;
props: {
path: string;
};
type: string;
vars: {
signature?: number | undefined;
versionsNeededToExtract: number;
flags: number;
compressionMethod: number;
lastModifiedTime: number;
crc32: number;
compressedSize: number;
fileNameLength: number;
extraFieldLength: number;
};
extra: {
signature: number;
partsize: number;
uncompressedSize: number;
compressedSize: number;
offset: number;
disknum: number;
};
}
export function unzip(
source: {
stream: Readable;
size: () => Promise;
},
offset: number,
_password: string,
): Entry;
export namespace Open {
function buffer(data: Buffer): Promise;
function file(filename: string): Promise;
function url(
request: ClientRequest,
opt: string | RequestOptions,
): Promise;
function s3(client: any, params: any): Promise;
}
export function BufferStream(entry: Entry): Promise;
export interface CentralDirectory {
signature: number;
diskNumber: number;
diskStart: number;
numberOfRecordsOnDisk: number;
numberOfRecords: number;
sizeOfCentralDirectory: number;
offsetToStartOfCentralDirectory: number;
commentLength: number;
files: File[];
extract: (opts: ParseOptions) => Promise;
}
export interface File {
signature: number;
versionMadeBy: number;
versionsNeededToExtract: number;
flags: number;
compressionMethod: number;
lastModifiedTime: number;
lastModifiedDate: number;
lastModifiedDateTime: Date;
crc32: number;
compressedSize: number;
uncompressedSize: number;
fileNameLength: number;
extraFieldLength: number;
fileCommentLength: number;
diskNumber: number;
internalFileAttributes: number;
externalFileAttributes: number;
offsetToLocalFileHeader: number;
pathBuffer: Buffer;
path: string;
isUnicode: number;
extra: any;
type: "Directory" | "File";
comment: string;
stream: (password?: string) => Entry;
buffer: (password?: string) => Promise;
}
export interface ParseOptions {
verbose?: boolean | undefined;
path?: string | undefined;
concurrency?: number | undefined;
forceStream?: boolean | undefined;
}
export type ParseStream = PullStream & {
promise(): Promise;
};
export function Parse(opts?: ParseOptions): ParseStream;
export function ParseOne(match?: RegExp, opts?: ParseOptions): Duplex;
export function Extract(opts?: ParseOptions): ParseStream;