Nincompoops Producing Methane
    Have ideas to improve npm?Join in the discussion! »

    stream-meter
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/stream-meter package

    1.0.4 • Public • Published

    Stream Meter

    NPM

    david-dm david-dm

    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
    

    Examples:

    var meter = require("stream-meter")
     
    // make an un-capped meter
    var m = meter()
    process.stdin.pipe(m).pipe(process.stdout)
    setTimeout(function () {
      // Log how much we saw in a couple seconds.
      console.log(m.bytes)
    }, 2000)
     
    // this will abort (with an Error) in the frame where 1024 bytes is reached
    process.stdin.pipe(meter(1024)).pipe(process.stdout)
     
    // create a 1024 byte-capped meter
    var m = meter(1024)
    m.on("error", function (e) {
      // log the error but don't kill the process
      console.log(e.message)
    })
    process.stdin.pipe(m).pipe(process.stdout)
     
    var hyperquest = require("hyperquest")
     
    var req = hyperquest("https://raw.github.com/mranney/node_redis/master/index.js")
     
    var meter = require("stream-meter")(1024)
    meter.on("error", function (e) {
      console.log(e.message)
      console.log("Read %s bytes", meter.bytes)
    })
     
     
    req.pipe(meter).pipe(process.stderr)
    $ node hypermeter.js 2> /dev/null
    Stream exceeded specified max of 1024 bytes.
    Read 7377 bytes

    Usage

    var meter = require("stream-meter")
     
    var stream = meter(size)
    stream.on("error", function (e) {
      // handle the meter aborting the stream
    })
     
    // read the bytes processed by the meter and passed through to any subsequent streams.
    var size = stream.bytes

    See test/index.js for additional examples.

    Options

    size

    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

    Properties

    bytes

    Number of bytes handled and passed through the meter.

    LICENSE

    MIT

    Install

    npm i stream-meter

    DownloadsWeekly Downloads

    99,253

    Version

    1.0.4

    License

    MIT

    Last publish

    Collaborators

    • avatar