An ezier ratelimiter for nodejs.
npm install @ezier/ratelimitEzier Ratelimiter
!npm bundle size !npm !NPM !npm
This rate-limiter attempts to keep it e-z, with no additional functions.
All in all a basic package to rate-limit your clients.
Also used in the Fronvo server
```
npm i @ezier/ratelimit
Setup an instance of EzierLimiter:
`ts
import { EzierLimiter } from '@ezier/ratelimit';
const ezierLimiter = new EzierLimiter({
maxPoints: 10,
clearDelay: 1000
});
`
Consume points for a client:
`ts`
ezierLimiter.consumePoints('client-uid', 5);
Handle a consumption error:
`ts
import { EzierLimiterError } from '@ezier/ratelimit';
ezierLimiter.consumePoints('client-uid', 11)
.catch((err: EzierLimiterError) => {
// EzierLimiterError check
if(err.currentPoints) {
console.log(Client requested ${err.requestedPoints} points when it has ${err.currentPoints} points and maxPoints are ${err.maxPoints}.);[${err.name}]: ${err.message}
} else {
console.log();`
}
});
Register middleware:
`tsAttempting to consume ${requestedPoints} points for ${consumerKey}...
ezierLimiter.$use({
beforeConsumption: ({consumerKey, requestedPoints}) => {
console.log()
},
afterConsumption: ({consumerKey, remainingPoints}) => {
console.log([${consumerKey}]: ${remainingPoints} points remaining.);`
}
});
Stop the rate-limiter:
`ts``
ezierLimiter.stop()
.then(() => {
console.log('The Ezier Ratelimiter has been stopped.');
});
Made by Shadofer with joy.