Configring node js.
This commit is contained in:
82
node_modules/jszip/lib/load.js
generated
vendored
Normal file
82
node_modules/jszip/lib/load.js
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
'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;
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user