/** * Ref https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT */ import type { IGetToken } from "strtok3"; export declare const Signature: { LocalFileHeader: number; DataDescriptor: number; CentralFileHeader: number; EndOfCentralDirectory: number; }; interface IDataDescriptor { signature: number; compressedSize: number; uncompressedSize: number; } export interface ILocalFileHeader extends IDataDescriptor { minVersion: number; dataDescriptor: boolean; compressedMethod: number; compressedSize: number; uncompressedSize: number; filenameLength: number; extraFieldLength: number; filename: string; } export declare const DataDescriptor: IGetToken; /** * First part of the ZIP Local File Header * Offset | Bytes| Description * -------|------+------------------------------------------------------------------- * 0 | 4 | Signature (0x04034b50) * 4 | 2 | Minimum version needed to extract * 6 | 2 | Bit flag * 8 | 2 | Compression method * 10 | 2 | File last modification time (MS-DOS format) * 12 | 2 | File last modification date (MS-DOS format) * 14 | 4 | CRC-32 of uncompressed data * 18 | 4 | Compressed size * 22 | 4 | Uncompressed size * 26 | 2 | File name length (n) * 28 | 2 | Extra field length (m) * 30 | n | File name * 30 + n | m | Extra field */ export declare const LocalFileHeaderToken: IGetToken; interface IEndOfCentralDirectoryRecord { signature: number; nrOfThisDisk: number; nrOfThisDiskWithTheStart: number; nrOfEntriesOnThisDisk: number; nrOfEntriesOfSize: number; sizeOfCd: number; offsetOfStartOfCd: number; zipFileCommentLength: number; } /** * 4.3.16 End of central directory record: * end of central dir signature (0x06064b50) 4 bytes * number of this disk 2 bytes * number of the disk with the start of the central directory 2 bytes * total number of entries in the central directory on this disk 2 bytes * total number of entries in the size of the central directory 2 bytes * sizeOfTheCentralDirectory 4 bytes * offset of start of central directory with respect to the starting disk number 4 bytes * .ZIP file comment length 2 bytes * .ZIP file comment (variable size) */ export declare const EndOfCentralDirectoryRecordToken: IGetToken; export interface IFileHeader extends ILocalFileHeader { fileCommentLength: number; relativeOffsetOfLocalHeader: number; } /** * File header: * central file header signature 4 bytes 0 (0x02014b50) * version made by 2 bytes 4 * version needed to extract 2 bytes 6 * general purpose bit flag 2 bytes 8 * compression method 2 bytes 10 * last mod file time 2 bytes 12 * last mod file date 2 bytes 14 * crc-32 4 bytes 16 * compressed size 4 bytes 20 * uncompressed size 4 bytes 24 * file name length 2 bytes 28 * extra field length 2 bytes 30 * file comment length 2 bytes 32 * disk number start 2 bytes 34 * internal file attributes 2 bytes 36 * external file attributes 4 bytes 38 * relative offset of local header 4 bytes 42 */ export declare const FileHeader: IGetToken; export {};