UNPKG

node-hk-zip

Version:
63 lines 3.89 kB
"use strict"; /** * @fileOverview Definition of EndOfCentralDirectory class */ Object.defineProperty(exports, "__esModule", { value: true }); const InvalidEndOfCentralDirHeaderError_1 = require("../errors/InvalidEndOfCentralDirHeaderError"); const ZipByteMap_1 = require("../ZipByteMap"); const HeaderMap_1 = require("./HeaderMap"); /** * Class representing a EndOfCentralDirectory * @extends HeaderMap<IEndOfCentralDirByteMap> */ class EndOfCentralDirectory extends HeaderMap_1.HeaderMap { /** * Creates a EndOfCentralDirectory object * @param {Buffer} input - ZipFile data in binary * @param {number} offset - Offset of the header * @return {EndOfCentralDirectory} - EndOfCentralDirectory header object */ constructor(input, offset) { super(ZipByteMap_1.END_OF_CENTRAL_DIR_MAP, input, offset); this.parsed = this.loadBinaryHeader(); } /** * Parses end of central directory header using ByteMap * @return {IParsedEndOfCentralDir} - ParsedEndOfCentralDir object */ loadBinaryHeader() { if (!this.isValidHeaderData()) { throw new InvalidEndOfCentralDirHeaderError_1.InvalidEndOfCentralDirHeaderError(); } return { NUMBER_OF_ENTRIES: this.data.readUInt16LE(this.map.NUMBER_OF_ENTRIES), TOTAL_NUMBER_OF_ENTRIES: this.data.readUInt16LE(this.map.TOTAL_NUMBER_OF_ENTRIES), CENTRAL_DIR_SIZE: this.data.readUInt32LE(this.map.CENTRAL_DIR_SIZE), CENTRAL_DIR_OFFSET: this.data.readUInt32LE(this.map.CENTRAL_DIR_OFFSET), COMMENT_LENGTH: this.data.readUInt16LE(this.map.COMMENT_LENGTH) }; } /** * Getter method for number of entries * @return {number} num - NUMBER_OF_ENTRIES */ getNumberOfEntries() { return this.parsed.NUMBER_OF_ENTRIES; } /** * Getter method for central dir offset * @return {number} num - CENTRAL_DIR_OFFSET */ getOffset() { return this.parsed.CENTRAL_DIR_OFFSET; } /** * Getter method for central dir size * @return {number} num - CENTRAL_DIR_SIZE */ getSize() { return this.map.CENTRAL_DIR_SIZE; } } exports.EndOfCentralDirectory = EndOfCentralDirectory; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW5kT2ZDZW50cmFsRGlyZWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9oZWFkZXJzL0VuZE9mQ2VudHJhbERpcmVjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7O0FBRUgsbUdBQWdHO0FBS2hHLDhDQUF1RDtBQUN2RCwyQ0FBd0M7QUFFeEM7OztHQUdHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxxQkFBa0M7SUFHM0U7Ozs7O09BS0c7SUFDSCxZQUFZLEtBQWEsRUFBRSxNQUFjO1FBQ3ZDLEtBQUssQ0FBQyxtQ0FBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUM3QixNQUFNLElBQUkscUVBQWlDLEVBQUUsQ0FBQztTQUMvQztRQUNELE9BQU87WUFDTCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1lBQ3JFLHVCQUF1QixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUNqQztZQUNELGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDbkUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztZQUN2RSxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7U0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQXhERCxzREF3REMifQ==