123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /**
- * 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
- */
-
- 'use strict';
-
- const {Transform} = require('readable-stream');
-
- const crc32 = require('crc-32');
-
- class CRC32Stream extends Transform {
- constructor(options) {
- super(options);
- this.checksum = Buffer.allocUnsafe(4);
- this.checksum.writeInt32BE(0, 0);
-
- this.rawSize = 0;
- }
-
- _transform(chunk, encoding, callback) {
- if (chunk) {
- this.checksum = crc32.buf(chunk, this.checksum) >>> 0;
- this.rawSize += chunk.length;
- }
-
- callback(null, chunk);
- }
-
- digest(encoding) {
- const checksum = Buffer.allocUnsafe(4);
- checksum.writeUInt32BE(this.checksum >>> 0, 0);
- return encoding ? checksum.toString(encoding) : checksum;
- }
-
- hex() {
- return this.digest('hex').toUpperCase();
- }
-
- size() {
- return this.rawSize;
- }
- }
-
- module.exports = CRC32Stream;
|