node-hk-zip
Version:
UNZIP implementation for NodeJS
63 lines • 3.89 kB
JavaScript
"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==