UNPKG

3.64 kBTypeScriptView Raw
1/// <reference types="node" />
2
3import { EventEmitter } from "events";
4import { Readable } from "stream";
5
6export abstract class RandomAccessReader extends EventEmitter {
7 _readStreamForRange(start: number, end: number): void;
8 createReadStream(options: { start: number; end: number }): void;
9 read(buffer: Buffer, offset: number, length: number, position: number, callback: (err: Error | null) => void): void;
10 close(callback: (err: Error | null) => void): void;
11}
12
13export class Entry {
14 comment: string;
15 compressedSize: number;
16 compressionMethod: number;
17 crc32: number;
18 externalFileAttributes: number;
19 extraFieldLength: number;
20 extraFields: Array<{ id: number; data: Buffer }>;
21 fileCommentLength: number;
22 fileName: string;
23 fileNameLength: number;
24 generalPurposeBitFlag: number;
25 internalFileAttributes: number;
26 lastModFileDate: number;
27 lastModFileTime: number;
28 relativeOffsetOfLocalHeader: number;
29 uncompressedSize: number;
30 versionMadeBy: number;
31 versionNeededToExtract: number;
32
33 getLastModDate(): Date;
34 isEncrypted(): boolean;
35 isCompressed(): boolean;
36}
37
38export interface ZipFileOptions {
39 decompress: boolean | null;
40 decrypt: boolean | null;
41 start: number | null;
42 end: number | null;
43}
44
45export class ZipFile extends EventEmitter {
46 autoClose: boolean;
47 comment: string;
48 decodeStrings: boolean;
49 emittedError: boolean;
50 entriesRead: number;
51 entryCount: number;
52 fileSize: number;
53 isOpen: boolean;
54 lazyEntries: boolean;
55 readEntryCursor: boolean;
56 validateEntrySizes: boolean;
57
58 constructor(
59 reader: RandomAccessReader,
60 centralDirectoryOffset: number,
61 fileSize: number,
62 entryCount: number,
63 comment: string,
64 autoClose: boolean,
65 lazyEntries: boolean,
66 decodeStrings: boolean,
67 validateEntrySizes: boolean,
68 );
69
70 openReadStream(
71 entry: Entry,
72 options: ZipFileOptions,
73 callback: (err: Error | null, stream: Readable) => void,
74 ): void;
75 openReadStream(entry: Entry, callback: (err: Error | null, stream: Readable) => void): void;
76 close(): void;
77 readEntry(): void;
78}
79
80export interface Options {
81 autoClose?: boolean | undefined;
82 lazyEntries?: boolean | undefined;
83 decodeStrings?: boolean | undefined;
84 validateEntrySizes?: boolean | undefined;
85 strictFileNames?: boolean | undefined;
86}
87
88export function open(path: string, options: Options, callback?: (err: Error | null, zipfile: ZipFile) => void): void;
89export function open(path: string, callback?: (err: Error | null, zipfile: ZipFile) => void): void;
90export function fromFd(fd: number, options: Options, callback?: (err: Error | null, zipfile: ZipFile) => void): void;
91export function fromFd(fd: number, callback?: (err: Error | null, zipfile: ZipFile) => void): void;
92export function fromBuffer(
93 buffer: Buffer,
94 options: Options,
95 callback?: (err: Error | null, zipfile: ZipFile) => void,
96): void;
97export function fromBuffer(buffer: Buffer, callback?: (err: Error | null, zipfile: ZipFile) => void): void;
98export function fromRandomAccessReader(
99 reader: RandomAccessReader,
100 totalSize: number,
101 options: Options,
102 callback: (err: Error | null, zipfile: ZipFile) => void,
103): void;
104export function fromRandomAccessReader(
105 reader: RandomAccessReader,
106 totalSize: number,
107 callback: (err: Error | null, zipfile: ZipFile) => void,
108): void;
109export function dosDateTimeToDate(date: number, time: number): Date;
110export function validateFileName(fileName: string): string | null;