{"_id":"@aftership/rate-limiter","_rev":"13-9c6990360692e36a104c383905f1beff","name":"@aftership/rate-limiter","description":"Rate limit for Node.js, with ioredis client","dist-tags":{"latest":"3.0.2"},"versions":{"2.0.2":{"name":"@aftership/rate-limiter","description":"The Real Redis Rate Limiter for Node.js, accept ioredis client only for redis cluster","version":"2.0.2","homepage":"https://github.com/AfterShip/rate-limiter","author":{"name":"AfterShip","email":"support@aftership.com","url":"https://www.aftership.com"},"repository":{"type":"git","url":"git://github.com/AfterShip/rate-limiter.git"},"bugs":{"url":"https://github.com/AfterShip/rate-limiter/issues"},"scripts":{"test":"mocha"},"licenses":[{"type":"MIT","url":"https://github.com/AfterShip/rate-limiter/blob/master/LICENSE-MIT"}],"main":"./lib/index","engines":{"node":">= 0.10.0"},"dependencies":{},"devDependencies":{"mocha":"^2.2.1","redis":"^0.12.1","should":"^5.2.0"},"keywords":["redis rate limiter","redis rate limit","redis limiter","rate","ratelimiter","ratelimit","limiter","limit"],"gitHead":"79d5125dcc1c73ca009f2ba3d7eabf5c516b1da3","_id":"@aftership/rate-limiter@2.0.2","_shasum":"57da37db299c3077155ff65cd212d7c64a36db09","_from":".","_npmVersion":"2.10.1","_nodeVersion":"2.1.0","_npmUser":{"name":"aftership","email":"support@aftership.com"},"dist":{"shasum":"57da37db299c3077155ff65cd212d7c64a36db09","tarball":"https://registry.npmjs.org/@aftership/rate-limiter/-/rate-limiter-2.0.2.tgz","integrity":"sha512-tgide/pa0y/K+1ZeywMYo7j9Z8Weiq1b8PcIyGOarDxqkuskigoPPRbfcHbvy9ob+ULOa08odF1nk+Oqqk1Gwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0B0q3hAVrfKrMzcWR27PpJMfGB9+Q5mTU/pz9EI6lHAiB4pPBghgLEGd0a1nQORPvOWD8bp/3HnETlg5bDwkjBbA=="}]},"maintainers":[{"name":"aftership","email":"support@aftership.com"}],"directories":{}},"2.0.3":{"name":"@aftership/rate-limiter","description":"The Real Redis Rate Limiter for Node.js, accept ioredis client only for redis cluster","version":"2.0.3","homepage":"https://github.com/AfterShip/rate-limiter","author":{"name":"AfterShip","email":"support@aftership.com","url":"https://www.aftership.com"},"repository":{"type":"git","url":"git://github.com/AfterShip/rate-limiter.git"},"bugs":{"url":"https://github.com/AfterShip/rate-limiter/issues"},"scripts":{"test":"mocha"},"licenses":[{"type":"MIT","url":"https://github.com/AfterShip/rate-limiter/blob/master/LICENSE-MIT"}],"main":"./lib/index","engines":{"node":">= 0.10.0"},"dependencies":{},"devDependencies":{"mocha":"^2.2.1","redis":"^0.12.1","should":"^5.2.0"},"keywords":["redis rate limiter","redis rate limit","redis limiter","rate","ratelimiter","ratelimit","limiter","limit"],"gitHead":"735a701aded1289eb0c0981b6128bd000467da61","_id":"@aftership/rate-limiter@2.0.3","_shasum":"f4560806a9e4d744ab26938bdf60a036f37be230","_from":".","_npmVersion":"2.11.0","_nodeVersion":"2.2.1","_npmUser":{"name":"aftership","email":"support@aftership.com"},"dist":{"shasum":"f4560806a9e4d744ab26938bdf60a036f37be230","tarball":"https://registry.npmjs.org/@aftership/rate-limiter/-/rate-limiter-2.0.3.tgz","integrity":"sha512-y0CW9wTozXiWJY2IOdBaHhxkMNZTjkRZPd/O/OcPOdEA76p9biRXH1m8jvOCkoudxJTVp8SMhfTsvUY6A1AmQA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDH9fnaqUF+Rxr4AZ0BlBDgHxBTTEsUl11+Z9aXZSEOfgIgUOM3ikELm/Cq/PceKQevJy4vl3e2N8wCq8Sy9KciqVI="}]},"maintainers":[{"name":"aftership","email":"support@aftership.com"}],"directories":{}},"2.0.4":{"name":"@aftership/rate-limiter","description":"The Real Redis Rate Limiter for Node.js, accept ioredis client only for redis cluster","version":"2.0.4","homepage":"https://github.com/AfterShip/rate-limiter","author":{"name":"AfterShip","email":"support@aftership.com","url":"https://www.aftership.com"},"repository":{"type":"git","url":"git://github.com/AfterShip/rate-limiter.git"},"bugs":{"url":"https://github.com/AfterShip/rate-limiter/issues"},"scripts":{"test":"mocha"},"license":"MIT","main":"./lib/index","engines":{"node":">= 2.0.0"},"dependencies":{},"devDependencies":{"grunt-bumpup":"^0.6.2","grunt-contrib-jshint":"^0.11.2","grunt-exec":"^0.4.6","grunt-git":"^0.3.4","ioredis":"^1.5.5","mocha":"^2.2.5","should":"^7.0.1","time-grunt":"^1.1.1"},"keywords":["redis rate limiter","redis rate limit","redis limiter","rate","ratelimiter","ratelimit","limiter","limit"],"gitHead":"b4474cbc46dde56427503cfd5125e0184e74d65e","_id":"@aftership/rate-limiter@2.0.4","_shasum":"51fcba745e8f73696c7b5927d1e9402a3f60b713","_from":".","_npmVersion":"2.11.0","_nodeVersion":"2.2.1","_npmUser":{"name":"aftership","email":"support@aftership.com"},"dist":{"shasum":"51fcba745e8f73696c7b5927d1e9402a3f60b713","tarball":"https://registry.npmjs.org/@aftership/rate-limiter/-/rate-limiter-2.0.4.tgz","integrity":"sha512-E4yrqqpmGallyLEd9uBPvOthvG2hU+ZKlm12sAs9atK/sgXdE23jBVwFYDWKTUc32V9nEpzHIKKe2OmXLwa5kQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAFZwSLiugRgV4Y2ZbI/Aj7A7fVSkiawNE/yZrEv+n1gAiBdP5BHcv/1HuY9e4mpJ6jpfqXPcDqNEIucc8GAWeBu/w=="}]},"maintainers":[{"name":"aftership","email":"support@aftership.com"}],"directories":{}},"3.0.0":{"name":"@aftership/rate-limiter","description":"Rate limit for Node.js, with ioredis client","version":"3.0.0","homepage":"https://github.com/AfterShip/rate-limiter","author":{"name":"AfterShip","email":"support@aftership.com"},"repository":{"type":"git","url":"git://github.com/AfterShip/rate-limiter.git"},"bugs":{"url":"https://github.com/AfterShip/rate-limiter/issues"},"main":"./lib/index","engines":{"node":">= 8"},"scripts":{"lint":"eslint --ext .js .","test":"NODE_ENV=test jest"},"dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.17.1","ioredis":"^4.9.0","jest":"^24.7.1"},"keywords":["redis rate limiter","redis rate limit","redis limiter","rate","ratelimiter","ratelimit","limiter","limit"],"license":"MIT","private":false,"gitHead":"4e08dff135e41ff79a925c55752ce7898441b930","_id":"@aftership/rate-limiter@3.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.14.0","_npmUser":{"name":"aftership","email":"support@aftership.com"},"dist":{"integrity":"sha512-q3Cu8+IixUjO01oj7Euu3PP6m7UkhtBeqKWDXc3g6NnkOuVlsOqkIHje2ij18nCbB+60fmKkyNPi/TnxZD/ilw==","shasum":"78bb9a11f852635d37d90a10b8ff5feafc683d0e","tarball":"https://registry.npmjs.org/@aftership/rate-limiter/-/rate-limiter-3.0.0.tgz","fileCount":14,"unpackedSize":181611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctEzTCRA9TVsSAnZWagAA7twP/RpvhXq6tuODx1Idnbgu\nkeP2bnr03kpA8uRsulRK6YCTGGdIyEp8fI5sSKphvd3izwDN22oQsmLt64kt\nvYXipaoDn/OlIjjw/DH4zbpz6i5xqFEy1woRjpkygrWvCPwpNokWtcg4zgVm\nPflhpgFtwNOY0RVFc25LqDl/AEXUd71PATYl7klIrw7NCIHGb4q8GSvhWg10\nhHiyBynuUIZZe5S3FaEB3RjEP25ftQNKKKQ3MKKaQJX4WDoLZtK85CQlDdA+\nVcZ94y6Dm5CqOVNLtVD6AdLB0v5kLm/d+medS6XOLcjTIQM51yiDEUar5T9u\nF5poukgc+Xds5QVVaq/x1RVR7baed82BYTP3l6V/uF/VyO/O4tnvFvuHiuej\nNOy23GhhK9YKyHMfoOzkjICJvPT3HR77Wpa5ZTambUrMz2HlGfTatVm21gOz\nlnrzn+kz4F/x0nZy7OLpSjftZmsvhRtiuWiofRxKtE3etWulKspaFere+xwS\nEtXoLBbnzmM6/JYL61zXEwNHoGoGA0BJk7Y/cjgfybbaiY1qePTB78kTCcnr\nGAjcM5krOt35/k6Qi9lyHLwUWwSkJMJb3NBRSoCWj8qS2ihd4KQy5HgB33Te\n+l6jrOFxvMBtgyKjxo97/C7gbK6R58+rInk4TjQz1oTS3RWwEHu7aEAw3nMj\ng9Tp\r\n=o0Dx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF2Kz+liCYRhxihGlMiRK/O8Kp/B6ZoXzVaCAqn6B9esAiAjOp5u3VhKjtsp1pwvBuZ9aVnf93/FRz1/xfAZJCpptg=="}]},"maintainers":[{"name":"aftership","email":"support@aftership.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rate-limiter_3.0.0_1555320018887_0.7272936444987126"},"_hasShrinkwrap":false},"3.0.1":{"name":"@aftership/rate-limiter","description":"Rate limit for Node.js, with ioredis client","version":"3.0.1","homepage":"https://github.com/AfterShip/rate-limiter","author":{"name":"AfterShip","email":"support@aftership.com"},"repository":{"type":"git","url":"git://github.com/AfterShip/rate-limiter.git"},"bugs":{"url":"https://github.com/AfterShip/rate-limiter/issues"},"main":"./lib/index","engines":{"node":">= 8"},"scripts":{"lint":"eslint --ext .js .","test":"NODE_ENV=test jest"},"dependencies":{},"devDependencies":{"eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.17.1","ioredis":"^4.9.0","jest":"^24.7.1"},"keywords":["redis rate limiter","redis rate limit","redis limiter","rate","ratelimiter","ratelimit","limiter","limit"],"license":"MIT","private":false,"gitHead":"97dcd18a08409a72808c718ebc3793afcd032c44","_id":"@aftership/rate-limiter@3.0.1","_shasum":"eb1341d9fbf901a8c21aad2079f3d4457aa238fc","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.7","_npmUser":{"name":"aftership","email":"support@aftership.com"},"dist":{"shasum":"eb1341d9fbf901a8c21aad2079f3d4457aa238fc","tarball":"https://registry.npmjs.org/@aftership/rate-limiter/-/rate-limiter-3.0.1.tgz","integrity":"sha512-u0j2MLTFcWrMGmv5rFEiCV8Jj+9NYs2zPZTXutxTY+G113ruUIpN04nY+xpoyxUI0kYuvrWjzYhvT7qSbcWGuQ==","fileCount":13,"unpackedSize":181473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcx8yuCRA9TVsSAnZWagAAT+gQAJaUxJN4nWUxJZxkpPG8\nZe7RzyNC42/g/i+MIuLqOef5KK+/nHS4is8+38PciXTNcDRpxlbCc2OYJ96w\ngCn/ugfwDRYiYxa1g4XOV//02NATetcHI41TxjcK/NOt7FPirRp0R+8zo+Aw\nZF/9XOJpdPmho7ObdB50B5bNHsYrqRFsR1yzXkQPNHi49wPn18SAoSUOIgBW\nwvfYj1EH5Ts6UFqrOKgW46YpAolZUCyr3dRtRAf56Oif/5A5yndc0dZzmV7y\nEfGgQIFLDAw9uCG0Q0K/hGFYun0Bln3Jxn8mjKyzP4Cwqr7xq2pWYs+eYAs1\nPWPNr/Q1nNC68a+GaMss9n7sM+QDBYsymkFNW1WTAabrLGzYxV5WczOTKarX\n3ozezM7rap/olFMPcJgbBQx/7+H4lbEDL2kv8irEAK1JuJrOtrbS39A7VCqK\nnSHmPn9AHWtDjq0bQZtRA8rSoNZPQ8VQY9XMAXEKT7rkfWIvtN8gZ04kCLfq\nUwcLKEntCGFAe3V4RmEZgpd04gtWawG5j1qGrvneehzNXd9DUVsalRrg2nP5\nacLmWshnJtU8GldtBUcEGM0fxdy08iui3KRyIXQrgo9FMoUDsPFqmMtGMgiB\ncVAj6SouOR8/gRklNTcJykz0L0QhhYlABbHRQHaGEUqpI2C4kkBtBI9Q+NfG\n9bkN\r\n=9+fm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFlWVn0umjWF/4oIUGs1H8csBJkNEvb5ouPvZhOvY8N7AiEA27cUE7cgJv9W7tvcEd3HfUBFd2NI6r1QMJo5YX+pb9w="}]},"maintainers":[{"name":"aftership","email":"support@aftership.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rate-limiter_3.0.1_1556597934177_0.11264877132282103"},"_hasShrinkwrap":false},"3.0.2":{"name":"@aftership/rate-limiter","description":"Rate limit for Node.js, with ioredis client","version":"3.0.2","homepage":"https://github.com/AfterShip/rate-limiter","author":{"name":"AfterShip","email":"support@aftership.com"},"repository":{"type":"git","url":"git://github.com/AfterShip/rate-limiter.git"},"bugs":{"url":"https://github.com/AfterShip/rate-limiter/issues"},"main":"./lib/index","engines":{"node":">= 8"},"scripts":{"lint":"eslint --ext .js .","test":"NODE_ENV=test jest"},"dependencies":{},"devDependencies":{"eslint":"^7.5.0","eslint-config-airbnb-base":"^14.2.0","eslint-plugin-import":"^2.22.0","ioredis":"^4.17.3","jest":"^26.1.0"},"keywords":["redis rate limiter","redis rate limit","redis limiter","rate","ratelimiter","ratelimit","limiter","limit"],"license":"MIT","private":false,"gitHead":"5ce38dafafbf242b7a25bc61ebad57d72273af93","_id":"@aftership/rate-limiter@3.0.2","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-EzqCLJ22BjaGergge7TUDKqRW363nTaIOR0Cv/JkjaHCXAZJhIKBY9x+geLzj0p54eQ163ey6VzFmq1JfRPFSQ==","shasum":"f21c18002628719a99bc01f1780b8543a8b5ab98","tarball":"https://registry.npmjs.org/@aftership/rate-limiter/-/rate-limiter-3.0.2.tgz","fileCount":12,"unpackedSize":11382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIPreCRA9TVsSAnZWagAAqm0P/Ag5bFx5HHpG4L/D6pok\n9WEyxC7Qxa/rt4pgPF4mYHi8NkEylxyHgq7ub9b0DuNiBL7qcWq+GWac3jW0\nChvyvAzFTPY5SCd2DXwbB/E9FgWDYFM6qlyX81+6m1fn5SV2vBm1HZHn3B2o\nBWr4ksjPY78jW+dKdNzQI8qYYSahAwdaCQMdkTQBL0ANUijq+XHialeqrhI5\nKIjWmdvT6X2u/b7yhS4Z++6mToFfH5n4MSOVnqxU2e5mzVdrPMhk8KSrVQWm\nqb7+r5FSUMvX0xGaGJZMzU88JsGCExo84/zatwLsMH2qMfCVAcz1yirhig88\nMDpkOixH4QhHJhcZiLkyhlqXul+C0nftFjRzSEcChZ602utsePJevyLOj3p7\nG8tW3hIjgi/hE2i66qMRueQRwg/0d3FN5EmTNY+Wro+UbMlv3teTQBpNzSl6\npwe5WQkrF6AgZtRAn2ic3THoP4bKD9neVYuo5JiIoHh3G4GjhsB/gYyWugfw\nFwj8QPMyhwVxReq9VavZ6yjoH5udvm9GEB2DEK4x3LX8npXh5B7CVWypCzU1\nvaK8qggu/8N5ri8W0MTeM9wQjBl6Ka8avuuhyT1BHrke1gOKOfge5A8oT6qb\nuB4R/diytor13T1z2iWCaJPGO0qIDEZBQrJzYRTw8BHgoon0T2E0xoD3sI00\n3Zus\r\n=NmD1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyYHvGCgdVUVBniFS1hAE97cY6m5LWma4y3iqfANa1XAIgWa3An1yYj5ZHPyw4MGJVhsrT5MbK3BQCBmkjrTSm5e8="}]},"maintainers":[{"name":"aftership","email":"support@aftership.com"}],"_npmUser":{"name":"aftership","email":"support@aftership.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rate-limiter_3.0.2_1595996894193_0.36513121285934425"},"_hasShrinkwrap":false}},"readme":"# rate-limiter\n\n[![Build Status](https://travis-ci.org/AfterShip/rate-limiter.svg?branch=master)](https://travis-ci.org/AfterShip/rate-limiter)\n[![codecov.io](https://codecov.io/github/AfterShip/rate-limiter/coverage.svg?branch=master)](https://codecov.io/github/AfterShip/rate-limiter?branch=master)\n\n[![node](https://img.shields.io/node/v/@aftership/rate-limiter.svg)]()\n[![npm](https://img.shields.io/npm/v/@aftership/rate-limiter.svg)]()\n[![npm](https://img.shields.io/npm/dm/@aftership/rate-limiter.svg)]()\n\n\nRate limit for Node.js, with ioredis client\n\n## Installation\n\n```\nnpm install @aftership/rate-limiter\n```\n\n## Dependency\nThe client must be an instance of `ioredis` library.\n\n## Examples\n\n```javascript\nconst Limiter = require('@aftership/rate-limiter');\nconst Redis = require('ioredis');\n\nconst redisClient = new Redis({\n\tport: 6379,\n\thost: '127.0.0.1',\n\tdb: 0\n});\n\nredisClient.on('connect', (err) => {\n\tif (err) {\n\t\tconsole.log(err);\n\t\treturn;\n\t}\n\n\t// limit to 2 request per every 10s\n\tconst limiter = new Limiter({\n\t\tredisClient,\n\t\tkey: 'the-user-api-key',\n\t\tlimit: 2, // default is 10\n\t\tduration: 10 // default is 60s\n\t});\n\n\tlimiter\n\t\t.get()\n\t\t.then((result) => {\n\t\t\tconsole.log(result);\n\n\t\t\tif (result.remaining >= 0) {\n\t\t\t\tconsole.log('I can do the request!');\n\t\t\t} else {\n\t\t\t\tconsole.log(`I run out of limit! Try again after ${result.reset} second.`);\n\t\t\t}\n\t\t\tprocess.exit(0);\n\t\t})\n\t\t.catch((e) => {\n\t\t\tconsole.log(e);\n\t\t});\n});\n\n```\n\n## Change log\n\nPlease refer to release page\n\n\n## License\nCopyright (c) 2019 AfterShip\n\nLicensed under the MIT license.\n","maintainers":[{"name":"aftership","email":"support@aftership.com"}],"time":{"modified":"2022-06-12T14:21:02.249Z","created":"2015-06-05T09:05:07.948Z","2.0.2":"2015-06-05T09:05:07.948Z","2.0.3":"2015-06-25T08:14:17.223Z","2.0.4":"2015-06-25T09:10:46.908Z","3.0.0":"2019-04-15T09:20:19.100Z","3.0.1":"2019-04-30T04:18:54.332Z","3.0.2":"2020-07-29T04:28:14.339Z"},"homepage":"https://github.com/AfterShip/rate-limiter","keywords":["redis rate limiter","redis rate limit","redis limiter","rate","ratelimiter","ratelimit","limiter","limit"],"repository":{"type":"git","url":"git://github.com/AfterShip/rate-limiter.git"},"author":{"name":"AfterShip","email":"support@aftership.com"},"bugs":{"url":"https://github.com/AfterShip/rate-limiter/issues"},"readmeFilename":"README.md","license":"MIT"}