2025-04-02 06:50:39 -04:00

30 lines
653 B
JavaScript

module.exports = Meter;
var util = require('util');
var Transform = require('stream').Transform;
if (!Transform) {
Transform = require('readable-stream/transform');
}
function Meter(maxBytes) {
if (!(this instanceof Meter)) return new Meter(maxBytes);
Transform.call(this);
this.bytes = 0;
this.maxBytes = maxBytes || Number.MAX_VALUE;
}
util.inherits(Meter, Transform);
Meter.prototype._transform = function (chunk, encoding, cb) {
this.bytes += chunk.length;
this.push(chunk);
if (this.bytes > this.maxBytes) {
return cb(
new Error('Stream exceeded specified max of ' + this.maxBytes + ' bytes.')
);
}
cb();
};