Gathering detailed insights and metrics for ratelimiter
Gathering detailed insights and metrics for ratelimiter
Gathering detailed insights and metrics for ratelimiter
Gathering detailed insights and metrics for ratelimiter
npm install ratelimiter
Module System
Unable to determine the module system for this package.
Min. Node Version
Typescript Support
Node Version
NPM Version
719 Stars
125 Commits
62 Forks
13 Watching
12 Branches
18 Contributors
Updated on 20 Sept 2024
JavaScript (98.9%)
Makefile (1.1%)
Cumulative downloads
Total Downloads
Last day
-60.1%
36,902
Compared to previous day
Last week
2.2%
406,936
Compared to previous week
Last month
1.7%
1,581,323
Compared to previous month
Last year
246.6%
6,502,941
Compared to previous year
Rate limiter for Node.js backed by Redis.
NOTE: Promise version available at async-ratelimiter.
v3.4.1 - #55 by @barwin - Remove splice operation.
v3.3.1 - #51 - Remove tidy option as it's always true.
v3.3.0 - #47 by @penghap - Add tidy option to clean old records upon saving new records. Drop support in node 4.
v3.2.0 - #44 by @xdmnl - Return accurate reset time for each limited call.
v3.1.0 - #40 by @ronjouch - Add reset milliseconds to the result object.
v3.0.2 - #33 by @promag - Use sorted set to limit with moving window.
v2.2.0 - #30 by @kp96 - Race condition when using async.times
.
v2.1.3 - #22 by @coderhaoxin - Dev dependencies versions bump.
v2.1.2 - #17 by @waleedsamy - Add Travis CI support.
v2.1.1 - #13 by @kwizzn - Fixes out-of-sync TTLs after running decr().
v2.1.0 - #12 by @luin - Adding support for ioredis.
v2.0.1 - #9 by @ruimarinho - Update redis commands to use array notation.
v2.0.0 - API CHANGE - Change remaining
to include current call instead of decreasing it. Decreasing caused an off-by-one problem and caller could not distinguish between last legit call and a rejected call.
$ npm install ratelimiter
Example Connect middleware implementation limiting against a user._id
:
1var id = req.user._id; 2var limit = new Limiter({ id: id, db: db }); 3limit.get(function(err, limit){ 4 if (err) return next(err); 5 6 res.set('X-RateLimit-Limit', limit.total); 7 res.set('X-RateLimit-Remaining', limit.remaining - 1); 8 res.set('X-RateLimit-Reset', limit.reset); 9 10 // all good 11 debug('remaining %s/%s %s', limit.remaining - 1, limit.total, id); 12 if (limit.remaining) return next(); 13 14 // not good 15 var delta = (limit.reset * 1000) - Date.now() | 0; 16 var after = limit.reset - (Date.now() / 1000) | 0; 17 res.set('Retry-After', after); 18 res.send(429, 'Rate limit exceeded, retry in ' + ms(delta, { long: true })); 19});
total
- max
valueremaining
- number of calls left in current duration
without decreasing current get
reset
- time since epoch in seconds at which the rate limiting period will end (or already ended)resetMs
- time since epoch in milliseconds at which the rate limiting period will end (or already ended)id
- the identifier to limit against (typically a user id)db
- redis connection instancemax
- max requests within duration
[2500]duration
- of limit in milliseconds [3600000]MIT
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
Found 5/25 approved changesets -- score normalized to 2
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
license file not detected
Details
Reason
branch protection not enabled on development/release branches
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Reason
27 existing vulnerabilities detected
Details
Score
Last Scanned on 2024-11-18
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More