superlimiter
Installation
$ npm i superlimiter -S
Example
Use for koa frequency limit
const Koa = ;const Limiter = ; const limiter = redis ttl: 60 max: 10 { if !ctxsession || !ctxsessionuser return ''; return ctxsessionuseraccount; }; const app = ; // user sessionapp; app; // other middlewares... app;
API
constructor
-
client
The redis client -
options
The options for limiter -
options.ttl
The ttl for frequency limit, default is60
-
options.max
The max count for frequency limit, default is10
-
options.expired
The expired for frequency limit, it should beHH:mm
. If it's set, the ttl will be ignored -
options.hash
The function to get the hash key, default is_.identity
, if return''
, the limit will be ignore -
options.prefix
The prefix for the cache key -
options.err
The error will be throw when count max thanoptions.max
, default isnew Error('Exceeded the limit frequency')
const Redis = ;const Limiter = ; const redis = 'redis://127.0.0.1:6379';const limiter = redis ttl: 10;
seter
ttl
expired
prefix
can be reset
const Redis = ;const Limiter = ; const redis = 'redis://127.0.0.1:6379';const limiter = redis ttl: 10;limiterttl = 60;limiterexpired = '23:30';limiterprefix = 'my-test-';
getter
client
options
ttl
expired
prefix
const Redis = ;const assert = ;const Limiter = ; const redis = 'redis://127.0.0.1:6379';const limiter = redis ttl: 10;assert;// {ttl : 10, .. ..}console;assert;assert;assert;
exec
Inc the count of the key, if the count bigger than max, it will be throw an error, otherwise it will be resolve. If the hash function return ''
, it will be resolve without any change of count.
...args
The arguments for the hash function
const Redis = ;const Limiter = ; const redis = 'redis://127.0.0.1:6379';const limiter = redis ttl: 10;limiter;
getCount
...args
The arguments for the hash function
const Redis = ;const Limiter = ; const redis = 'redis://127.0.0.1:6379';const limiter = redis ttl: 10;limiter;
middleware
type
The middleware's type, it can bekoa
orexpress
, default iskoa
.
The middleware for koa and express. For koa, it will use ctx
for the hash argument. For express, it will use req
, res
for the hash argument.
const Koa = ;const Limiter = ; const limiter = redis ttl: 60 max: 10 { if !ctxsession || !ctxsessionuser return ''; return ctxsessionuseraccount; }; const app = ; // user sessionapp; app; // other middlewares... app;
keys
Get the keys of this limiter
withTTL
Get the ttl of key if settrue
, default isfalse
const Redis = ;const Limiter = ; const redis = 'redis://127.0.0.1:6379';const limiter = redis ttl: 10; // ["...", "..."]limiter; // [{"key": "...", "ttl": ..}, ...]limiter;