Show More
Commit Description:
prevent multiple place login using uuid cookie
Commit Description:
prevent multiple place login using uuid cookie
References:
File last commit:
Show/Diff file:
Action:
node_modules/jszip/lib/zipObject.js
| 133 lines
| 4.4 KiB
| application/javascript
| JavascriptLexer
|
r789 | 'use strict'; | |||
var StreamHelper = require('./stream/StreamHelper'); | ||||
var DataWorker = require('./stream/DataWorker'); | ||||
var utf8 = require('./utf8'); | ||||
var CompressedObject = require('./compressedObject'); | ||||
var GenericWorker = require('./stream/GenericWorker'); | ||||
/** | ||||
* A simple object representing a file in the zip file. | ||||
* @constructor | ||||
* @param {string} name the name of the file | ||||
* @param {String|ArrayBuffer|Uint8Array|Buffer} data the data | ||||
* @param {Object} options the options of the file | ||||
*/ | ||||
var ZipObject = function(name, data, options) { | ||||
this.name = name; | ||||
this.dir = options.dir; | ||||
this.date = options.date; | ||||
this.comment = options.comment; | ||||
this.unixPermissions = options.unixPermissions; | ||||
this.dosPermissions = options.dosPermissions; | ||||
this._data = data; | ||||
this._dataBinary = options.binary; | ||||
// keep only the compression | ||||
this.options = { | ||||
compression : options.compression, | ||||
compressionOptions : options.compressionOptions | ||||
}; | ||||
}; | ||||
ZipObject.prototype = { | ||||
/** | ||||
* Create an internal stream for the content of this object. | ||||
* @param {String} type the type of each chunk. | ||||
* @return StreamHelper the stream. | ||||
*/ | ||||
internalStream: function (type) { | ||||
var result = null, outputType = "string"; | ||||
try { | ||||
if (!type) { | ||||
throw new Error("No output type specified."); | ||||
} | ||||
outputType = type.toLowerCase(); | ||||
var askUnicodeString = outputType === "string" || outputType === "text"; | ||||
if (outputType === "binarystring" || outputType === "text") { | ||||
outputType = "string"; | ||||
} | ||||
result = this._decompressWorker(); | ||||
var isUnicodeString = !this._dataBinary; | ||||
if (isUnicodeString && !askUnicodeString) { | ||||
result = result.pipe(new utf8.Utf8EncodeWorker()); | ||||
} | ||||
if (!isUnicodeString && askUnicodeString) { | ||||
result = result.pipe(new utf8.Utf8DecodeWorker()); | ||||
} | ||||
} catch (e) { | ||||
result = new GenericWorker("error"); | ||||
result.error(e); | ||||
} | ||||
return new StreamHelper(result, outputType, ""); | ||||
}, | ||||
/** | ||||
* Prepare the content in the asked type. | ||||
* @param {String} type the type of the result. | ||||
* @param {Function} onUpdate a function to call on each internal update. | ||||
* @return Promise the promise of the result. | ||||
*/ | ||||
async: function (type, onUpdate) { | ||||
return this.internalStream(type).accumulate(onUpdate); | ||||
}, | ||||
/** | ||||
* Prepare the content as a nodejs stream. | ||||
* @param {String} type the type of each chunk. | ||||
* @param {Function} onUpdate a function to call on each internal update. | ||||
* @return Stream the stream. | ||||
*/ | ||||
nodeStream: function (type, onUpdate) { | ||||
return this.internalStream(type || "nodebuffer").toNodejsStream(onUpdate); | ||||
}, | ||||
/** | ||||
* Return a worker for the compressed content. | ||||
* @private | ||||
* @param {Object} compression the compression object to use. | ||||
* @param {Object} compressionOptions the options to use when compressing. | ||||
* @return Worker the worker. | ||||
*/ | ||||
_compressWorker: function (compression, compressionOptions) { | ||||
if ( | ||||
this._data instanceof CompressedObject && | ||||
this._data.compression.magic === compression.magic | ||||
) { | ||||
return this._data.getCompressedWorker(); | ||||
} else { | ||||
var result = this._decompressWorker(); | ||||
if(!this._dataBinary) { | ||||
result = result.pipe(new utf8.Utf8EncodeWorker()); | ||||
} | ||||
return CompressedObject.createWorkerFrom(result, compression, compressionOptions); | ||||
} | ||||
}, | ||||
/** | ||||
* Return a worker for the decompressed content. | ||||
* @private | ||||
* @return Worker the worker. | ||||
*/ | ||||
_decompressWorker : function () { | ||||
if (this._data instanceof CompressedObject) { | ||||
return this._data.getContentWorker(); | ||||
} else if (this._data instanceof GenericWorker) { | ||||
return this._data; | ||||
} else { | ||||
return new DataWorker(this._data); | ||||
} | ||||
} | ||||
}; | ||||
var removedMethods = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"]; | ||||
var removedFn = function () { | ||||
throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); | ||||
}; | ||||
for(var i = 0; i < removedMethods.length; i++) { | ||||
ZipObject.prototype[removedMethods[i]] = removedFn; | ||||
} | ||||
module.exports = ZipObject; | ||||