# stream-throttle

> A rate limiter for Node.js streams.

Latest version **0.1.3** (published 2014-04-08) · BSD-3-Clause license · 0 weekly downloads

## Install

```sh
npm install stream-throttle
pnpm add stream-throttle
yarn add stream-throttle
bun add stream-throttle
```

Provides the command `throttleproxy`.

## Health

**Score 23/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.3 |
| Published | 2014-04-08 |
| First published | 2013-10-22 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | separate (@types/stream-throttle) |
| Module format | CommonJS |
| Node | >= 0.10.0 |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 216 |
| Author | Tiago Quelhas |
| Maintainers | tjgq |
| Keywords | streams, throttling, ratelimit |

## Links

- npm: https://www.npmjs.com/package/stream-throttle
- Repository: http://github.com/tjgq/node-stream-throttle
- Homepage: https://github.com/tjgq/node-stream-throttle
- Issues: https://github.com/tjgq/node-stream-throttle/issues
- npm.io page: https://npm.io/package/stream-throttle

## Dependencies (2)

- [limiter](https://npm.io/package/limiter.md) ^1.0.5
- [commander](https://npm.io/package/commander.md) ^2.2.0

## Alternatives

- [byte-size](https://npm.io/package/byte-size.md) — 2.1M weekly downloads
- [speed-limiter](https://npm.io/package/speed-limiter.md) — 16.0K weekly downloads
- [@powersync/node](https://npm.io/package/@powersync/node.md) — 10.9K weekly downloads
- [@ledgerhq/coin-cardano](https://npm.io/package/@ledgerhq/coin-cardano.md) — 1.0K weekly downloads
- [@jayesol/jayeson.lib.streamfinder](https://npm.io/package/@jayesol/jayeson.lib.streamfinder.md) — 1.0K weekly downloads

## Recent versions

- 0.1.3 (latest) — 2014-04-08
- 0.1.2 — 2014-04-08
- 0.1.1 — 2014-04-04
- 0.1.0 — 2013-10-22

## README

# stream-throttle #

A rate limiter for Node.js streams.

## API usage

This module exports two classes, `Throttle` and `ThrottleGroup`.

`Throttle` creates a single throttled stream, based on `stream.Transform`. It accepts an `opts` parameter with the following keys:

* `opts.rate` is the throttling rate, in bytes per second.
* `opts.chunksize` (optional) is the maximum chunk size into which larger writes are decomposed; the default is `opts.rate`/10.

The `opts` object may also contain options to be passed to the `stream.Transform` constructor.

For example, the following code throttles stdin to stdout at 10 bytes per second:

    process.stdin.pipe(new Throttle({rate: 10})).pipe(process.stdout)

`ThrottleGroup` allows the creation of a group of streams whose aggregate bandwidth is throttled. The constructor accepts the same `opts` argument as for `Throttle`. Call `throttle` on a `ThrottleGroup` object to create a new throttled stream belonging to the group.

For example, the following code creates two HTTP connections to `www.google.com:80`, and throttles their aggregate (downstream) bandwidth to 10 KB/s:

    var addr = { host: 'www.google.com', port: 80 };
    var tg = new ThrottleGroup({rate: 10240});

    var conn1 = net.createConnection(addr),
        conn2 = net.createConnection(addr);

    var thr1 = conn1.pipe(tg.throttle()),
        thr2 = conn2.pipe(tg.throttle());

    // Reads from thr1 and thr2 are throttled to 10 KB/s in aggregate

## Command line usage

This package installs a `throttleproxy` binary which implements a command-line utility for throttling connections. Run `throttleproxy -h` for instructions.

## Contributing

Feel free to open an issue or send a pull request.

## License

BSD-style. See the LICENSE file.

## Author

Copyright © 2013 Tiago Quelhas. Contact me at `<tiagoq@gmail.com>`.

---
_Source: https://npm.io/package/stream-throttle · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
