A stream meter that both counts the bytes piped through it, and can optionally abort on a max size. (e.g. limit a http request size)
Stream Meter is a... uh, meter for streams.
It is a streams2 Transform stream that passes through content, but counts the number of bytes it forwards.
However, give it a size in bytes and it will abort as soon as that threshold is passed. This is useful for capping your hyperquest or http/https clients or servers content size.
npm install stream-meter
var meter = require"stream-meter"// make an un-capped metervar m = meterprocessstdinpipempipeprocessstdoutsetTimeout// Log how much we saw in a couple seconds.console.logmbytes2000// this will abort (with an Error) in the frame where 1024 bytes is reachedprocessstdinpipemeter1024pipeprocessstdout// create a 1024 byte-capped metervar m = meter1024mon"error"// log the error but don't kill the processconsole.logemessageprocessstdinpipempipeprocessstdout
var hyperquest = require"hyperquest"var req = hyperquest""var meter = require"stream-meter"1024meteron"error"console.logemessageconsole.log"Read %s bytes" meterbytesreqpipemeterpipeprocessstderr
$ node hypermeter.js 2> /dev/nullStream exceeded specified max of 1024 bytes.Read 7377 bytes
var meter = require"stream-meter"var stream = metersizestreamon"error"// handle the meter aborting the stream// read the bytes processed by the meter and passed through to any subsequent streams.var size = streambytes
See test/index.js for additional examples.
Size (in bytes) to trigger the stream to abort. It will complete whatever frame it aborted in, so the size streamed will still be >= size but no more than size + highWaterMark
Number of bytes handled and passed through the meter.