UNPKG

3.22 kBTypeScriptView Raw
1/// <reference types="node" />
2
3import { ClientRequest, RequestOptions } from "http";
4import { Duplex, PassThrough, Readable, Stream, Transform } from "stream";
5
6export interface PullStream extends Duplex {
7 stream(eof: number | string, includeEof: boolean): PassThrough;
8 pull(eof: number | string, includeEof: boolean): Promise<Buffer>;
9}
10
11export interface Entry extends PassThrough {
12 autodrain(): Transform & {
13 promise(): Promise<void>;
14 };
15 buffer(): Promise<Buffer>;
16 path: string;
17
18 props: {
19 path: string;
20 };
21
22 type: string;
23 vars: {
24 signature?: number | undefined;
25 versionsNeededToExtract: number;
26 flags: number;
27 compressionMethod: number;
28 lastModifiedTime: number;
29 crc32: number;
30 compressedSize: number;
31 fileNameLength: number;
32 extraFieldLength: number;
33 };
34
35 extra: {
36 signature: number;
37 partsize: number;
38 uncompressedSize: number;
39 compressedSize: number;
40 offset: number;
41 disknum: number;
42 };
43}
44
45export function unzip(
46 source: {
47 stream: Readable;
48 size: () => Promise<number>;
49 },
50 offset: number,
51 _password: string,
52): Entry;
53
54export namespace Open {
55 function buffer(data: Buffer): Promise<CentralDirectory>;
56 function file(filename: string): Promise<CentralDirectory>;
57 function url(
58 request: ClientRequest,
59 opt: string | RequestOptions,
60 ): Promise<CentralDirectory>;
61 function s3(client: any, params: any): Promise<CentralDirectory>;
62}
63
64export function BufferStream(entry: Entry): Promise<Buffer>;
65
66export interface CentralDirectory {
67 signature: number;
68 diskNumber: number;
69 diskStart: number;
70 numberOfRecordsOnDisk: number;
71 numberOfRecords: number;
72 sizeOfCentralDirectory: number;
73 offsetToStartOfCentralDirectory: number;
74 commentLength: number;
75 files: File[];
76 extract: (opts: ParseOptions) => Promise<void>;
77}
78
79export interface File {
80 signature: number;
81 versionMadeBy: number;
82 versionsNeededToExtract: number;
83 flags: number;
84 compressionMethod: number;
85 lastModifiedTime: number;
86 lastModifiedDate: number;
87 lastModifiedDateTime: Date;
88 crc32: number;
89 compressedSize: number;
90 uncompressedSize: number;
91 fileNameLength: number;
92 extraFieldLength: number;
93 fileCommentLength: number;
94 diskNumber: number;
95 internalFileAttributes: number;
96 externalFileAttributes: number;
97 offsetToLocalFileHeader: number;
98 pathBuffer: Buffer;
99 path: string;
100 isUnicode: number;
101 extra: any;
102 type: "Directory" | "File";
103 comment: string;
104 stream: (password?: string) => Entry;
105 buffer: (password?: string) => Promise<Buffer>;
106}
107
108export interface ParseOptions {
109 verbose?: boolean | undefined;
110 path?: string | undefined;
111 concurrency?: number | undefined;
112 forceStream?: boolean | undefined;
113}
114
115export type ParseStream = PullStream & {
116 promise(): Promise<void>;
117};
118
119export function Parse(opts?: ParseOptions): ParseStream;
120export function ParseOne(match?: RegExp, opts?: ParseOptions): Duplex;
121export function Extract(opts?: ParseOptions): ParseStream;