33import { EventEmitter } from "events" ;
44import { Readable } from "stream" ;
55
6+ export interface ExtraField {
7+ id : number ;
8+ data : Buffer ;
9+ }
10+
611export abstract class RandomAccessReader extends EventEmitter {
7- _readStreamForRange ( start : number , end : number ) : void ;
8- createReadStream ( options : { start : number ; end : number } ) : void ;
12+ _readStreamForRange ( start : number , end : number ) : Readable ;
13+ createReadStream ( options : { start : number ; end : number } ) : Readable ;
914 read ( buffer : Buffer , offset : number , length : number , position : number , callback : ( err : Error | null ) => void ) : void ;
1015 close ( callback : ( err : Error | null ) => void ) : void ;
1116}
@@ -17,10 +22,14 @@ export class Entry {
1722 crc32 : number ;
1823 externalFileAttributes : number ;
1924 extraFieldLength : number ;
20- extraFields : Array < { id : number ; data : Buffer } > ;
25+ extraFieldRaw : Buffer ;
26+ extraFields : ExtraField [ ] ;
27+ fileComment : string ;
2128 fileCommentLength : number ;
29+ fileCommentRaw : Buffer ;
2230 fileName : string ;
2331 fileNameLength : number ;
32+ fileNameRaw : Buffer ;
2433 generalPurposeBitFlag : number ;
2534 internalFileAttributes : number ;
2635 lastModFileDate : number ;
@@ -30,16 +39,42 @@ export class Entry {
3039 versionMadeBy : number ;
3140 versionNeededToExtract : number ;
3241
33- getLastModDate ( ) : Date ;
42+ getLastModDate ( options ?: GetLastModDateOptions ) : Date ;
43+ canDecodeFileData ( ) : boolean ;
3444 isEncrypted ( ) : boolean ;
45+ /** @deprecated Use `canDecodeFileData()` and/or check `compressionMethod`. */
3546 isCompressed ( ) : boolean ;
3647}
3748
49+ export interface GetLastModDateOptions {
50+ timezone ?: "local" | "UTC" | null | undefined ;
51+ forceDosFormat ?: boolean | undefined ;
52+ }
53+
54+ export class LocalFileHeader {
55+ fileDataStart : number ;
56+ versionNeededToExtract : number ;
57+ generalPurposeBitFlag : number ;
58+ compressionMethod : number ;
59+ lastModFileTime : number ;
60+ lastModFileDate : number ;
61+ crc32 : number ;
62+ compressedSize : number ;
63+ uncompressedSize : number ;
64+ fileNameLength : number ;
65+ extraFieldLength : number ;
66+ fileName : Buffer ;
67+ extraField : Buffer ;
68+ }
69+
3870export interface ZipFileOptions {
39- decompress : boolean | null ;
40- decrypt : boolean | null ;
41- start : number | null ;
42- end : number | null ;
71+ decodeFileData ?: boolean | null | undefined ;
72+ start ?: number | null | undefined ;
73+ end ?: number | null | undefined ;
74+ /** @deprecated */
75+ decompress ?: boolean | null | undefined ;
76+ /** @deprecated */
77+ decrypt ?: boolean | null | undefined ;
4378}
4479
4580export class ZipFile extends EventEmitter {
@@ -73,6 +108,26 @@ export class ZipFile extends EventEmitter {
73108 callback : ( err : Error | null , stream : Readable ) => void ,
74109 ) : void ;
75110 openReadStream ( entry : Entry , callback : ( err : Error | null , stream : Readable ) => void ) : void ;
111+ readLocalFileHeader (
112+ entry : Entry ,
113+ options : { minimal : true } ,
114+ callback : ( err : Error | null , header : { fileDataStart : number } ) => void ,
115+ ) : void ;
116+ readLocalFileHeader (
117+ entry : Entry ,
118+ options : { minimal ?: boolean } ,
119+ callback : ( err : Error | null , header : LocalFileHeader ) => void ,
120+ ) : void ;
121+ readLocalFileHeader ( entry : Entry , callback : ( err : Error | null , header : LocalFileHeader ) => void ) : void ;
122+ openReadStreamLowLevel (
123+ fileDataStart : number ,
124+ compressedSize : number ,
125+ relativeStart : number ,
126+ relativeEnd : number ,
127+ decompress : boolean ,
128+ uncompressedSize : number | null ,
129+ callback : ( err : Error | null , stream : Readable ) => void ,
130+ ) : void ;
76131 close ( ) : void ;
77132 readEntry ( ) : void ;
78133}
@@ -106,5 +161,13 @@ export function fromRandomAccessReader(
106161 totalSize : number ,
107162 callback : ( err : Error | null , zipfile : ZipFile ) => void ,
108163) : void ;
164+ /** @deprecated Use `entry.getLastModDate()` instead. */
109165export function dosDateTimeToDate ( date : number , time : number ) : Date ;
110166export function validateFileName ( fileName : string ) : string | null ;
167+ export function getFileNameLowLevel (
168+ generalPurposeBitFlag : number ,
169+ fileNameBuffer : Buffer ,
170+ extraFields : ExtraField [ ] ,
171+ strictFileNames : boolean ,
172+ ) : string ;
173+ export function parseExtraFields ( extraFieldBuffer : Buffer ) : ExtraField [ ] ;
0 commit comments