file-details.js 1.53 KB
// Objects with this prototype are used as the public representation of a file
var path = require('path');

var FileDetails = function (directoryEntry) {
    // TODO: Add 'extra field' support

    this._offset = 0;
    this._maxSize = 0;

    this.parent = path.dirname(directoryEntry.fileName);
    this.filename = path.basename(directoryEntry.fileName);
    this.path = path.normalize(directoryEntry.fileName);

    this.type = directoryEntry.fileAttributes.type;
    this.mode = directoryEntry.fileAttributes.mode;
    this.compressionMethod = directoryEntry.compressionMethod;
    this.modified = directoryEntry.modifiedTime;
    this.crc32 = directoryEntry.crc32;
    this.compressedSize = directoryEntry.compressedSize;
    this.uncompressedSize = directoryEntry.uncompressedSize;
    this.comment = directoryEntry.fileComment;

    this.flags = {
        encrypted: directoryEntry.generalPurposeFlags.encrypted,
        compressionFlag1: directoryEntry.generalPurposeFlags.compressionFlag1,
        compressionFlag2: directoryEntry.generalPurposeFlags.compressionFlag2,
        useDataDescriptor: directoryEntry.generalPurposeFlags.useDataDescriptor,
        enhancedDeflating: directoryEntry.generalPurposeFlags.enhancedDeflating,
        compressedPatched: directoryEntry.generalPurposeFlags.compressedPatched,
        strongEncryption: directoryEntry.generalPurposeFlags.strongEncryption,
        utf8: directoryEntry.generalPurposeFlags.utf8,
        encryptedCD: directoryEntry.generalPurposeFlags.encryptedCD
    };

};

module.exports = FileDetails;