UNPKG

node-hk-zip

Version:
65 lines 4.6 kB
"use strict"; /** * @fileOverview Definition of LocalFileHeader class */ Object.defineProperty(exports, "__esModule", { value: true }); const InvalidLocalFileHeaderError_1 = require("../errors/InvalidLocalFileHeaderError"); const ZipByteMap_1 = require("../ZipByteMap"); const HeaderMap_1 = require("./HeaderMap"); /** * Class representing a LocalFileHeader * @extends HeaderMap<ILocalFileByteMap> */ class LocalFileHeader extends HeaderMap_1.HeaderMap { /** * Creates a LocalFileHeader object * @param {Buffer} input - Zip binary data * @param {number} offset - Offset of the header * @return {LocalFileHeader} - LocalFileHeader object */ constructor(input, offset) { super(ZipByteMap_1.LOCAL_FILE_HEADER_MAP, input, offset); this.parsed = this.loadBinaryHeader(); } /** * Combines compressed data offset * @param {number} offset - LocalFileHeader offset * @return {number} offset - Compressed data offset */ getCompressedSliceOffset(offset) { return (offset + this.map.SIZE + this.parsed.FILENAME_LENGTH + this.parsed.EXTRA_FIELD_LENGTH); } /** * Parses local file header using ByteMap * @return {IParsedLocalFile} - ParsedLocalFile object */ loadBinaryHeader() { if (!this.isValidHeaderData()) { throw new InvalidLocalFileHeaderError_1.InvalidLocalFileHeaderError(); } return { VERSION: this.data.readUInt16LE(this.map.VERSION), GENERAL_BIT_FLAG: this.data.readUInt16LE(this.map.GENERAL_BIT_FLAG), COMPRESSION_METHOD: this.data.readUInt16LE(this.map.COMPRESSION_METHOD), MODIFICATION_TIME: this.data.readUInt16LE(this.map.MODIFICATION_TIME), MODIFICATION_DATE: this.data.readUInt16LE(this.map.MODIFICATION_DATE), CRC: this.data.readUInt32LE(this.map.CRC), COMPRESSED_SIZE: this.data.readUInt32LE(this.map.COMPRESSED_SIZE), UNCOMPRESSED_SIZE: this.data.readUInt32LE(this.map.UNCOMPRESSED_SIZE), FILENAME_LENGTH: this.data.readUInt16LE(this.map.FILENAME_LENGTH), EXTRA_FIELD_LENGTH: this.data.readUInt16LE(this.map.EXTRA_FIELD_LENGTH) }; } /** * Getter for parsed CRC value * @return {number} - CRC-32 value */ getCRC32() { return this.parsed.CRC; } } exports.LocalFileHeader = LocalFileHeader; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxGaWxlSGVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9oZWFkZXJzL0xvY2FsRmlsZUhlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7O0FBRUgsdUZBQW9GO0FBS3BGLDhDQUFzRDtBQUN0RCwyQ0FBd0M7QUFFeEM7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHFCQUE0QjtJQUcvRDs7Ozs7T0FLRztJQUNILFlBQVksS0FBYSxFQUFFLE1BQWM7UUFDdkMsS0FBSyxDQUFDLGtDQUFxQixFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksd0JBQXdCLENBQUMsTUFBYztRQUM1QyxPQUFPLENBQ0wsTUFBTTtZQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTtZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDN0IsTUFBTSxJQUFJLHlEQUEyQixFQUFFLENBQUM7U0FDekM7UUFDRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ2pELGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDbkUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztZQUN2RSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1lBQ3JFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7WUFDckUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3pDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNqRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1lBQ3JFLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNqRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1NBQ3hFLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBekRELDBDQXlEQyJ9