{"_id":"limiter","_rev":"65-442ba61d51bea07d5863f34fc5a62607","name":"limiter","dist-tags":{"latest":"4.1.0"},"versions":{"0.0.2":{"name":"limiter","version":"0.0.2","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@cull.tv"},"_id":"limiter@0.0.2","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"784da91388a1f6d9a1d056e44f8f253f1b0d9abe","tarball":"https://registry.npmjs.org/limiter/-/limiter-0.0.2.tgz","integrity":"sha512-v3kKbbA5c2VJDLzQ+dBJrOzxzpsggAuw4QeJx4j5W0303Qux8kDJT59tpIaFmrbgbg0frSWYWmH4q0qIphHUEw==","signatures":[{"sig":"MEYCIQD/nTjxfAnDTJKU9Fpe27HiBXcaxiceZ9olkaWk4K1V8wIhALbyiL0eseb8UTG5jNME4pRbT4zqw8FRvRPk60ROVd2g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","engines":{"node":"*"},"_npmUser":{"name":"jhurliman","email":"jhurliman@cull.tv"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"1.1.4","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"_nodeVersion":"v0.6.12","dependencies":{},"_defaultsLoaded":true,"devDependencies":{},"_engineSupported":true,"optionalDependencies":{}},"1.0.0":{"name":"limiter","version":"1.0.0","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@cull.tv"},"_id":"limiter@1.0.0","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"017dd406145e0ff058ac9b72ba2525543dda716a","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.0.0.tgz","integrity":"sha512-mwKPFpvFXUHVIXFv1Wh42F6Iw33/iRz6oRmFvTyJGGes8xNI8vYSrx1RbzAoXNxzLa0LFoWq844F4jqSengJsw==","signatures":[{"sig":"MEYCIQDUho3STv8z/b90+HNJmpLdNodzUDbwJXGNAAOC2QouqAIhAICNxfDo41oWQ0oRJdTHlsj9wNyBlETR5qbnQUGVechL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter","type":"git"},"description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"dependencies":{},"devDependencies":{"vows":"0.6.3","assert":"0.4.9"}},"1.0.1":{"name":"limiter","version":"1.0.1","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@cull.tv"},"_id":"limiter@1.0.1","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"72b87782ca42a2a8adc1064aa718c22596c8a7aa","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.0.1.tgz","integrity":"sha512-+atJJ5jSbZA+RzkzbW/7zKoEaqEXBRD3ZsKlNZnVEv9E1qN+9trliixijmKdcDhoMJ7y9lLaNYiUJnSvQve0ZQ==","signatures":[{"sig":"MEQCIECX0Mk0kwQwlvrO64TBOSU8YH1F4JdAEfJfswnhehvfAiBLQPE71zqFdBGWwug1mIXDZYiR+dDi3BGCGjv+EUx9nA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter","type":"git"},"_npmVersion":"1.1.61","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"dependencies":{},"devDependencies":{"vows":"0.6.3","assert":"0.4.9"}},"1.0.2":{"name":"limiter","version":"1.0.2","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@cull.tv"},"_id":"limiter@1.0.2","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"dd89358fccd22facf8372b2f922e4bf33e503d52","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.0.2.tgz","integrity":"sha512-m6iLS31uu9IFFEQcpgrd9+ADgDHVmaWxa2PMnIcnC2rAx89Mja4qOSj2PaA5SEEb004R424OnA13imHLkR78Rg==","signatures":[{"sig":"MEUCICzyCF8fD6FoyFM8i81ZgCitXnXpLD3wyggfw1Jy3+nMAiEAstR7U9+DqTZB6RL4Lc3+hQ9efvl0v9TOv4GdthhM55k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter","type":"git"},"_npmVersion":"1.1.61","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"dependencies":{},"devDependencies":{"vows":"0.6.3","assert":"0.4.9"}},"1.0.3":{"name":"limiter","version":"1.0.3","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@cull.tv"},"_id":"limiter@1.0.3","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"160e7d2c614d05c735d24dc33ccc12a836d1b07a","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.0.3.tgz","integrity":"sha512-RqhIwoIxO70oYCm9hn4kh6T/MviXDVyjrY7sDcGM9HsImWtOAE6044hfRPnTHuCXgv0wfUviQ/dZByOegBMEiA==","signatures":[{"sig":"MEUCIFD6+BU52XOXam7zGdGBrmrmvCMdGUa10VBl7CZRPy4GAiEAt4DRYccaTQHwfcJzUM+EEJgqHlEiShWon7aqciLyyt4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter","type":"git"},"_npmVersion":"1.1.61","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"dependencies":{},"devDependencies":{"vows":"0.6.3","assert":"0.4.9"}},"1.0.4":{"name":"limiter","version":"1.0.4","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@cull.tv"},"_id":"limiter@1.0.4","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"441aea9385f807681e29bb606eb6e6bd05f6bd82","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.0.4.tgz","integrity":"sha512-TZ7yp+kF8tg11LnpGEBOrmc3Fm2Q9UwbRdeTSJEu7wogrLUGjNQJTZd+ep3AkGR4oZXOqz1bCHlMdS2/N0WKvA==","signatures":[{"sig":"MEUCID31dEyx96m5JMTn3GUoHxWchi0z9WNhgYKLeMXfrdl2AiEAkG/In5U5UP8R7lE9iw9iQe3E6TaTOQBEl3ErNljfOUo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","_from":".","_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter","type":"git"},"_npmVersion":"1.3.2","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"dependencies":{},"devDependencies":{"vows":"0.6.3","assert":"0.4.9"}},"1.0.5":{"name":"limiter","version":"1.0.5","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@cull.tv"},"_id":"limiter@1.0.5","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"9630b2a0d3bad63203f96e3d96f32f83d442dfc8","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.0.5.tgz","integrity":"sha512-6ujnEuh1MoEGIWBFIuIyx5e4sa4hPQUbfR+TPlDBn3Ba5Vyl8p6teZ5avZIrCnfE1bF0QLqsgfZfUlqBkIMSYA==","signatures":[{"sig":"MEYCIQCDY/3UAgPKYLhMcfDK177fAe+KxAJjm/HHWLhPt4HMZgIhAMDdaE2AaKR0DKGAprgJd0tdPXSA3zds94YHeeE681z8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","_from":".","_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter","type":"git"},"_npmVersion":"1.3.2","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"dependencies":{},"devDependencies":{"vows":"0.6.3","assert":"0.4.9"}},"1.1.0":{"name":"limiter","version":"1.1.0","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"_id":"limiter@1.1.0","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"6e2bd12ca3fcdaa11f224e2e53c896df3f08d913","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.1.0.tgz","integrity":"sha512-PhzR0/ajIk+PLrVY47mtr2Bo37xo/IGsiEI9T9cDjC8lCSmhBh8qk5xGl5O/gf/lQClYk4qMNKP4EsR0odya1w==","signatures":[{"sig":"MEYCIQDgHRytt9Ai/DZcbehTE4N9TmEXeDa5ur+/3xwpFCAl3wIhAIf04aICoFTRI/Igve0j/Qiizk5VdKYgctJ6XBEC2wT/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","_from":".","_shasum":"6e2bd12ca3fcdaa11f224e2e53c896df3f08d913","gitHead":"bf4286a31db48dec2a1a0029bf2ab703dd016b12","scripts":{"test":"vows --spec"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"3.3.5","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"_nodeVersion":"4.1.0","dependencies":{},"devDependencies":{"vows":"0.8.1","assert":"1.3.0"}},"1.1.1":{"name":"limiter","version":"1.1.1","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"_id":"limiter@1.1.1","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"62deeb0000ebbd0ab5a85884f62a27f397864c0d","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.1.1.tgz","integrity":"sha512-/U3lz/EQYwChyy3ZXOm3WbMTubLXdmg2iwH9lMAtwv5tIuIzb0R32Zeynerkh4JEIkgFKPoxLfxZQXFyrmG4Iw==","signatures":[{"sig":"MEUCIQDc6piQCsoFnJPLw+Gbl2N6Nu65/lT+pt2bd3W88RmNQAIgRTViJ+5brT9d3qS3kT3Rs0+us6AvW7qJ2/9zXab6Gpg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","types":"./index.d.ts","gitHead":"110f0243d1662018b8a2e533bae9f237f3212b41","scripts":{"test":"vows --spec"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"5.0.3","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"_nodeVersion":"8.0.0","dependencies":{},"devDependencies":{"vows":"0.8.1","assert":"1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter-1.1.1.tgz_1498115050102_0.8171911591198295","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"limiter","version":"1.1.2","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"_id":"limiter@1.1.2","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"229d8055891c8b11af9e0ee5200e8e09bb3dcbeb","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.1.2.tgz","integrity":"sha512-JIKZ0xb6fZZYa3deZ0BgXCgX6HgV8Nx3mFGeFHmFWW8Fb2c08e0CyE+G3nalpD0xGvGssjGb1UdFr+PprxZEbw==","signatures":[{"sig":"MEYCIQDmTaOiTO+euwDDCeY+smG+zt5LL/GGYATCGMPhXaIFdQIhAL48EGtfMuVto3pmSFsXagkGSkfZ3bzEUlQq3yg127fu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","types":"./index.d.ts","gitHead":"91e2d77fcb0cf25d2ee70a1f7cbdff89d1f41b75","scripts":{"test":"vows --spec"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"5.0.3","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"_nodeVersion":"8.0.0","dependencies":{},"devDependencies":{"vows":"0.8.1","assert":"1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter-1.1.2.tgz_1498339931911_0.9144701363984495","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"limiter","version":"1.1.3","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"_id":"limiter@1.1.3","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"32e2eb55b2324076943e5d04c1185ffb387968ef","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz","fileCount":12,"integrity":"sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==","signatures":[{"sig":"MEUCIQCsMTTR70iw2Pker3nIuQMZWJAAeUEjwDq78FQOw0wbVQIgUGLG0IWkPhC2y92u9S9VlwHm/auwyDwl2BjMBiC703M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1X+MCRA9TVsSAnZWagAAem0P+wV//JZaMPtmSBfEipEn\nvxOW7xpn6TU2IOcc9IrGbV1z2//4jxRcOC31J3uZtYWD+xrJhSGEwqykaByL\n8qbROg7m3g1Q5Na4f8bT1uF/z1r+S+Gd6jaNPV5Lt9/MkO7B2K+YPAM/zD0x\n1pTot7ST0uNEIwdG0Pv/jZklt6/dnz9GDflQ9M0Ph2sAAUGV292ae6ikStNa\n2cgQOvK1KLs4gf9dC8LA4/EXhkuE0l5ca4oJ4bPuhOw1A7e7Tn29m8nx0hxZ\nwNmBljjaMmGnjOHwlXRWH7zPCH/+LdRwvKPP3ktbCPcOCrRts47p8Y6l4OJs\n/Rp7AwN2qWpTvD2qoo95rJOgyloqp4XPARNqp/hKEmCxMDi/qwWZAj4rmklM\nVzcRtZPCKZkaDjI6FxOxN8dsary5eML8HEle4dtO/+8wRUtZq9ygdkjWBhg+\n22BGuRT22URMXo8XA3CqgZWaNh3LQaErVLl3kz1m+1Vdl4CtwH8NVXPmGY2J\n3KEhp1SF2EpVdoYOkng286DlyOQX1kF99EILRjPEMJKR8bYndAJLMRD+2PrH\n42ogRdi/dQfAcQ0qumUKOn3GXvIlAv0YlfWOIok9PPfq2VGez24lbCrw6Amw\nkk11BrTMVD5TTkI5Iywscfa2CEg/LqMdKGChD3Az1kVv/0hZY+VSjzdMeoXh\nKgdF\r\n=Xj7v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./index.js","types":"./index.d.ts","gitHead":"00a1a79b5ad7420249485eb45552c503ac7010e6","scripts":{"test":"vows --spec"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"5.8.0","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"_nodeVersion":"9.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"vows":"0.8.1","assert":"1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter_1.1.3_1523941259481_0.17198524166166895","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"limiter","version":"1.1.4","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"_id":"limiter@1.1.4","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"87c9c3972d389fdb0ba67a45aadbc5d2f8413bc1","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.1.4.tgz","fileCount":12,"integrity":"sha512-XCpr5bElgDI65vVgstP8TWjv6/QKWm9GU5UG0Pr5sLQ3QLo8NVKsioe+Jed5/3vFOe3IQuqE7DKwTvKQkjTHvg==","signatures":[{"sig":"MEUCIEq3QFuO23CPMaFMFfe6Bx47WGgFP41rXROKzNhijWA4AiEAl4qYGUt2qGpg73dlFyRwDu+GYL7PKMrJjVxhfldNSU0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcO98PCRA9TVsSAnZWagAAnQ4P/Rvwb/iz6lU8rGuDxJLm\nZNyEu5phwZ0fxSL4cBNFxi4IsfS91npU6OMpJSV81ELgZHFlGNZ+v/Ty7kBj\noA1IncJewqsx+rvmKIA8CGDdHRmtoUlgDY+R0XLkQ8ayi0RS8dfhKwCENYgS\nwbFC56V4LRNYRPpSoWIZwysj03r5VWTHPF/QcozfDDo7dr1LWQIIJugS7v/5\nmNWE1cm4LKj/m0r0jhmLw0Hj583vhDj4iVxpntYN6B/jgZlKirXdp2Bg+Iwj\nyKEVPuzgAsMOot6qNV2/GfsUb0LqM+PAHpGKTKluTujKqLixx5FALalGt4vj\nyda+QwcjrFogcGACQidO42LhTDUdFsFn7EhAO2KiuxyhDH7aHYF7JTn1mOM1\noqYb7TIr/naB8YFZZ1cETWhwAkwFLzZJ/YcLcSpCrhxklK7ScH6THAgGB7Ym\nprMLKq4NpWwuwgKrqkK+Uzs1afKIK7vvYfF1IiuKyfEeu2iaMAMS7WkEXYVU\nJStGHKu2ZX+DrZ3/6S8nXhexwYGEsv1V0Ja7C9XsPQMQEemgIJrFQ7inFSy7\nB7LDyVszhkPF4x+ZvylBR7Ab+5fciCkA3y2/blWmnpQgRa37dCCaptfW3Kd+\nRCSRGrIh6UzCm+uFrywe50j5YxUmVDOgUrbIW1zvoTS/mUriXrvK6oV3JHcq\nddgY\r\n=eWSY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./index.js","types":"./index.d.ts","gitHead":"cc0ee6134c25cb4bd206801b54984677a3f2c736","scripts":{"test":"vows --spec"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"6.5.0-next.0","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"_nodeVersion":"11.6.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"vows":"0.8.1","assert":"1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter_1.1.4_1547427598874_0.7060644340835409","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"limiter","version":"1.1.5","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"_id":"limiter@1.1.5","maintainers":[{"name":"jhurliman","email":"jhurliman@cull.tv"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"8f92a25b3b16c6131293a0cc834b4a838a2aa7c2","tarball":"https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz","fileCount":12,"integrity":"sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==","signatures":[{"sig":"MEQCIErmi6gvTchXVQcrzkTdk83Cw5v7Do0Z63t1vDG1rEd5AiA9JhV3jWJ4L8rO7OiEua+vpzQMGwB/XMgD+ZlY2TODbg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFSNnCRA9TVsSAnZWagAAp0gP/0AYJYxgQXB891jLLDhG\nQPL2nmUewjqViuVDVxLOPNUV2mF1Zo1BdP5zBYERcge8VotIYPZqPWou5jdl\nhXhQs66tJmPlPRCBQIFfvoHN/V43CxHhpB0SPZ9vwJhchP+Pk56X3lpXqQao\npRGvhIPG4GrxROuON/5Hu+ssexdLOkbb/453naj//EZjtwkuLfk65HWsgEas\n/O6517IxYvw2vmZqghhtqNsQOQImM+gDIRMS7WX4ZKo3CHLpzL0WNtaJ6x6r\nm6HuzcZpsf/Zk4XMOymJN2UFheOXVXckrRMHJPVjhb4RD35bqxsKPrt+bptc\njZP4NBXP+ZJE44giieTr5qc236BwTcRSwBVvq4rl/FK++Mgmh+4yDkEsnrjp\noKJYsxF9Tt8lDEh/aMhmLJ+bCWua1VmJ4n/FodtRYiF1sTdnfTUrTRzWz+qo\n2e9PP4SUBsr3K9dDGn+iMYgniUkmtrgKNB82e+7wLst/3CPH0NppYUsUwcgt\nYR4elerwvtQP4hHhr0kFGtaxvK0dLnHpCuOlaKIsTCOWxAfw/FaTOxBk5EEZ\n+VepIzbDuYGGgoQsYy2qpoSGkoJkyfCeAnwFVTsDI6VeaZFu0KOJhmsONQr/\nqMRw89XGrggv/PDu4x5veIqAdEsiN+717IjycdeimHzmzzJSfdP3nEYzK2ZG\nuXiZ\r\n=AGG2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./index.js","types":"./index.d.ts","gitHead":"b8a770df02add01e51bcf05c7eb3be861cb2aebd","scripts":{"test":"vows --spec"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"licenses":[{"url":"http://github.com/jhurliman/node-rate-limiter/raw/master/LICENSE.txt","type":"MIT"}],"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"6.13.4","description":"A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{"lib":"./lib/"},"_nodeVersion":"12.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"vows":"0.8.1","assert":"1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter_1.1.5_1578443623481_0.19794700927647724","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"limiter","version":"2.0.0","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"license":"MIT","_id":"limiter@2.0.0","maintainers":[{"name":"jhurliman","email":"jhurliman@jhurliman.org"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"09b47001414bd53de3b4c1d70fe1aebe8febe1ba","tarball":"https://registry.npmjs.org/limiter/-/limiter-2.0.0.tgz","fileCount":59,"integrity":"sha512-1Y47ll42xmYYZJpfngHF0wOQSXF1ce8+V4zYixCPLwj9gZ19xTJELAlhQ03bTY/FsMjLkqvRF0R84uaB8/kjlg==","signatures":[{"sig":"MEQCIC+Zao/kUSM/EgJwq+NryoeJEDfhDggNCINQqgic8J3qAiATEET1HhNKnhOCK4DgQwHJIEAEycYkr1pwhcsuYGXZ9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":229343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgie7YCRA9TVsSAnZWagAABgwP/A3Y1f49OR5gMP0et9C5\nNYqA3dcPdhi3H2ht8goV8rO1ec2H0rdbO9+iRXAi3KnfFTc/opeTSbGxZlpE\nJEWTuzubmN/0fRB9bD/YaNqwLhvw5nJ/5P+iXOPqOIzHdpEqHDpms5VSPuAH\n2S7SYnIQzo9fPRECK0BcO/Mu+rFq5+kGl8enbaPFBXbGUvJX1VF979xmS7Jx\nXlTTqjuzq8R5DVbKlHwNj+YUuT9NDgbq1fpwRcKoVLhTYqYpm5k/CEnasZfs\nlRPaLWs3wUOL10hMgcqTmY0xlnaqT4ExCdRWMt4RlWSb0VFiHLoh9kmTzvPS\n4MH06VJteudXVTm0x1y8OLfkGc+lJZEy7h7xrs2UQmkdYIj77OtbvTHUJZW3\nnCZ3bQhl8cnbPYG2U8A0lH0hn90GZ8jZsXhM4eoLqwl/V0Jy7m0TkiQ6qVAX\njzi5tF3FyA0UCwMw6O+SUQHOma72U1meqlwU+UspGBRdG+jeuqKLg58cr5ws\nW+BHo8wIpBZHr2UWNM8WyWiBDsXGdgMg9ClbeMtouZRNbQiT40lHprnWbKx7\nqSIRbZsCuVS4I089z/JklfmRCT72tnV/3q0l9WqwN0jy0jyK0VRlzmG7J6V7\neYyufIGKHunq1iZ3TgjHXbzivqSEDnJGPFchNq4/7uzB3uHjnxlVi0mLlnmG\nLqnR\r\n=kMiG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.js","type":"module","module":"./dist/esm/index.js","browser":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"gitHead":"1038fc4ff4d84402e30cd004d0aabfe6db5904d1","scripts":{"lint":"eslint --fix src","test":"jest src","prepack":"yarn tsc -p tsconfig.json && tsc -p tsconfig.cjs.json"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"6.14.11","description":"A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{},"_nodeVersion":"14.16.0","dependencies":{"just-performance":"4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","eslint":"^7.25.0","prettier":"^2.2.1","babel-jest":"^26.6.3","typescript":"^4.2.4","@babel/core":"^7.13.16","@types/jest":"^26.0.23","@babel/preset-env":"^7.13.15","eslint-plugin-prettier":"^3.4.0","@types/babel__generator":"^7.6.2","@babel/preset-typescript":"^7.13.0","@typescript-eslint/parser":"^4.22.0","@typescript-eslint/eslint-plugin":"^4.22.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter_2.0.0_1619652311951_0.25512713593098346","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"limiter","version":"2.0.1","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"license":"MIT","_id":"limiter@2.0.1","maintainers":[{"name":"jhurliman","email":"jhurliman@jhurliman.org"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"030464e800c031b7f706e27e18f77d2b04e8a4e4","tarball":"https://registry.npmjs.org/limiter/-/limiter-2.0.1.tgz","fileCount":59,"integrity":"sha512-OhORJ29edCj2WVLYEou3AVRYZmobyTOy2A9yvDuwL68teu+vWLLlnJxEBMH4gDXIKlkyCTBL9JDEygSPOiwfMg==","signatures":[{"sig":"MEQCIH9zFhyHVjPLTRLw2/Sqfe9wCunIHQQ8JWLh4+o8PnCkAiBlBXV9fj8cqm29FPKGs7s7YzLuTQU1nANo1YzVeNAa+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":228171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjEQ+CRA9TVsSAnZWagAA+dcP/iaVQWkrhY+kvgx2PxuV\niwtIRXD63fgrBAqKRL04LtFlwnhgx3hUi2IwLm9BhFab8qjqJD0x6oYlSsgG\nPexXlo4Wnn5Uae+/te8Ex+lQ9JrTISFzG/oUCdyMiSQ7vepjJUDCe/kI7NCi\nNORrRK25OH8lb9Uz7R/pcArHY5e9r6EfFTIs316Zzl7ksA23akLtEN8ykl2F\nka3C5cb8XdcM5UaAT6UvGf289wgBe0pXj8t+80ZA9ASv9JDKRNqfJJSw7PzP\n3c1cU+yID9L7GwldiyVsB/TiRpoIL1atsm2035FskNyZK1q4HWOpiij90gmN\nErDBwM1rq1R7eu3DrjeWMYpREAhkfaLvzncdONX9Wyh45PP0APVeqC6Ortby\n26DdS/uZVjZvZBhpKhfB8IWwoweZ8BCQRGJcKaNhyu6m5A1zIhixpCavKvfV\nlRu05XeU87M3vXbft9nmh7FxdPj+6pJQ3tt19e9jwe9mpLJWqKFjWq7vLV+f\ntMBQzyzfs7xgL4/KpFjGKvpSUjqRdO081UvZgxFrioW2ULAqL+1RM5ai3trl\na6r2ZkJxwJXLQEehn48RIAy1GLa8bdTeqlE8rSnTHkN5Ukmkl2szTn5nuzmS\nqSlpZm2mD3JJ2x3YwLo71RCl7vwM2kko0xE0OMdy0ALL7I1Ys2Q3B3kuBVs+\nWNYh\r\n=btHH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.js","type":"module","module":"./dist/esm/index.js","browser":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"gitHead":"d954dfee3da7ddc4fc9599001c5159492005c665","scripts":{"lint":"eslint --fix src","test":"jest src","prepack":"yarn ttsc -p tsconfig.json && ttsc -p tsconfig.cjs.json"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"6.14.11","description":"A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{},"_nodeVersion":"14.16.0","dependencies":{"just-performance":"4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","eslint":"^7.25.0","prettier":"^2.2.1","babel-jest":"^26.6.3","typescript":"^4.2.4","@babel/core":"^7.13.16","@types/jest":"^26.0.23","ttypescript":"^1.5.12","@babel/preset-env":"^7.13.15","eslint-plugin-prettier":"^3.4.0","@types/babel__generator":"^7.6.2","@babel/preset-typescript":"^7.13.0","@typescript-eslint/parser":"^4.22.0","@typescript-eslint/eslint-plugin":"^4.22.0","@zoltu/typescript-transformer-append-js-extension":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/limiter_2.0.1_1619805245885_0.9400197293329025","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"limiter","version":"2.1.0","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"license":"MIT","_id":"limiter@2.1.0","maintainers":[{"name":"jhurliman","email":"jhurliman@jhurliman.org"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"d38d7c5b63729bb84fb0c4d8594b7e955a5182a2","tarball":"https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz","fileCount":59,"integrity":"sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==","signatures":[{"sig":"MEUCIEM8O/+f9kUvuWDUNNqvPp3G6YhDBW96+FnW+0e8NsNgAiEAmZVArjkGYo7oJaRcu88+UgMcPQjGPNUyktq0yVUKDHc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpYUiCRA9TVsSAnZWagAAQOoQAIBstMwYkaLUNDp+5OCE\nerBMVOyzX+LTKsFZW/Fa+leuRsOu45LvSZmMA5KvF67Q9FEh+4UY6rQ9rRXr\nKUsXsuu1BWiCo0DBhPtqNFOeGHXmmgDPkaMxJeujnV9xXjxGpd3VK0unGyd8\nH11bztjv/J/JuHMjyFvoYIQ4FGEGDb2qHjNESWgUsnGRz8yhd7v1jQn0S5Pv\ncZjJnQE89Pcf9aIMIMoTYiIVi46sdC/Ly0JQI66kkPyUVHA0EYtcIU3yHhay\n4ovWhLGBBcVZXg5Pdcvxy5gQqz9i9hfIC6AYUSYTdM9NKme8uAd5CutprnY6\nwX1cS7KcIsluedryzF7BLsxVjke+oXW9LEcF6/XIqP5qCJOBg5Fk6NKZ05mF\nvakk7vaTjpu3/7iDtupFQjwkTfirbK17RBNMAxVeZuFHeMSf2Ijk0+zwD314\n1bE5D1J+3fCxfDWSG+lLzCBmG5ww5WkbFOPZ8ntCBKnRkCQRlljhvt/tp8qj\nbwYtx+ErxBygUWvGTXuSGGrejowNMlmo7Ipc1I5s5IS6n/GBsoo4NZk2OveP\nqHmsLwNELzhULUYjln6wVb2IUgKyAkGDIWZffyChEgpPKGogJLoYn3pbHd7u\ncgUmHlS6QUIgOxYMIKYrcsAY/0e6GOWhLk+Fuap2bDuWwimhhKuuboJjgB7B\nN+kN\r\n=69fJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","browser":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"gitHead":"f448369e0cf1a66e014888d11641bce35c623954","scripts":{"lint":"eslint --fix src","test":"jest src","prepack":"yarn ttsc -p tsconfig.json && ttsc -p tsconfig.cjs.json"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"6.14.11","description":"A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{},"_nodeVersion":"14.16.0","dependencies":{"just-performance":"4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","eslint":"^7.25.0","prettier":"^2.2.1","babel-jest":"^26.6.3","typescript":"^4.2.4","@babel/core":"^7.13.16","@types/jest":"^26.0.23","ttypescript":"^1.5.12","@babel/preset-env":"^7.13.15","eslint-plugin-prettier":"^3.4.0","@types/babel__generator":"^7.6.2","@babel/preset-typescript":"^7.13.0","@typescript-eslint/parser":"^4.22.0","@typescript-eslint/eslint-plugin":"^4.22.0","@zoltu/typescript-transformer-append-js-extension":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/limiter_2.1.0_1621460257894_0.6387654443970874","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"limiter","version":"3.0.0","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"license":"MIT","_id":"limiter@3.0.0","maintainers":[{"name":"jhurliman","email":"jhurliman@jhurliman.org"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"03556b76d1a81f547caeecc6b83ecc6f24495715","tarball":"https://registry.npmjs.org/limiter/-/limiter-3.0.0.tgz","fileCount":61,"integrity":"sha512-hev7DuXojsTFl2YwyzUJMDnZ/qBDd3yZQLSH3aD4tdL1cqfc3TMnoecEJtWFaQFdErZsKoFMBTxF/FBSkgDbEg==","signatures":[{"sig":"MEQCIA1GIX/AKVLo/fxuYv/jVyKxuiRlN3YXceqwU9b1h2PuAiAqj7aBiPW3AkY/8O8Euoe1zsqOHAiJfPlAfq28h/bsHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157923},"jest":{"moduleNameMapper":{"^(.*)\\.js$":"$1"}},"main":"./dist/cjs/index.js","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.js","browser":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"gitHead":"6df4ebb8a8e9e1241318a89b6fcae5627b1e7f55","scripts":{"lint":"eslint --fix src","test":"jest src","prepack":"yarn tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && node ./create-package-json.js"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"10.9.0","description":"A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{},"_nodeVersion":"23.3.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.19+sha512.ff4579ab459bb25aa7c0ff75b62acebe576f6084b36aa842971cf250a5d8c6cd3bc9420b22ce63c7f93a0857bc6ef29291db39c3e7a23aab5adfd5a4dd6c5d71","devDependencies":{"jest":"^29.7.0","eslint":"^9.1.0","prettier":"^3.2.5","babel-jest":"^29.7.0","typescript":"^5.4.5","@babel/core":"^7.24.4","@types/jest":"^29.5.12","@babel/preset-env":"^7.24.4","eslint-plugin-prettier":"^5.1.3","@types/babel__generator":"^7.6.8","@babel/preset-typescript":"^7.24.1","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter_3.0.0_1737761465025_0.4347560489711828","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"limiter","version":"4.0.0","keywords":["rate","limiting","throttling"],"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"license":"MIT","_id":"limiter@4.0.0","maintainers":[{"name":"jhurliman","email":"jhurliman@jhurliman.org"}],"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","bugs":{"url":"http://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"f28da2bc68e4acbde2b229fdb68701031250e93e","tarball":"https://registry.npmjs.org/limiter/-/limiter-4.0.0.tgz","fileCount":51,"integrity":"sha512-3QNOZJP7JbyhqkK8Eq8cgBJB+67reTJAQ8jLTHwRli95GRsVI3DFU8xFQ06U97WG5NWQjRx6SWGldWq+cPETcQ==","signatures":[{"sig":"MEQCIA4/Jd5lpFAaeUF5VoR0u3sw6pf1wEYxv7zq6WjAirnvAiBRe7qpgS48UvNtXBxZcKA49dorugH7SRkdjWq+BK7G5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEHJMlTCePkZ3apTwfKHhPWbbQ7RCywRnZZIBwNjvChyAiAg+c8i4rOgcy0mJvYaDur8GHYEyGn2rBGLcKGB5fZo7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96876},"jest":{"moduleNameMapper":{"^(.*)\\.js$":"$1"}},"main":"./dist/cjs/index.js","_from":"file:../limiter-4.0.0.tgz","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.js","browser":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"lint":"eslint --fix src","test":"jest src","lint:ci":"eslint src","prepack":"yarn tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && node ./create-package-json.js"},"_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"_resolved":"/Users/jhurliman/Documents/Codex/2026-09-08/i-w/work/limiter-4.0.0.tgz","_integrity":"sha512-3QNOZJP7JbyhqkK8Eq8cgBJB+67reTJAQ8jLTHwRli95GRsVI3DFU8xFQ06U97WG5NWQjRx6SWGldWq+cPETcQ==","repository":{"url":"git://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"11.19.0","description":"A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{},"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.19+sha512.ff4579ab459bb25aa7c0ff75b62acebe576f6084b36aa842971cf250a5d8c6cd3bc9420b22ce63c7f93a0857bc6ef29291db39c3e7a23aab5adfd5a4dd6c5d71","devDependencies":{"jest":"^29.7.0","eslint":"^9.1.0","prettier":"^3.2.5","babel-jest":"^29.7.0","typescript":"^5.4.5","@babel/core":"^7.24.4","@types/jest":"^29.5.12","@babel/preset-env":"^7.24.4","eslint-plugin-jest":"^28.11.0","eslint-plugin-prettier":"^5.1.3","@types/babel__generator":"^7.6.8","@babel/preset-typescript":"^7.24.1","@typescript-eslint/parser":"^8.32.0","@typescript-eslint/eslint-plugin":"^8.32.0"},"_npmOperationalInternal":{"tmp":"tmp/limiter_4.0.0_1788922204680_0.3527269244487248","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"_id":"limiter@4.1.0","bugs":{"url":"https://github.com/jhurliman/node-rate-limiter/issues"},"dist":{"shasum":"a9b7a9734fea27bf590d2a8249ca0dba29bb28e8","tarball":"https://registry.npmjs.org/limiter/-/limiter-4.1.0.tgz","fileCount":51,"integrity":"sha512-dx+FIOmHyJSBT6CTOPrVmhcwhfK2cDjM7d0p6oghDYJeMMfGDIVM/83qX+EM9MgQpRxEwu9QLsScocXIWqz+VA==","signatures":[{"sig":"MEUCIQD5DNK/U456JdpkQPBoXPLH//E5COaz768KtzMYGHR6ngIgPnq/UN8DPBPdl41S7ASjva4ifatRJJSckU/LDpPkC1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCJiKmIYFMw3Pba3ud6BqIin7RWErAl1zIfSCK/z+v4FgIhANsuJf8L7jjlwFBG6m5fxN7o2mQnKWQE+8Rp+QuF3KIy"}],"unpackedSize":103090},"jest":{"moduleNameMapper":{"^(.*)\\.js$":"$1"}},"main":"./dist/cjs/index.js","name":"limiter","_from":"file:limiter-4.1.0.tgz","types":"./dist/cjs/index.d.ts","author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"module":"./dist/esm/index.js","browser":"./dist/esm/index.js","exports":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"license":"MIT","scripts":{"lint":"eslint --fix src","test":"jest src","lint:ci":"eslint src","prepack":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && node ./create-package-json.js"},"version":"4.1.0","_npmUser":{"name":"jhurliman","email":"jhurliman@jhurliman.org"},"homepage":"https://github.com/jhurliman/node-rate-limiter#readme","keywords":["rate","limiting","throttling"],"_resolved":"/Users/jhurliman/Documents/Codex/2026-09-09/you-recently-reviewed-node-rate-limiter-4/work/releases/node-rate-limiter/limiter-4.1.0.tgz","_integrity":"sha512-dx+FIOmHyJSBT6CTOPrVmhcwhfK2cDjM7d0p6oghDYJeMMfGDIVM/83qX+EM9MgQpRxEwu9QLsScocXIWqz+VA==","repository":{"url":"git+https://github.com/jhurliman/node-rate-limiter.git","type":"git"},"_npmVersion":"11.19.0","description":"A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","directories":{},"maintainers":[{"name":"jhurliman","email":"jhurliman@jhurliman.org"}],"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.19+sha512.ff4579ab459bb25aa7c0ff75b62acebe576f6084b36aa842971cf250a5d8c6cd3bc9420b22ce63c7f93a0857bc6ef29291db39c3e7a23aab5adfd5a4dd6c5d71","devDependencies":{"jest":"^29.7.0","eslint":"^9.1.0","prettier":"^3.2.5","babel-jest":"^29.7.0","typescript":"^5.4.5","@babel/core":"^7.24.4","@types/jest":"^29.5.12","@babel/preset-env":"^7.24.4","eslint-plugin-jest":"^28.11.0","eslint-plugin-prettier":"^5.1.3","@types/babel__generator":"^7.6.8","@babel/preset-typescript":"^7.24.1","@typescript-eslint/parser":"^8.32.0","@typescript-eslint/eslint-plugin":"^8.32.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/limiter_4.1.0_1789089910643_0.0365609153675166"}}},"time":{"created":"2012-04-17T00:38:04.350Z","modified":"2026-09-11T01:25:10.909Z","0.0.2":"2012-04-17T00:38:05.679Z","1.0.0":"2012-07-17T20:10:01.194Z","1.0.1":"2013-02-26T06:39:53.518Z","1.0.2":"2013-02-26T17:14:37.773Z","1.0.3":"2013-03-20T19:00:10.384Z","1.0.4":"2013-08-02T03:47:13.585Z","1.0.5":"2013-12-31T20:38:01.470Z","1.1.0":"2015-10-28T17:43:46.389Z","1.1.1":"2017-06-22T07:04:11.388Z","1.1.2":"2017-06-24T21:32:12.019Z","1.1.3":"2018-04-17T05:00:59.538Z","1.1.4":"2019-01-14T00:59:58.988Z","1.1.5":"2020-01-08T00:33:43.583Z","2.0.0":"2021-04-28T23:25:12.177Z","2.0.1":"2021-04-30T17:54:06.177Z","2.1.0":"2021-05-19T21:37:38.037Z","3.0.0":"2025-01-24T23:31:05.212Z","4.0.0":"2026-09-09T02:50:04.766Z","4.1.0":"2026-09-11T01:25:10.730Z"},"bugs":{"url":"https://github.com/jhurliman/node-rate-limiter/issues"},"author":{"name":"John Hurliman","email":"jhurliman@jhurliman.org"},"license":"MIT","homepage":"https://github.com/jhurliman/node-rate-limiter#readme","keywords":["rate","limiting","throttling"],"repository":{"url":"git+https://github.com/jhurliman/node-rate-limiter.git","type":"git"},"description":"A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled","maintainers":[{"name":"jhurliman","email":"jhurliman@jhurliman.org"}],"readme":"# limiter\n\n[![CI](https://github.com/jhurliman/node-rate-limiter/actions/workflows/ci.yml/badge.svg)](https://github.com/jhurliman/node-rate-limiter/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/limiter.svg)](https://www.npmjs.com/package/limiter)\n\nControl when work starts in Node.js and browsers. **limiter** provides an\ninterval rate limiter and a hierarchical token bucket, with Promise-based\nwaiting, synchronous admission checks, and no runtime dependencies.\n\nUse it to pace API calls, throttle messages, or budget bytes. Waiting requests\nrun in FIFO order on each instance with one active timer, even with thousands\nof callers. CommonJS, ES modules, and TypeScript declarations are included.\n\n| Choose | When you need |\n| --- | --- |\n| `RateLimiter` | A maximum token count per interval, with continuous refill underneath |\n| `TokenBucket` | Separate burst capacity and refill rate, optionally shared through parent buckets |\n\n## Install\n\n```sh\nnpm install limiter\n```\n\n## Pace work\n\nSave as `example.mjs` and run `node example.mjs`. The first message starts\nimmediately; subsequent messages start at least 250 ms apart.\n\n```js\nimport { RateLimiter } from \"limiter\";\n\nconst limiter = new RateLimiter({ tokensPerInterval: 1, interval: 250 });\n\nawait Promise.all([\"first\", \"second\", \"third\"].map(async (message) => {\n  await limiter.removeTokens(1);\n  console.log(message);\n}));\n```\n\nFor CommonJS, use `const { RateLimiter, TokenBucket } = require(\"limiter\")`.\nCreate and reuse a limiter for each resource whose budget should be shared.\nEach token represents an application-defined unit: a request, a message, a byte,\nor a fractional cost. Work starts after `removeTokens()` resolves.\n\n## Reject instead of waiting\n\n`tryRemoveTokens()` atomically checks capacity and consumes tokens on success.\nThis complete HTTP example applies one shared budget to all incoming requests:\n\n```js\nimport { createServer } from \"node:http\";\nimport { RateLimiter } from \"limiter\";\n\nconst limiter = new RateLimiter({ tokensPerInterval: 10, interval: \"second\" });\n\ncreateServer((request, response) => {\n  if (!limiter.tryRemoveTokens(1)) {\n    const seconds = Math.max(1, Math.ceil(limiter.getWaitTime(1) / 1000));\n    response.writeHead(429, { \"Retry-After\": String(seconds) });\n    response.end(\"Too many requests\\n\");\n    return;\n  }\n  response.end(\"Accepted\\n\");\n}).listen(3000);\n```\n\n`getWaitTime(count)` returns an estimated delay in **milliseconds** without\nconsuming tokens. On `RateLimiter` it accounts for both refill and the interval\nallowance. It returns zero when capacity is currently available. This\n`RateLimiter` helper is new in 4.1; `TokenBucket.getWaitTime()` is available in 4.0.\n\nFor the Promise API with immediate rejection signaling, construct a limiter with\n`fireImmediately: true`: `removeTokens()` resolves to `-1` when denied, otherwise\nto the remaining bucket balance. Invalid inputs still reject the promise.\n\n## Budget bytes and bursts\n\nA standalone bucket starts empty and refills as time passes. This example\nallows a 150 KiB burst after enough idle time and refills at 50 KiB per second:\n\n```js\nimport { TokenBucket } from \"limiter\";\n\nconst bucket = new TokenBucket({\n  bucketSize: 150 * 1024,\n  tokensPerInterval: 50 * 1024,\n  interval: \"second\"\n});\n\nconst chunks = [new Uint8Array(1024), new Uint8Array(2048)];\nfor (const chunk of chunks) {\n  await bucket.removeTokens(chunk.byteLength);\n  console.log(`Ready to send ${chunk.byteLength} bytes`);\n}\n```\n\nSplit any chunk larger than `bucketSize` before requesting tokens. To share a\nbudget, pass another `TokenBucket` as `parentBucket`. A successful removal charges\nthe child and every finite ancestor together; a failed attempt charges none.\n\n## API at a glance\n\n| API | Result |\n| --- | --- |\n| `new RateLimiter({ tokensPerInterval, interval, fireImmediately? })` | A full bucket plus an interval allowance |\n| `new TokenBucket({ bucketSize, tokensPerInterval, interval, parentBucket? })` | An empty bucket with independent burst and refill settings |\n| `removeTokens(count)` | `Promise<number>`: wait, consume, and return remaining balance |\n| `tryRemoveTokens(count)` | `boolean`: consume immediately if possible |\n| `getWaitTime(count)` | Estimated milliseconds until capacity is available; never consumes tokens |\n| `RateLimiter.getTokensRemaining()` | Underlying bucket balance, which can exceed the current interval allowance |\n\nIntervals accept positive milliseconds or `\"second\"`, `\"minute\"`, `\"hour\"`, and\n`\"day\"` (also `\"sec\"`, `\"min\"`, and `\"hr\"`). Token amounts may be fractional.\nAlways handle rejected promises for invalid or oversized requests.\n\n## Additional Notes\n\nWaiting calls to `removeTokens()` are processed in FIFO order on each instance,\nusing one active timer per instance. Concurrent calls are supported. A request\nis charged only when it can succeed; hierarchical buckets debit the child and\nall parents together. Independent children sharing a parent do not have a global\nFIFO order. `tryRemoveTokens()` and `fireImmediately` requests do not join the\nwaiting queue and may consume capacity ahead of waiting requests.\n\n`RateLimiter` combines a continuously refilled token bucket with an interval\ncounter. Its interval starts at construction and resets on the first removal\nattempt at or after the previous interval expires. It is **not** a rolling-window\nlimiter: traffic around an interval boundary can exceed the configured count in\na sliding window. It does not track when your asynchronous work finishes, and it\ndoes not limit simultaneous in-flight operations. Use a concurrency limiter or\nrolling-window algorithm separately when those are your requirements.\n\n`getTokensRemaining()` reports the underlying bucket's balance (possibly\nfractional), not the interval counter's remaining allowance. Use\n`getWaitTime(count)` for a non-consuming cooldown estimate, or\n`tryRemoveTokens(count)` to check and consume in one step. Estimates ignore\nqueued requests and are not reservations; other calls can change availability.\n\nAwaiting two independent rate limiters in sequence does not atomically enforce\nboth limits at the eventual work start: work can collect behind the second\nlimiter. For atomic burst and sustained-rate budgets, use parent/child\n`TokenBucket` instances. Those implement token-bucket limits, not rolling windows.\n\nToken counts and capacities must be finite, non-negative numbers at most\n`Number.MAX_SAFE_INTEGER`; fractional tokens are supported. Numeric intervals\nmust be finite and greater than zero. Invalid input throws `RangeError` (an\nasync call rejects). An oversized request returns `false` from `tryRemoveTokens()`\nand rejects from `removeTokens()`. A standalone `TokenBucket` starts empty;\n`RateLimiter` starts full. For compatibility, `bucketSize: 0` means unlimited\ncapacity and bypasses parents, and `tokensPerInterval: 0` refills a finite bucket\nto capacity on every attempt. These zero values do **not** disable all traffic.\n`RateLimiter` with `tokensPerInterval: 0` accepts only zero-token requests.\n\nTiming uses a monotonic clock. Timers can run late when the event loop is busy;\navailability is rechecked after every wait. Balances use JavaScript floating-point\nnumbers, so fractional results can have normal rounding error. State is local to\nthe instance and is not shared across processes, workers, or machines. Configure\ninstances at the scope of the resource you want to limit; creating a new limiter\nfor every request defeats a shared rate limit.\n\n\n## Upgrading from 3.x\n\nVersion 4 fixes concurrent accounting and waiting behavior. It keeps the existing\nconstructors, methods, CommonJS/ESM imports, and fractional-token support, but is\na major release because these observable behaviors change:\n\n- Token counts and capacities must be finite, non-negative numbers no greater\n  than `Number.MAX_SAFE_INTEGER`. Numeric intervals must be finite and positive.\n  Invalid values now throw `RangeError`, or reject an asynchronous call. Validate\n  configuration and handle rejected `removeTokens()` promises; do not use\n  negative values, `NaN`, or `Infinity` as sentinels.\n- Waiting `removeTokens()` calls on the same instance run in FIFO order. A large\n  request at the front can delay smaller requests behind it. Synchronous calls\n  and `fireImmediately` requests can still consume capacity ahead of the queue;\n  children sharing a parent do not have a global FIFO order.\n- Concurrent requests now respect the interval allowance and charge a hierarchy\n  only once per successful removal. Workloads that previously exceeded their\n  configured limits may wait longer or receive an immediate rejection signal.\n- Remaining balances retain fractional millisecond timing precision. Avoid exact\n  equality checks on fractional balances; use `tryRemoveTokens()` to check\n  whether a request can proceed immediately.\n\nZero-value conventions are unchanged: a standalone `TokenBucket` with\n`bucketSize: 0` is unlimited and bypasses parents; `tokensPerInterval: 0` refills\na finite bucket on every attempt. A `RateLimiter` with `tokensPerInterval: 0`\naccepts only zero-token requests. These settings are not a general off switch.\n\nSee the [changelog](CHANGELOG.md) for the release history and\n[Additional Notes](#additional-notes) for the full timing and queue semantics.\n\n## Development\n\n```sh\nyarn install --frozen-lockfile\nyarn lint:ci\nyarn test\nyarn prepack\n```\n\nCI checks the source and both module distributions. Tests cover concurrent\naccounting, hierarchical buckets, FIFO backlogs, timing boundaries, and invalid\ninputs using deterministic clocks.\n\n## License\n\n[MIT](LICENSE.txt).\n","readmeFilename":"README.md","users":{"ferx":true,"meeh":true,"zeke":true,"cliff":true,"jpepe":true,"panlw":true,"joakin":true,"mimmo1":true,"djjaron":true,"jovinbm":true,"maxidev":true,"markstos":true,"shahzaib":true,"blitzprog":true,"firerishi":true,"milfromoz":true,"ashish.npm":true,"junjiansyu":true,"quocnguyen":true,"robruffler":true,"tarkeshwar":true,"ahsanshafiq":true,"joypeterson":true,"scotchulous":true,"gamersdelight":true,"markthethomas":true,"andersonsantos":true,"shanewholloway":true,"spiros.politis":true,"arcticicestudio":true,"gihankarunarathne":true}}