susi-rali
v0.2.3
Published
super simple rate limiter nodejs
Downloads
35
Maintainers
Readme
susi-rali
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.
Quick start
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));
Advanced usage
SusiRali options
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
How to contribute
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.
Services or activated bots
| 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|