{"_id":"bottleneck","_rev":"112-bd44e3ada73080238bd210f9e5a9a307","name":"bottleneck","description":"Distributed task scheduler and rate limiter","dist-tags":{"latest":"2.19.5"},"versions":{"0.1.0":{"name":"bottleneck","version":"0.1.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","queues","timing","limiter","load"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"*","browserify":"*","uglify-js":"*"},"homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@0.1.0","dist":{"shasum":"2b2d1db6a3cd60cba7d7737c249bf5c65f55f6f9","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-0.1.0.tgz","integrity":"sha512-dJ1TOvncJwngMnR7hnAq1jmK3hsDeIG4+UjzkXYlxJRfOvNrN1iFW1/Rq0vUYj7ucoWOsMdLhv5sGrPRhJEguw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaXIvn6XcdH8dJQFQ3GjvVnuv0cxLMRdL/H+XFHJRLIAIhAPLK+nSm5NWWvEvbnu+Yw19pTye0sW2uOcz2PfY0klKo"}]},"_from":".","_npmVersion":"1.3.17","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.0.0":{"name":"bottleneck","version":"1.0.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","queues","timing","limiter","load"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"*","browserify":"*","uglify-js":"*"},"homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.0.0","dist":{"shasum":"0974c4de182d871646ece49949b8da6b72b073d6","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.0.0.tgz","integrity":"sha512-YN0vVKxIKoD8QvL9JlEFHdJW25NoH01VwjTdGyM1VAK8SNhIsTKhVIL+oNAjAo7cyhZ0ySJSZsnlD+EICbYuDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+F6faFOqMojJWd6t9WpWtUvh3eKcuAmpfa3/whjtbOQIgXTZafG+gCLpiIpJjcDhYlkBuMLvpTdKkkpLGsmRBUjk="}]},"_from":".","_npmVersion":"1.3.17","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.1.0":{"name":"bottleneck","version":"1.1.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","queues","timing","limiter","load"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.1.0","dist":{"shasum":"53fd302ec68cba6b26b240745ae9759c273eff8c","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.1.0.tgz","integrity":"sha512-ISDLWb8xPJfNNc4fxjFsBjjmAbUtYP4WaGI24Rw3G0Ravx8IQSsGa7fRKMg68sutc2pswK91sBnbh+uKbs5OmQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTYH+1GR863yd+fn83rV47WcCOPrZYkRfuyAYmfPn8mgIhAJIZ4EnTvob0xVOIXrnNo5vFt7wluM79fXukhBRCdGUm"}]},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.1.1":{"name":"bottleneck","version":"1.1.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","queues","timing","limiter","load"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.1.1","dist":{"shasum":"19034a99acba7956f0583d6e9692253fe1f38eaa","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.1.1.tgz","integrity":"sha512-7laFPH7G24zSctqJuakJcp0hsa6XUqnxpK+j1GLem8H3nXElLsEz36g1DAFaAiDIka+9907K6ESUvmhF1+5Tkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICtaQZ6LdppPG+qTvowr4h7lm+PRiht/mgoOZtM8Sxv0AiAw9EX+UIxQe1qNGwe8Ms+OlDlPibQr5HUKAIhZtbIYtQ=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.1.2":{"name":"bottleneck","version":"1.1.2","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","queues","timing","limiter","load"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.1.2","dist":{"shasum":"2168d21f8404078b632ed9a08e8655a238d8f3bd","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.1.2.tgz","integrity":"sha512-i6p1i1wuADcD4F/UowD0VXanASmz2jH6L5pFCukucUpQzK27CuX/oUBjOay4jMeT12PIto956Qj4LgZpe+p5NQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSMAMD33S9nB+/BnM0w0WZ5IqYuseyocm2no+WGFyQWwIhANBNEgOv7yYCKXJEY9vkg3jdwS1wSmzD2HZjw7YQlzYl"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.2.0":{"name":"bottleneck","version":"1.2.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","queues","timing","limiter","load","synchronize"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"gitHead":"bff9c54f255cffef24637d860f85eeb434a9fb8e","homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.2.0","_shasum":"37297eeebe1e4f39bddd40d9cc296125d677777a","_from":".","_npmVersion":"1.4.13","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"37297eeebe1e4f39bddd40d9cc296125d677777a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.2.0.tgz","integrity":"sha512-0IJnue0hj1eGBfd5tRwFoiTk0UohHzaIsNrZy+mOZI4nP4uYqswx3bI5jOEd5R+oDqfAsNVdWzPYfiIyiCEQ1A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUxaCM7YPaKLT/F1qfz+ID1dDf4o7Lv8JjaJ8IijW9BwIgdTNzXvagWTaAUpQF6iu+OsK16GRR8U2z2WeVkDSOjt8="}]},"directories":{}},"1.3.0":{"name":"bottleneck","version":"1.3.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","timing","load","limiter","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"gitHead":"aae77b03c8505f746717104fcab3b795c36dc1d5","homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.3.0","_shasum":"c2e2f65303e3f7e1c1dd42573146f667c4cd1aca","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"c2e2f65303e3f7e1c1dd42573146f667c4cd1aca","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.3.0.tgz","integrity":"sha512-XOGC8Z0jXVGJgU17crMCrj1CHZMSz8jPugmI8IIsAjKenGIRlcb27GwKmjqrAfTtXDCzDDnC9N0f/znk5TCVPw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDqugbRdf8QVaAWjO2Lv8MFqtXFHKgZSCqNQgY9r9+2wIgb4tjnDXk6s1R76i6/CAnEbmGK3G2SvBLQoVSRqK7sxE="}]},"directories":{}},"1.3.1":{"name":"bottleneck","version":"1.3.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","timing","load","limiter","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"gitHead":"f424ad65f8b5a0ccd926a3d7a3ea05a81e789a0a","homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.3.1","_shasum":"58db7a68593d5f19b07a63c2c79014f1e8e885f7","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"58db7a68593d5f19b07a63c2c79014f1e8e885f7","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.3.1.tgz","integrity":"sha512-9PrEHdhM2B0mhwJIAY0d4Npze2Y209EH7uRoDk1QGiYhMR2eh0uYiwcR629/mlxgAFpoMCA2f7xcp99j0rmmDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLegsiEzRi93Daum6sxj9k19XoG12TnnFnnoc8ies2cAIgAKFPuCGnetiutGKC8+h0qO9dOM7R9TQQPhOF23exCNw="}]},"directories":{}},"1.4.0":{"name":"bottleneck","version":"1.4.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","async","rate limiter","timing","load","limiter","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.4.0","dist":{"shasum":"e2358043c7215926c11d8f93082f2d5fdde37d46","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.4.0.tgz","integrity":"sha512-+pW/BQsbu1FBBf36bGRcFXA4t6FMqI0AmLK+JS61M2xfUwkcciskwLxOaZnlwjLO5o9QsulN4xM2/r5LYBvutQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPmZRvFdy7XAXVeRsPva/0QvCCsUL2SZaDNbVJYyyo6AiEAnGB2Kd/giYTMpNWgXDcgKumWgNQ3IkebPyJV4AziZOs="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.4.1":{"name":"bottleneck","version":"1.4.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","throttling","load","limiter","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"_id":"bottleneck@1.4.1","dist":{"shasum":"94fb4be3520f0b467e0de3497efcc7c6bdf8eb3a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.4.1.tgz","integrity":"sha512-NX6jvqk6Xxaeu9SXmyL9AcfgYaWrhp+cpdgSDcLQdeKffrCDR4V5+wYV+ghsZVj8d8aoPSRw58VDp2cXOTKkWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGrbik73vE7SjNpK8qVZ4qRoXpdsJG/YbgRtZ6KFOgZSAiBI+40CBOrRxK7ZwOvvpCdfKKT33bAPukbevO46LQ1kMw=="}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.5.0":{"name":"bottleneck","version":"1.5.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","throttle","throttling","load","limiter","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"_id":"bottleneck@1.5.0","dist":{"shasum":"01b0c3c8fa8ce2937ce6bab0a7cd9d1df6c6209d","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.5.0.tgz","integrity":"sha512-qZ6V8CW77cVCNz+4Wg34DQxF9QVw2A9+cUyBDbLOynMSaelWrmIS3A22NTY5l7ldj7jv3DSHBJUam+BNxU5wKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0HiRy5W1+cU5vEp51paI4K2uhkcn8YSbXRfybxseTYQIhALQUfvOAIaghPp19FIAUpIS2gkdHKu+5fijDxl/sRK9h"}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.5.1":{"name":"bottleneck","version":"1.5.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","throttle","throttling","load","limiter","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"_id":"bottleneck@1.5.1","dist":{"shasum":"9c0f6f1f1f1b784fdf24b85d8e5c968cd0d893e6","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.5.1.tgz","integrity":"sha512-qMrJG+xUgi+72bwHFaL693ehG9VN49VxIK6sZRy/L7N39NFwE5Pof9wgbDRTRmBMeSjdEP/dnrC+c1NFXVZKIg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDtghoEwBx7w3IT2Ov4RZtvsHZppaJoSeO1Jzq6S2nbiAiA/m002TdzaXqH/5fXfu+LXllAkxFTa5kj6CW4CIa/i1g=="}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.5.2":{"name":"bottleneck","version":"1.5.2","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","throttle","throttling","load","limiter","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.7.x","browserify":"*","uglify-js":"*"},"gitHead":"c6401024cd0f6a52cd415693a3f62ff2e7558c97","_id":"bottleneck@1.5.2","_shasum":"900ef137ca9edd2a5c787b87505c3187673c6c04","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"900ef137ca9edd2a5c787b87505c3187673c6c04","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.5.2.tgz","integrity":"sha512-J0MZqT/KTTaFK4OvffJNKPJAQAkBitNzl6Ou0V7sB2/OF9+sBYg1y+P+5vGe+dZPL6ItmrIm162tDPRINM4WpQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDA3sHZqlvV9DWUI+bwxJ1AJzSXFot9V07SEQrv3mfmNQIgMK1slNbdsgcPGvhdtAv51OhgDX/N0MMdWQ2pu1eZwt4="}]},"directories":{}},"1.5.3":{"name":"bottleneck","version":"1.5.3","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.8.x","browserify":"*","uglify-js":"*"},"gitHead":"19301ef268567f73c3aad97796052396f2a26069","_id":"bottleneck@1.5.3","_shasum":"55fa64920d9670087d44150404525d59f9511c20","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"55fa64920d9670087d44150404525d59f9511c20","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.5.3.tgz","integrity":"sha512-aNZqQ6ySAg0ZH0cspQxz0RUQgONYNjiJC82CEQg/0c+NjrBA0Vx6uJI8zOiae+UCiI6ej3JhMxTiqYyi321LjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQCVLfOPrP+Xo9FZU3iIK7+uuEe8qwPnK15at1pnxz6AIhANun6WQVTngJtiFTcoWAhzTM/BoDSGTxLgauEgjIpbk7"}]},"directories":{}},"1.6.0":{"name":"bottleneck","version":"1.6.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"7c47ad429660ce25dae4ed7758b15edc8b3a17a2","homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.6.0","_shasum":"4ca058d1ccfca22dac6cb90c1e03e7bfcd77eb14","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"4ca058d1ccfca22dac6cb90c1e03e7bfcd77eb14","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.6.0.tgz","integrity":"sha512-A+nFdhinlGVWPkjp6184fCfpklDsGrjLmMa77e7K1hK1YZrE0n4YG84lyHNNb0ikRqOqqK7k4ev8cDMMNLupEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC03VfOnBr7kAeExKU1d0o9shXY9okgbhzUiJhNiM3juwIgVqQ4EZSb1J+9x2iGNKggPhSgzXTt0Q+dn4/ul+J+hrY="}]},"directories":{}},"1.7.0":{"name":"bottleneck","version":"1.7.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"bad815ebd01a742e43aef2ae0ff61bfc69d05e7d","homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.7.0","_shasum":"a6d8a75af3b5197ad503386ecc0a747645e2d750","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"a6d8a75af3b5197ad503386ecc0a747645e2d750","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.7.0.tgz","integrity":"sha512-OKO0LlfjTETl/L9uaT4qBuu5DBoooeKVZCV97n1kIBsXo5sHjgESamrEs//bYhjBz5HYMuFM15/7FvmzKhAhTQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRBMZNXtRyPs3ywdljRDZG+pxypIHauGPF5lUWX0hGDAIgRYKwfaKV2Dd0GUn3rFz++hiYCq6y4FKKRtFqIMKfO+I="}]},"directories":{}},"1.7.1":{"name":"bottleneck","version":"1.7.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"https://github.com/SGrondin/bottleneck"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"3dca4674183217cb6a2007ad0dc0468072a7fd3f","homepage":"https://github.com/SGrondin/bottleneck","_id":"bottleneck@1.7.1","_shasum":"78d3807287af67b81baddbd29ff5c7b4e4262a56","_from":".","_npmVersion":"2.7.6","_nodeVersion":"0.10.32","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"78d3807287af67b81baddbd29ff5c7b4e4262a56","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.7.1.tgz","integrity":"sha512-SiEXeBXSVHZ98dY8kOTxTeBaVBQx9CgvT/KfGC7iKsPsyGdRenZ0/8y5tlkVQgNhz6T5GVidp4/X2ztD0u2pcA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHm1CnRaubdmJ8+e5zjCKGD0TavR5RR5Gr1Ye8faG/pAiA2tT4Wnr2iVrSXPr7ulePm4Hr1DhqHvCVfF0RjlzcU2w=="}]},"directories":{}},"1.7.2":{"name":"bottleneck","version":"1.7.2","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"a57ed8b444dc8688fc3afb35a2e0dd6327c5f4ac","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.7.2","_shasum":"9c168b9bd80fc6f29c32aa99f0f60de270426443","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"9c168b9bd80fc6f29c32aa99f0f60de270426443","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.7.2.tgz","integrity":"sha512-gqm9dQqYBzIYTTaoVC51nwekBvuA0PKv37iIzinEgCQwJZGot4RTOhZ2sGq6NH96HD/Jwi8E0ybiPz1UTwNTdw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAI1NtdIkgfPK1ZP+0jfiEn+pqIX6BvwnfouO/oYdUv9AiAc0hlTlWHWHxGSw8sM/fjcott7uA58JPT9PQiCt3d+Pw=="}]},"directories":{}},"1.8.0":{"name":"bottleneck","version":"1.8.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"4f79daf6ffbc742faece8db996ed26df05e50747","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.8.0","_shasum":"9de1eaee4ae4e5db65fd9febcd0cf0e1e2895310","_from":".","_npmVersion":"2.13.0","_nodeVersion":"0.12.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"9de1eaee4ae4e5db65fd9febcd0cf0e1e2895310","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.8.0.tgz","integrity":"sha512-2TuFvcWILstslwqnfZEi1fNE3jTp+8uhOw9Vtff4i3uLq3l3cLvpPdOAr39mr5qAHbHj5CIt2o98ZZo3EADBwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvO5LCZgMETRYMzysAlIRWrnZNlvHGN0vfwDpQThLcgAiA79za+lA6itAhjPaH6bPX/A28z41ndhAT0NzVVVPhujA=="}]},"directories":{}},"1.8.1":{"name":"bottleneck","version":"1.8.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"9d834e84bd3860ec0bf556437438ba5296e8bb25","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.8.1","_shasum":"30498e33146abb6381b98075087e627ead2ae08e","_from":".","_npmVersion":"2.13.0","_nodeVersion":"0.12.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"30498e33146abb6381b98075087e627ead2ae08e","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.8.1.tgz","integrity":"sha512-wSRVBqZKwCwZGqb7lPEkhoelgNB+Y6WsvO5DZIdeJ1DTn18GhdqOY+WSDU4KzlueuQimioGvM/JfAq6W8K/Fdw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHhG//+gJY2Qye4Sec/iQdDV2s+6tmVHkRu8XNcRyTcQIhAJIwbchSFUi6eAx7bM7UjOws+WuAnVDs7YKNayNcdRTb"}]},"directories":{}},"1.9.0":{"name":"bottleneck","version":"1.9.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"ae147bb9cbd9d454156cf1570e0ec0893323fd47","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.9.0","_shasum":"0afe2e22b84624e82881f1f2bccb3f3ee65f2d2d","_from":".","_npmVersion":"2.13.0","_nodeVersion":"0.12.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"0afe2e22b84624e82881f1f2bccb3f3ee65f2d2d","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.9.0.tgz","integrity":"sha512-rb1pxJYfVgcIsqyNSrOcrc60WyXIsV+quPXdfExKdEPrRWbgYX657wYr7Za0vyf1a2IpxwLi77FtZ3RWXok3wA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyYxEl/zV5dnQgZM2w2OGYzWSpzjlY0mCDi3bQDHJNWQIgBDO9zbkd71pNzcrm5JJzW4N1fCddTgYWh7T86WfWYEQ="}]},"directories":{}},"1.9.1":{"name":"bottleneck","version":"1.9.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"echo \"No test specified\" && exit 1","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.9.x","browserify":"*","uglify-js":"*"},"gitHead":"95fc0496f00b8cc12b838929df70c7c88c7d9fb3","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.9.1","_shasum":"85b12b07d29dd054ec0fa7b841b10486af910ed4","_from":".","_npmVersion":"2.13.0","_nodeVersion":"0.12.4","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"dist":{"shasum":"85b12b07d29dd054ec0fa7b841b10486af910ed4","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.9.1.tgz","integrity":"sha512-NJZpypBTTGOEjG/dMOKH7LNkdREsU23+O1FUZFTkJdQSIWf+5FmsgRxrUD/matEKWF0swwRxSCP8j34lBgFZSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7/b+pdj106j7bhlZ1B5vD+gTOF8Sr4gWwva4Fqsp/aAIhAPGAmYqVqfUz87lJUvc0qOAEvdrnh0BD6Yxnwn6OZKpc"}]},"directories":{}},"1.10.0":{"name":"bottleneck","version":"1.10.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.10.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"fefb0a6c5b698a7b1135f12cebe4a956d0c24917","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.10.0","_shasum":"98accafc1d41bede9fa453c10388d7fed32f882f","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.6","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"98accafc1d41bede9fa453c10388d7fed32f882f","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.10.0.tgz","integrity":"sha512-S9LbCXRmSJ4AjStfyozgqBKZ/HkEdUwIyBqH9TWdCdP5nuSlugMesJzp2L74eKA7876oVsCMBOJZ315uTstnqA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCioZH2w4ROE4zQac7M4NPoeb7dKbuwlQWV+lCcP8GF6AIhAIbvvYBTQ2F+4BvED7yV7f0fRxJ7NUm5+aW+CKWGx/9S"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.10.1":{"name":"bottleneck","version":"1.10.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.10.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"8d1c30ebfd850ab1e70f5bd515e1af0515e59ba0","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.10.1","_shasum":"f7aadfa19b9cee25560c3b3e86fe1052546fcb87","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.6","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"f7aadfa19b9cee25560c3b3e86fe1052546fcb87","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.10.1.tgz","integrity":"sha512-JBNuTN9XbXUXzHtoAJ1XlxSmUV/PPyy9VXaTghSXMYbE4lnqqapEW+mHiE7R8NSlax0+X3wZzcaEEKNBSmYQ3Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIvEAOBNcC3vNjD0HijTDiXdR1t8fYhGnyph64kL2LHwIgORwiSz7KBl3QmF/DGlM/w1FXQwYqg/HTRyyZ3oLBtQY="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{}},"1.10.2":{"name":"bottleneck","version":"1.10.2","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.10.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"11f8f4a0501140ff8390f90f88b17baf8bda6bd9","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.10.2","_shasum":"71642a35a0d9a17cd074ac7f08e8757e8b529f3a","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"71642a35a0d9a17cd074ac7f08e8757e8b529f3a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.10.2.tgz","integrity":"sha512-/DU3pxwJfBoUNS1bflzRlUD0ysCHsiND4u7flQxpm0gMzNZ8TyA2JOmAZP3kucb+6iJl7YgRb3SzInmflODdhg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvKOskWX5e3kxrecQf7J9YHwy4pKfVicN7XL1qmd3L1AIgPYlXZ4734Mwb7T6/E9G5JlvOVVkkM4lo73+Q2QUDtUs="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/bottleneck-1.10.2.tgz_1454959557190_0.9819371062330902"},"directories":{}},"1.11.0":{"name":"bottleneck","version":"1.11.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","make":"./scripts/recompile.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.10.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"3d5c285db3e2401842c2755e38694db585eda0ec","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.11.0","_shasum":"af5b6a5450a3a243d1c9716d726676ad3d97f93c","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"af5b6a5450a3a243d1c9716d726676ad3d97f93c","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.11.0.tgz","integrity":"sha512-LQ5/YGdPiDLLXj/OZALp3xqFS70qzWuHPRwo3GdSk5DsUkSXkiZXsqwoFl+bovZrQygsNm5mRgyQbFeg66LJWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeRXmebbzWNLvCgahdwn33InfbYN8Ic5YNc/qDYf/B2gIgMz8CeBB6wFoar+wKivzVr88WdlpwZvCVeZ6xfXddvSc="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/bottleneck-1.11.0.tgz_1458659555544_0.23022021050564945"},"directories":{}},"1.12.0":{"name":"bottleneck","version":"1.12.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.10.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"90cfe03aef0bcb4a8d28d39e4926fc71879545eb","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.12.0","_shasum":"aa2d4027101331c99d9838c4d79cb92916bc23c5","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"aa2d4027101331c99d9838c4d79cb92916bc23c5","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.12.0.tgz","integrity":"sha512-xllYAQE22K+S6+VcUgxjLMfVEevQNnYVtT8esOXeuanN75TiF3Ge8awTYrYd6Xbj3WJOuHgohBrukIG4fjXXYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9/ZDpvMrrPF3lEa9AY3TyEjq71uqIse8JUb0OgdGJeAIhAJ606iGh++d7TiVGZFEGaSrQmMRerDhniBc2O7JWm9LZ"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/bottleneck-1.12.0.tgz_1462652248973_0.1949349967762828"},"directories":{}},"1.13.0":{"name":"bottleneck","version":"1.13.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.11.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"ad2d7fdcfb4e09326e79a5e21b11044d8e970766","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.13.0","_shasum":"ae7c9abfbe48889919dd0115854d92ba115cf12e","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"ae7c9abfbe48889919dd0115854d92ba115cf12e","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.13.0.tgz","integrity":"sha512-RWZieBqmwDMv3DHfuzxzoituZSuQhuKNFTusrxyGrtAMCjzWlstIkei34J0L7JH/ksH2lq8WsruXw0pt16ku9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNHgVTClGdCXWabicYHAEZEO9dYVUyXkdbfXtyTOo1ggIgaO0AyT7MlkaR99tfdFGCq6XjZu/sfQFgVh8chbXfdio="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bottleneck-1.13.0.tgz_1474818583561_0.0026070980820804834"},"directories":{}},"1.13.1":{"name":"bottleneck","version":"1.13.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.11.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"f2242ed84686b655951b9d6fe3798c464a26e3c5","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.13.1","_shasum":"82792e4ed60539a09de25a3c3ab87240aa79a9cd","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"82792e4ed60539a09de25a3c3ab87240aa79a9cd","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.13.1.tgz","integrity":"sha512-8jKoHlYG/Ql4vPAS2SITDtfAc5n3mwUf83SgSx3of6iOTCcZVP9G791A7uOqeuPwHQbbBwVtNtPueRQeC5qT2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYkOyA7TSINNhdpGJexK4xjeWnq4cHwxwoLzS4b3cxpAiEAwhZl/VqeFiniOxiYg8d3sJ/aUcVHmCjNq0maINJYiNc="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bottleneck-1.13.1.tgz_1474818637876_0.43377216067165136"},"directories":{}},"1.14.0":{"name":"bottleneck","version":"1.14.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.11.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"e85979dc44c50ee7b7077e33978ed5a60f814fc9","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.14.0","_shasum":"cb2881131633a0ac89686f69da69a4cfc3956627","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"cb2881131633a0ac89686f69da69a4cfc3956627","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.14.0.tgz","integrity":"sha512-w+oUSBqmKi0ZXbMfVGFZUCGbbX3PNBdRbKBwqgLd+hjv5aAyzQjX1HruWkh9WCOkujVm4UGtyeEqGf663ZgouQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDin9jKb5RgmJNOZw/mOzOV3M/46s4X5NpupOF17wst6gIhAJFUC+OhDjeCTVvKOLiS3CCrhVbnp2C3t2lpbo1QuEC3"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bottleneck-1.14.0.tgz_1475687086397_0.8903959502931684"},"directories":{}},"1.15.0":{"name":"bottleneck","version":"1.15.0","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.11.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"e1f004a34102a6f8967b09c6d619748bb2ce8813","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.15.0","_shasum":"a636f59bc2783d87d5ac7f30ff30a22e440ffbc1","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"a636f59bc2783d87d5ac7f30ff30a22e440ffbc1","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.15.0.tgz","integrity":"sha512-UQ/ArjYmlX6FuMus27H4N7MmmSwMeXoqNXZL7GIEtq6b4ic7KLmG7Nrhymc88p9RuVoyWXehSQO7lwN/5RhYfQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzZZ/YSMErGnf3AWw4NPqLKYelwDjZK1X/nHxCTaTKgwIhAJAgDGYjm2T5e4yWzGKqPLdVM3H68QVBbWJb9d8CgOwZ"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/bottleneck-1.15.0.tgz_1477842487994_0.5333931467030197"},"directories":{}},"1.15.1":{"name":"bottleneck","version":"1.15.1","description":"Async rate limiter","main":"lib/index.js","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.11.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"8242a9d03623d4448212025f261a4fcb617e98d5","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.15.1","_shasum":"fa9fec163e01b7a6c426b87e603e656025ff0145","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"fa9fec163e01b7a6c426b87e603e656025ff0145","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.15.1.tgz","integrity":"sha512-hqN6n6PYzAw/V/wchFPKN97s3U7BtRk3YK6vx668Q3CIKfPQrFNBYIkWBpOXxqJNgj0MhdUgI7E4BuPSA5iRrg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCO1IZ/9i5fhWvGc0BteFYrjvzvc+Rz5/89G4KE8YFh4wIhAKkzy5JFx+YikleRKN+uKJjVlkACam2CtG7UQr+g4COb"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/bottleneck-1.15.1.tgz_1484784447133_0.2313990246038884"},"directories":{}},"1.16.0":{"name":"bottleneck","version":"1.16.0","description":"Async rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test/index.js","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"coffee-script":"1.11.x","browserify":"*","mocha":"*","uglify-js":"*"},"gitHead":"af47014f4daff3f241f987762deba9e074c000f1","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@1.16.0","_shasum":"d6ce13808527afc80b69092f15606655e5b21f1a","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgrondin","email":"jobs@simongrondin.name"},"dist":{"shasum":"d6ce13808527afc80b69092f15606655e5b21f1a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-1.16.0.tgz","integrity":"sha512-HinT6aCt+ZLPVvMtOy8Vd1vQtR2R/Qi06fKRCa4oGiIuFF+CQwNYR/KZTjrEynkER7y9WaY8fhwWKqZp+/aXeg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCum470lv2237HP30WR7V3/UxLyJw20wTVBTOisomoo6QIgGW/nFqzGETWlq9ClMW3KWG/HyDO5rrKkCMTnEtAXBYg="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck-1.16.0.tgz_1497912417945_0.23726055189035833"},"directories":{}},"2.0.0":{"name":"bottleneck","version":"2.0.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","browserify":"*","coffeescript":"2.0.x","ejs-cli":"git://github.com/SGrondin/ejs-cli.git","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"7c22c90969a30257c113b837aeb2d0ed9619369c","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.1","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-s8SEDdl6xOUbGhTe+hCJQuTMBkaB2t51OAvYcY1HuDnRBBLHX5swZTRohwVaDpJjw3/9nKG4uyInsXHVev8PBA==","shasum":"001aef0974a25b2280d8412e0ed51fa479fed429","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWogr78jDN9MbX+Y89/RQ2d8tmcZe67mso8vHUBEHR4AiAraO8nq47kyzS6U1OZ3S0eGyYQSSqF2nh/ObDCLnadCw=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck-2.0.0.tgz_1515956434824_0.34615736827254295"},"directories":{}},"2.0.1":{"name":"bottleneck","version":"2.0.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","browserify":"*","coffeescript":"2.0.x","ejs-cli":"git://github.com/SGrondin/ejs-cli.git","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"f3bf4eac908fce38e700f99be801de509065e20c","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.9.1","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-QtKe8dc5bzZ8G7Cn3q4OySCJonKtl979DajHZoHW0at60x+hq4gT7iHtNUUlNo6CZBv6Av4z1KpcfBY/2/GHpw==","shasum":"2296570b8242ab492c0eecef61224b860ac09288","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCK/0seIFKLMEiyAtg+CoamwEg45GGPdSr4GmhgXeRBwwIhAOCYE4vXXvXCeYq5EUDomtXFNQxIunNlPkasSipvN9p+"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck-2.0.1.tgz_1516117672431_0.1679677809588611"},"directories":{}},"2.1.0":{"name":"bottleneck","version":"2.1.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","browserify":"*","coffeescript":"2.0.x","ejs-cli":"git://github.com/SGrondin/ejs-cli.git","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"bfc32f7aee01a234efe93e0f409047beffac98f5","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-PW3ufZ2Z3E1BEHgYQ0gFqtZMhihmGsbzKKxr/rubWkqGu5y/MJ61p6K3gmHOzuH7Ps2De3a0kjTO6VAgrVQ8pQ==","shasum":"6574a78501d717b3ace434897063f986358a5252","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.1.0.tgz","fileCount":50,"unpackedSize":246792,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnBzEVy6PFzE1IjcRyzqfky61uz6xl8gH4ULnZjtjg0wIgX9s1iAhwyWZA9d2UGe0uagcyMROw61IgAJCTRaq3F2U="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.1.0_1519258243920_0.672501368717553"},"_hasShrinkwrap":false},"2.2.0":{"name":"bottleneck","version":"2.2.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"5fc91e1f555f58a1fe6f32d1d1ef2e69f8d13731","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.2.0","_npmVersion":"5.7.1","_nodeVersion":"9.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-Jeg/aVS2ccQLD8J6ozlr5G15OKpHJs8C5HM2iNYShzZaafnD+/KOW/3oo9DaXc0nFCPAwlpSS8MWljAKqtThvg==","shasum":"31c84b977310c43a638d41fb15f10df23efb005d","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.2.0.tgz","fileCount":55,"unpackedSize":296137,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEGDDm+5WxAC7eR0kLH/xcD1BRZqiB7D8Mal/WXgzRWeAiAfOFf4gMUv1gXkDePrx2Abm2SChJ7qO3CCrH8AhBtdyQ=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.2.0_1520902951275_0.42901384037058143"},"_hasShrinkwrap":false},"2.2.1":{"name":"bottleneck","version":"2.2.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"97feebb0e8efc58d035b3cadb90451d87c896dac","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.2.1","_npmVersion":"5.7.1","_nodeVersion":"9.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-n6tULNqQqF4WI1R2rrPGD2EBv8XA9EEZzED9w9/1GFSLwXeeEjlKkqSNtrfFd4W4Cki1yBhSABho9+VeD883Kw==","shasum":"455449747c5f990ef9a40050eadd7afae34f847e","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.2.1.tgz","fileCount":55,"unpackedSize":298568,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH51YXPlViEhlXo8UOuXacnwSRJpT3DE1PxjqPgFPxJQIhAO1pePAa8marzfkbPV0E1ecK2UqSztSoAHZbYQXcRQTP"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.2.1_1521397823651_0.11040713748303266"},"_hasShrinkwrap":false},"2.2.2":{"name":"bottleneck","version":"2.2.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"da0ab74dabf6c50c5c1c84cbdcb16b6f2dbcae6e","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.2.2","_npmVersion":"5.8.0","_nodeVersion":"9.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-2b24YzUWbbyTdUmCOvIZ8f7CTcVtRpYaFChq63RIZegxIrISTTHGtnK5GqxKS6h1lxUydUF/taMjQvn81gwKTQ==","shasum":"4a9ea7ee3e3d51d37a300b86800488cf21e247b7","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.2.2.tgz","fileCount":55,"unpackedSize":298203,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSTMmNLIgWpcvdj9pSLazxctzFlw8g+Km0yTX6LDD7BQIgUzPmUfYvKTpQY6hxNQRiPwRykNZsR88bq2pjvzqYlYA="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.2.2_1521913896550_0.9055473959393807"},"_hasShrinkwrap":false},"2.3.0":{"name":"bottleneck","version":"2.3.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"73e454207c5b18bf94f9972ce4457756ab8504ce","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.3.0","_npmVersion":"5.8.0","_nodeVersion":"9.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-Zxhe8FRIiFp5/uGRxIt/s26f6bm0Z87BWzPbUUZZGLkXOldRse1I/pqASYKjcth+6D1NOpVjaqD1X6aEqH+GCw==","shasum":"587b89f9b7ea61bb28cd4cb558ee4b4a2da12c7a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.3.0.tgz","fileCount":58,"unpackedSize":313558,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfEj9VnCKEOi31iVVbnCaiyiDuFV9se5yW3vbJgF0aQgIhAOhqOL/oYczMeJ/r3XDWa3nEUnIk89UKTP2Iaoh8a1WE"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.3.0_1523212452004_0.45250167557569565"},"_hasShrinkwrap":false},"2.3.1":{"name":"bottleneck","version":"2.3.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"9fd798d3534d64f8e1ac89a71837dc5031cb58fe","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.3.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-6Ktg80l6qMLlNeRpJjtBsBT8UqYXK7ei4eMwUwk9Q4xOEhmP/MTvmjrd+kQ+EMgLiQFkV4HbZp4cUkMn/Yl0nw==","shasum":"16292092ff040ccbf2d05d0a09d69eab7b1c46bc","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.3.1.tgz","fileCount":58,"unpackedSize":312633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAGqaCRA9TVsSAnZWagAABbEP/jMT29n73ZiOZsA4BwcV\n5ahVkM7tUrIOylBbuSjO9hclF6kVpNChab9ek8/LXL3GC2N8jkni6U47qXJm\nyGDLGjgMlK4+Z/IrT5wg9yXHjp6O6orVnNExOOa6q2BzdXRu2nOY7llGW429\nmWHiRzYRGJfGd7Z/eLbLNt2PBpDP1xbh5jrF0NqJZDCe0Qm9/y/AyV1+excQ\nXNJsdBaWz4e8wO2CZSV91Q8+2nmcB0FWhyP3JaFmvXcuIxrflA2OFOnj5ues\nMdBJ4Ah0QhNl5KQOLUdwvMbA43IHRE2uWbz7rNBy1Z1gliJ5oZuYV2cBZRuQ\nNMDEesTer/6nQsNR3wCFwTp4kAVxjl4YhVk/8jjjIXJ4nvIu6EAEiPkWxFVR\ng9PvTchRZ+pnpaERTiVnfjRxAldUPK5LJVtPGK6z7LElYw3aHTuKJWiTBCLW\nxshiax/Iut8zQnl/9HuPhjL1a8BYibBHxr4V5b2VWv7k3DxVEuCJ0nKX1aLl\nQTnanupfOmuCzIHRyOOcItIpvB8Sz3roJIHYq6Ko2ColCI0tqVjEWbsOY0dM\ncyuesEZgSSihvHtcvwBL6VgL6JtwlKph6Xy8rsgsHsiZYffBEPnWIX2KnYnp\nC0qMTxBlCrbohuCxUfV0eM9yg3DZdOlrTq1Wcw22P0P2RY25XOuZmpwos2I3\nKmWs\r\n=bf2z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE4h2XptAHlPxWBxCdeCrIqsdDh6ci7wxl7E9YrwvkoLAiEApoLLUc0G1Ubg/TlH35+wMd+dWsCM3l2nNu0YT17JsgA="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.3.1_1526753944338_0.8755256537577936"},"_hasShrinkwrap":false},"2.4.0":{"name":"bottleneck","version":"2.4.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"ca30e1c7d69cb220f092a0b8e673429128d161d0","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-xDsWQQSVfpdBLVkP1yP74lDqYtd/nkcgMVtYIthEoKrRqm5plFXCzivukD8odGePBsp5zpiRjWqoW9/y0yTJBw==","shasum":"6cd821fb7a72447fb37a54c3d40cbfae3351868a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.4.0.tgz","fileCount":58,"unpackedSize":313295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHBwzCRA9TVsSAnZWagAAasMP/0sZKjsPQbmN+k9rpS9B\n06bXK2k5MAfIhHkXV9kCrrZErQhN+5/K28r6HCxuQBqWZk3a8q4Nt2uccJk/\nI6elUzNmrDWOQuqFRn54q4+2o6DZ+XnNbUG58Lkz40/A96TVbW9rRvrbCWS9\n1d/53UnxRkrOh9GhH6B4iUU8C79uOilncNvIgspzeK6hUvr34DN+vv8SZnOf\nzNjZ/m+G8qUXR3Z/1t3TPhaOnvoubzuSMcV03a+D/oNMtd6zoOZkIBeI6uAP\neES+Hq+q9ciJPKxX5fvYtqhpT0Txre4UpK6vn+SEI+cvxlqVwhC/yXDc31kD\n2sHtVYwkf0C654mK6kUVnMCpRcO9dg+fEOGg18QdzppAD2N56Ag2y8iOJIN7\n5mKy596mF3T5oe83P00eMtIx8OWY6RZxa8ZcJVToAJXWD53bftFCc4EMDPER\nJ2vWj/DfU4wOiOY4kPTXk4szv8Ne9QlkSI6fn74tdLM//8HYzDkya0vSstNh\nArPiW0OJO9YCyH8aFGpp/TKQS2OnfQeEpnsWoAELojlg5Hsq8syc7r1+1/wn\nM3P9ckpXhjAAq2+5g5DaoAWOOUXmoIS+e6U72sGXQ3rjwfElJpVYShv+OQtu\nKz/MVUOco2cE6ssCVAe394Ln3jlLaL+TxLJw+agtLKQVqJrce/yqnJWSOur9\nONRo\r\n=YyKz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEM8gvZso5Us5q2cOajj27bYTDPfN7hEwDu4dYrHaJUQIgCP2gB5UobSAUEW4Swn15XWhEci8pZCH784vmrHbe+bU="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.4.0_1528568880644_0.019408467899630244"},"_hasShrinkwrap":false},"2.5.0":{"name":"bottleneck","version":"2.5.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"90f76ec2cf085d785477e2ae4202a51e90194686","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.5.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-j19zrMCIe0LmTfCjIDNk4V40z0Plc8ZfjBsfWGOdJhJAAKXqwCOoY2k85N5rUmFerrT9lr6oQWiIIb771je03g==","shasum":"c558524005a7cef5327100b3152f9483fbf8975d","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.5.0.tgz","fileCount":59,"unpackedSize":330286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJV9xCRA9TVsSAnZWagAArXEP/iz9ZWiIhGJXLX2qjs55\nnaeKg2gAkYJ18KIFx5Y9aKZlEBAjYFsBvvHPZ2cJtXYL9g0xJZQV+TUZsZ2L\ncLmvWcrMPJAjQR1AWr6M1VwaQkDtwNfdi6J8fZrK0qxUX1j+2rRWBR2SUSb4\n6VrcoOk3GCtyoifoOvye05lalSTKQZoa7MstYsOFy5s4PXZDLX38ZEKrQx7D\nszX/hTwN/Oiq94IAnSBTBG66fDu5rnT2U0pdW/zi0dFf1oA+/qNYg9LjhrYd\nmEAnLU+Rr+omXD+SRNV47JCe4Zfq1Eo22oZaCh9D35pgrz99ZeLgQKfVdRQs\nVpaE+1k09/aUYfg9GSQR2xz4Z30iplFjPUhm7hajOL/FZjNu/pn2UhSRom2z\n2P+DjJECTSJfVBn8DKRKCkmDnL+x9IKwSnvZeY0Mhk6YNxTdJBpumslTzan4\nFCnPMi2I7bLqX5tzMC1eG5u+tWYMMx5a9H0T8b83ohyW1/Udd4W9ao/aviKG\nHRiPcPIukB2lJ+f2dHb6AqUPo8V37XDULNber0rHHB5Ze7NmUM8dALK9GGoN\niRVAW0UHyPA4v5AUKIDq/6lCryikBa/GSUMI5jo7bTPWlWXGeGeQYAgSDluB\n5fyKbvrmKk17tftgKevjlgswjSH25IUtlgbK/Nm1BNSzkIf7uCQW3qOA7jeC\nrb4r\r\n=J1+9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAn92SaH6gBfUF3X9VhtrwjpBa5rYHkAjdxDJ/tW09LNAiEA23adShqTXX4D38NJq8QtgWdXqLmmalCPkE2h1S+bGN0="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.5.0_1529175919419_0.4256935693469073"},"_hasShrinkwrap":false},"2.5.1":{"name":"bottleneck","version":"2.5.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"347c34ccbe6e31263245a3c6444e650797d3db7d","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.5.1","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-KHP545mlqYBiLgjmXQRyfxdMgvPndxRTFtwFOETrmIvYW5y7foftaMHt6UGR22x1UEBNgJsVxwViUbeDd1K6VQ==","shasum":"ef3bc13fd7e85e7a20d05f7e839642b399c32b72","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.5.1.tgz","fileCount":59,"unpackedSize":330448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOs2rCRA9TVsSAnZWagAAXcwP/RcltxVxQYw8jQ7o9US6\n63B/tlfEU9QpTdWNlxoVhj2kzDPV0mEo8GsNDolnsgbyBj2uihPRaaTObQaU\n1y4GR73wkAntg8s6TSxCx/2Gno8gSLPTPA8UEr5Y0to1GsHA48Eh5POhx0s4\n/zTgGr9P++SPXwI3+BibD6+nqcbmJbOoI2N6dnox0DSTOWd35PIIb1B+GF36\nX9VKt/LuTYs/O33AN2iqVGGJbj3DrrHrizi45N653qbFE+eRUGrWhBwqA/Wv\nLs4CF8riSewKalEaZpK6TCw8+uMbbbeEKE67kwTb2x98Ayts8wbVnceVY7C9\nlLhYp0O0HPlCMgMkv3PQY7me3M0QLeJ3QzNGxLuQAH3tlggFFZWa19ciQEps\nin9JHx3PjY511r4fefObJ8dgHeGyatk1NE4BesUjItUpmzWEnRFhciydaP9g\nap7TYalLz5cQYpPu61rqspmpNImBMHJf8Bh6kpAu6KTTYVlgxKUHEVRfhkWn\npA0TdQ3fyLbBy3Q7S6S+4Qoo7tXFDBL1oy73zwqkXkO/PrbgMqDiPQS+d3Fo\nqDezCv6BHzLvSUmlFeHgGShsZrJKn05jWOhKny1CXe60+IIUICKF1E8ezZyF\nbsz+FzZyycGYm2yJKM+B8LTAsC2kEKt0i6prwX/qgqWGDjGG9ohE+4Z8v+gQ\ndvqR\r\n=MVmj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBx2FOFfK4hWej/GLnKOaGlz+qumaDdrBX6vWJ2iFbKEAiEA2G9uIF105NhaEPTTUuz+X7jOszkfUJ0eQIjAa94sd+Y="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.5.1_1530580394691_0.08901022373367118"},"_hasShrinkwrap":false},"2.6.0":{"name":"bottleneck","version":"2.6.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"feef7c6b461c79c61e7f049ac38180b2c79729a8","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.6.0","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-3fgu36UohvqOzv4aYPFyUR39LckOcA5cM4Yxija/V9Effd7a/22tFtZga89t3rSNtqEqo0bMT8IhCFztD7d/8A==","shasum":"cbc557383fd1f63cadc87e1141b1ad766863b863","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.6.0.tgz","fileCount":59,"unpackedSize":333596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbQjpJCRA9TVsSAnZWagAAZVIP/39I/sjXrtLJhjByTyoP\ntulqbYddJPRiuOCQvQ+LfqjuBc1QC9eTO7ssrQv6lOkrtvbGvfBVUzZyKx+h\nzVwKJiKvEQsEyVPd8Wml2753ubaWIMv0BGB1t0tHPuUqZdvk++EqClTWGtkd\nYZ0wvRs/Ni1rBmmXjxLYKJu4wVnqum8eHkt63xRxi1UXwvwe08uq5jqimT7t\ntaLLuFUIYq9k6WBD8+R860xU9ibrCtwylsFI7w1rZFSj0qDfqQwXWqtJ6ttm\no3/3xLaf5JMeAQ5eSE6aUp64UT2qb4ULhldVJuguR5XVMK3MhlAnRloFDEDb\nzW2CUjEBOb+cnORMcUhvSIKGIjUZ3oBfjeHqrmMUHvGs2H0KtqZA3UXDgXz1\nBTz6uEMVPrOeEep/ASXW6hbwPODIu29Bu4R4tPt6tigqfBgSOcnIQmd4oxgO\nxdQEY6bOmBEdv6YYZZ/QaHKhtHkEJaQ9hnWG4XiL1jAotvH5SbPvvBPTf4MY\nsxPPf9aAx2GsSbNwd36iwUymeuvIe7AQjduxxmvKTrlMCXDCMkRtjcsgqI/9\nXegGxq18twBB1JtQb3jSs0cPsYldomUmS+yb3BUYO7qe4xZbKBTR9CNsK4V5\nDNvpMB6aAeKfAbe71OFgVWiZCR746ujcEqQmhI8BAN8phi2JbAnQoYOyVDfL\n5NIj\r\n=xfoU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+rj3ZGrQw33fq+gZS4h62nzCckpQpLTFBKhpTmvnKWAiB+gJ/go1k3LnTw41nDdGUJYNckKjgXTb7kwFNG6Xk8SA=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.6.0_1531066953756_0.7996240186083463"},"_hasShrinkwrap":false},"2.7.0":{"name":"bottleneck","version":"2.7.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"e261a09022d185533ec6db05ba4d217b11e9175d","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.7.0","_npmVersion":"6.3.0","_nodeVersion":"10.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-SJyosbkwVVaX1z7TRwkLXtqAugd3HZp8KB6uGLuKZ5UDyAaDKrCzYiGQRZb0B9eemCSYqPfpTmi+KRrsv9ZAnA==","shasum":"7ad4de3d5b3272e542e9b80bc7044d1085334e57","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.7.0.tgz","fileCount":63,"unpackedSize":345646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcIu8CRA9TVsSAnZWagAAJucP/0r9pCZXs3yhVpZCGZHU\nj8o+k31J2C6pY3+JRDR+e/7SGZG6dmWbXxRsTlvn/PdWLAy3tZUhY+Pji1S/\n5alucKqFAGKHtoRelHuxYYeLkzRRjI1KWwNOsakKL5WLG8l02P2o+ZHegocN\nalH9ttDm2eVcIRjEn+JHDYNvNSDp4hq2pPLjeB3gUY4GIvX06UJvjZMSgv6J\nKSN5BqOl+gMig3yDJsu1hsVIh54ZX4lo2hmbjLM0rpHy03B3+bye0GY9Iojo\nqDGqKrkFf3tmYROkaS+W4/M+Ry1pR/pkylxWCTUdAcNjlBzgYmoCMiVq7vr5\nJeAwfWjLjRap6UbVMyU7eHw/8Ni+MuRhrIQWntOdEZF/+BHaPOq5aS9GO4v0\nk1mM7APxVWufV7wk+F00F6X4IRrbYpkTuBgiryD+oT3p2WBgw0KMW+fK9Kpk\nM9zAbvYOJV/8BU3z1yaOqesJxPWfJG0ok/muxqPTQziDkaj3DbGUmnuC8hYC\n3fU54997WO0Desqj0sNheq4gdGeJmh/dtj6EaYZGL2yRxBssnmmgr3C9VZmC\nodlUfgwn3pplHFSi2DBZKQnDKNUTAQ8E/eNDhiIiPdR90D0DSPEZFX2nmaCq\naqupzXNeanypM+d4zRWHQcknLmnUfr0CMYcNHq6Uhsy5/DQxgiBfjXkqsH0F\nX0Q3\r\n=GAcm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA4IL59vL2AxAy4NodGQT4YFLC40Zki/qIPmBpNrKUpaAiEA8TAjGre9cM3PNSY6N3+YERNpR7/VH6NZVEDgirswhbo="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.7.0_1534102460130_0.20014387338611228"},"_hasShrinkwrap":false},"2.7.1":{"name":"bottleneck","version":"2.7.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"575037579e550aaa6c5c3dd165e6b69a54953d39","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.7.1","_npmVersion":"6.3.0","_nodeVersion":"10.5.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-zY//Vy7mrS3vxi4BgE/0dJKJF7dnT2mZlE9lYpnnd91HNogniEIQ7Ukrx+DjaKMhOHluYDbjPuf0ksQo5UBYAg==","shasum":"5b90f96180631cb46ca96374f72fecb92215e85f","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.7.1.tgz","fileCount":63,"unpackedSize":345733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcZrFCRA9TVsSAnZWagAA1aUP+gOOVjbToPrDJEEJRDKp\nsQXoEzQ3FAB19P93vVzq4y8L3eR8tZZDG3AjB/VBvoveXKnZK915jgNUx2U+\n42kuxXCTyIW1bqQGUqTikA2F09fYPkviE6eJxX3mRsbrajiUylAXFoxpRHlX\nbzt7BLXP2qDNoQZSPM847bZh3tzCjUCufzeh45OAPNuKA9p6d8oZ9xGDnAUA\nhcWGIJ7uYN4eYX3+xdwjKzBvfVTaWLhgNIFy7+qneQLEyizAybUWbEEUEhuh\nJss9nzfYUB7YVkRD6mqKEO1zBKj0vSFiHRLizT063T0TksDLl/DZ8qUNmtu2\nTS0p9l/5y2nlaFoDhcvx+/3Bj9gW4FqMplmi85u8JIqnznqcijmauo/1UBQp\nrdPPE0lgSThZbVDSaOlcLRKsQ16QGAT86tv7Fcc/af+UqnhqOooIJ86iCy6k\npGhzrCB1NLsVBcJWlZL1ZIIOCQxK5miEcwevrWrilA2zSiXrDnjsampXcSi/\naY10TTvAdKxVH+6w56hGSxZBSVaNerR+PTF0pC0AV0/EztqpDGZVIcCpkYvc\n8cJvC0/tcMwwzuFmS9C2R4dNZ6P4gnlV7gSMb/nNyq1qRTmFkJ9xJ5XwM8v/\nsVTxZOVYMiWOGNESg6ogIQA3gArGGNA0pjwea03ApC05+f6yYgA88URcxmn/\nZGKx\r\n=8xoN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3t7uV5mjHdTJSvv7ZWRvevS3O4h2aN81whBZUgL5snAIhANnt7LrEkKHpjEI9OvvOHJjgZjugHuIuoKdmf2ZBO5ui"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.7.1_1534171844632_0.6851892831158111"},"_hasShrinkwrap":false},"2.7.2":{"name":"bottleneck","version":"2.7.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"gitHead":"77ff1a954e74606c3419de599a1072e05aed036a","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.7.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-5xDpx3n+D0E3DjghrBv9K81PwPbicbN9lp/Zf+KFfPq0/s8MovnRzLdFui5NIak/5Tbi4euFacBNgRzsWDmU6A==","shasum":"965837e92382007609a5a4575884cc686968950a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.7.2.tgz","fileCount":63,"unpackedSize":345855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbd0kHCRA9TVsSAnZWagAA84AP/jwBzuo0C2ErE999RhNE\nviKeqCkc6q5TUBPazBPB5RTgru6mwP2yQzjx+xFtlwLKVU6Y/0y0lrGoEDBv\nZZUpbOcrrk4oB1v60EJD8QQiuOt0PFl7hJuh68ZMnBBvKWyWm6tOfsYpGFdU\n6vbUhYFxdDWKA2FLYhsmEZJyN8q4hNe0yVWnTIgw2efV+2Ho9Ky2n3HSD+jR\nCXolVLfZglCE8nzD7i4CQlOJQoQXmB+I6Xi9L/MIT1iPHlOFxw0bGxPEeTds\nYhnJBtwI5vFh/G0djseHfoHS4Qa/ZYxoqa4iZrl6j55JcMYytC1rzRZ3LMHZ\nbnEh4iSPzqpGYvxC4PWCV8najrN2nEvFnJykYJDEtHZ5KA2E02RkCckLky0O\nirto+n5ZfONP9ZgymjtqFW5uJU8vBWhWdpSZtyWqJGppXVZgfhpZcTs66YSq\nxwQ6lASSKZD9Ig+5dHccxtyOOYgR7PgEwkTwfC5s4SMeEgyM2CbFT4U0S7VJ\nwg4n7yQcv3uOAOub3QS1blyiJ3KLMQ1qy7j5sFFPEa2hI4kp4dfKVjEHcty3\nA+EaEjmIJkS76r5tOxdqnZrrbJtsFXpq09ucEOKHZ5kkO2IqdTGV2YvTrFRJ\n8kKl0pGyFVunwp7LkYAhma0zNAP/jfDgoDQoi3mQ0NlDSetVT0gdYX31HPxd\nIQac\r\n=Ap12\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFNVq74dbYN4y7Wv/SeSY9KPtS6iIOa4tTi952qp7PhQIgapw3wUVizZVMXG1RDGIwgr+NPRWfZayav1A/W38efVk="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.7.2_1534544134517_0.3812260430415342"},"_hasShrinkwrap":false},"2.8.0":{"name":"bottleneck","version":"2.8.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.2.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"8d74e1a56b4fb7f8d7991cb8ed4da40bf311d041","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.8.0","_npmVersion":"6.4.0","_nodeVersion":"8.11.4","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-yHJ9OeOgDWoYLjGKjee8N5qSC72VB/N79H1TmUc00vr99e/SXvzfrxkowFYZgTLmjWlDzLFCWaZ9wbfZm5Xl2Q==","shasum":"8cbacd533ab3da15e397f066100c108ded3a2912","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.8.0.tgz","fileCount":66,"unpackedSize":362726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbeyZICRA9TVsSAnZWagAAIgQP/R3+YK6r9YXoep2Qd6mR\nkwBLUoBvPXCIsOqsMs/A5J+96YmF4qYYWbrzmBNHC7E+xX9WmaoVLdhc5cOp\nDj4mbCkCx/X7CHxj1MTVLKRPP/MbZC0F+aB1vCUC8POcUG0EsPiv/ly53hDT\n/RJo2/kuodPjDrdN8bWSHzenFpIrZK6QQF9jz8Exyvl2qPKWjgv9TXj8x3Ul\nWDgSDyLT2utmLUdZzAbM7c6wZZ4gwHZqm6KmPSbWIlR0geXvdZqeXYFUqe4Q\nhTM9XIYYKL/gJ1sKDyqbhr6s5S6SYG37SOw1Vc2BgIkKx86vLe/jwB+EcZn+\nLoJYn/etUFXvMqVOI0fNA1YXvOWPReNbigwRlgiU5aU/A3gO3GQ0NUYVRnN0\nHRJeJJ+/twTfjJs3cBv850llgiCHaXGtK3PUuaX8i1C1arB07KsZUzQAANVn\n9xmeZjy7IqVDOGCd1QbFeDHzQUniSGEZKXYTtr7RJVC0h/6doytCTJ/oYCV3\nlR6JrUy8mxUSLDV2glvDSgw2I5U36dnV5pzyLiMMljisz0rYNwrOxwc/W5MX\nOQzL7CDywOfKO2t8tAgXPZh2Fh+66t18V0y+yQoVCMnE92Nt66z7eRe+iPZc\nVdeIeLJ0ZvKxJz0GqBbmF0HanIShYnv0JgJt6jGAapHtPzV9OE6Pv+3xgUBt\nKj3V\r\n=awUs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrMOkKxRyujpW6AnTDpchWbsrLHq+uqgh7ACJ9JccIpQIgNF1Dk+A4QObj39QQLkddBVuxAQyHk6mgfUjzcQdhUao="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.8.0_1534797383723_0.06950573006330818"},"_hasShrinkwrap":false},"2.9.0":{"name":"bottleneck","version":"2.9.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"1a7ec8d3d15704e449fb8149f0630e3cb9acd9d5","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.9.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-XXCbAhE5KtVBJD5KW1tqgaA+dopWWwSir+2168fjfmhCPlRKfGuh+yQnNpps1LVr1ow7K1gD2qOeOjHfTNsTQw==","shasum":"1cf11c3c9db1b65075fae03967418ea03ba66814","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.9.0.tgz","fileCount":66,"unpackedSize":371220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkXdCCRA9TVsSAnZWagAAYzkQAJLzwTBfVxED29UvUTvZ\n5zz0Nf36PHLsvicw3QRllPU5SP0gm3aJkJBZ0UWP4XS7HxI6qW/aQ8ObJS+e\ntiyeDMR4VVQAPgkk4LFpc9j9mJkeDsxZ6eqOofJyD5QCIcRr3XGEq7aMCTRM\nrap5qAD2nIVi5FpO2WSrNolCDcRHD9EHjtkuL7qAaGhQm+KEZpQIB9jOugeO\nyEAHF4SP2c+v6xWnAwaCZxo2JXUTqAbxusrNnqcz1aazF+W9m0N7ktJRFqG0\n21tBPt6A6jTWaf9odfUNNt7xzb5mgX/vtdofvBtv08QrHhkOI6/Q62KGr/pn\nvaYoSnxsuKgHcPYoyixvjXv+EdnnevYmwfZQZXj9zH5hg0aJd0iW59eJ234n\nN1nPP2KQIYOImfAwx3yYCZRkUfAiS3aUipAH6rUICR51r2u0DKjn857a6aC+\naxRHq/ZVvRdJ2fP8MVnLLTMEZTmakKtNZJEcqSOTB7WznXCj6ENgvY+xwbqG\niSOMlYEGYm+davM488GcCuGOMejx9otvtf0N3jmhO8BzQx/NEemkO9uJMi1a\nB1UvnFGKkuXnY1NGrCjvvD1IKdUC6bJoWXFSbzXD6ovX8ExJ5sGSHiNm1f++\nGdkgfHV3cwJ6pXvi3ERhzuIa7ODofTExMyEFPZWIvhmlf2+IUsRlWEM8+SJA\nBT7y\r\n=oiLd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYGxNMBvorI3w6Kbbjj6bqLF6iM8Ye9D8uSGAXUeNywAIhAI9WxlwZ636VqTXyVGiLKWBAavLg0mtc00BZnXwnTwlv"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.9.0_1536259905731_0.9097418795146444"},"_hasShrinkwrap":false},"2.10.0":{"name":"bottleneck","version":"2.10.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"20a9cf4845f000b06db66493b8e657474cc79946","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.10.0","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-9bZR9Ard7oLKa4vPwQ1tMRkRGl3jRghqqilK4NFBKSYyaRZl4nYe8Yzrtzq/BXMRMOPSD3lnHcRRhWQ0WtCL6w==","shasum":"276c1cd97a3df7967f72aa035572d68bf6241e44","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.10.0.tgz","fileCount":68,"unpackedSize":403564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmsXzCRA9TVsSAnZWagAAtrUP/jjuu19qg94d3hhLalgK\n3oUsIm5Ynsox8PplrgVq4EkuYwO4OZGnInMS4r7yC7enzYp0p/qo2SUSig/H\npBPRwVYQpYLqshz0KhZB9ZdZvpD4vDyGCkFoYC39KpF2SXh5vLbruLMq+K88\nSzMbY7Wtdu3QwGJrXW/0xtADlXIPxLcDBiLWs6xzsiKH+bYKlXb2nDZXHGhS\nxIR5Geoej8js0eRFOTBzR+qOBqYpZdcoWQZgkcz72nTMhuGiJFd/9dpOLuXC\nr2TBwuy/nKx3OAgKBHPs70Pvjp3rtuQaws1g30dfCLgGDyDpJMG7/ENnbkFo\niGUmN1D/XVFcxsh0+pf49M7cv/jqsT+sTQhR9hqDXuwiLuhQ7zYxoR20WB/v\ntHUwMxTlu8W9ajy7MfzCeyXy9SyFN8avNfxnipNrmu0JW49Erh/o16OZV+vV\nieCb6nkJxtZ5D+rwWbHbV09Dxe3NI8UGvIS1rJKIqKwmjGnrbXpTwxMHrCKl\n13N92NyUJ/oYCxTgys2Ub+nVRqKMZUUaHeaFoPbA0YjNoLkXMx7J5GiVLNQg\nedJ3Lt6Z/zVoYwXKXtYlbSf3DVZ9cZuh14rvWk6MB0VNPjt+U9bbVOYITQRR\n7yMo8NVEFCfAPELdlB6AxL4OWGcM+QAAV4n1GQc8wPkT+Udc9M8PB4cGCsYe\nSzW0\r\n=HKRo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqt0+XE16S/4SNcKLSuiJiblTbJjzbHWoUHWexcGwfWQIgTDUkh9zxgQkVhD0hyzyL1ceXzcQAMX13sByuM7d0lXE="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.10.0_1536869873833_0.790540434829383"},"_hasShrinkwrap":false},"2.11.0":{"name":"bottleneck","version":"2.11.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"de2f60fd974a87da73c304042e357b9241bc1ce3","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.11.0","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-DvKiYR1kG1qRVoLBUtPlmJffktoBZIz3qtdUbINlwzQXDhlhZdF8gWesPjwp05xqr5QZ7wXA2k1w78/COCweTg==","shasum":"d91e194ef071ddb88312f13454405e52067ea9cc","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.11.0.tgz","fileCount":69,"unpackedSize":429039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo/9WCRA9TVsSAnZWagAA1BgP/085774oTT0fT7ed9Ck4\nYr6hcXClCNDO60c9agcbZmH7EGOUhM9JFgo/Uui3WuhOrW2I2hmkxcxcdMyU\nJ1WeD8frExpw+f+3YH2O5o1eioB3IBGXZQIikSRW/6SiLFAvPMPaODkN7mD9\nPRD6LFm+N9VRwnLxpGNhLvfguVJTZsozaxTDny6MG11vTKcnMfJyZgL4C5ah\n6LroH/0CkICgnLlRG8Phqqtv7qrquWqKg2Q0DEHzMmtATBSpUOCgtmWXK9kd\nCw2EmfG+ZY8jJGa5nzYgf0xwqPBmTM71C7juoD8KnoFlUCa7rSrAX99/VVaq\nVUh0EbZMk+EuTRfMAQdMimG7csxw/WHxXLjpF/XgbGkpp89TGNJKpAPQYuI4\ng8XVhP9jCnlhQpopN8aMf26tVhFQdNEOjJe2J0txEcdfPw+wTSJ7knxnsbrt\nHElVfjCsyJvJJzq4m9V5aKqiFa7ZDChKnQixmVM9q4gZKh0YqpW8ojIB8CZX\n14+S8IMefRK0f5qZD6Frwxw1jI8+wYM6mQIEIGSrB6lPDjM+nOE0UlLT/gsF\ncXPUQeiatkMj9llqycV3jYDvH6kSc85zuknIS+ifbwWWq0TB29Ud46q6XsH5\nEuxbS0rEkR81L7//jB573i3YBZnEE7+O68Up+5yNopbFXHBV7PhPEo51x700\nCiQw\r\n=LkZM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5D2su70sLknHPe2+EI+RGbLhaiWVAV0P/BfSDceR9NwIhAJHq8Hew1sDfTFRNVRRVcJWCkTucGjF1CfYLkeHyf1zn"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.11.0_1537474389537_0.7199635325875224"},"_hasShrinkwrap":false},"2.11.1":{"name":"bottleneck","version":"2.11.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"09bf225de20fd4a2786e3932b2143fcc88b911ee","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.11.1","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-sKcIPRtkRVcWnCkbbN3w81faLvBKiPIGNtuCpLE2bxVojOw3CHTTY0/lUnB7mz84b1CTOWwb5d93bQUmKvo1Ug==","shasum":"432d075ea2ee74802666f2556f0f07f12a84e618","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.11.1.tgz","fileCount":69,"unpackedSize":430022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrRoPCRA9TVsSAnZWagAAIqAP/2ht9ji7rszshldVTM+R\nIBpfni44K3R6ctMKjb1lScxxZxb4ICT94hNi3vzMduV/RsnA6aJ3NCuh75Uw\nQt3lV/ym3E0sqANImRTbEFqTR6sy4mRE470izX6ORqTMw7VUyXaBnLvjnv1P\nks9uEL2ifjsINe9n7eS4/GW1zQn1duTTaALytNXIFkJ7dmDA4cLEbsGN7K5I\nzWXoLd7wZIBS3Zzs5Wd8XEGyhsnGdeLVQqKG/tDS6S1K1VtQdDgKex3jHX6R\ne/BKroFDHbellSzDe5e347RYjF5ZOAPcHi1cFFCSYOXAjQpnABoHxOZs9nDU\nLOJSVHpoqMhuXHM8KJ9QUbg9eziZt0/NN+NZ03ea4ptoaXx63L+nivbausSf\nFnaUColl/54fMKWfZ/HIhzz6qzVq8uSdKEAVRNHQLw/D+z3L2ZB43On5JOv8\nlGUJRYP0IXxRIAlLoorBcFgB+besQXKtXI/5j/TMwn6/Hw6GXhMqxq+5xThk\nv0i7UdCZbZe3K/aFNUizaCHqtCTxvnKD2GBuN/9Lpx/GmwMaYZpz5OaRdiGg\nBAbvba6tS1LBtnk6qwEdrGwkZTbZ7nkBLaY6p3bOYzydMnPQn7n9KanmLIUT\ne4BWieW+xZTclWcCgy1pv3O59jOpvHMBEXo1PbKhr4qTeH5qB6bb3RbxgGXy\nXC8s\r\n=keMl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATq3jQDz2AVw7cmNUd6meKcaqKTtaK3wjERLXgJ2qTyAiA7hifOoKktoAM1xHXalNDuF7e6ntU5CnHPeM/Lnhnhcw=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.11.1_1538071054494_0.01302850220809404"},"_hasShrinkwrap":false},"2.11.2":{"name":"bottleneck","version":"2.11.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"1453f24717357e0a5472c440e87e9d3f4b7c94be","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.11.2","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-rC2HVbtSaTgFsrnW3nkODmSHSGewyGVGeIN1HlOsFhgiRu0hrJqQu1m1icRYlc1L7Jg4Sz62bj/2EynY5HcqMA==","shasum":"e1690e14f664cc3e37096863252061da8600fe47","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.11.2.tgz","fileCount":71,"unpackedSize":437196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbs7EdCRA9TVsSAnZWagAArc8QAJfLnjnwLi+GxD+BMLDQ\nuhFv53jFx1j1FF1c6g6v3IDc3bxK5af5s0QmvR3ic+6hi6ohnEZ8myVkTHpG\nlT952F1naVu8lY6VI2hPfDRqt5Ky/bJt3CdpI9YfhiH20VFu5+AtZpjr4/mm\nnfRGgOma70Yc6H7LxMYJ0mp8UVoPjfkuoxWAqc2MS+4CXhIIOyaRd9AQeuD0\nM0Xjo2d4AZEDTFla/vgXFgFvc6lsKORxdNzs29+kHI3ywAhdsLWo2K/c28r2\nosntWsDqQ7340w1oPpF7w7nM3YF2a8OoenCEx6/v/wk/8HtG/datYwyOR42p\neJzHETVCAUeydhAp2hCvjc/9igyx1lon4s3D1YotoO4ezHIhBvYmDX8DvpBe\ndIAk5u6xMcubAjFAJxiF514nCiYiyowPm4sF5ENT19Q+WWXiU8zZnL7eFwEr\nAgsFUyvQGN9jBezdBhcwug5gPVmgxmzVCrsL6DeYJaac6svWGthqIXUAUSSl\nLlWz+eKv3sriFPII3XSto1+fCC3NzmbXzgOCRazxiSzFvkUJeeIwktSVuJcg\nYemKXAvys9SdmUFXLfC6omZyMwK2ePRJ1mldXI4QhvggetSXjHc0+J3S/9DY\nTDoG8qzE3eapmrpJwML78/WMIMTunSPLg6S5mzrSUM3ycJC7FGrcX4MsszrM\n3cfd\r\n=d6K9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzLIKkieKPGdV4PNV+tf3bhtffBK05KRiWvLyMFRi3kAiBxjubx6hPdPMZmuHpefQTGWuk/bLj8TSG8DJA0BjMoHA=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.11.2_1538502940324_0.4536212723029014"},"_hasShrinkwrap":false},"2.12.0":{"name":"bottleneck","version":"2.12.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"09b4b82a151634ea3bab4962d31488a1cf1804b9","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.12.0","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-CzWFYKNrZT31beo+Iq5qMGgpS62DiQRYX2HrzWrtIqxtIuf9zQUwOH8launNYJnevlh2xsDHPUpZxC5sKh5wmQ==","shasum":"fd7d62d6ccb7de995fa0b3b54397718b133fadba","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.12.0.tgz","fileCount":75,"unpackedSize":454237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvMFICRA9TVsSAnZWagAAEnwP/0bwxY+uAEcrOJzFYaFl\n1JA29tAVuENH3+Cx7HQntLbGG+nGKdvVfdPzBgP4sREHZdaBtzAeWrSjUDxG\nDbjLOEyUuZZj3kVvWjTS+XGp+9eYexwwRqrpqumZ/CfyllXWVp0+qIaSp7Zu\nEbwdAp+YynAPwLkJYzjxxUkOjS5EFuvUZHU5dseCKG5knTrQKI12nP1xH2/V\n1i88WQRvpynXp0nQ3hkvU/LeU3YJgnYWmjLsu/whoybQuJoEzr2fJVysk5gk\nTI8pzxe6OSadQ0Tcc7LKAEGTwH4WHleWF4ltLCYglQXwZLumcXFJ8R3GL1q3\nTXfD1L9Jrv9IPV/txqhfuA5gAjctjyZNsYvyh7xhMBgYdjTRArc1QHzBxAkC\n9liCrTx1viiBfQfqT+HDeocaLK9PdcVzcUATWAti8dMuuFx3Kw64yTs43rQL\nqAWNR75jvU9jBnLTIARuP0yh0L1xbVhNSqzTgpumoWxy7PAm9sWcjoh3x+i9\nF8i20NzHbsIL8NEtm5BU0jbAVLl/mxRGf0eVROs8Q+Tqo5Ky+qLGEhXMgWbs\n1PB65Yr0puwqNvCXvt290KSkBxBYWCuBX1efDJvbPsHa6fku3BQcKEo8XQYZ\nW6J+ky2rHVWdbyd35NdbNyj6pton0K1lmQsVkNcCgqCStA3To1i8NInEbZ7l\n826X\r\n=93ur\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2FHMg8KZ11N91dHox5uHXGstDIGTvtG2jzEg4dSHnmAiEAu7yMi9iEy3LR2GaOCbUOAIfrZQEtmB+TdEqRDoVmgnQ="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.12.0_1539096903192_0.18296900810756345"},"_hasShrinkwrap":false},"2.12.1":{"name":"bottleneck","version":"2.12.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"5332bd9c4aed2fcd336bcbbdbb597d447ba1de14","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.12.1","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-wPHlAip5O1Po5AoDIyMRb7K2LgxmkOviAS91wsOgaa3hg0D8tOHuctQdg1F5fWG9Csi1wYQlU6sTSAp2PhejCw==","shasum":"7269626c9ab2ce1b206a2fcafe7434b44a1218fc","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.12.1.tgz","fileCount":75,"unpackedSize":455614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbwjLvCRA9TVsSAnZWagAAz+AP/jZHI6DTD4DhgYhzpYLx\nIDX1O5cbel+t8GwJBiZj6vWBWaFERkypU2NzfYrB70H5hw6uFwlene6m+iph\n0i0c+B0qgrj6gFoCkP51pSD42r4ZoMf8Ib2/br57WQws2qB0fNzFDUQ6PZdm\nJHyRHT5YT1O9csoEi+qt8EBYhsnm+s48DQrCtnsMr73Bqo2i6IfXuCuhHM9A\n/UsT6Sxln4ASn4E2OyKhqeSc1Dj9fORiXJtC2yyijFW0N7LNNwkNb6gUTuOs\n0vESjjuS4f4t99A72R/rmJvQXn/XrWF80Gp4YRBo45kv9FJbH0tjHYro3uGu\nI1n1f8S9RWcP6gP91TizzIo+T5z8q7/w8LWI8geNzGV29OmbB5VWSIGUn8h2\nW2eiCIhgz6nw2TJrtIfDxVMlgWPJroiPUxy0y33yJg2V8pJtZosfz9gmniJx\njxia1FEdKIbPOhQlB90QBEUaY7+SZZufCdB9QS12QLhnG3+Zqsa9CIdXcUvS\nQ9f4FQm5cdz3lv3Vccq2x4/YN/KBkOIJRmUTqLd9/AmN1EBCQeNaK+JAG9v+\nWzCjLAJKMIWBlXHLXkdFj/GrsIsNDmg+jG2T1718W8Zw2EM+YF7lnVMxzV/f\nFos7aWyqkif2pbtO+ZyUjJ4l/mCkQEdGLix26DNOprXDSjVesaHg4SjrNk4G\nvm7p\r\n=zofk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDjVM1gu+mlsJwOdGi1wsOWoJfwniopVTXtJSkFKONDfAiBMoNpqRlgC84cenPgLeGvSXk3+12E2fVCEHPF1QXFz8g=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.12.1_1539453678321_0.7962360917790716"},"_hasShrinkwrap":false},"2.12.2":{"name":"bottleneck","version":"2.12.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","build":"./scripts/build.sh","compile":"./scripts/build.sh compile"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","load","ddos"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@types/es6-promise":"0.0.33","assert":"1.4.x","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","browserify":"*","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","typescript":"^2.6.2","uglify-es":"3.x"},"dependencies":{},"gitHead":"38ef6b171a2edab7f95d4ac98db66664ffb6ba14","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.12.2","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-9HrCO+5MJ0wmendPQSWaA9myojLavaEbkwZbsEjNK83nWPfkhFZN+5cYLhRKu1lRqn36cjO5r3qMJ7/JUN5hQQ==","shasum":"8aa136a89ca4a3b82763f1b1cb98880420fede91","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.12.2.tgz","fileCount":75,"unpackedSize":455818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzOYNCRA9TVsSAnZWagAAFFEP/3OZraMb0B4J59Rpx+uh\nIaFU32ch7Y5JpdMhtvrizuhnakxaEb/uiN7kC0IUxmlNiEurBaehc4/1gRfu\nEcei5MOzZ1U9LWwhOvvN+IpCZg73nYIWW7GKBvsj5fTIu64VXwpALYkwuBfO\nCe/SWnoEeL8FpyNgVUGVMSIvpJ1obY+HP8CfJl4Dp8HwoUzR7tlXtp/XQIkQ\naJqGuxlVYM20rsDr8YiyHJwJLXa32r9mWU/1u2PxtXN1j4rKaZOBgZ3IFSMY\nx+JBQfIEjpAzDMFZrStqoXkkPS53VOsJM2zN1QxneIujFvvGAgPpwFuDBSBB\nAuPub9uYe0gSs4DAxSkR0hWmBFzKA2EFaq5IGzexsHD95KZP4goM8cK0ZVcj\nTijXorAzs9HVNM3aiJN0u6aqO7KwWMwJvyGCpdQd7ZTOWyoC0ayIEwkMat6u\nOh7qnKZDnmqnO5uizTg2yj+XFUiDVNEHhqVnWSQ4BdoAJdBLncYsbm+fpK8z\nXRXQ8nyE6h9ak3g/BvByas2USworsIP+iY0X5Y9NbfxeS9o9BlxmuvULURWc\nPVY/prc0kff2f72519khuub89MBXwsfd/7SluQ34Tu6FX7U1VqTpkDbE60YN\nAmo44c6vYg9MEsLsR41fWEtTCv1dJ8jyMbFh7mn+44hmaJi1xzsCIlk1bejn\n0COs\r\n=Qbsm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBl8NSaYc3Q0m8Byy8iTj7f+Moyho8EhpFqc9f2H1kKnAiEAgDAZ4gRK4GKORNXWSWwOo4GF3YyljwtarfgbBuQxiZQ="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.12.2_1540154892535_0.4302772268133517"},"_hasShrinkwrap":false},"2.13.0":{"name":"bottleneck","version":"2.13.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","test-all":"DATASTORE=ioredis npm test && DATASTORE=redis npm test && BUILD=bundle npm test && npm test"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"5b5a04706359e88dfd77e84a93aec6871a248b03","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.13.0","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-9YmZ0aiKta2OAxTujKCS/INjGWCIGWK4Ff1nQpgHnR4CTjlk9jcnpaHOjPnMZPtqRXkqwKdtxZgvJ9udsXylaw==","shasum":"875df17df9e62c76bea42b62af3a45c73a995c4f","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.13.0.tgz","fileCount":79,"unpackedSize":452553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3cqHCRA9TVsSAnZWagAAdhEP/0FgmF50R5jsPy+y4q2B\nowTesighzb7aqiA//llCyLewAoM7C28ph97BmX+gicQGJdMZu/y1l+sVV2tP\nM7hgHBIQ4kXKOlinhC/zeitRnW3Tx4rPbcu6J7Q9DADI/NbCR4W2vCt2XUpw\nnOnUxJ6R6UmieaBVXflOqX0x+2sz/Zmnj5ZcBQeSeJg6Tycness9RGXC0SeI\n4TsZB5n1seGYlOmSbFMs9RTX0OJXHC7kdN/asz64dY8/HMdZ6NGxhJEO+yJM\n5XersfDwlw2j2JpD7F+iboc5uKtDS245WXTcj6JlCQ9iyX5nvGO3JqB9MeWg\n15PewVfEI0698yunZHtvpUhzi26wFcRgIw9dPn6MDKfzApMo+AEconzx7WMk\nFjInPiT1yPKtXQFGMukkljHQTmouXpAFet32PStAbObw0erHIkMyThtVXsoI\ncCsLjQ4xjOR/T05yEhhz3iXeuymQyvyuvbHeV+FzabbRqAUaoyIxlHhsYA4F\nwdq9g/19Y1roaO0o3jGtfcQtq+sl0qGEQRyMsahpGCXLlGyuSJDTRZgCyYr1\nj1taflxEg7GiSyFEw9rjVhD8gJGkA/qhgyNGQV6uA1hn9l+mNXuGvbRLofGQ\nIz/Elz7eHI8P8MR/+BkkLrfnJ76yooWqEYxN4sRXT9HgBKXDRsMWg6Kaxs1Q\nwHtI\r\n=hqGf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDepswjEtGN9b02AXS+SULur9VVSuD/8Hc3ZianYLjfPAIgIC6VNP996IZhNyBP7JFlNOfk0l275SyAqswDfsR1fGw="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.13.0_1541261958162_0.6702385840545446"},"_hasShrinkwrap":false},"2.13.1":{"name":"bottleneck","version":"2.13.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","test-all":"DATASTORE=ioredis npm test && DATASTORE=redis npm test && BUILD=bundle npm test && npm test"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"84570c7316223c89a7b98e2e061e038ca9208bcb","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.13.1","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-SQaPmnGD+9kArblzL9/ZuWocQknAXUO8jlZOzuJDiPBCM9+5W+YrLgwsEN+7lhkXoYq0bloA8mv1UD7ge55/fg==","shasum":"5413280301c8deb2a72f3f464bf8c407655efdcb","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.13.1.tgz","fileCount":80,"unpackedSize":461178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAxTCCRA9TVsSAnZWagAA4vgP/jtzMygl+OwrRSkcp6IO\n4AZxIJ9Uupe8t9v8qESlAPmxCKR4BhKro8+V4IPsnqQiMxgyNzJJuUvz6W0A\nqnTIaLWqKPUdRI6Q7HxBgrum+v1v8ZPccrsiP3WLgq2DKlY/S3qOdDnxvNiA\nv8U9fXNxPD4m0esx01LRaoOJNgJsjBtJxKM++I6Xn2fmGF6s4bs9jKZcnvrR\nWJdwBYd1woJ83bC7ipOsA+yKzKCq0WRcmGU5HyxlVXIce9Kkf72XhBbJXe7b\n7qeE8skRaiSsvBuNgcdmCErVHmGq9TdHTbDDv1Yu33hNbXn/TpeQW9evvrxW\n8o+QBmdvRqHOG2gvPYNIRdetwcZByOPykfA+uLsbgXyIYabr9B7HVFY0siHT\ntAkPnJ0D3gm1kSGgX5HvbYjt6oYBVSqhBAvD1rOFQ0B/RFQY3cFW3U+726vJ\nopI3g3zlHbzaoDFsthYrkW+g7FrnF/XIm/gEn4ulGogj5F8yA3V+xURi3CrP\nmV7wqT/hR14yJuXF5ELG574UeXklSrDgKXfAOrlEsvQZ4+K4FpsY2Y0GhZkG\nrKlY3X8xKC4Upu+1IJPXSyMoNs2pkMzuB3pWGBia1aErMvwq8Pluxt4lsnSY\nM2FuLaC3m1hHMHUS+1pgG0BgyyzCFSBOC63lpNHF+Xm6MzpgVHPLjMChozgw\n7e3p\r\n=YadY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAUsc9aYqarW9im4cTDo6UQITS6HGr3JYJj8E2Cl3iAsAiEA5Iw8PvfxpnK9wyC4nmc+Bvx8hMPjrAshYMGxgl8WDOw="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.13.1_1543705793040_0.011146013596378124"},"_hasShrinkwrap":false},"2.13.2":{"name":"bottleneck","version":"2.13.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","test-all":"DATASTORE=ioredis npm test && DATASTORE=redis npm test && BUILD=bundle npm test && npm test"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"1773b079ab260fdef4830838ad10a2412e935800","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.13.2","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-DVS4Uv7xr4Ql0w9valPBaueLRnEtBepeoevDhWO0LBhyihICJ7RySyzPfyvPswanrXAAbWaF8Zx4QpxmIxHa/g==","shasum":"f3f28f0ddf82cdd3e44072aee3104a42adcca352","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.13.2.tgz","fileCount":80,"unpackedSize":461202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBggUCRA9TVsSAnZWagAAZuYP/Rg9P9m66fuPkLK3zEdo\nBUAHyqHk3mbBPYaj9bC1Ie+FPhL87aXN1t/rGdW6lh8S+fQkX+itYTfGENqs\nxCknLxBgXgLkBH8oUqhjbBttP9RPvRBmbOmLnbQg/q1+MrgfjYYD6eIpY1lT\nS8LRyAnC5IgD8odyVEwXF1NkB+cmuTkGO18pvoekwnG2GfI7ZDgLSUEP4C6X\n/hFHqwJSAZmcMCGd7FMWT20emr0deigr7bEC7feLJzhBqZBjlKn/ScoEnQ3T\nR5iutcu7wdjf4vE9DicjWo+1wv2WY7M5CCp7TJWkZkmJB8kDQb5WHlOlKosk\nryKuKinanPKw0lSHzXqFiTsZpVjo+fSS95eZTnH2U2XblmYPQQfDU/uUcfQy\nJ1ekCJKfvVxiRnM7RCOe1Zf0NHjFViYTKYbB/Zz2H5wuZQkPF2Q4GQzWz1f3\nEYOttEKWZFZTJ84BrATRtgaPVy6s06hqYZD3nYtbsIWla/ckZXvr6bz5L/QK\nrrTHlT6zOHibK/GchudXfCMeqU+Y9mYgz+r6+bcVM6T3qpKczsVA6Y6BYmWy\ny8uZtEtM0GBx37JOqmu88Hv4L795Q6lzpUaticzRVqlLxYkHMIhvh6m7VEh2\n0wfCLT2ZuvgYsd3RGQS+mpvUax0Nr3+9IMuC7A/A5OlUNo8njs7Qk2ptFtGE\nLAze\r\n=WRCz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEagwo5pb+AzpSsyXyPgU4NyhZlnQYfVVzWbkc6oXsd/AiEAwQHyBv94Ve7MiSgzbyssKvo4C4UGxZxYLijwwjmdUrE="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.13.2_1543899155067_0.9430573853784818"},"_hasShrinkwrap":false},"2.14.0":{"name":"bottleneck","version":"2.14.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","test-all":"DATASTORE=ioredis npm test && DATASTORE=redis npm test && BUILD=bundle npm test && npm test"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"d944d9840710df6ba189dd44e707b7d3d2c4628f","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.14.0","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-hM5zQPPpIe2/pn8rornETr2x7/HOBGJ5u1RW1js6zvE5453bRMMbtbZl0ojB8yNj7w2xNWddpNukrhOikHb7BQ==","shasum":"4cbd8ffb4cf589ca4e71853561fbe1e464924864","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.14.0.tgz","fileCount":81,"unpackedSize":492308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFeH4CRA9TVsSAnZWagAASVEP/Aqejf2QV0Q1QWVzzPyx\nAGYxm8pFB8jIet2WhE7lVSu9QlHKLSRNsCyKwSBsoqWm1KyKMJ5+OriHzS78\nvbfpLgIlyN/S907hFwuMj8w2es67NUxF0M6ORSgRz6DNd11h7lTDalgdllab\nnC/fcema0Rq9cdyWm58d1p9bYPbUPcoHCPSlG08p5LUB8VvkyC+YzV1H8t9P\niHyvRJZxEFSU9zsZnLgp34VnAvDlNte2wemzZpqfe+RHgOcJmcqJLqM6Qdx+\nuWVcv+MF1LQAf9HjRnbF53WMUxo53vGNfII/2Zmqh404b3k9sFCdamaiR1kQ\nPvXB8U0DpM1pjZPBpSPvwMKQqIBvycsuTZYur5vbamnw1oFQN+kx+I7pRDdp\nK12v63Z0eHHmQQBHIZkSMzcTG80YobePUXCRZ/muuFviPx4pWzBR/tesU5N6\nrJQv1ci639oiI8/zoAUXEQvm2S8AW59wBHGnbUlOB4f/ZdkZpqvEy1RQGMBv\n4IrWEhjxp2kuWtFVmB6HpE/Yby1ml7J2ryfPYLSA11xfBes9SwZgiNooVBSo\nPEp+6FmZGJpVEI+WzvtI8kkcmKZvZnBOO0LEOWyxv500hN7G1TpeGstqAJMo\nT0cLG4ayYMS5DdE9YRz/zXam6zUnR21N0aTACrCfqfl0YXjQ7mLJ61SfNt70\nKW4C\r\n=PyJA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFaQVoQpKNo0awXhf3AS76PmmWmSzA8tpmVSHfI0re4AiEA5HhCkll9iB6GHc33Xkd5xUVIGWJwIPMG6u+cRY6lonI="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.14.0_1544937975337_0.8181990444289462"},"_hasShrinkwrap":false},"2.14.1":{"name":"bottleneck","version":"2.14.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"./node_modules/mocha/bin/mocha test","test-all":"DATASTORE=ioredis npm test && DATASTORE=redis npm test && BUILD=bundle npm test && npm test"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"eab22329db9a90e8502414eb93330749b48b23bb","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.14.1","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-FAZr9OekUbx/lCGY/Sok2QOFOy3exRWRcjVJfmHrh3J9UoIaLHT0E+TwhXTIPmKS8JHuX6i/eH/kmhhHBEx7DQ==","shasum":"3134b3dabbdafa19abbb0531c03529858d029190","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.14.1.tgz","fileCount":85,"unpackedSize":531869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcH/DaCRA9TVsSAnZWagAAzLUQAKDPZnDMXTlgrzf4/IfL\nEBoAvcPLaF+Runs4WFIIObO/mwLIaYPaqLWZWoC3P516wkrUvpoKLOaoxU9B\nSvJ6d4wBT265uhZi3L7exVyC03kSoFjTuS7HSBg4IZQbWSYWdRAKPZ6Z624l\nnRGuTvyY9ML4xYewfnBW8FasZ+j5QCiQzAhmG/kSsbGkWoK29icoaFbbuHtE\nOTZgCxLZC8CosfydhzGv2v1WMuhMFc+i3mspyEYVlC0xWGvIyy0hb4PUv9OD\nEQjoFKA4iiIdNMzFrvVNurM1OsBsDIsgA3UantEw7oRppREZcSG4DNsrdr6a\nSx71sXBJW79o3Z4fk7IE2r9kqJEnEkeFWXSqab4Uk7RnEzB7bHRqIiQCuMcj\nM2ilf32ZDBr2OeDUBSyWGIvLfAIlIhGUDFZkz2Gvq4RGAM2qR0XUmb9Sa/SJ\nQkkFm0rzF6eUv9ORsB3LdD+u1+MyoSEvNShRUddZSW3DE8SXFrbJ+JfWP+6m\nOIrZzA+7fPLvkkhDYBYCaYRthvL3/qps0j52kbOiB0p50YtuBB4cp0pUhpfY\njosDNysmlbHxAPbBEhoIHp3gMSXMcWvdIjqt1PqYDSKjlmXD2YklboN/KYv1\nPMvWT6i2ia3uwKf29D/gSTjaDpGrEOgdZTJEzMLVI3NwEB6eCHuxpbU5RiDA\nYADL\r\n=pHhN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9lixInDUjxsTbnu10lfG8KQM/LBB4nbrhucGvDsuuvAiEAzfbNBFdkCukODjBOxfcgOlobTmI6GsujLbt2RKUxPcc="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.14.1_1545597145066_0.9944280380798578"},"_hasShrinkwrap":false},"2.15.0":{"name":"bottleneck","version":"2.15.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"4b5ddf040599e0721782e752fd125004b75b2cf5","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.15.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-6acQdvF7HfkbyDQAalnnsY5HGrrDrJ0QYie1/iL/IOch5oxhNVPRjqkIvOeCx4i6QyFi+ubxED/QRB1QWmWCJA==","shasum":"538ec3a32f0e94a06e934bcb2080eb2c4c901c5a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.15.0.tgz","fileCount":87,"unpackedSize":548423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJo5+CRA9TVsSAnZWagAAfOwP/ilS8kCYyAzzOiR5ORd0\n21TKWUg7l8jUBPBG61QUQbhPhOTMBZfaPnb+fG/AVdkpNlwVAuicNKesOFYu\n+Y124TEf+cILQw5RI0rNOaatnfrAhqbTXyTtVSD0uj29RDpfAKZvZzI3Kw8Q\nqeu2opqVYmdWv7rgW88QZNmS4FMw+uWyU2tFnseUgnGV5JJvQno1sPJIxb16\nPzbQYz1gGwUrB/9rw1wEv12r9hanauLrRmkAFl6IZQrCwj7DgFcZLDFw8/hm\nw7XA86817rj3VGsmYF7cxKOP9MJtQ2gDu8ORqVQ/CCmGcvgNkMGsG3iakp19\nMUIlOSnBh7y+q0h8zJZxmsQQHMV83+gdLI7Ufcrr727kmB3dkwvqtrN8e79G\nhQwNsQbxbswGIjhwdbbgX1h1cOrfmH3r21z0gHh+3a8LX9W+SOr+onixL+Mz\nqHOVl7dzH4SbhBEVg6V3LJbPuqt58YVDe05QkQSHFQGbphV76UKuCXx4a6E1\nRu5ht/pn4X6mffw/t2ZvUJg9TgxUZZinwZirCEEs8FlsRN2rJLnhz+2V3buf\n6WcOVaEkNdLcsMPEOhnE9owlnO9UjDWWc7o1cylDCt4xeXyfDQgV6Ivj6avF\nYajTvdOPez9yI4TmMtG98h2RfF0JjOx0CwKL/GRO9nTjEL2TiPMxpKavc2Jy\nKwJ0\r\n=HceN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDApKjxHxm+zlgqbn7PK5uq3PTtZfNiKvMwTgOPjrHV7QIhAKf7WiojafQa5sDPxBEeZs5BQyMvAtCf73qJwaqRuylK"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.15.0_1546030717875_0.26421483189158"},"_hasShrinkwrap":false},"2.15.1":{"name":"bottleneck","version":"2.15.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"c7d2fe9c10e746e4eeb82a7bc323e56a46916c08","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.15.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-HrwBZXe6nELC8UDUooH07MvznhcYKkTt3UTKY9NJLnZ0qY8AZUImX9vAUERVOT/vYuHJrkM1h6ZemaiUKXtGzQ==","shasum":"4a3a4e986f95e04da855c04cab0fe2e4ccfd15ed","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.15.1.tgz","fileCount":87,"unpackedSize":552937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOjZxCRA9TVsSAnZWagAAcVEQAImrR5vBjvmkbbCNQ2Az\nydVHYIeEuiIm1pOSrBbcmbV/6DOWXVZ22scaMENNkRLlEtjfWM5gMH4xyqlM\nWd5Fc5bLo0IEyul8zlDZykJyGffhVr/bAmg24rnkfoGvqCQkmlKgILgfCFCF\nI3CTAX/QrK4Yw7KAd9eNGXGdREOymsEt+D0gQ+LXFxtCCn43z68It8v0NWfM\nrZeN3H1QUnJ18hG3OePytgJbfvtY63Upg+v090S5cauhg9GtcfXS33RHuBBQ\nOxXYl55tvGZU8TaYaBatEHDFzgiDR/aGsG4KGVsqioXj74o69aHExkfIrPJa\nqQ7TWqBZOuEOsAR2CHQ+p4ADcQORZ9VQOxCrUZccaKS9rjRKX2zAnNPSl0Yv\n6JMweqCAkxunGejzabVSMnzBpdfGatl0Y8+p102LWNmQjm1/hv22fV1uxRTV\n9jSkwiQdPQYz9qr+5qQ0UrV+xW6ejqZF8eu52sFsQ/z4zYgu0/HcnbMiOAgh\nObfqAZKsvpORGzM7wjkVVEfQzIsE7oJCzPppaO6gKYVGv52c9isZJys6KLr9\nm6RftAYY/cQoZobcA/MirZ/CrPd0BDby+KBEvrViYBBjtQTzsYq73JnoVrGe\nKnBqSosQ6HWAijjFT9Hm9Y4dtknwtQS6zX+kUsSYXc1fMbhFMxIE5/+aVw6y\n65gw\r\n=pYho\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwNDxmLSJnCT6KuVeW0Ma/uDojXtT4Guy0mxqtrswExAIgc0BKlDLtgGeIwD0Pdedp0dIWWmHd2ms40rol8Ywxp3o="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.15.1_1547318896814_0.6105174496574606"},"_hasShrinkwrap":false},"2.15.2":{"name":"bottleneck","version":"2.15.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"da56aca8c54dadacaabdb245d7f5092cd6292393","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.15.2","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-0Iu54t8Vdbtbp/BV3mgno6bKpzN8nHyGgocQBo4fThJAfeSud+0oKpCVJ15hBjDs3lR0zuVxagCxiYhX68iQkg==","shasum":"116c1c399e6537c430d85831f9fac9f532a39ea4","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.15.2.tgz","fileCount":88,"unpackedSize":563710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOr8/CRA9TVsSAnZWagAAM8AP/Aj5xPpojQWq9ANhBVx1\nRqvHZwzGpJTb0hsYzHnSuCB63bNR6P/5EYt0fU9fUX/ZEcZ/W8VZfQFb51dE\nYN9jFAXxPpOHyuNogx8xb3kdYmYH92ptXZ3Gsqtf4Pu55MzSIux+nnHfFQGe\nXDLuVCvf3O42VQhzOMeWMpcEY4cgw4iNMvjopFny5VKgGi5WvcCsGDFFB/MT\nH27+J1a1DG3IcfECvjgxzG7R/IlUFVS6oDQrO5QgPwHoTyK7hFItcoNolEHx\nygdvRVC+SMpYk0aq/hzOea18NSqn8ud7ZPHi/IOs59oTZXKKve02Ttdjakje\nSmjxkSFNlq3t1s4RWWiPefRzwpdESwR5uXsmFL4F2olx5xfAuOcG6W7r3Vyq\ngrOERSI/J3aprO0FkdA9EaA474buXwHs+D9Ld2Ow4dILdOapWcWAqM6d3Psg\nKmJnGYWXcKIlelqxeEMyFQTh7BH87hka0c8JiYdWkt4M0TuVggS/GGT7wL9d\nh0zyj/MpiS7Ud42Pwu5J1oXsSIoQfMlL9Py6hozVoqSwrdjUKE1U/jO+jnqU\npZdODH04VpDjHcPNH7Qh8QzSU5CfoawIx/U2z54/G0k1L/N1J7aKx/yAUWNk\nTRXdCmUyZ7n6KZvjLbJ5rQAA+//GaatW2iu7hyZKsLPy7Tr98E6Uv345Fzs6\nXBRa\r\n=FJRl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARqgE2YzUZdpyGUF2UhgFXR9ABzUdB3n4zgR9hYU+G5AiAt/XkG2Xy+f8toflHgOrV0+eyGrbjXqNmYNAUPls/G7w=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.15.2_1547353918063_0.9194310965895025"},"_hasShrinkwrap":false},"2.15.3":{"name":"bottleneck","version":"2.15.3","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-env":"7.1.x","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.0.0","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"adefa0a5cf37b9ec87f83fd8601a5cfbb7e7fb22","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.15.3","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-2sHF/gMwTshF//gQninQBEHDNBXuvDLfSczPHpDc2U/9SC+P/97Zt01hy7UTEV0atSZ9BQBIHsdju/6wn7m4+w==","shasum":"64f2fc1a5e4c506fd5b73863ac3f2ab1d2d6a349","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.15.3.tgz","fileCount":88,"unpackedSize":564976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPkT3CRA9TVsSAnZWagAAT64P+wRBgitWzeiHJJHov0DK\nnjgv/9RE0CJWiIItYLRB2kPtmRUaNBd+lgaf8vGaQR2I5FbHDH3Bqp0auzxl\ncjCBpA+btwruMl47rt9oME1dlZigtUv7geleNLiYMsJDt9YBDEoRsMUQu4BI\no6Q0/kPCM3FTIM88kkFMzndD/jQ7kP7gWFKf7JGalHrxUOUyXp+m170Qwc0X\nnzsNdTM7jthR/jWvGrkmhPxRNgbASedzgC1mNZ2YvrUYA8Yi2s1j6JYEcok8\nVieYUXw/+pOGOzfRvPHBs0+VS5dSV4+iGgxfkWhnkFtPHoUelBxygaSYyIft\n8V3vx4c1EoYGtAHoxX/f04xvIMkilZ1jX3IqItVrtcb6pix0K9065nQPtVHL\nzTbxIR665efyDRdAbuB/i4iVgiN4KQn98tv1y6OhQtX6TAPOBG2LuKgc1rQ2\nofxCH4MiMiQuZoCA4gMFbypUWiIu7W+crMX8x/VhzdaCk8VoKgoNwHOgnlnF\nMZy2j779B1xQ3X1Jjgb/eA577hOE3FKAE+Q97ye65PH30bUPckwmUJMr1jmJ\nGl35tWyS/P/tTg/Ng5euqGAFu+GBrkBQBS09zZOiSnzEp5PvXnAhjv5l4iKC\nl/VhWvxH4GVib2MtFjTDKPBUnRyXoyE8AIW3ltqIE/DgnzBXC9qkJZFjCh+B\nBBMC\r\n=YbTt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDC6GhjMFZp1PCHE2x8ohVuM7UCilmcupJU8rJYNbFLVAiAt/M4vNFLy44RerzBq9kkP8zXf2UYzoSGsnQ3cGjx54Q=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.15.3_1547584758702_0.1331051998239099"},"_hasShrinkwrap":false},"2.16.0":{"name":"bottleneck","version":"2.16.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"d332f43db83a89a5ced235187d2ce1999bfd2fa6","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.16.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-chPkFtUbE0Z2GPW4jzqF9GFedAvJQgroFUcwhoFGKdNsQBo7P0Bsc9VHH3YrJ1uWs9Mvx5MazOymI/HLYlguZA==","shasum":"1b15b2c01b8106886ff2cd64206136322f27e217","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.16.0.tgz","fileCount":91,"unpackedSize":569874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV1KjCRA9TVsSAnZWagAA2HEP/0JF+m9UhzhZtCZ+9Sof\nvlY3PqCdibIMDhazjwSSSO6MULm/f9OImQOIokAg6StEWkgdVM2WLyil9+qX\nM/fBT/bFeDr7FT4KCFrGIalymxLT0trFLOZs7+EyF4NBG7vRRHgkqv2ruJBG\nHvVr83LuhdY0c2Dx0XO/uod7Bx5ZuSkzWEz1gon/ZukZhVS3ofBjf4wOn3Oy\nxdQFjUjGyJiXXUCGU4QdEdeUTEZavnoqOI3TsKOQl7JqS4jYP00cITBYsf1t\nY5U76SwTtSu2R/1wOHpLYPXQFzNXLcaO7OI8rn/f3njMt5NgZ/GIhZfL3VKi\nHf9rxYjOBGFzsOpiroXI0Iuzj38HSrCSHQ77A+YyL82jFeC4p2o9W4txx+Vz\nSP4c0RHBQzP76wBccg3CBx8Ac3GF9H9x1MRY1ZsIpIqFWhIvz/M8AdymWqq9\nvnPYKfwHST1TmHHrVLg+r4AuPdQSz8V5Sh35NDtkDntAiNBQ/K4rpLtf50ac\nMARNCtCPmwXoQufvBGiNe36qGYXb6rG4a7GBtCOqoalFyPmnN/HociWfqlC9\npa2MtFxATq6O4S6ybf3Sa5wG18dNub8nCRnMCUPHiVeMe67UTKfNdDz221fX\nip8ItNldRYiWpiWMQFD8ejwHbP0s5B9BT1etYiou7qWUsgq8nIFj6vNUKTEP\nuxDF\r\n=vhJ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWdsScdURikWZR24nFrCRCqmIw45SzGb1RNYPguvJeugIgVTb1htW68E5/aeKoIqjRzZt6uuISvu2luXd5Gp3uAcY="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.16.0_1549226658717_0.7762624171991508"},"_hasShrinkwrap":false},"2.16.1":{"name":"bottleneck","version":"2.16.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"4876edccbb105f2cd5bd1023fa0855b8c715768b","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.16.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-OOHt4HXiMoXKUcQR/LBzwMYWCQxOU74c8zs6/VPCe6xO3kOAZBZqYKmrgsamVXa1wm9iztD1DAoV46KmGKLl5g==","shasum":"6c7b3aeb7ac989b16569597cdf6d0c3da9dd56b4","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.16.1.tgz","fileCount":91,"unpackedSize":569892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWelxCRA9TVsSAnZWagAAY8MQAKAyPSVliygQ6f/wIYO4\nZXldNoEhkf+0C8fsjA/VjsMnbsUNVpZyQegO/FM5pi7YyGViklaByDVI3qNu\nQREh9NC8auG9Uj8wDBXuPHQdhZC6DZ+stEvC6WYdAwxHbhYmbAtVqJKVivAX\nUtPwAX89kbliz9rlDste/cZ+VVrmaBld/RIT1PwIaAw6Am8oxYiOH10gqZ2B\n8AEzo/zkUcMkMvEq/DqwsXZAkyP+y8umkMCZveqpqTUQOJaAwOziqAhhWqrD\nV2X0YVvlOLDGXasYr1DuCoQRkNtsghqgxGwGd0csCGb7jelFe7nEaj+ju+Ix\npx8/+HfZXpxZxxPM9uDzg1fYztGfkhnN1CMPqRzU6uBX+ZcK5wr82DUeG19v\nqK6dGukrh4ohPe45ZCI7mfs9tdXFVx9ms2w8Ii+kHbhX0yC0G2mWwd3XlB/2\n0EywyUWaIoMbcN2AWf9mOdmWDqfZLaY8zkqn3hpqfvyZbkaI5fU1srk8JFlD\nD8R4qtCXcQt9mrW2/TsKoDaXjAiF4JPGJMl55Pmu0vgmnQTehRmBTsnWQikq\nSmjTniMvS2npiGI5DxtYnvDT+PNWdRSem5asKJIh8OMLC+auctUw6ML0vZ6P\nbqRDB77SbgtxwBxFJsuibJmR/p8wnR+mtXmMZJPvAx3dy4pLHRs0ntsPpFzf\ncBF9\r\n=kvDF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFg0CT/nZ1utlEpD+N/DNTK6YCImC4Uqy22+V6pJ5bkDAiALJEiiI5O1JE9bQni65i+E1ZX7IIRJ771apiDPhCk0+w=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.16.1_1549396336476_0.2686820285800986"},"_hasShrinkwrap":false},"2.16.2":{"name":"bottleneck","version":"2.16.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"55599dddf6b0b841b2235ebeaa9b9403032b40cd","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.16.2","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-671wkIKV9K3yO/nfGw8tB4ihJazmZyd6DYEWxF1fuE7gzobk4w4atepHuYXoUHk78xLknjAGko8dXRcFO7iCoA==","shasum":"0ece0fda316ca8d41aaf55772584f722a2de0716","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.16.2.tgz","fileCount":90,"unpackedSize":573004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYKwSCRA9TVsSAnZWagAAAtkQAI+pDuMXgClUkLr+WQ4r\nulWJwgoKE4OCVhUwF/YYxsQyB2PDxx7HATuTkl4zluLhde5IlJRjcPsR/ezc\nwfP4Pfxm9EZYdnpptBhLCUKIbsWTgEqzlP8bDEailX0YpG8W0eOLD6sUQLV5\nPW3McBQcnJJlTQ3WA/dX0phsG9K5IUQ0WBRCnjTu5fqr1pn9ORb2VCVwD8/k\n4PQB4xUMn7qjrsEuZH4wsl3UCctNlFAdUZIpEvizS4AOHL7gZdzYm+1ipnyc\nwiQMuWWoKV56jvE5Z+3FmqsQpJJYanZzEofOfhXk3vxgahl0CEyIgauy215R\n5h/sPyDfYDI/mpV/QFGeJj5Dge1bZdE/bgpu87H9bsnkL8hCZgRqo5Wr+CFd\nlWylsLSObYsXkwAoKD3eWb0Wl+fVtTQCDufvYm9ZjilB8J7XbWDDt1aGzT95\noxv7pM0Lb0UGslodh9uhd52wBejLFa7wPu1NIVRy7hq4kQzLEw2LVWtgCbwN\nclrTYI8hz1msH5Ow0mrjbD4wU0TBhTAXjWRqV40rY/gLvj1HWA53zQd/8xtI\nvLRkOSYmGslPiHSho2SjsQ+Sjw8++05KZjoFARCv3QjPVwW0DIGcVrjtWue4\nvYgAS9j2ST+B4ECC4Dn5NWWEmOoFiQCffS/qm20lUB9v5BdIq2mvZhVWHFDn\n8SmO\r\n=Gepz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICnfRmFsfTTIL/3Y78R4Ao1ToNqicWhApS2HvRxeWOZgAiBEKyuf0Q4RUTS+h3PQwF7AxKAlOcZouSMTRmJDNPG4Tg=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.16.2_1549839377463_0.770625706876791"},"_hasShrinkwrap":false},"2.17.0":{"name":"bottleneck","version":"2.17.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"c929f0073b28d0280096e3a4cd72640e9aa44a96","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.17.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-0WpG/tVEBkhl9LLAFcjMTWhzQvLCYTD4wNlvtf+BZ9Q9xkMVpP5TbGPKkj2sADZtC/GQqgUMF2ij/7nD3abFLg==","shasum":"4654c78ea6333bf41a77faa4b4909a57f05c2ac3","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.17.0.tgz","fileCount":92,"unpackedSize":584663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcczKtCRA9TVsSAnZWagAAnNwP/jCjBmTkvIuHYHvdHqNI\ntoJaAM6YgkUJrvWdrTAXwYSXJRuA7ie/ecseU8rhsgIyuqduf71j9FFusrA2\nDz3nxiuycbXHaYIWcieNceLrAqF6PqqAODVn/dPcuLBq8m4U8pxiLmFi1OBj\n/Pu5wTGOFFSvsw26cyLfJexSqaRXk4flaq++LWGKa3PxFD88yfafVls3OLjL\no+wkgdRb/6JXU0QdodsHGkoWmKF6qvsIYdEEDOvK2DAA6HWXn6B4nlR/ZUlz\npGR0e7iRg19EN4fOvpRiiv4fs0/OTgDCDUE5bSvEFHa12/KyjcwUSnXp0VTK\nKMdQoR42FaNnyclYG5gHrPjDduehqoFugq0GJNcBspQTdteXMdaFJAyga+/I\nsLct15lge8LqjYkRdiZ2xjG/+dUjoWG2r6VV8IHg1cHqAYuJ390owciiWAgm\nTb6CRN8QihdJvt1QL51WmRR65ROe6fkawLe69m+ikEqx9bd8yWJjKDHi+ZCe\n/VgROQL1qdq5LOTq/g9MOWiGU7he0y60aPsvovUUD1rroe2nzg1XO8eMdrmc\nVZtgDh/hyNevSBlMQQ2jkFEE0pP3X3PKg939s+Wu2Iq3MXtQCNKNAZo8Sscc\nPW3uXtgEk80f6gH34y4cSvP1n9tLR7BCHrJ5xEprY+Q6OXeT399qiAX4OrsJ\ndk8V\r\n=JYiI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKD6gbcAk6zmd5FdI3n8gvK9WTKiwPQVekjWvnuJDAqAIgZ+ExVWt+EW1OxlnaSQ1bQvDPhO+f3IqtiWvicqliAaI="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.17.0_1551053483436_0.6965064907190917"},"_hasShrinkwrap":false},"2.17.1":{"name":"bottleneck","version":"2.17.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"e81ebbcc1b8ba3e8b1a48bf7e1fef5b9b9d77b05","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.17.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-ARJKJRNq6+W7BBYZnkqA1F4+HDclht7QyRJl2haAVtD7xBTG8Prpy6huO+canGLUxZaRrek8U/0NjTvoXACsaQ==","shasum":"a45809e4cdf5326e14dc69970f4af7029e22c0f4","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.17.1.tgz","fileCount":92,"unpackedSize":584898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfGBLCRA9TVsSAnZWagAAvjQP/3cdnmf112T5oIfCOe+g\nIX0VXLqa9PQmgPN8GYwvdh7gQvHIN5fVsHQAjY7zoUkESRRhfLxnHYfHyLlV\n4DX9NIAh4sy035YMZI4RRvyWtQjAQQQM1cRTfNvqSAisVOeRQTr7ioG4amAQ\nRLy6srwsqir+4gln0uapIE4T5n9gxrRBIOf70kHa7k0eDiX0qh1qNJS3IQA+\nUrlo2Ym3OP4A0sTGUQj083AR2Spsj2JSrmiVifCzdQdqKOz/l2N37I6TLuLB\nnjnPNfqbpwZ6rckCBdTVreCbCuXXzdqmFsnNFtC51tyecks1L0deJ18UOp8D\nCmBv/V9tassObNepOGCc7jSeBFLMfWrzEL4nfFLqSV7VUv/F6yEo4gDJLR59\nciM9iUVpyOiwmCXk6T4oEtuFQNIMZO/3zChy/VPxf5RU4vaav/o6+/eFZp3w\n6rmfqDXu5hkG1PS4BoV4UfArcqg8Sg/9/IUny7E6Gze/POApLdBmNxh/jMts\nI+qMepfPoSh5oH+JCLBKNgyS7udOVUsUp9uGDCQqg6ThTTLwvo/ikmoL1d5l\nJSN1Jb/2ZCOB8yblcutN2vyiQrcMGYDb3/VAW0mIFdhesqNydvgSYTgO7Wbt\nhztIw8/Oh+ZptT9CuXzfHrVybEefaSkxgz2/0OwrYMkh2W4vXFRBQBhMsa7S\nuJl5\r\n=dUBc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCK+QVoTAWmTIxokK+IECBQ8Cjncggek1qC5OwAJDktxgIgOBQ4vsG8Sdn1Vr2Eou16jzPKeWLtC9hwQ//V9mWkTP0="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.17.1_1551654986236_0.20151668205072837"},"_hasShrinkwrap":false},"2.18.0":{"name":"bottleneck","version":"2.18.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"a6231b87cb6140c83e0aee38caa736a1b24abd9e","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.18.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-U1xiBRaokw4yEguzikOl0VrnZp6uekjpmfrh6rKtr1D+/jFjYCL6J83ZXlGtlBDwVdTmJJ+4Lg5FpB3xmLSiyA==","shasum":"41fa63ae185b65435d789d1700334bc48222dacf","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.18.0.tgz","fileCount":93,"unpackedSize":599863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsiT8CRA9TVsSAnZWagAAiD0QAIOLTLNBUGeDTX0uXljT\nzTKCri5RaSAYoDFQJVFAPZfhLAjLhI2nerHuA980Pw4aWjK1DqGsozsaEpyV\nrjDzYou881fobjiKaDXTaBwVShhIpZ0T9aLQ9WWfGfT2Wzd8covhkteUFv9N\niyJKF30jXdMNCj559a/X/9SUR2uDGtjwmhEsT2u0oeKdK/h22BzyG+RdL035\n1n5Cd4qKNRM6Mcu+o5zbMwPEkXfJNFbsknz+Nd1JsPakhl6zJ2/IZi4XgJw2\nLPrF619BTPd18vmQ4Nkit1M2jL/zVeg61F+8NkYZ0GTxjQkvVneH81QDIx1C\nh3YGlNG/3Uwj/QnQBdVM8wQEyeu5sXFY35h4fbF1gdDzol4yxurdUkXKnStj\nJXRJhd8R9Pyiavy5klAVMwJWGErOehKLVgPU2pxkqbve6eJ7Vm6JjrQobfQu\nwBXrDb5yGedMVIVmNCTM5iXa5YK2aZInSFb9EZv9xHfMGjboiG3kd/Bdok1S\nCkx/CTShylp+YyucSMosOrfT+naGpsTQuKR+L5AMsJ/glUVOKQjDdv6pR5iq\nzKI2NsD5BUT+ZqM2igruNlpcn5QaHO8M5T7U+WVQn+6bCVv3tdNPq40GWiNx\nY7rlhJ+dQKNtbEM9InM0rFcI49ANY/JosIMtHB+cCQ2Ru5PsINFAoIkIHBOp\na+xL\r\n=za1w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPxDENYxrlyTwMogg7NFmw1na68Js0+zCkzV+Zf7ukVgIgEFq7uDpQbdzGwx3Wxk3g26GyFomyH+Wi5k5+p6/rwW0="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.18.0_1555178747808_0.21338353905180774"},"_hasShrinkwrap":false},"2.18.1":{"name":"bottleneck","version":"2.18.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"1dc80fea14c233bc220bde24bf94e4f0e82426d3","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.18.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-EhSYARs0MHsNRBPrp1TaeHpgmWFUpA6yl3NNBPjGNilBaQZr4iSbrJ16JbQVXuZkIaB7YVYfaiMiRq7NgyZFQg==","shasum":"cf7c494d90283ecbe896baa46a1397ae8b3c19d7","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.18.1.tgz","fileCount":95,"unpackedSize":612034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1wblCRA9TVsSAnZWagAAftsP/2S+/chw7xbUmh62aH+U\n5K0Wq3+gZT9iBUivFp9hHYQPwnqmt8RjaSudMnkWg23k/g9NG/Tl7zswohyC\nipemRYII4OJR/iX1X8k0HlZdQXU7WTYMzawsDjenjAqMHt4O2m1ie5Z+NKDS\nDlawZJ7IGoZj1uDUlaPXd/iCh9TzLDZNkERMe54Tj5ZuLCX9/Q0H2In3w3Yl\nz2+oNntfG881ROifbIc+l2khZXAJ2Tetk5acYuM95zTlgAHussuPeONTyVUG\n7UK+BUBJ2aLS1zVhSNXl9z3ENAB2uYDEUWw9n+ClUdAamFBlPuyUfJ0o9cFF\n8d+7K2eXgifefA8sN3Ss/3WECLf85WwEqjvrlc2b8DaGhjU07KVBlp8576IN\nKATFl1yVyAdDd1egZSBFPdlr+bWmtsg/wx4+aYIPuzHssSyC5ahjjDjH6X4j\nxdj0Z55aWKZEWZgladkx0i+SW6HPfWgSLZ81jZsGbuFjkFpc6bretyiYd3gi\nDLCXjT6gNQgXJWvectvvL8MZzZIZZBzDFHKU4estdFkPfMmT7cG+usUePr6h\navoIsYLfoycMdzbfOI50vFTmV7aY2dHXPtDOQZZOUdDRTvxVynvFyiZlN9/x\nvj8+rNQYCd7YNS/M2CPCFMefsw/xt7frn/wiufTgMMyoT1bhBkCTrFk0MDuh\nXmxV\r\n=Wca3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICuPHEJJfPtIG7ybV7G00DR/iL/UYwYey2C0FhwpZScbAiA10Z/fBR5zDLj6kC6/5eY0iAtzvlKqP1XKChDRXgNvsg=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.18.1_1557595876990_0.1595077324245917"},"_hasShrinkwrap":false},"2.19.0":{"name":"bottleneck","version":"2.19.0","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"07f10ad4ba82faef393c75d5f17d36afbd258917","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.19.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-0U9t0ALx89RC0AlHVxmDNl1UdlBZYE6RusW57EsR808WirvWbP2VNAp7i3FyIemGqTxQlaZ0MICAet9Myp0N1Q==","shasum":"deafece998dd99506f6a387de5723cc0953e6b7b","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.0.tgz","fileCount":95,"unpackedSize":622424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8tukCRA9TVsSAnZWagAAazoP/jv+HgfcMYFknJfkSCxD\nb8X2CLQPixnzOQIE+nePXmVLIiqZyYkHyKgF8teSIQ/2yV8bWcVi8r9/s38M\nf8RQpHEdDegxpS+loMnkoitq2pxTk/S+aPB5Xly2i8hU+gNNqehcTpYOka3n\nJGoHHcI1kwNRparN+H4ttLaJKIfbDc//LGE7ZWy/Q6eOGK37+EXxzH8DTB7p\n/02ipX1AT0FHxAZdEFt2OjVoCScJCBQ+VA6NqHlVcfLZ8Fm1Vqwo/sd140JQ\nCXw1WyBOkECxHFY9U0hDVwxtb8PgM0ZeLj4gGFBhtTt6t1tOcJRa3uEkYTLg\nZ/VD07ywo5BmxrFioKOV3PSuzBu5Gif3D2UcWSEz7rWENUChjkO8W965YmqW\nwcn4lGq4C9KKs+9/H3J64JueUhGLsYe/yzobCH1LJxaX6f60X1m08wr34yLT\nW/DhbxDQNgT4e654k5G7Zom2tCIxML7cgbeDX4WFBelye0bhCTtH+KD7/CQL\nEyxZ7de9mCjghYy3kX2xM1AqUkt+si8luj5cLDjgJ6Bro/CMrIBH5OsDgbsV\nyOWI1j50TKhvMkRRUL6Jr6e7GtZC9sq/XJ95LJRCS/0mHPTtsdmLfGf4dEue\nE0bnG/IM5sstMVnj+N6MKEv3+L5Dezwm4sJx2InBeJARJnXiMhLVPdHtkzJL\nM5Tw\r\n=B23R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICI/LdOw/CgsGhII3LF/k4NX/2CzstCPVJKIx0FXji8XAiB1hyKJQtbFAJNQbVFwaD9y+3sdDx8TbhtodSZ5MvxCbw=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.19.0_1559419811100_0.0900465164234654"},"_hasShrinkwrap":false},"2.19.1":{"name":"bottleneck","version":"2.19.1","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.1.6","@types/es6-promise":"0.0.33","assert":"1.4.x","coffeescript":"2.3.x","ejs-cli":"2.0.1","ioredis":"^4.5.1","leakage":"^0.4.0","mocha":"4.x","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"4.0.x","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"50116d3922818b202d8ccdba3de41d2e4800b295","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.19.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-TrdmthuOG5SpYfFQTprSQOtqQUTreAgPkCFfow/aVOnryRRpIwiwfiQmmJUiiHUKgPV7LBNlfGecJ5hCVs30gw==","shasum":"f7657aed83edff1fa41d438cdbdf3e0931a1d3f0","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.1.tgz","fileCount":95,"unpackedSize":623391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc++dyCRA9TVsSAnZWagAADaQP/iXSZqtfwwy7fg5t2mcM\naYo5UgTZHxTbAcfQT1vWxGi9mO75JWNVuderD/bxBhbVt/5fWUxBd/q9Qs3y\nfdNWcSVPJkCkxrYioOcAXt7oyZI3lSOu+wjfRgkUIWJO1qG3dooX/ZLj4KND\nWGk3il4PNgNFa6OZrWk0qy7Pi8p6e8zwzpTX+vIxZs+roshrQ+0liz2V0iSV\neyGU7rKq+wRNS5ArMDMbJou9DJV7HYH384mmwTRWhZ0Nr48kPJ5COrGSP8wY\nLwCznLMZO5HtHlwuaEaiu+/GqBjSKamRogAUkqiCkxfvefIzEnKkA5tO9nLR\nQuXavBZhQpxHFExD/T0D8STIqtSxXhAtlumAEVrvIJdV10EIqPpYjaptF8hn\nSrywwHAPvO5/DmQynX3zReGGD8FPtyg56PBctNbzZXL/PA7Xqst9KwCe1RVI\n8PNfLyMOXempD+St1qwLYd+0j6IfK58bsqc2OrcANIl6PSOBQDhAbYU74bvJ\n8KVlv1Ge5GEylZeNMVacSsj0kXCW91SHFZvNo7ICfXlMVAr8x/gJ2t7rS0la\nzcGJGQcahjnJuL1SVEtg1XqNb/OcKnQ+sUZjUlbwk6rfOkOLZnsYkOHsXyvv\nTUYG3FTMUnWX++M8tit2evjDIhuQh8sAPdhMdwr3GWRM0IgsarsxPVhpUEOA\n5C3g\r\n=00YT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvBsHA3hNjX13Wp21/Nn6ILmyy4Efj1NdGPC7/bdRkKAiEAjqjWsQh22NV3KPHMPvsbXD+Rbe9QC9KTuXL5cJNHi98="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.19.1_1560012657104_0.3067935991088002"},"_hasShrinkwrap":false},"2.19.2":{"name":"bottleneck","version":"2.19.2","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/es6-promise":"0.0.33","assert":"^1.5.0","coffeescript":"2.4.x","ejs-cli":"github:SGrondin/ejs-cli#master","ioredis":"^4.11.1","leakage":"^0.4.0","mocha":"^6.1.4","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"37d397aaa52f889d55293a3878d165b4683402aa","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.19.2","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-19LN3Gz1m26S/M4aFyaGfMLIUoVsVDSW3H2anKvR/ijh2c6/3lRzhXn3xUPnPlqVsEwfvhMbMoqz9BpawJcXsg==","shasum":"a84d2709288ef6527aee3d228067e180493b657a","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.2.tgz","fileCount":95,"unpackedSize":624551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIPmQCRA9TVsSAnZWagAAfeEQAJxqa+ijU9B6uK+gVKfp\nHamGza/7idKZ3ddSueOlurQDl9mEeCLrZa7Ddhy54GW4K91gQ6ToNMUs5KVy\n9gXUazc9HdVoDEcXDYzdhm2dHSsSmO4xHtOoQyuaqxw2w01dXAwbQbK7Pfel\nlYLjuaBPzvEKe6h554gxK1h97IOkRXBkJFsmfmsFn0BnKxSK2+jzZnIVGk2s\nmUsO+c0Nsq0PUnULYsXDk4FaeBGTQyMjYDFIo/TOG4MaxDseyY66TIKKKzbN\n5Oa2hbNCTxFHR78PkL2F05LYrA9QeaXJyTAfhCzyRmCfKzvfg/ENULmfUTGh\nGLMDpuuz8/CcK6l+s4iWCjC+EvyxIe1c1MPcW8V9xcMFduI4GYDHoaBroLfh\nThiuMmaQ+cVXZbJjldnUbbyuZEVI+SOKrYU5V8ONx4RkpalkvUYTOWFTLj/t\nFV8WllJ/uRHH+qFuw1RtrREDWhwIkUbVaZ5rFkPCR+0DSDlG6sGo8MWFU1j3\nyQYotsTosgsqmIbHdSUQaNyPxQD8nUyovWV1l4LOfH9d5uPeJjJ4DpC2nj0a\nEriGvROEu5bfmRgyLrGeE0pNx+z/ugel9BNAYcIJlMdSD5h9zmHLLON0vuEa\nIjcAOvKKVdk+/A/DNJ1JQOd/C0WgMhkPBeNyKiMae5tcp7Wmw1VwRFaeCfEs\n7/8W\r\n=xfdI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxLlScpNmvWeMUV7C4OKlkoo9T3O+dyZkpsizMx26lAwIgd8a2mIQUXSsCDByrQjm2Xhei2wIx3UDOWN8++05Dl6M="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.19.2_1562442126719_0.06038176232265191"},"_hasShrinkwrap":false},"2.19.3":{"name":"bottleneck","version":"2.19.3","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/es6-promise":"0.0.33","assert":"^1.5.0","coffeescript":"2.4.x","ejs-cli":"github:SGrondin/ejs-cli#master","ioredis":"^4.11.1","leakage":"^0.4.0","mocha":"^6.1.4","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"9b7dc3cc541d8cd0fbe690700c9e57a9d2fd2bb3","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.19.3","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-wn8caMJkN5Yv2W/bB8qmncQFq6GX70BckOgAQWVZ1yWmVn9gz1LWsOT839vW9hUCxZnZlfnjc4UDOeZ/I7j4qw==","shasum":"856dbe6f9e61ac83bcafd81a10211c8a51d6b850","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.3.tgz","fileCount":95,"unpackedSize":626912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLhKACRA9TVsSAnZWagAAt2oQAIXg57PYzZQp+KpkB4r8\nmK/EQ6/ooPMv6yz4NPhL9wm9Hoh+qlQdNKxqDP6p9cU6wU3wRNaQjUHbORj+\neipFrIQs7VdKKJMpYQqkiGIqliDI2Dwgo8v5yH7BW/fO1z+emB53QrQUB7tU\nZFpMLi9fWAKFq28qL8nvpZtQQr29Fars/P2M6zO6xKfCChiE67dYKNVp4GqZ\n8KX6VNFFjMBiig2Y/QiOZizdrncqPAz+Lr7u8+2gDb+92QsWYag/CcoaFuTk\nTe28sdanbQ+h93f+howccXIlS6huMZS6hw1L1CWFUYZV64xOt8b2Y6gbQ9ye\nxWNPLPzpvRLdOn5s+fVBcdGGgj2fGbZ6vIzAIGr+NZYxERP50//wK2HaqgIe\nE9NM+9U/O35IzhcofY3R5sclQ6Q0Hsf51t5sn1HfoLABAav22qKUAjd5TCCg\n2pS0luQhjEv6JhxPw0F4nm5i583QJisrxPtQxwZG9ubxi9ggMFFqnwa758mj\nQGcBOORw1c9ka07Tb7dJwnGhA9biViRLUnWZacNf5gOuE2KMQHvkTTtzYc+k\n+/BZxgI2MD1AmFuNJE5HlsiWl+YYER97GUUUoiynlROTlT6T1AxZoBXT2pgN\nLGV2Bu4vDUnF91QwRS8i0w9WLlT8TLFs2JbwBhQvO3wWjBM7Qj916cQKsJ4d\nTYNL\r\n=vZ+y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGRTNKmhnUa2NTNxMngsIXweeUQieQlzfoBdsfbxbvpqAiEAri9LEQDZGWp6+i+ArLO9d6Y7cUIAd87oPt97zI0UjO4="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.19.3_1563300479578_0.7255647670279082"},"_hasShrinkwrap":false},"2.19.4":{"name":"bottleneck","version":"2.19.4","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/es6-promise":"0.0.33","assert":"^1.5.0","coffeescript":"2.4.x","ejs-cli":"github:SGrondin/ejs-cli#master","ioredis":"^4.11.1","leakage":"^0.4.0","mocha":"^6.1.4","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"b460ee96b86d59d91867e8b515e7230d74885ea3","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.19.4","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-2poBdvpAGG+dkMVKZqtDhyuMN6JviD81h89W4bfmt3UO7O60F+qf/84V0alNqL8PM1RByl4SZ1fVMu/ZvxkmcA==","shasum":"63c505687a0ddaf89a6f515225c75e05833bb079","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.4.tgz","fileCount":95,"unpackedSize":628506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLpkyCRA9TVsSAnZWagAAE04QAKIeYKRhCxKMz+e6dllL\n4bilKsXrYq991wBJ9GcK3iuGKA72z7zHTB1nAegSJzHxoALU8bX0rRLdYOWH\npWmKWqduqVFYaqy+FDuhxsafEXyAXf0LLKFKGF3piATKteutvlxyl8WzScDj\nuWPBpUICPcLHMF73qX7XirM3WgpVdh86OAakU5WCiVyRZAetcpD5hebIaH7a\nQeXytBPkKdTG2xxkDdmGsSr4CnGgGJasCh9q/I5vjzzkLUI3rVT6f+WzvMHp\n7H7Yi4NQq9UhiNVv48KfxYN/LR1xJmNs4bTpn3wwBE9RMDrPMR7GSC/2xcUk\nurMWBngP+x6JMqpD6ngUrJ1EpGkDPSw1+Trr0CvekIp0cB0GT9kmdRhXJnpX\nvKV4fLA9riT6s4yC8DRsshXoCkrzeGVxHxN6jxwlkJedmMoOvkulwzJuKL4B\nzcNMFGoyGFjxTVicgJjOixcKQGw1wpY1UHZZ7JzOX1/F25X/F8nXlPx/JfJC\n4IqHPF0V2UqbrMT5aS4lAkNWT96+zX0kZrPRgVH/0wpobMekpi90Ue5jdnIC\nXjUXdTQiwhPfiNinT5u9axr56MqLZR8SqSSfAqGNVJkJHICjWztiJDOO2/vn\nJXfq1SDNNEU6Q3/SZMuLdBQJIK9T8mh/+cUeCT73riA6d++wGW9vrQqU406+\n9+zh\r\n=HoEC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCucU7U+nxt31I/7ypVbGb3OeFNcOZwa5DeiqLwpJZaOQIhAKH+GDRVYM9UXlOmxo1tQZS2jCkJ+ACY5NnhTSiznUyi"}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.19.4_1563334960915_0.036278740702747836"},"_hasShrinkwrap":false},"2.19.5":{"name":"bottleneck","version":"2.19.5","description":"Distributed task scheduler and rate limiter","main":"lib/index.js","typings":"bottleneck.d.ts","scripts":{"test":"mocha test","test-all":"./scripts/test_all.sh"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"author":{"name":"Simon Grondin"},"license":"MIT","bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"devDependencies":{"@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/es6-promise":"0.0.33","assert":"^1.5.0","coffeescript":"2.4.x","ejs-cli":"github:SGrondin/ejs-cli#master","ioredis":"^4.11.1","leakage":"^0.4.0","mocha":"^6.1.4","redis":"^2.8.0","regenerator-runtime":"^0.12.1","rollup":"^0.66.6","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-json":"^3.1.0","rollup-plugin-node-resolve":"^3.4.0","typescript":"^2.6.2"},"dependencies":{},"gitHead":"8a8bde9cde151c278397703c48f2bba4ded2bae7","homepage":"https://github.com/SGrondin/bottleneck#readme","_id":"bottleneck@2.19.5","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"sgrondin","email":"simon.grondin@outlook.com"},"dist":{"integrity":"sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==","shasum":"5df0b90f59fd47656ebe63c78a98419205cadd91","tarball":"https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz","fileCount":95,"unpackedSize":628942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRcD/CRA9TVsSAnZWagAA4ykP/Av9o4UQWzkHOzthhlYJ\n3Vi0z6w87YmaZ+4ZmDci++sAgqXpscihRksCMYyQMHsF9f1a1oJ93mF9AxrD\n/Kg/7CROHJqbHGh7x4aAsHaGbDQk3rkBYhoTVNRgDjLpsebH5oJQoLblR/Ry\nwhxoVtXUMYHtYKSg2gx5E+6nk9/Z2xrlps88k9VqsfSRj2KrHAARPc1jdzWD\nO3cZlqbIs27TJAaR9JAZEopvpErfw09SSybtajgEDSigaHhOjxHWCgMfq9iN\naeeGVVM1XSkvbWg8nwmFrLoEbpdBQ8WmG9ZmafiAAyQaRqCR95pzZbDl7qs4\n3YJGpKEIhqT+PvF8TcwKycBnP7kia3ZuqZR08zLRn+6DqMrL+XmUiaFlbGth\nuImIoB76qEaGuvcazaxzoW3Dn6UaGH0PmzTd+7vl2nG35sw7W8oR3yh3NQcM\npeuvUDSszcVyCu+Ds2sc5lgPZFADCJSpTedyUmr6I0tKRKYlR+4qiWtaQCf8\nsYTLfj6Njm+Da3vco6rHq8OIc0NgSj0yxGZ7BOXLpiIYkbs1xIOGrxE1bqo8\nAHoPuDdgYwrV64yG11Q2iQN3brRHVEdeyEBgBApDxmAcYWgM+/WpDPRff0lT\nCJOIX8WRjUZr3z3dX8Kk8W0OxPRmwogDgqhqnVA/6uZr3bo4x+qujFVSyK/N\nCo3C\r\n=QuL1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBwcZmJ8tjvZ++i3b20PbNE0E5MtFCFXo+HB8OfyN3uyAiB9ScIlvkhSwsdCVlgjOotVGNF+qT0VlgDa265eRAx/og=="}]},"maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottleneck_2.19.5_1564852478800_0.7075138245269705"},"_hasShrinkwrap":false}},"readme":"# bottleneck\n\n[![Downloads][npm-downloads]][npm-url]\n[![version][npm-version]][npm-url]\n[![License][npm-license]][license-url]\n\n\nBottleneck is a lightweight and zero-dependency Task Scheduler and Rate Limiter for Node.js and the browser.\n\nBottleneck is an easy solution as it adds very little complexity to your code. It is battle-hardened, reliable and production-ready and used on a large scale in private companies and open source software.\n\nIt supports **Clustering**: it can rate limit jobs across multiple Node.js instances. It uses Redis and strictly atomic operations to stay reliable in the presence of unreliable clients and networks. It also supports *Redis Cluster* and *Redis Sentinel*.\n\n**[Upgrading from version 1?](#upgrading-to-v2)**\n\n\n\n- [Install](#install)\n- [Quick Start](#quick-start)\n * [Gotchas & Common Mistakes](#gotchas--common-mistakes)\n- [Constructor](#constructor)\n- [Reservoir Intervals](#reservoir-intervals)\n- [`submit()`](#submit)\n- [`schedule()`](#schedule)\n- [`wrap()`](#wrap)\n- [Job Options](#job-options)\n- [Jobs Lifecycle](#jobs-lifecycle)\n- [Events](#events)\n- [Retries](#retries)\n- [`updateSettings()`](#updatesettings)\n- [`incrementReservoir()`](#incrementreservoir)\n- [`currentReservoir()`](#currentreservoir)\n- [`stop()`](#stop)\n- [`chain()`](#chain)\n- [Group](#group)\n- [Batching](#batching)\n- [Clustering](#clustering)\n- [Debugging Your Application](#debugging-your-application)\n- [Upgrading To v2](#upgrading-to-v2)\n- [Contributing](#contributing)\n\n\n\n## Install\n\n```\nnpm install --save bottleneck\n```\n\n```js\nimport Bottleneck from \"bottleneck\";\n\n// Note: To support older browsers and Node <6.0, you must import the ES5 bundle instead.\nvar Bottleneck = require(\"bottleneck/es5\");\n```\n\n## Quick Start\n\n### Step 1 of 3\n\nMost APIs have a rate limit. For example, to execute 3 requests per second:\n```js\nconst limiter = new Bottleneck({\n minTime: 333\n});\n```\n\nIf there's a chance some requests might take longer than 333ms and you want to prevent more than 1 request from running at a time, add `maxConcurrent: 1`:\n```js\nconst limiter = new Bottleneck({\n maxConcurrent: 1,\n minTime: 333\n});\n```\n\n`minTime` and `maxConcurrent` are enough for the majority of use cases. They work well together to ensure a smooth rate of requests. If your use case requires executing requests in **bursts** or every time a quota resets, look into [Reservoir Intervals](#reservoir-intervals).\n\n### Step 2 of 3\n\n#### ➤ Using promises?\n\nInstead of this:\n```js\nmyFunction(arg1, arg2)\n.then((result) => {\n /* handle result */\n});\n```\nDo this:\n```js\nlimiter.schedule(() => myFunction(arg1, arg2))\n.then((result) => {\n /* handle result */\n});\n```\nOr this:\n```js\nconst wrapped = limiter.wrap(myFunction);\n\nwrapped(arg1, arg2)\n.then((result) => {\n /* handle result */\n});\n```\n\n#### ➤ Using async/await?\n\nInstead of this:\n```js\nconst result = await myFunction(arg1, arg2);\n```\nDo this:\n```js\nconst result = await limiter.schedule(() => myFunction(arg1, arg2));\n```\nOr this:\n```js\nconst wrapped = limiter.wrap(myFunction);\n\nconst result = await wrapped(arg1, arg2);\n```\n\n#### ➤ Using callbacks?\n\nInstead of this:\n```js\nsomeAsyncCall(arg1, arg2, callback);\n```\nDo this:\n```js\nlimiter.submit(someAsyncCall, arg1, arg2, callback);\n```\n\n### Step 3 of 3\n\nRemember...\n\nBottleneck builds a queue of jobs and executes them as soon as possible. By default, the jobs will be executed in the order they were received.\n\n**Read the 'Gotchas' and you're good to go**. Or keep reading to learn about all the fine tuning and advanced options available. If your rate limits need to be enforced across a cluster of computers, read the [Clustering](#clustering) docs.\n\n[Need help debugging your application?](#debugging-your-application)\n\nInstead of throttling maybe [you want to batch up requests](#batching) into fewer calls?\n\n### Gotchas & Common Mistakes\n\n* Make sure the function you pass to `schedule()` or `wrap()` only returns once **all the work it does** has completed.\n\nInstead of this:\n```js\nlimiter.schedule(() => {\n tasksArray.forEach(x => processTask(x));\n // BAD, we return before our processTask() functions are finished processing!\n});\n```\nDo this:\n```js\nlimiter.schedule(() => {\n const allTasks = tasksArray.map(x => processTask(x));\n // GOOD, we wait until all tasks are done.\n return Promise.all(allTasks);\n});\n```\n\n* If you're passing an object's method as a job, you'll probably need to `bind()` the object:\n```js\n// instead of this:\nlimiter.schedule(object.doSomething);\n// do this:\nlimiter.schedule(object.doSomething.bind(object));\n// or, wrap it in an arrow function instead:\nlimiter.schedule(() => object.doSomething());\n```\n\n* Bottleneck requires Node 6+ to function. However, an ES5 build is included: `var Bottleneck = require(\"bottleneck/es5\");`.\n\n* Make sure you're catching `\"error\"` events emitted by your limiters!\n\n* Consider setting a `maxConcurrent` value instead of leaving it `null`. This can help your application's performance, especially if you think the limiter's queue might become very long.\n\n* If you plan on using `priorities`, make sure to set a `maxConcurrent` value.\n\n* **When using `submit()`**, if a callback isn't necessary, you must pass `null` or an empty function instead. It will not work otherwise.\n\n* **When using `submit()`**, make sure all the jobs will eventually complete by calling their callback, or set an [`expiration`](#job-options). Even if you submitted your job with a `null` callback , it still needs to call its callback. This is particularly important if you are using a `maxConcurrent` value that isn't `null` (unlimited), otherwise those not completed jobs will be clogging up the limiter and no new jobs will be allowed to run. It's safe to call the callback more than once, subsequent calls are ignored.\n\n## Docs\n\n### Constructor\n\n```js\nconst limiter = new Bottleneck({/* options */});\n```\n\nBasic options:\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `maxConcurrent` | `null` (unlimited) | How many jobs can be executing at the same time. Consider setting a value instead of leaving it `null`, it can help your application's performance, especially if you think the limiter's queue might get very long. |\n| `minTime` | `0` ms | How long to wait after launching a job before launching another one. |\n| `highWater` | `null` (unlimited) | How long can the queue be? When the queue length exceeds that value, the selected `strategy` is executed to shed the load. |\n| `strategy` | `Bottleneck.strategy.LEAK` | Which strategy to use when the queue gets longer than the high water mark. [Read about strategies](#strategies). Strategies are never executed if `highWater` is `null`. |\n| `penalty` | `15 * minTime`, or `5000` when `minTime` is `0` | The `penalty` value used by the `BLOCK` strategy. |\n| `reservoir` | `null` (unlimited) | How many jobs can be executed before the limiter stops executing jobs. If `reservoir` reaches `0`, no jobs will be executed until it is no longer `0`. New jobs will still be queued up. |\n| `reservoirRefreshInterval` | `null` (disabled) | Every `reservoirRefreshInterval` milliseconds, the `reservoir` value will be automatically updated to the value of `reservoirRefreshAmount`. The `reservoirRefreshInterval` value should be a [multiple of 250 (5000 for Clustering)](https://github.com/SGrondin/bottleneck/issues/88). |\n| `reservoirRefreshAmount` | `null` (disabled) | The value to set `reservoir` to when `reservoirRefreshInterval` is in use. |\n| `reservoirIncreaseInterval` | `null` (disabled) | Every `reservoirIncreaseInterval` milliseconds, the `reservoir` value will be automatically incremented by `reservoirIncreaseAmount`. The `reservoirIncreaseInterval` value should be a [multiple of 250 (5000 for Clustering)](https://github.com/SGrondin/bottleneck/issues/88). |\n| `reservoirIncreaseAmount` | `null` (disabled) | The increment applied to `reservoir` when `reservoirIncreaseInterval` is in use. |\n| `reservoirIncreaseMaximum` | `null` (disabled) | The maximum value that `reservoir` can reach when `reservoirIncreaseInterval` is in use. |\n| `Promise` | `Promise` (built-in) | This lets you override the Promise library used by Bottleneck. |\n\n\n### Reservoir Intervals\n\nReservoir Intervals let you execute requests in bursts, by automatically controlling the limiter's `reservoir` value. The `reservoir` is simply the number of jobs the limiter is allowed to execute. Once the value reaches 0, it stops starting new jobs.\n\nThere are 2 types of Reservoir Intervals: Refresh Intervals and Increase Intervals.\n\n#### Refresh Interval\n\nIn this example, we throttle to 100 requests every 60 seconds:\n\n```js\nconst limiter = new Bottleneck({\n reservoir: 100, // initial value\n reservoirRefreshAmount: 100,\n reservoirRefreshInterval: 60 * 1000, // must be divisible by 250\n\n // also use maxConcurrent and/or minTime for safety\n maxConcurrent: 1,\n minTime: 333 // pick a value that makes sense for your use case\n});\n```\n`reservoir` is a counter decremented every time a job is launched, we set its initial value to 100. Then, every `reservoirRefreshInterval` (60000 ms), `reservoir` is automatically updated to be equal to the `reservoirRefreshAmount` (100).\n\n#### Increase Interval\n\nIn this example, we throttle jobs to meet the Shopify API Rate Limits. Users are allowed to send 40 requests initially, then every second grants 2 more requests up to a maximum of 40.\n\n```js\nconst limiter = new Bottleneck({\n reservoir: 40, // initial value\n reservoirIncreaseAmount: 2,\n reservoirIncreaseInterval: 1000, // must be divisible by 250\n reservoirIncreaseMaximum: 40,\n\n // also use maxConcurrent and/or minTime for safety\n maxConcurrent: 5,\n minTime: 250 // pick a value that makes sense for your use case\n});\n```\n\n#### Warnings\n\nReservoir Intervals are an advanced feature, please take the time to read and understand the following warnings.\n\n- **Reservoir Intervals are not a replacement for `minTime` and `maxConcurrent`.** It's strongly recommended to also use `minTime` and/or `maxConcurrent` to spread out the load. For example, suppose a lot of jobs are queued up because the `reservoir` is 0. Every time the Refresh Interval is triggered, a number of jobs equal to `reservoirRefreshAmount` will automatically be launched, all at the same time! To prevent this flooding effect and keep your application running smoothly, use `minTime` and `maxConcurrent` to **stagger** the jobs.\n\n- **The Reservoir Interval starts from the moment the limiter is created**. Let's suppose we're using `reservoirRefreshAmount: 5`. If you happen to add 10 jobs just 1ms before the refresh is triggered, the first 5 will run immediately, then 1ms later it will refresh the reservoir value and that will make the last 5 also run right away. It will have run 10 jobs in just over 1ms no matter what your reservoir interval was!\n\n- **Reservoir Intervals prevent a limiter from being garbage collected.** Call `limiter.disconnect()` to clear the interval and allow the memory to be freed. However, it's not necessary to call `.disconnect()` to allow the Node.js process to exit.\n\n### submit()\n\nAdds a job to the queue. This is the callback version of `schedule()`.\n```js\nlimiter.submit(someAsyncCall, arg1, arg2, callback);\n```\nYou can pass `null` instead of an empty function if there is no callback, but `someAsyncCall` still needs to call **its** callback to let the limiter know it has completed its work.\n\n`submit()` can also accept [advanced options](#job-options).\n\n### schedule()\n\nAdds a job to the queue. This is the Promise and async/await version of `submit()`.\n```js\nconst fn = function(arg1, arg2) {\n return httpGet(arg1, arg2); // Here httpGet() returns a promise\n};\n\nlimiter.schedule(fn, arg1, arg2)\n.then((result) => {\n /* ... */\n});\n```\nIn other words, `schedule()` takes a function **fn** and a list of arguments. `schedule()` returns a promise that will be executed according to the rate limits.\n\n`schedule()` can also accept [advanced options](#job-options).\n\nHere's another example:\n```js\n// suppose that `client.get(url)` returns a promise\n\nconst url = \"https://wikipedia.org\";\n\nlimiter.schedule(() => client.get(url))\n.then(response => console.log(response.body));\n```\n\n### wrap()\n\nTakes a function that returns a promise. Returns a function identical to the original, but rate limited.\n```js\nconst wrapped = limiter.wrap(fn);\n\nwrapped()\n.then(function (result) {\n /* ... */\n})\n.catch(function (error) {\n // Bottleneck might need to fail the job even if the original function can never fail.\n // For example, your job is taking longer than the `expiration` time you've set.\n});\n```\n\n### Job Options\n\n`submit()`, `schedule()`, and `wrap()` all accept advanced options.\n```js\n// Submit\nlimiter.submit({/* options */}, someAsyncCall, arg1, arg2, callback);\n\n// Schedule\nlimiter.schedule({/* options */}, fn, arg1, arg2);\n\n// Wrap\nconst wrapped = limiter.wrap(fn);\nwrapped.withOptions({/* options */}, arg1, arg2);\n```\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `priority` | `5` | A priority between `0` and `9`. A job with a priority of `4` will be queued ahead of a job with a priority of `5`. **Important:** You must set a low `maxConcurrent` value for priorities to work, otherwise there is nothing to queue because jobs will be be scheduled immediately! |\n| `weight` | `1` | Must be an integer equal to or higher than `0`. The `weight` is what increases the number of running jobs (up to `maxConcurrent`) and decreases the `reservoir` value. |\n| `expiration` | `null` (unlimited) | The number of milliseconds a job is given to complete. Jobs that execute for longer than `expiration` ms will be failed with a `BottleneckError`. |\n| `id` | `` | You should give an ID to your jobs, it helps with [debugging](#debugging-your-application). |\n\n### Strategies\n\nA strategy is a simple algorithm that is executed every time adding a job would cause the number of queued jobs to exceed `highWater`. Strategies are never executed if `highWater` is `null`.\n\n#### Bottleneck.strategy.LEAK\nWhen adding a new job to a limiter, if the queue length reaches `highWater`, drop the oldest job with the lowest priority. This is useful when jobs that have been waiting for too long are not important anymore. If all the queued jobs are more important (based on their `priority` value) than the one being added, it will not be added.\n\n#### Bottleneck.strategy.OVERFLOW_PRIORITY\nSame as `LEAK`, except it will only drop jobs that are *less important* than the one being added. If all the queued jobs are as or more important than the new one, it will not be added.\n\n#### Bottleneck.strategy.OVERFLOW\nWhen adding a new job to a limiter, if the queue length reaches `highWater`, do not add the new job. This strategy totally ignores priority levels.\n\n#### Bottleneck.strategy.BLOCK\nWhen adding a new job to a limiter, if the queue length reaches `highWater`, the limiter falls into \"blocked mode\". All queued jobs are dropped and no new jobs will be accepted until the limiter unblocks. It will unblock after `penalty` milliseconds have passed without receiving a new job. `penalty` is equal to `15 * minTime` (or `5000` if `minTime` is `0`) by default. This strategy is ideal when bruteforce attacks are to be expected. This strategy totally ignores priority levels.\n\n\n### Jobs lifecycle\n\n1. **Received**. Your new job has been added to the limiter. Bottleneck needs to check whether it can be accepted into the queue.\n2. **Queued**. Bottleneck has accepted your job, but it can not tell at what exact timestamp it will run yet, because it is dependent on previous jobs.\n3. **Running**. Your job is not in the queue anymore, it will be executed after a delay that was computed according to your `minTime` setting.\n4. **Executing**. Your job is executing its code.\n5. **Done**. Your job has completed.\n\n**Note:** By default, Bottleneck does not keep track of DONE jobs, to save memory. You can enable this feature by passing `trackDoneStatus: true` as an option when creating a limiter.\n\n#### counts()\n\n```js\nconst counts = limiter.counts();\n\nconsole.log(counts);\n/*\n{\n RECEIVED: 0,\n QUEUED: 0,\n RUNNING: 0,\n EXECUTING: 0,\n DONE: 0\n}\n*/\n```\n\nReturns an object with the current number of jobs per status in the limiter.\n\n#### jobStatus()\n\n```js\nconsole.log(limiter.jobStatus(\"some-job-id\"));\n// Example: QUEUED\n```\n\nReturns the status of the job with the provided job id **in the limiter**. Returns `null` if no job with that id exist.\n\n#### jobs()\n\n```js\nconsole.log(limiter.jobs(\"RUNNING\"));\n// Example: ['id1', 'id2']\n```\n\nReturns an array of all the job ids with the specified status **in the limiter**. Not passing a status string returns all the known ids.\n\n#### queued()\n\n```js\nconst count = limiter.queued(priority);\n\nconsole.log(count);\n```\n\n`priority` is optional. Returns the number of `QUEUED` jobs with the given `priority` level. Omitting the `priority` argument returns the total number of queued jobs **in the limiter**.\n\n#### clusterQueued()\n\n```js\nconst count = await limiter.clusterQueued();\n\nconsole.log(count);\n```\n\nReturns the number of `QUEUED` jobs **in the Cluster**.\n\n#### empty()\n\n```js\nif (limiter.empty()) {\n // do something...\n}\n```\n\nReturns a boolean which indicates whether there are any `RECEIVED` or `QUEUED` jobs **in the limiter**.\n\n#### running()\n\n```js\nlimiter.running()\n.then((count) => console.log(count));\n```\n\nReturns a promise that returns the **total weight** of the `RUNNING` and `EXECUTING` jobs **in the Cluster**.\n\n#### done()\n\n```js\nlimiter.done()\n.then((count) => console.log(count));\n```\n\nReturns a promise that returns the **total weight** of `DONE` jobs **in the Cluster**. Does not require passing the `trackDoneStatus: true` option.\n\n#### check()\n\n```js\nlimiter.check()\n.then((wouldRunNow) => console.log(wouldRunNow));\n```\nChecks if a new job would be executed immediately if it was submitted now. Returns a promise that returns a boolean.\n\n\n### Events\n\n__'error'__\n```js\nlimiter.on(\"error\", function (error) {\n /* handle errors here */\n});\n```\n\nThe two main causes of error events are: uncaught exceptions in your event handlers, and network errors when Clustering is enabled.\n\n__'failed'__\n```js\nlimiter.on(\"failed\", function (error, jobInfo) {\n // This will be called every time a job fails.\n});\n```\n\n__'retry'__\n\nSee [Retries](#retries) to learn how to automatically retry jobs.\n```js\nlimiter.on(\"retry\", function (message, jobInfo) {\n // This will be called every time a job is retried.\n});\n```\n\n__'empty'__\n```js\nlimiter.on(\"empty\", function () {\n // This will be called when `limiter.empty()` becomes true.\n});\n```\n\n__'idle'__\n```js\nlimiter.on(\"idle\", function () {\n // This will be called when `limiter.empty()` is `true` and `limiter.running()` is `0`.\n});\n```\n\n__'dropped'__\n```js\nlimiter.on(\"dropped\", function (dropped) {\n // This will be called when a strategy was triggered.\n // The dropped request is passed to this event listener.\n});\n```\n\n__'depleted'__\n```js\nlimiter.on(\"depleted\", function (empty) {\n // This will be called every time the reservoir drops to 0.\n // The `empty` (boolean) argument indicates whether `limiter.empty()` is currently true.\n});\n```\n\n__'debug'__\n```js\nlimiter.on(\"debug\", function (message, data) {\n // Useful to figure out what the limiter is doing in real time\n // and to help debug your application\n});\n```\n\n__'received'__\n__'queued'__\n__'scheduled'__\n__'executing'__\n__'done'__\n```js\nlimiter.on(\"queued\", function (info) {\n // This event is triggered when a job transitions from one Lifecycle stage to another\n});\n```\n\nSee [Jobs Lifecycle](#jobs-lifecycle) for more information.\n\nThese Lifecycle events are not triggered for jobs located on another limiter in a Cluster, for performance reasons.\n\n#### Other event methods\n\nUse `removeAllListeners()` with an optional event name as first argument to remove listeners.\n\nUse `.once()` instead of `.on()` to only receive a single event.\n\n\n### Retries\n\nThe following example:\n```js\nconst limiter = new Bottleneck();\n\n// Listen to the \"failed\" event\nlimiter.on(\"failed\", async (error, jobInfo) => {\n const id = jobInfo.options.id;\n console.warn(`Job ${id} failed: ${error}`);\n\n if (jobInfo.retryCount === 0) { // Here we only retry once\n console.log(`Retrying job ${id} in 25ms!`);\n return 25;\n }\n});\n\n// Listen to the \"retry\" event\nlimiter.on(\"retry\", (error, jobInfo) => console.log(`Now retrying ${jobInfo.options.id}`));\n\nconst main = async function () {\n let executions = 0;\n\n // Schedule one job\n const result = await limiter.schedule({ id: 'ABC123' }, async () => {\n executions++;\n if (executions === 1) {\n throw new Error(\"Boom!\");\n } else {\n return \"Success!\";\n }\n });\n\n console.log(`Result: ${result}`);\n}\n\nmain();\n```\nwill output\n```\nJob ABC123 failed: Error: Boom!\nRetrying job ABC123 in 25ms!\nNow retrying ABC123\nResult: Success!\n```\nTo re-run your job, simply return an integer from the `'failed'` event handler. The number returned is how many milliseconds to wait before retrying it. Return `0` to retry it immediately.\n\n**IMPORTANT:** When you ask the limiter to retry a job it will not send it back into the queue. It will stay in the `EXECUTING` [state](#jobs-lifecycle) until it succeeds or until you stop retrying it. **This means that it counts as a concurrent job for `maxConcurrent` even while it's just waiting to be retried.** The number of milliseconds to wait ignores your `minTime` settings.\n\n\n### updateSettings()\n\n```js\nlimiter.updateSettings(options);\n```\nThe options are the same as the [limiter constructor](#constructor).\n\n**Note:** Changes don't affect `SCHEDULED` jobs.\n\n### incrementReservoir()\n\n```js\nlimiter.incrementReservoir(incrementBy);\n```\nReturns a promise that returns the new reservoir value.\n\n### currentReservoir()\n\n```js\nlimiter.currentReservoir()\n.then((reservoir) => console.log(reservoir));\n```\nReturns a promise that returns the current reservoir value.\n\n### stop()\n\nThe `stop()` method is used to safely shutdown a limiter. It prevents any new jobs from being added to the limiter and waits for all `EXECUTING` jobs to complete.\n\n```js\nlimiter.stop(options)\n.then(() => {\n console.log(\"Shutdown completed!\")\n});\n```\n\n`stop()` returns a promise that resolves once all the `EXECUTING` jobs have completed and, if desired, once all non-`EXECUTING` jobs have been dropped.\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `dropWaitingJobs` | `true` | When `true`, drop all the `RECEIVED`, `QUEUED` and `RUNNING` jobs. When `false`, allow those jobs to complete before resolving the Promise returned by this method. |\n| `dropErrorMessage` | `This limiter has been stopped.` | The error message used to drop jobs when `dropWaitingJobs` is `true`. |\n| `enqueueErrorMessage` | `This limiter has been stopped and cannot accept new jobs.` | The error message used to reject a job added to the limiter after `stop()` has been called. |\n\n### chain()\n\nTasks that are ready to be executed will be added to that other limiter. Suppose you have 2 types of tasks, A and B. They both have their own limiter with their own settings, but both must also follow a global limiter G:\n```js\nconst limiterA = new Bottleneck( /* some settings */ );\nconst limiterB = new Bottleneck( /* some different settings */ );\nconst limiterG = new Bottleneck( /* some global settings */ );\n\nlimiterA.chain(limiterG);\nlimiterB.chain(limiterG);\n\n// Requests added to limiterA must follow the A and G rate limits.\n// Requests added to limiterB must follow the B and G rate limits.\n// Requests added to limiterG must follow the G rate limits.\n```\n\nTo unchain, call `limiter.chain(null);`.\n\n## Group\n\nThe `Group` feature of Bottleneck manages many limiters automatically for you. It creates limiters dynamically and transparently.\n\nLet's take a DNS server as an example of how Bottleneck can be used. It's a service that sees a lot of abuse and where incoming DNS requests need to be rate limited. Bottleneck is so tiny, it's acceptable to create one limiter for each origin IP, even if it means creating thousands of limiters. The `Group` feature is perfect for this use case. Create one Group and use the origin IP to rate limit each IP independently. Each call with the same key (IP) will be routed to the same underlying limiter. A Group is created like a limiter:\n\n\n```js\nconst group = new Bottleneck.Group(options);\n```\n\nThe `options` object will be used for every limiter created by the Group.\n\nThe Group is then used with the `.key(str)` method:\n\n```js\n// In this example, the key is an IP\ngroup.key(\"77.66.54.32\").schedule(() => {\n /* process the request */\n});\n```\n\n#### key()\n\n* `str` : The key to use. All jobs added with the same key will use the same underlying limiter. *Default: `\"\"`*\n\nThe return value of `.key(str)` is a limiter. If it doesn't already exist, it is generated for you. Calling `key()` is how limiters are created inside a Group.\n\nLimiters that have been idle for longer than 5 minutes are deleted to avoid memory leaks, this value can be changed by passing a different `timeout` option, in milliseconds.\n\n#### on(\"created\")\n\n```js\ngroup.on(\"created\", (limiter, key) => {\n console.log(\"A new limiter was created for key: \" + key)\n\n // Prepare the limiter, for example we'll want to listen to its \"error\" events!\n limiter.on(\"error\", (err) => {\n // Handle errors here\n })\n});\n```\n\nListening for the `\"created\"` event is the recommended way to set up a new limiter. Your event handler is executed before `key()` returns the newly created limiter.\n\n#### updateSettings()\n\n```js\nconst group = new Bottleneck.Group({ maxConcurrent: 2, minTime: 250 });\ngroup.updateSettings({ minTime: 500 });\n```\nAfter executing the above commands, **new limiters** will be created with `{ maxConcurrent: 2, minTime: 500 }`.\n\n\n#### deleteKey()\n\n* `str`: The key for the limiter to delete.\n\nManually deletes the limiter at the specified key. When using Clustering, the Redis data is immediately deleted and the other Groups in the Cluster will eventually delete their local key automatically, unless it is still being used.\n\n#### keys()\n\nReturns an array containing all the keys in the Group.\n\n#### clusterKeys()\n\nSame as `group.keys()`, but returns all keys in this Group ID across the Cluster.\n\n#### limiters()\n\n```js\nconst limiters = group.limiters();\n\nconsole.log(limiters);\n// [ { key: \"some key\", limiter: }, { key: \"some other key\", limiter: } ]\n```\n\n## Batching\n\nSome APIs can accept multiple operations in a single call. Bottleneck's Batching feature helps you take advantage of those APIs:\n```js\nconst batcher = new Bottleneck.Batcher({\n maxTime: 1000,\n maxSize: 10\n});\n\nbatcher.on(\"batch\", (batch) => {\n console.log(batch); // [\"some-data\", \"some-other-data\"]\n\n // Handle batch here\n});\n\nbatcher.add(\"some-data\");\nbatcher.add(\"some-other-data\");\n```\n\n`batcher.add()` returns a Promise that resolves once the request has been flushed to a `\"batch\"` event.\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `maxTime` | `null` (unlimited) | Maximum acceptable time (in milliseconds) a request can have to wait before being flushed to the `\"batch\"` event. |\n| `maxSize` | `null` (unlimited) | Maximum number of requests in a batch. |\n\nBatching doesn't throttle requests, it only groups them up optimally according to your `maxTime` and `maxSize` settings.\n\n## Clustering\n\nClustering lets many limiters access the same shared state, stored in Redis. Changes to the state are Atomic, Consistent and Isolated (and fully [ACID](https://en.wikipedia.org/wiki/ACID) with the right [Durability](https://redis.io/topics/persistence) configuration), to eliminate any chances of race conditions or state corruption. Your settings, such as `maxConcurrent`, `minTime`, etc., are shared across the whole cluster, which means —for example— that `{ maxConcurrent: 5 }` guarantees no more than 5 jobs can ever run at a time in the entire cluster of limiters. 100% of Bottleneck's features are supported in Clustering mode. Enabling Clustering is as simple as changing a few settings. It's also a convenient way to store or export state for later use.\n\nBottleneck will attempt to spread load evenly across limiters.\n\n### Enabling Clustering\n\nFirst, add `redis` or `ioredis` to your application's dependencies:\n```bash\n# NodeRedis (https://github.com/NodeRedis/node_redis)\nnpm install --save redis\n\n# or ioredis (https://github.com/luin/ioredis)\nnpm install --save ioredis\n```\nThen create a limiter or a Group:\n```js\nconst limiter = new Bottleneck({\n /* Some basic options */\n maxConcurrent: 5,\n minTime: 500\n id: \"my-super-app\" // All limiters with the same id will be clustered together\n\n /* Clustering options */\n datastore: \"redis\", // or \"ioredis\"\n clearDatastore: false,\n clientOptions: {\n host: \"127.0.0.1\",\n port: 6379\n\n // Redis client options\n // Using NodeRedis? See https://github.com/NodeRedis/node_redis#options-object-properties\n // Using ioredis? See https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options\n }\n});\n```\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `datastore` | `\"local\"` | Where the limiter stores its internal state. The default (`\"local\"`) keeps the state in the limiter itself. Set it to `\"redis\"` or `\"ioredis\"` to enable Clustering. |\n| `clearDatastore` | `false` | When set to `true`, on initial startup, the limiter will wipe any existing Bottleneck state data on the Redis db. |\n| `clientOptions` | `{}` | This object is passed directly to the redis client library you've selected. |\n| `clusterNodes` | `null` | **ioredis only.** When `clusterNodes` is not null, the client will be instantiated by calling `new Redis.Cluster(clusterNodes, clientOptions)` instead of `new Redis(clientOptions)`. |\n| `timeout` | `null` (no TTL) | The Redis TTL in milliseconds ([TTL](https://redis.io/commands/ttl)) for the keys created by the limiter. When `timeout` is set, the limiter's state will be automatically removed from Redis after `timeout` milliseconds of inactivity. |\n| `Redis` | `null` | Overrides the import/require of the redis/ioredis library. You shouldn't need to set this option unless your application is failing to start due to a failure to require/import the client library. |\n\n**Note: When using Groups**, the `timeout` option has a default of `300000` milliseconds and the generated limiters automatically receive an `id` with the pattern `${group.id}-${KEY}`.\n\n**Note:** If you are seeing a runtime error due to the `require()` function not being able to load `redis`/`ioredis`, then directly pass the module as the `Redis` option. Example:\n```js\nimport Redis from \"ioredis\"\n\nconst limiter = new Bottleneck({\n id: \"my-super-app\",\n datastore: \"ioredis\",\n clientOptions: { host: '12.34.56.78', port: 6379 },\n Redis\n});\n```\nUnfortunately, this is a side effect of having to disable inlining, which is necessary to make Bottleneck easy to use in the browser.\n\n### Important considerations when Clustering\n\nThe first limiter connecting to Redis will store its [constructor options](#constructor) on Redis and all subsequent limiters will be using those settings. You can alter the constructor options used by all the connected limiters by calling `updateSettings()`. The `clearDatastore` option instructs a new limiter to wipe any previous Bottleneck data (for that `id`), including previously stored settings.\n\nQueued jobs are **NOT** stored on Redis. They are local to each limiter. Exiting the Node.js process will lose those jobs. This is because Bottleneck has no way to propagate the JS code to run a job across a different Node.js process than the one it originated on. Bottleneck doesn't keep track of the queue contents of the limiters on a cluster for performance and reliability reasons. You can use something like [`BeeQueue`](https://github.com/bee-queue/bee-queue) in addition to Bottleneck to get around this limitation.\n\nDue to the above, functionality relying on the queue length happens purely locally:\n- Priorities are local. A higher priority job will run before a lower priority job **on the same limiter**. Another limiter on the cluster might run a lower priority job before our higher priority one.\n- Assuming constant priority levels, Bottleneck guarantees that jobs will be run in the order they were received **on the same limiter**. Another limiter on the cluster might run a job received later before ours runs.\n- `highWater` and load shedding ([strategies](#strategies)) are per limiter. However, one limiter entering Blocked mode will put the entire cluster in Blocked mode until `penalty` milliseconds have passed. See [Strategies](#strategies).\n- The `\"empty\"` event is triggered when the (local) queue is empty.\n- The `\"idle\"` event is triggered when the (local) queue is empty *and* no jobs are currently running anywhere in the cluster.\n\nYou must work around these limitations in your application code if they are an issue to you. The `publish()` method could be useful here.\n\nThe current design guarantees reliability, is highly performant and lets limiters come and go. Your application can scale up or down, and clients can be disconnected at any time without issues.\n\nIt is **strongly recommended** that you give an `id` to every limiter and Group since it is used to build the name of your limiter's Redis keys! Limiters with the same `id` inside the same Redis db will be sharing the same datastore.\n\nIt is **strongly recommended** that you set an `expiration` (See [Job Options](#job-options)) *on every job*, since that lets the cluster recover from crashed or disconnected clients. Otherwise, a client crashing while executing a job would not be able to tell the cluster to decrease its number of \"running\" jobs. By using expirations, those lost jobs are automatically cleared after the specified time has passed. Using expirations is essential to keeping a cluster reliable in the face of unpredictable application bugs, network hiccups, and so on.\n\nNetwork latency between Node.js and Redis is not taken into account when calculating timings (such as `minTime`). To minimize the impact of latency, Bottleneck only performs a single Redis call per [lifecycle transition](#jobs-lifecycle). Keeping the Redis server close to your limiters will help you get a more consistent experience. Keeping the system time consistent across all clients will also help.\n\nIt is **strongly recommended** to [set up an `\"error\"` listener](#events) on all your limiters and on your Groups.\n\n### Clustering Methods\n\nThe `ready()`, `publish()` and `clients()` methods also exist when using the `local` datastore, for code compatibility reasons: code written for `redis`/`ioredis` won't break with `local`.\n\n#### ready()\n\nThis method returns a promise that resolves once the limiter is connected to Redis.\n\nAs of v2.9.0, it's no longer necessary to wait for `.ready()` to resolve before issuing commands to a limiter. The commands will be queued until the limiter successfully connects. Make sure to listen to the `\"error\"` event to handle connection errors.\n\n```js\nconst limiter = new Bottleneck({/* options */});\n\nlimiter.on(\"error\", (err) => {\n // handle network errors\n});\n\nlimiter.ready()\n.then(() => {\n // The limiter is ready\n});\n```\n\n#### publish(message)\n\nThis method broadcasts the `message` string to every limiter in the Cluster. It returns a promise.\n```js\nconst limiter = new Bottleneck({/* options */});\n\nlimiter.on(\"message\", (msg) => {\n console.log(msg); // prints \"this is a string\"\n});\n\nlimiter.publish(\"this is a string\");\n```\n\nTo send objects, stringify them first:\n```js\nlimiter.on(\"message\", (msg) => {\n console.log(JSON.parse(msg).hello) // prints \"world\"\n});\n\nlimiter.publish(JSON.stringify({ hello: \"world\" }));\n```\n\n#### clients()\n\nIf you need direct access to the redis clients, use `.clients()`:\n```js\nconsole.log(limiter.clients());\n// { client: , subscriber: }\n```\n\n### Additional Clustering information\n\n- Bottleneck is compatible with [Redis Clusters](https://redis.io/topics/cluster-tutorial), but you must use the `ioredis` datastore and the `clusterNodes` option.\n- Bottleneck is compatible with Redis Sentinel, but you must use the `ioredis` datastore.\n- Bottleneck's data is stored in Redis keys starting with `b_`. It also uses pubsub channels starting with `b_` It will not interfere with any other data stored on the server.\n- Bottleneck loads a few Lua scripts on the Redis server using the `SCRIPT LOAD` command. These scripts only take up a few Kb of memory. Running the `SCRIPT FLUSH` command will cause any connected limiters to experience critical errors until a new limiter connects to Redis and loads the scripts again.\n- The Lua scripts are highly optimized and designed to use as few resources as possible.\n\n### Managing Redis Connections\n\nBottleneck needs to create 2 Redis Clients to function, one for normal operations and one for pubsub subscriptions. These 2 clients are kept in a `Bottleneck.RedisConnection` (NodeRedis) or a `Bottleneck.IORedisConnection` (ioredis) object, referred to as the Connection object.\n\nBy default, every Group and every standalone limiter (a limiter not created by a Group) will create their own Connection object, but it is possible to manually control this behavior. In this example, every Group and limiter is sharing the same Connection object and therefore the same 2 clients:\n```js\nconst connection = new Bottleneck.RedisConnection({\n clientOptions: {/* NodeRedis/ioredis options */}\n // ioredis also accepts `clusterNodes` here\n});\n\n\nconst limiter = new Bottleneck({ connection: connection });\nconst group = new Bottleneck.Group({ connection: connection });\n```\nYou can access and reuse the Connection object of any Group or limiter:\n```js\nconst group = new Bottleneck.Group({ connection: limiter.connection });\n```\nWhen a Connection object is created manually, the connectivity `\"error\"` events are emitted on the Connection itself.\n```js\nconnection.on(\"error\", (err) => { /* handle connectivity errors here */ });\n```\nIf you already have a NodeRedis/ioredis client, you can ask Bottleneck to reuse it, although currently the Connection object will still create a second client for pubsub operations:\n```js\nimport Redis from \"redis\";\nconst client = new Redis.createClient({/* options */});\n\nconst connection = new Bottleneck.RedisConnection({\n // `clientOptions` and `clusterNodes` will be ignored since we're passing a raw client\n client: client\n});\n\nconst limiter = new Bottleneck({ connection: connection });\nconst group = new Bottleneck.Group({ connection: connection });\n```\nDepending on your application, using more clients can improve performance.\n\nUse the `disconnect(flush)` method to close the Redis clients.\n```js\nlimiter.disconnect();\ngroup.disconnect();\n```\nIf you created the Connection object manually, you need to call `connection.disconnect()` instead, for safety reasons.\n\n## Debugging your application\n\nDebugging complex scheduling logic can be difficult, especially when priorities, weights, and network latency all interact with one another.\n\nIf your application is not behaving as expected, start by making sure you're catching `\"error\"` [events emitted](#events) by your limiters and your Groups. Those errors are most likely uncaught exceptions from your application code.\n\nMake sure you've read the ['Gotchas'](#gotchas) section.\n\nTo see exactly what a limiter is doing in real time, listen to the `\"debug\"` event. It contains detailed information about how the limiter is executing your code. Adding [job IDs](#job-options) to all your jobs makes the debug output more readable.\n\nWhen Bottleneck has to fail one of your jobs, it does so by using `BottleneckError` objects. This lets you tell those errors apart from your own code's errors:\n```js\nlimiter.schedule(fn)\n.then((result) => { /* ... */ } )\n.catch((error) => {\n if (error instanceof Bottleneck.BottleneckError) {\n /* ... */\n }\n});\n```\n\n## Upgrading to v2\n\nThe internal algorithms essentially haven't changed from v1, but many small changes to the interface were made to introduce new features.\n\nAll the breaking changes:\n- Bottleneck v2 requires Node 6+ or a modern browser. Use `require(\"bottleneck/es5\")` if you need ES5 support in v2. Bottleneck v1 will continue to use ES5 only.\n- The Bottleneck constructor now takes an options object. See [Constructor](#constructor).\n- The `Cluster` feature is now called `Group`. This is to distinguish it from the new v2 [Clustering](#clustering) feature.\n- The `Group` constructor takes an options object to match the limiter constructor.\n- Jobs take an optional options object. See [Job options](#job-options).\n- Removed `submitPriority()`, use `submit()` with an options object instead.\n- Removed `schedulePriority()`, use `schedule()` with an options object instead.\n- The `rejectOnDrop` option is now `true` by default. It can be set to `false` if you wish to retain v1 behavior. However this option is left undocumented as enabling it is considered to be a poor practice.\n- Use `null` instead of `0` to indicate an unlimited `maxConcurrent` value.\n- Use `null` instead of `-1` to indicate an unlimited `highWater` value.\n- Renamed `changeSettings()` to `updateSettings()`, it now returns a promise to indicate completion. It takes the same options object as the constructor.\n- Renamed `nbQueued()` to `queued()`.\n- Renamed `nbRunning` to `running()`, it now returns its result using a promise.\n- Removed `isBlocked()`.\n- Changing the Promise library is now done through the options object like any other limiter setting.\n- Removed `changePenalty()`, it is now done through the options object like any other limiter setting.\n- Removed `changeReservoir()`, it is now done through the options object like any other limiter setting.\n- Removed `stopAll()`. Use the new `stop()` method.\n- `check()` now accepts an optional `weight` argument, and returns its result using a promise.\n- Removed the `Group` `changeTimeout()` method. Instead, pass a `timeout` option when creating a Group.\n\nVersion 2 is more user-friendly and powerful.\n\nAfter upgrading your code, please take a minute to read the [Debugging your application](#debugging-your-application) chapter.\n\n\n## Contributing\n\nThis README is always in need of improvements. If wording can be clearer and simpler, please consider forking this repo and submitting a Pull Request, or simply opening an issue.\n\nSuggestions and bug reports are also welcome.\n\nTo work on the Bottleneck code, simply clone the repo, makes your changes to the files located in `src/` only, then run `./scripts/build.sh && npm test` to ensure that everything is set up correctly.\n\nTo speed up compilation time during development, run `./scripts/build.sh dev` instead. Make sure to build and test without `dev` before submitting a PR.\n\nThe tests must also pass in Clustering mode and using the ES5 bundle. You'll need a Redis server running locally (latency needs to be minimal to run the tests). If the server isn't using the default hostname and port, you can set those in the `.env` file. Then run `./scripts/build.sh && npm run test-all`.\n\nAll contributions are appreciated and will be considered.\n\n[license-url]: https://github.com/SGrondin/bottleneck/blob/master/LICENSE\n\n[npm-url]: https://www.npmjs.com/package/bottleneck\n[npm-license]: https://img.shields.io/npm/l/bottleneck.svg?style=flat\n[npm-version]: https://img.shields.io/npm/v/bottleneck.svg?style=flat\n[npm-downloads]: https://img.shields.io/npm/dm/bottleneck.svg?style=flat\n","maintainers":[{"name":"sgrondin","email":"jobs@simongrondin.name"}],"time":{"modified":"2023-02-22T04:22:17.647Z","created":"2014-01-20T03:20:17.151Z","0.1.0":"2014-01-20T03:20:17.985Z","1.0.0":"2014-01-20T05:35:14.691Z","1.1.0":"2014-03-16T22:18:50.378Z","1.1.1":"2014-03-23T19:14:32.603Z","1.1.2":"2014-04-25T16:53:32.121Z","1.2.0":"2014-06-07T21:13:51.715Z","1.3.0":"2014-07-03T00:09:03.507Z","1.3.1":"2014-07-05T06:42:49.027Z","1.4.0":"2014-07-14T16:01:35.617Z","1.4.1":"2014-07-24T00:34:02.796Z","1.5.0":"2014-07-24T00:34:09.825Z","1.5.1":"2014-07-26T17:22:31.595Z","1.5.2":"2014-08-11T17:49:39.220Z","1.5.3":"2014-10-02T18:31:12.533Z","1.6.0":"2015-03-16T01:33:01.087Z","1.7.0":"2015-03-16T05:48:19.575Z","1.7.1":"2015-05-07T18:38:21.663Z","1.7.2":"2015-07-12T02:31:41.099Z","1.8.0":"2015-07-14T03:56:30.648Z","1.8.1":"2015-07-14T14:17:02.289Z","1.9.0":"2015-08-22T04:16:12.043Z","1.9.1":"2015-08-31T16:22:20.674Z","1.10.0":"2016-01-19T20:52:01.617Z","1.10.1":"2016-01-23T01:56:10.651Z","1.10.2":"2016-02-08T19:26:00.136Z","1.11.0":"2016-03-22T15:12:38.171Z","1.12.0":"2016-05-07T20:17:29.990Z","1.13.0":"2016-09-25T15:49:45.503Z","1.13.1":"2016-09-25T15:50:39.916Z","1.14.0":"2016-10-05T17:04:48.251Z","1.15.0":"2016-10-30T15:48:08.610Z","1.15.1":"2017-01-19T00:07:29.014Z","1.16.0":"2017-06-19T22:46:59.083Z","2.0.0":"2018-01-14T19:00:36.174Z","2.0.1":"2018-01-16T15:47:53.733Z","2.1.0":"2018-02-22T00:10:44.047Z","2.2.0":"2018-03-13T01:02:31.342Z","2.2.1":"2018-03-18T18:30:23.780Z","2.2.2":"2018-03-24T17:51:36.692Z","2.3.0":"2018-04-08T18:34:12.161Z","2.3.1":"2018-05-19T18:19:04.423Z","2.4.0":"2018-06-09T18:28:00.755Z","2.5.0":"2018-06-16T19:05:19.530Z","2.5.1":"2018-07-03T01:13:15.027Z","2.6.0":"2018-07-08T16:22:33.900Z","2.7.0":"2018-08-12T19:34:20.306Z","2.7.1":"2018-08-13T14:50:44.695Z","2.7.2":"2018-08-17T22:15:34.638Z","2.8.0":"2018-08-20T20:36:23.817Z","2.9.0":"2018-09-06T18:51:45.834Z","2.10.0":"2018-09-13T20:17:53.961Z","2.11.0":"2018-09-20T20:13:09.723Z","2.11.1":"2018-09-27T17:57:34.647Z","2.11.2":"2018-10-02T17:55:40.445Z","2.12.0":"2018-10-09T14:55:03.340Z","2.12.1":"2018-10-13T18:01:18.472Z","2.12.2":"2018-10-21T20:48:12.724Z","2.13.0":"2018-11-03T16:19:18.324Z","2.13.1":"2018-12-01T23:09:53.271Z","2.13.2":"2018-12-04T04:52:35.220Z","2.14.0":"2018-12-16T05:26:15.501Z","2.14.1":"2018-12-23T20:32:25.263Z","2.15.0":"2018-12-28T20:58:38.010Z","2.15.1":"2019-01-12T18:48:16.901Z","2.15.2":"2019-01-13T04:31:58.247Z","2.15.3":"2019-01-15T20:39:18.850Z","2.16.0":"2019-02-03T20:44:18.863Z","2.16.1":"2019-02-05T19:52:16.588Z","2.16.2":"2019-02-10T22:56:17.586Z","2.17.0":"2019-02-25T00:11:24.505Z","2.17.1":"2019-03-03T23:16:26.423Z","2.18.0":"2019-04-13T18:05:47.920Z","2.18.1":"2019-05-11T17:31:17.113Z","2.19.0":"2019-06-01T20:10:11.293Z","2.19.1":"2019-06-08T16:50:57.220Z","2.19.2":"2019-07-06T19:42:06.819Z","2.19.3":"2019-07-16T18:07:59.732Z","2.19.4":"2019-07-17T03:42:41.114Z","2.19.5":"2019-08-03T17:14:39.035Z"},"author":{"name":"Simon Grondin"},"repository":{"type":"git","url":"git+https://github.com/SGrondin/bottleneck.git"},"readmeFilename":"README.md","keywords":["async rate limiter","rate limiter","rate limiting","async","rate","limiting","limiter","throttle","throttling","throttler","load","clustering"],"bugs":{"url":"https://github.com/SGrondin/bottleneck/issues"},"license":"MIT","users":{"shahzaib":true,"chocolateboy":true,"timdp":true,"boto":true,"firerishi":true,"erikvold":true,"rbcorrea":true,"jmsherry":true,"itaditya":true,"rochejul":true,"xiechao06":true,"ashish.npm":true},"homepage":"https://github.com/SGrondin/bottleneck#readme"}