{"_id":"poolee","_rev":"114079","name":"poolee","description":"HTTP pool and load balancer","dist-tags":{"latest":"1.0.1"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"time":{"modified":"2021-06-03T10:46:40.000Z","created":"2012-05-11T19:14:56.382Z","1.0.1":"2016-08-29T20:23:34.545Z","1.0.0":"2015-03-27T05:57:45.532Z","0.4.16":"2015-03-27T04:56:10.598Z","0.4.15":"2014-06-04T18:38:19.011Z","0.4.11":"2013-12-11T20:17:19.426Z","0.4.9":"2013-08-16T20:14:42.228Z","0.4.8":"2013-01-11T19:31:01.257Z","0.4.7":"2013-01-07T22:47:39.965Z","0.4.6":"2012-12-13T20:15:13.766Z","0.4.5":"2012-12-11T19:37:50.171Z","0.4.4":"2012-12-05T19:59:57.406Z","0.4.3":"2012-11-29T22:19:58.168Z","0.4.2":"2012-11-28T18:36:23.130Z","0.4.1":"2012-11-28T03:00:39.496Z","0.4.0":"2012-11-28T00:31:07.869Z","0.3.0":"2012-06-14T02:03:58.281Z","0.2.0":"2012-06-01T17:47:52.092Z","0.1.1":"2012-05-14T19:54:18.727Z","0.1.0":"2012-05-11T19:14:56.382Z"},"users":{"loki2302":true,"yazanrawashdeh":true,"chirag8642":true},"author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/dannycoates/poolee.git"},"versions":{"1.0.1":{"name":"poolee","version":"1.0.1","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"git+ssh://git@github.com/dannycoates/poolee.git"},"engines":{"node":">=0.8.0"},"dependencies":{"keep-alive-agent":"0.0.1"},"scripts":{"test":"mocha -R spec -t 6000 test/*_test.js"},"devDependencies":{"mocha":"2.5.3"},"gitHead":"f243f3d049bed887b23edfd19c1db7c2852e3c48","bugs":{"url":"https://github.com/dannycoates/poolee/issues"},"_id":"poolee@1.0.1","_shasum":"5cab07e7287dab9e306cef08c6c3900fa2e3ad82","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.4.0","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"dist":{"shasum":"5cab07e7287dab9e306cef08c6c3900fa2e3ad82","size":13053,"noattachment":false,"key":"/poolee/-/poolee-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-1.0.1.tgz"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/poolee-1.0.1.tgz_1472502212238_0.2264983516652137"},"directories":{},"publish_time":1472502214545,"_cnpm_publish_time":1472502214545,"_hasShrinkwrap":false},"1.0.0":{"name":"poolee","version":"1.0.0","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.8.0"},"dependencies":{"keep-alive-agent":"0.0.1"},"scripts":{"test":"mocha -R spec -t 6000 test/*_test.js"},"devDependencies":{"mocha":"*"},"gitHead":"8b0e3b994555f4385caec701577dd450d3448006","bugs":{"url":"https://github.com/dannycoates/poolee/issues"},"_id":"poolee@1.0.0","_shasum":"3894f3b15df46517eeddb4714a4049d5abb9e1a3","_from":".","_npmVersion":"2.7.1","_nodeVersion":"1.6.2","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"dist":{"shasum":"3894f3b15df46517eeddb4714a4049d5abb9e1a3","size":12977,"noattachment":false,"key":"/poolee/-/poolee-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-1.0.0.tgz"},"directories":{},"publish_time":1427435865532,"_cnpm_publish_time":1427435865532,"_hasShrinkwrap":false},"0.4.16":{"name":"poolee","version":"0.4.16","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.8.0"},"dependencies":{"keep-alive-agent":"0.0.1"},"scripts":{"test":"mocha -R spec -t 6000 test/*_test.js"},"devDependencies":{"mocha":"*"},"gitHead":"0f4a5f160b83a970fc3e4d2318e496ba342d8590","bugs":{"url":"https://github.com/dannycoates/poolee/issues"},"_id":"poolee@0.4.16","_shasum":"93c735bd19ef7172609fc5fbc75c0659f40a74c9","_from":".","_npmVersion":"2.7.1","_nodeVersion":"1.6.2","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"dist":{"shasum":"93c735bd19ef7172609fc5fbc75c0659f40a74c9","size":12841,"noattachment":false,"key":"/poolee/-/poolee-0.4.16.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.16.tgz"},"directories":{},"publish_time":1427432170598,"_cnpm_publish_time":1427432170598,"_hasShrinkwrap":false},"0.4.15":{"name":"poolee","version":"0.4.15","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.8.0"},"dependencies":{"keep-alive-agent":"0.0.1"},"scripts":{"test":"mocha -R spec -t 6000 test/*_test.js"},"devDependencies":{"mocha":"*"},"gitHead":"c0f7d2e5e0dc7cd5999331f36b8176a8ac1c5dc0","bugs":{"url":"https://github.com/dannycoates/poolee/issues"},"_id":"poolee@0.4.15","_shasum":"c65bc59dfd752f294ec083c19683e724ef31e709","_from":".","_npmVersion":"1.4.13","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"dist":{"shasum":"c65bc59dfd752f294ec083c19683e724ef31e709","size":12746,"noattachment":false,"key":"/poolee/-/poolee-0.4.15.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.15.tgz"},"directories":{},"publish_time":1401907099011,"_cnpm_publish_time":1401907099011,"_hasShrinkwrap":false},"0.4.11":{"name":"poolee","version":"0.4.11","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"keep-alive-agent":"*"},"scripts":{"test":"mocha -R spec -t 6000 test/*_test.js"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","bugs":{"url":"https://github.com/dannycoates/poolee/issues"},"_id":"poolee@0.4.11","dist":{"shasum":"b06a1c25173b63d865f077444e57320528e6f3fe","size":12699,"noattachment":false,"key":"/poolee/-/poolee-0.4.11.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.11.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1386793039426,"_hasShrinkwrap":false,"_cnpm_publish_time":1386793039426},"0.4.9":{"name":"poolee","version":"0.4.9","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"keep-alive-agent":"*"},"scripts":{"test":"mocha -R spec -t 6000 test/*_test.js"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","bugs":{"url":"https://github.com/dannycoates/poolee/issues"},"_id":"poolee@0.4.9","dist":{"shasum":"1a9b59692bf65a61afa381e0f17b03a10dd18590","size":12332,"noattachment":false,"key":"/poolee/-/poolee-0.4.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.9.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1376684082228,"_hasShrinkwrap":false,"_cnpm_publish_time":1376684082228},"0.4.8":{"name":"poolee","version":"0.4.8","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"keep-alive-agent":"*"},"devDependencies":{"mocha":"*"},"_id":"poolee@0.4.8","dist":{"shasum":"70e117067f6101e2a434f28022865c93351ed591","size":11993,"noattachment":false,"key":"/poolee/-/poolee-0.4.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.8.tgz"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1357932661257,"_hasShrinkwrap":false,"_cnpm_publish_time":1357932661257},"0.4.7":{"name":"poolee","version":"0.4.7","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"keep-alive-agent":"*"},"devDependencies":{"mocha":"*"},"_id":"poolee@0.4.7","dist":{"shasum":"33aba02f591d9a9150c9e8636c9b44fd4c0a02bb","size":11602,"noattachment":false,"key":"/poolee/-/poolee-0.4.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.7.tgz"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1357598859965,"_hasShrinkwrap":false,"_cnpm_publish_time":1357598859965},"0.4.6":{"name":"poolee","version":"0.4.6","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"keep-alive-agent":"*"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","_id":"poolee@0.4.6","dist":{"shasum":"91cdbc63a682e48790149937b7f1287f157b887c","size":11188,"noattachment":false,"key":"/poolee/-/poolee-0.4.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.6.tgz"},"_npmVersion":"1.1.66","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1355429713766,"_hasShrinkwrap":false,"_cnpm_publish_time":1355429713766},"0.4.5":{"name":"poolee","version":"0.4.5","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"keep-alive-agent":"*"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","_id":"poolee@0.4.5","dist":{"shasum":"5736b1060ccfc85db2432136db422105d3c24135","size":11079,"noattachment":false,"key":"/poolee/-/poolee-0.4.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.5.tgz"},"_npmVersion":"1.1.66","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1355254670171,"_hasShrinkwrap":false,"_cnpm_publish_time":1355254670171},"0.4.4":{"name":"poolee","version":"0.4.4","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"keep-alive-agent":"*"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","_id":"poolee@0.4.4","dist":{"shasum":"c50e21cd42024425334922430e199917d9454d75","size":11053,"noattachment":false,"key":"/poolee/-/poolee-0.4.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.4.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1354737597406,"_hasShrinkwrap":false,"_cnpm_publish_time":1354737597406},"0.4.3":{"name":"poolee","version":"0.4.3","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"agentkeepalive":"*"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","_id":"poolee@0.4.3","dist":{"shasum":"bed4361e6a221c19db7a1cb51e864f079c434b35","size":10875,"noattachment":false,"key":"/poolee/-/poolee-0.4.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.3.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1354227598168,"_hasShrinkwrap":false,"_cnpm_publish_time":1354227598168},"0.4.2":{"name":"poolee","version":"0.4.2","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"agentkeepalive":"*"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","_id":"poolee@0.4.2","dist":{"shasum":"96f9cd8bc28ad6afa520b78bf6f24bce6922ec1a","size":10866,"noattachment":false,"key":"/poolee/-/poolee-0.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.2.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1354127783130,"_hasShrinkwrap":false,"_cnpm_publish_time":1354127783130},"0.4.1":{"name":"poolee","version":"0.4.1","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"agentkeepalive":"*"},"devDependencies":{"mocha":"*"},"readmeFilename":"readme.md","_id":"poolee@0.4.1","dist":{"shasum":"5ec46f3e8f76a0787bcd414ae7d9ba3be88fba1d","size":10820,"noattachment":false,"key":"/poolee/-/poolee-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.1.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1354071639496,"_hasShrinkwrap":false,"_cnpm_publish_time":1354071639496},"0.4.0":{"name":"poolee","version":"0.4.0","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"http://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{"agentkeepalive":"*"},"devDependencies":{"mocha":"*","optimist":"*","async":"*"},"readmeFilename":"readme.md","_id":"poolee@0.4.0","dist":{"shasum":"928c2a8bda62d36243b5dd556fd9aaac1db29d45","size":10875,"noattachment":false,"key":"/poolee/-/poolee-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.4.0.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1354062667869,"_hasShrinkwrap":false,"_cnpm_publish_time":1354062667869},"0.3.0":{"name":"poolee","version":"0.3.0","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"git://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","optimist":"*","async":"*"},"_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"_id":"poolee@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.19-pre","_defaultsLoaded":true,"dist":{"shasum":"b3c8411812ce0b04fac08ad7701ed790d15c28a1","size":12013,"noattachment":false,"key":"/poolee/-/poolee-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.3.0.tgz"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1339639438281,"_hasShrinkwrap":false,"_cnpm_publish_time":1339639438281},"0.2.0":{"name":"poolee","version":"0.2.0","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"git://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","optimist":"*","async":"*"},"_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"_id":"poolee@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.23","_nodeVersion":"v0.6.19-pre","_defaultsLoaded":true,"dist":{"shasum":"03976538edada9b716c91e14710ce3ad87cfd067","size":9107,"noattachment":false,"key":"/poolee/-/poolee-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.2.0.tgz"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1338572872092,"_hasShrinkwrap":false,"_cnpm_publish_time":1338572872092},"0.1.1":{"name":"poolee","version":"0.1.1","description":"HTTP pool and load balancer","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health","load balancer"],"repository":{"type":"git","url":"git://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*","optimist":"*","async":"*"},"_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"_id":"poolee@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18-pre","_defaultsLoaded":true,"dist":{"shasum":"26825f1d1d54a5d710856c0a621ec596a2c08579","size":8346,"noattachment":false,"key":"/poolee/-/poolee-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.1.1.tgz"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1337025258727,"_hasShrinkwrap":false,"_cnpm_publish_time":1337025258727},"0.1.0":{"name":"poolee","version":"0.1.0","description":"HTTP Pool","homepage":"http://github.com/dannycoates/poolee","author":{"name":"Danny Coates","email":"dannycoates@gmail.com"},"keywords":["pool","http","retry","health"],"repository":{"type":"git","url":"git://github.com/dannycoates/poolee.git"},"engines":{"node":">=0.6.0"},"dependencies":{},"devDependencies":{"mocha":"*"},"_npmUser":{"name":"dannycoates","email":"dannycoates@gmail.com"},"_id":"poolee@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18-pre","_defaultsLoaded":true,"dist":{"shasum":"2e676a45ddc2d9505d88411941faf62d52ce96bc","size":5547,"noattachment":false,"key":"/poolee/-/poolee-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/poolee/download/poolee-0.1.0.tgz"},"maintainers":[{"name":"dannycoates","email":"dannycoates@gmail.com"}],"directories":{},"publish_time":1336763696382,"_hasShrinkwrap":false,"_cnpm_publish_time":1336763696382}},"readme":"# poolee\n\nHTTP pool and load balancer for node.\n\n[![Build Status](https://travis-ci.org/dannycoates/poolee.png)](https://travis-ci.org/dannycoates/poolee)\n\n# Example\n\n```javascript\n\nvar Pool = require(\"poolee\")\nvar http = require(\"http\")\n\nvar servers =\n  [\"127.0.0.1:8886\"\n  ,\"127.0.0.1:8887\"\n  ,\"127.0.0.1:8888\"\n  ,\"127.0.0.1:8889\"]\n\nvar postData = '{\"name\":\"Danny Coates\"}'\n\nvar pool = new Pool(http, servers, options)\n\npool.request(\n  { method: \"PUT\"\n  , path: \"/users/me\"\n  }\n, postData\n, function (error, response, body) {\n    if (error) {\n      console.error(error.message)\n      return\n    }\n    if(response.statusCode === 201) {\n      console.log(\"put succeeded\")\n    }\n    else {\n      console.log(response.statusCode)\n      console.log(body)\n    }\n  }\n)\n```\n\n---\n\n# API\n\n## Pool\n\n### new\n\n```javascript\nvar Pool = require('poolee')\n//...\n\nvar pool = new Pool(\n  http                     // the http module to use (require('http') or require('https'))\n  ,\n  [ \"127.0.0.1:1337\"       // array of endpoints in \"host:port\" form\n  , \"127.0.0.1:1338\"\n  ]\n  ,                        // options\n  { maxPending: 1000       // maximum number of outstanding request to allow\n  , maxSockets: 20         // max sockets per endpoint Agent\n  , timeout: 60000         // request timeout in ms\n  , resolution: 1000       // timeout check interval (see below)\n  , keepAlive: false       // use an alternate Agent that does http keep-alive properly\n  , ping: undefined        // health check url\n  , pingTimeout: 2000      // ping timeout in ms\n  , retryFilter: undefined // see below\n  , retryDelay: 20         // see below\n  , maxRetries: 5          // see below\n  , name: undefined        // optional string\n  , agentOptions: undefined// an object for passing options directly to the Http Agent\n  }\n)\n```\n\n###### maxPending\n\nOnce this threshold is reached, requests will return an error to the callback as a\nsignal to slow down the rate of requests.\n\n###### resolution\n\nPending requests have their timeouts checked at this rate. If your timeout is 60000\nand resolution is 1000, the request will timeout no later than 60999\n\n###### keepAlive\n\nThe default http Agent does keep-alive in a stupid way. If you want it to work\nhow you'd expect it to set this to true.\n\n###### retryFilter\n\nAll valid http responses aren't necessarily a \"success\". This function lets you\ncheck the response before calling the request callback. Returning a \"truthy\" value\nwill retry the request.\n\nFor instance, we may want to always retry 500 responses by default:\n```javascript\noptions.retryFilter = function (\n    options  // the request.options\n  , response // the http response object\n  , body     // the response body\n  ) {\n  return response.statusCode === 500\n}\n```\n\nIf the returned value is `true` the next attempt will be delayed using exponential backoff;\nif its a `Number` it will delay the next attempt by that many ms (useful for `Retry-After` headers)\n\n###### retryDelay\n\nPool uses exponential backoff when retrying requests. This value is a scaling factor of the\ntime (ms) to wait. Here's how it works:\n```javascript\nMath.random() * Math.pow(2, attemptNumber) * retryDelay\n```\nIf `retryDelay` is 20, attemptNumber 1 (the first retry) will delay at most 40ms\n\n###### maxRetries\n\nThe maximum number of attempts to make after the first request fails. This only\ntakes effect if maxRetries < pool size.\n\n###### agentOptions\n\nThese options are passed directly to the underlying Agents used in the pool. This\nis nice for passing options like `cert` and `key` that are required for client certificates.\n\n###### ping\n\nWhen an endpoint is unresponsive the pool will not use it for requests. The ping\nurl gives a downed endpoint a way to rejoin the pool. If an endpoint is marked unhealthy\nand a ping url is given, the endpoint will make requests to its ping url until it gets\na 200 response, based on the `resolution` time.\n\nIf the ping url is undefined, the endpoint will never be marked unhealthy.\n\n\n### pool.request\n\nAn http request. The pool sends the request to one of it's endpoints. If it\nfails, the pool may retry the request on other endpoints until it succeeds or\nreaches `options.attempts` number of tries. *When `data` is a Stream, only 1\nattempt will be made*\n\n###### Usage\n\n\nThe first argument may be a url path.\nIf the callback has 3 arguments the full response body will be returned\n\n```javascript\npool.request('/users/me', function (error, response, body) {})\n```\n\nThe first argument may be an options object.\nHere's the default values:\n\n```javascript\npool.request(\n  { path: undefined        // the request path (required)\n  , method: 'GET'\n  , data: undefined        // request body, may be a string, buffer, or stream\n  , headers: {}            // extra http headers to send\n  , retryFilter: undefined // see below\n  , attempts: pool.length  // or at least 2, at most options.maxRetries + 1\n  , retryDelay: 20         // retries wait with exponential backoff times this number of ms\n  , timeout: 60000         // ms to wait before timing out the request\n  , encoding: 'utf8'       // response body encoding\n  , stream: false          // stream instead of buffer response body\n  }\n  ,\n  function (error, response, body) {}\n)\n```\n\nThe request body may be the second argument, instead of options.data (more\nuseful with `pool.post` and `pool.put`)\n\n```javascript\npool.request(\n  { path: '/foo' }\n  , 'hi there'\n  , function (error, response, body) {}\n)\n```\n\nA callback with 2 arguments will stream the response and not buffer the\nresponse body.\n\n```javascript\npool.request('/foo', function (error, response) {\n  response.pipe(somewhere)\n})\n```\n\n### pool.get\n\nJust a synonym for `request`\n\n### pool.put\n\nSame arguments as `request` that sets `options.method = 'PUT'`. Nice for\nputting :)\n\n```javascript\npool.put('/tweet/me', 'Hello World!', function (error, response) {})\n```\n\n### pool.post\n\nSame arguments as `request` that sets `options.method = 'POST'`\n\n### pool.del\n\nSame arguments as `request` that sets `options.method = 'DELETE'`\n\n### pool.addNode\n\nAdds a node to the pool given its hostname as a string. The node\nwill start in the healthy state.\n\n```javascript\npool.addNode(\"127.0.0.1:8890\");\n```\n\n### pool.removeNode\n\nRemoves a node to the pool given its hostname as a string. Note\nthat in the case of hosts with duplicate names, all instances of the\nspecified name will be removed from the pool.\n\n```javascript\npool.removeNode(\"127.0.0.1:8890\");\n```\n\n### Events\n\n##### timing\n\nEmits the request `duration` and `options` after each request\n\n##### retrying\n\nEmits the `error` of why a request is being retried\n\n##### timeout\n\nEmits the `request` when a request times out\n\n##### health\n\nEmits the `endpoint` when a node changes state between healthy/unhealthy\n","_attachments":{},"homepage":"http://github.com/dannycoates/poolee","bugs":{"url":"https://github.com/dannycoates/poolee/issues"}}