From abd94a7f5a50f43c797a11b53549ae48fff667c3 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 10 Oct 2016 03:43:44 +0200 Subject: add node_modules to address #4364 --- .../crc32-stream/lib/deflate-crc32-stream.js | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 node_modules/crc32-stream/lib/deflate-crc32-stream.js (limited to 'node_modules/crc32-stream/lib/deflate-crc32-stream.js') diff --git a/node_modules/crc32-stream/lib/deflate-crc32-stream.js b/node_modules/crc32-stream/lib/deflate-crc32-stream.js new file mode 100644 index 000000000..944eb0d0a --- /dev/null +++ b/node_modules/crc32-stream/lib/deflate-crc32-stream.js @@ -0,0 +1,67 @@ +/** + * node-crc32-stream + * + * Copyright (c) 2014 Chris Talkington, contributors. + * Licensed under the MIT license. + * https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT + */ +var zlib = require('zlib'); +var inherits = require('util').inherits; + +var crc32 = require('buffer-crc32'); + +var DeflateCRC32Stream = module.exports = function (options) { + zlib.DeflateRaw.call(this, options); + + this.checksum = new Buffer(4); + this.checksum.writeInt32BE(0, 0); + + this.rawSize = 0; + this.compressedSize = 0; + + // BC v0.8 + if (typeof zlib.DeflateRaw.prototype.push !== 'function') { + this.on('data', function(chunk) { + if (chunk) { + this.compressedSize += chunk.length; + } + }); + } +}; + +inherits(DeflateCRC32Stream, zlib.DeflateRaw); + +DeflateCRC32Stream.prototype.push = function(chunk, encoding) { + if (chunk) { + this.compressedSize += chunk.length; + } + + return zlib.DeflateRaw.prototype.push.call(this, chunk, encoding); +}; + +DeflateCRC32Stream.prototype.write = function(chunk, enc, cb) { + if (chunk) { + this.checksum = crc32(chunk, this.checksum); + this.rawSize += chunk.length; + } + + return zlib.DeflateRaw.prototype.write.call(this, chunk, enc, cb); +}; + +DeflateCRC32Stream.prototype.digest = function() { + return crc32.unsigned(0, this.checksum); +}; + +DeflateCRC32Stream.prototype.hex = function() { + return this.digest().toString(16).toUpperCase(); +}; + +DeflateCRC32Stream.prototype.size = function(compressed) { + compressed = compressed || false; + + if (compressed) { + return this.compressedSize; + } else { + return this.rawSize; + } +}; \ No newline at end of file -- cgit v1.2.3