NodeJs Super Simple Rate Limiter : susi-rali.
This tool offers a way to rate limit a given action acting as client point of view. (In state this project is not designed to apply to rate limit server handlers and return 429 error for example)
Features
- limitedCall - rate limited business promise method with result.
Susi super limitations:
- BETA: this project is in beta state. limit have not yet been evaluated. Input validation is light
- dont scale up: as this project dont yet rely on shared storage (ex. db or redis), usage must be limited to one instance.
install susi-rali
npm install susi-rali
then let's go:
const SusiRali = require('susi-rali')
const windowsMs=1000;
const maxQueryPerWindow=10;
const susi = new SusiRali({windowsMs, maxQueryPerWindow});
await susi.limitedCall(() => businessCode("businessArg"))
.then((businessResolved)=>console.log(">" + businessResolved));
This section describes SusiRali available options.
Note about options precedence: first take option value from constructor if any, or else apply default value.
windowsMs
: Rate limit windows size in milliseconds - optional with default value:1000
maxQueryPerWindow
: Rate limit max query per windows size - optional with default value:10
maxProcessingPerWindow
: Rate limit max query processing per windows size - optional with default value:maxQueryPerWindow
You're not a dev ? just submit an issue (bug, improvements, questions). Or else:
- Clone
- Install deps
- Then mocha tests
git clone https://github.com/creharmony/susi-rali.git
cd susi-rali
npm install
# play tests
npm run test
# play different parallel configurations
npm run manual
- you could also fork, feature branch, then submit a pull request.
badge | name | description |
---|---|---|
Github actions | Continuous tests. | |
Github actions | Continuous vulnerability audit. | |
Houndci | JavaScript automated review (configured by .hound.yml ) |
|
GREN | Automated Release Notes by gren |