1 |
|
2 |
|
3 | import { ClientRequest, RequestOptions } from "http";
|
4 | import { Duplex, PassThrough, Readable, Stream, Transform } from "stream";
|
5 |
|
6 | export interface PullStream extends Duplex {
|
7 | stream(eof: number | string, includeEof: boolean): PassThrough;
|
8 | pull(eof: number | string, includeEof: boolean): Promise<Buffer>;
|
9 | }
|
10 |
|
11 | export 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 |
|
45 | export function unzip(
|
46 | source: {
|
47 | stream: Readable;
|
48 | size: () => Promise<number>;
|
49 | },
|
50 | offset: number,
|
51 | _password: string,
|
52 | ): Entry;
|
53 |
|
54 | export 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 |
|
64 | export function BufferStream(entry: Entry): Promise<Buffer>;
|
65 |
|
66 | export 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 |
|
79 | export 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 |
|
108 | export interface ParseOptions {
|
109 | verbose?: boolean | undefined;
|
110 | path?: string | undefined;
|
111 | concurrency?: number | undefined;
|
112 | forceStream?: boolean | undefined;
|
113 | }
|
114 |
|
115 | export type ParseStream = PullStream & {
|
116 | promise(): Promise<void>;
|
117 | };
|
118 |
|
119 | export function Parse(opts?: ParseOptions): ParseStream;
|
120 | export function ParseOne(match?: RegExp, opts?: ParseOptions): Duplex;
|
121 | export function Extract(opts?: ParseOptions): ParseStream;
|