Show More
Commit Description:
force log out when password change
Commit Description:
force log out when password change
References:
File last commit:
Show/Diff file:
Action:
node_modules/jszip/lib/load.js
| 82 lines
| 2.8 KiB
| application/javascript
| JavascriptLexer
|
r789 | 'use strict'; | |||
var utils = require('./utils'); | ||||
var external = require("./external"); | ||||
var utf8 = require('./utf8'); | ||||
var utils = require('./utils'); | ||||
var ZipEntries = require('./zipEntries'); | ||||
var Crc32Probe = require('./stream/Crc32Probe'); | ||||
var nodejsUtils = require("./nodejsUtils"); | ||||
/** | ||||
* Check the CRC32 of an entry. | ||||
* @param {ZipEntry} zipEntry the zip entry to check. | ||||
* @return {Promise} the result. | ||||
*/ | ||||
function checkEntryCRC32(zipEntry) { | ||||
return new external.Promise(function (resolve, reject) { | ||||
var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe()); | ||||
worker.on("error", function (e) { | ||||
reject(e); | ||||
}) | ||||
.on("end", function () { | ||||
if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) { | ||||
reject(new Error("Corrupted zip : CRC32 mismatch")); | ||||
} else { | ||||
resolve(); | ||||
} | ||||
}) | ||||
.resume(); | ||||
}); | ||||
} | ||||
module.exports = function(data, options) { | ||||
var zip = this; | ||||
options = utils.extend(options || {}, { | ||||
base64: false, | ||||
checkCRC32: false, | ||||
optimizedBinaryString: false, | ||||
createFolders: false, | ||||
decodeFileName: utf8.utf8decode | ||||
}); | ||||
if (nodejsUtils.isNode && nodejsUtils.isStream(data)) { | ||||
return external.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")); | ||||
} | ||||
return utils.prepareContent("the loaded zip file", data, true, options.optimizedBinaryString, options.base64) | ||||
.then(function(data) { | ||||
var zipEntries = new ZipEntries(options); | ||||
zipEntries.load(data); | ||||
return zipEntries; | ||||
}).then(function checkCRC32(zipEntries) { | ||||
var promises = [external.Promise.resolve(zipEntries)]; | ||||
var files = zipEntries.files; | ||||
if (options.checkCRC32) { | ||||
for (var i = 0; i < files.length; i++) { | ||||
promises.push(checkEntryCRC32(files[i])); | ||||
} | ||||
} | ||||
return external.Promise.all(promises); | ||||
}).then(function addFiles(results) { | ||||
var zipEntries = results.shift(); | ||||
var files = zipEntries.files; | ||||
for (var i = 0; i < files.length; i++) { | ||||
var input = files[i]; | ||||
zip.file(input.fileNameStr, input.decompressed, { | ||||
binary: true, | ||||
optimizedBinaryString: true, | ||||
date: input.date, | ||||
dir: input.dir, | ||||
comment : input.fileCommentStr.length ? input.fileCommentStr : null, | ||||
unixPermissions : input.unixPermissions, | ||||
dosPermissions : input.dosPermissions, | ||||
createFolders: options.createFolders | ||||
}); | ||||
} | ||||
if (zipEntries.zipComment.length) { | ||||
zip.comment = zipEntries.zipComment; | ||||
} | ||||
return zip; | ||||
}); | ||||
}; | ||||