/** * 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 inherits = require('util').inherits; var Transform = require('readable-stream').Transform; var crc32 = require('buffer-crc32'); var CRC32Stream = module.exports = function CRC32Stream(options) { Transform.call(this, options); this.checksum = new Buffer(4); this.checksum.writeInt32BE(0, 0); this.rawSize = 0; }; inherits(CRC32Stream, Transform); CRC32Stream.prototype._transform = function(chunk, encoding, callback) { if (chunk) { this.checksum = crc32(chunk, this.checksum); this.rawSize += chunk.length; } callback(null, chunk); }; CRC32Stream.prototype.digest = function() { return crc32.unsigned(0, this.checksum); }; CRC32Stream.prototype.hex = function() { return this.digest().toString(16).toUpperCase(); }; CRC32Stream.prototype.size = function() { return this.rawSize; };