Buckets:
dieumercimvemba/mediastore / scripts /whatsapp-bridge /node_modules /@tokenizer /inflate /lib /ZipToken.js
| /** | |
| * Ref https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT | |
| */ | |
| import { UINT16_LE, UINT32_LE } from "token-types"; | |
| export const Signature = { | |
| LocalFileHeader: 0x04034b50, | |
| DataDescriptor: 0x08074b50, | |
| CentralFileHeader: 0x02014b50, | |
| EndOfCentralDirectory: 0x06054b50 | |
| }; | |
| export const DataDescriptor = { | |
| get(array) { | |
| return { | |
| signature: UINT32_LE.get(array, 0), | |
| compressedSize: UINT32_LE.get(array, 8), | |
| uncompressedSize: UINT32_LE.get(array, 12), | |
| }; | |
| }, len: 16 | |
| }; | |
| /** | |
| * 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 const LocalFileHeaderToken = { | |
| get(array) { | |
| const flags = UINT16_LE.get(array, 6); | |
| return { | |
| signature: UINT32_LE.get(array, 0), | |
| minVersion: UINT16_LE.get(array, 4), | |
| dataDescriptor: !!(flags & 0x0008), | |
| compressedMethod: UINT16_LE.get(array, 8), | |
| compressedSize: UINT32_LE.get(array, 18), | |
| uncompressedSize: UINT32_LE.get(array, 22), | |
| filenameLength: UINT16_LE.get(array, 26), | |
| extraFieldLength: UINT16_LE.get(array, 28), | |
| filename: null | |
| }; | |
| }, len: 30 | |
| }; | |
| /** | |
| * 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 const EndOfCentralDirectoryRecordToken = { | |
| get(array) { | |
| return { | |
| signature: UINT32_LE.get(array, 0), | |
| nrOfThisDisk: UINT16_LE.get(array, 4), | |
| nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6), | |
| nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8), | |
| nrOfEntriesOfSize: UINT16_LE.get(array, 10), | |
| sizeOfCd: UINT32_LE.get(array, 12), | |
| offsetOfStartOfCd: UINT32_LE.get(array, 16), | |
| zipFileCommentLength: UINT16_LE.get(array, 20), | |
| }; | |
| }, len: 22 | |
| }; | |
| /** | |
| * 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 const FileHeader = { | |
| get(array) { | |
| const flags = UINT16_LE.get(array, 8); | |
| return { | |
| signature: UINT32_LE.get(array, 0), | |
| minVersion: UINT16_LE.get(array, 6), | |
| dataDescriptor: !!(flags & 0x0008), | |
| compressedMethod: UINT16_LE.get(array, 10), | |
| compressedSize: UINT32_LE.get(array, 20), | |
| uncompressedSize: UINT32_LE.get(array, 24), | |
| filenameLength: UINT16_LE.get(array, 28), | |
| extraFieldLength: UINT16_LE.get(array, 30), | |
| fileCommentLength: UINT16_LE.get(array, 32), | |
| relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42), | |
| filename: null | |
| }; | |
| }, len: 46 | |
| }; | |
Xet Storage Details
- Size:
- 4.84 kB
- Xet hash:
- 108d4b0586dafbd2dcb017844c64aff2409cc20085255019c0d649233e1d6702
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.