{"_id":"hashring","_rev":"47-8cffd140032cf765ba466efb0088798a","name":"hashring","description":"A consistent hashring compatible with ketama hashing and python's hash_ring","dist-tags":{"latest":"3.2.0"},"versions":{"0.0.1":{"name":"hashring","version":"0.0.1","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"index","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"directories":{"lib":"./lib"},"maintainers":[{"name":"Arnout Kazemier","email":"info@3rd-Eden.com","url":"http://www.3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"_id":"hashring@0.0.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"aebb218fc27383bc2973fffaa49b1e2c9adf5fd3","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.1.tgz","integrity":"sha512-Q+ehrC5iE6+lYD4mBIHHxGry3Ns2h5aMh8+bhkqgGCwLfMNEhNslkAH+dnlqCTykqeLcg2rsIi6Sisk7cLwZRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6V7GCOSyPhx1rOMomJls+2sKwiX4F60iqeQ1r1lp4OAiBnO3PBJO+IeW9cTTxX5bmmw7LZymRDH9DQcRqdzuoINg=="}]}},"0.0.2":{"name":"hashring","version":"0.0.2","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"index","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"directories":{"lib":"./lib"},"maintainers":[{"name":"Arnout Kazemier","email":"info@3rd-Eden.com","url":"http://www.3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"_id":"hashring@0.0.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"d1d9ca29744c89924dcd321f0533842f010f2024","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.2.tgz","integrity":"sha512-GvUFVqZ38rYkCf9zArTg7pEqIRkxfBImd3pSip0vd0Y5ZBJ7ozFmahD1nzdKxOyjhHkrdJteN7mDUIB8jpDrVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVXzEX8Z5ODJs2HEm5T2T1Vl9BNGepcDvHKBE3civSywIhAMv81KflT0az9SRb/N9A/uF8TwcGjL92BQQQtdM/+fFt"}]}},"0.0.3":{"name":"hashring","version":"0.0.3","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"index","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"directories":{"lib":"./lib"},"maintainers":[{"name":"Arnout Kazemier","email":"info@3rd-Eden.com","url":"http://www.3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"dependencies":{"bisection":""},"_id":"hashring@0.0.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"1fe686aaebfbeb47d728d37092766af54139d316","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.3.tgz","integrity":"sha512-eDH8Bgnj+Vd+fod6/Msg1vxf+BQ5YbQSv2oQ0yFF31bqIBKVMGLXMBLClAsyty7c2LAyzPkJ6H9azJibuEL8cQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCffxTLxXC3aE+VLvZP07tAMaP7IgUZQnTAAVpn6GZd9wIhAP9SnliKlW584sXTtftZoYiFs2kPXYfkcpS5MVOe36fk"}]}},"0.0.4":{"name":"hashring","version":"0.0.4","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"index","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"directories":{"lib":"./lib","doc":"./doc"},"maintainers":[{"name":"Arnout Kazemier","email":"info@3rd-Eden.com","url":"http://www.3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"dependencies":{"bisection":""},"_id":"hashring@0.0.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.3","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"ee75c58369a27c4057eed846a5739339dbf6f9ed","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.4.tgz","integrity":"sha512-xJasa+5RKm3m8eT+04ui1vz1F/g5P0HlgqqW3hW6iD8KaTpfFgzpZyUxfVLHWUbY2h8y8emCfh3Vc6jBflJXLQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDlI4page/1jWuidc8d2p3TSixPQbte3YSWvuKpl1hOAiEA0XPydTpXS0Vi/kEIFIkTNgLVCZLpTkqj2Vqmp5GUYEk="}]}},"0.0.5":{"name":"hashring","version":"0.0.5","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"index","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"directories":{"lib":"./lib"},"maintainers":[{"name":"Arnout Kazemier","email":"info@3rd-Eden.com","url":"http://www.3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"dependencies":{"bisection":""},"_id":"hashring@0.0.5","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"165587b39fd5234cd306c82de391e710a611c28d","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.5.tgz","integrity":"sha512-A+Kt0vTUW4cNDg/Nqfvo0O4t1iUlgbBe2rOZsYCVzXw8efNQcpcNEMmNeerixeo8AjMzCclb8Ja1pAEO+cc0sA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiZKazqcM2tHhvAT6kNmh1f7B+sbrIsyno3TgVvfZ5owIhALa5dS1cxs60ZKheyWs0i+hT1tOVsh4dwBs/Jk73tC7R"}]},"scripts":{}},"0.0.6":{"name":"hashring","version":"0.0.6","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"index","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"directories":{"lib":"./lib"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"dependencies":{"bisection":""},"devDependencies":{"mocha":"*","should":"*"},"scripts":{"test":"make test"},"_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"_id":"hashring@0.0.6","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"c37654bb8e17ad604f5e38b1139d474018d8f920","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.6.tgz","integrity":"sha512-DReUyW+XD9ACTauEoG638BZEtOWoiQwSgrU8BVYrU5+kxdNPU/jagUkxufGBorjvXpDkSoQVOppVSCBDnLKOyQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIByTIy43toF4TIC6R8Cpc8TQq8bir02vApuOhsr2KI+pAiEA2BzAp/umWqoqF6SNF0wCH+LKTDs40QGuA93TsyTtCVw="}]}},"0.0.7":{"name":"hashring","version":"0.0.7","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"./lib/hashring.js","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"directories":{"lib":"./lib"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"dependencies":{"bisection":"","simple-lru-cache":"0.0.x"},"devDependencies":{"mocha":"*","should":"*"},"scripts":{"test":"make test"},"_id":"hashring@0.0.7","dist":{"shasum":"57d8a036dab9b6c56bab770c72f5e7b22dd5cd2d","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.7.tgz","integrity":"sha512-OhlCyhRDqegx5RV61qpCDAaAYtbYKlYLADm7uYvSdeQ9hPq5KX3tBamWQloewcQXXF2XuN9VqHpGFPD81+L2kw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnH3E5It+RNwhLnrCkh6ySc5566Jsrot1SrOZ6Awy6WAiEAkp1iOQ7SPb2Pw9OOlxaH/Dea6m4pQAP4ha6qzrZ6JOc="}]},"_npmVersion":"1.1.68","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"}},"0.0.8":{"name":"hashring","version":"0.0.8","author":{"name":"Arnout Kazemier"},"description":"A pure JavaScript hash ring based on libketama","main":"./index.js","keywords":["hashring","hash ring","hashing","hash","consistent hashing","libketama"],"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"licenses":[{"type":"MIT","url":"http://github.com/3rd-Eden/node-hashring/blob/master/LICENSE"}],"repositories":[{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"}],"dependencies":{"bisection":"","simple-lru-cache":"0.0.x"},"devDependencies":{"mocha":"*","should":"*"},"scripts":{"test":"make test"},"_id":"hashring@0.0.8","dist":{"shasum":"203ab13c364119f10106526d2eaf7bd42b484c31","tarball":"https://registry.npmjs.org/hashring/-/hashring-0.0.8.tgz","integrity":"sha512-XtpGGkNnsKoWTjFtzDBjxfb6tGnwKCibjCOgOSF/egTE6hLotGoumamaWN9HWK1EnKtvaybEX6lj4/qqmfhLwA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGyHKcN/QrXhtWbvdwcEegKCseKPTBt+ECOyQmnz5Ui6AiAwLMrXwR0tdEdDXMsa2AEYs8FIOZBu+nwu4C7wPRcBqg=="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"}},"1.0.0":{"name":"hashring","version":"1.0.0","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":"http://github.com/3rd-Eden/node-hashring/issues","homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"connection-parse":"0.0.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","microtime":"0.3.x","mocha":"1.8.x","should":"1.2.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"_id":"hashring@1.0.0","dist":{"shasum":"eba9531401b08d347f21f375ab2cf11ec6c9eb79","tarball":"https://registry.npmjs.org/hashring/-/hashring-1.0.0.tgz","integrity":"sha512-2RAnH+pxp3OeRFHaBy7EtaO+Ro1U+PmgjgKknJEeVZYQDT1jY8nYxP9/M4ENFuYIqCHuIjY2bkbRq5GymUWmpw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBv+DsNHhYTwNFrYS13+Oe1yTHhphS/VdSUi5V/5iLGwAiB/eOOuLTdB2yeqqRn/ecbHSwV9uPkrvdWELXnCUegF4w=="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}]},"1.0.1":{"name":"hashring","version":"1.0.1","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":"http://github.com/3rd-Eden/node-hashring/issues","homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"connection-parse":"0.0.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","microtime":"0.3.x","mocha":"1.8.x","should":"1.2.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"_id":"hashring@1.0.1","dist":{"shasum":"b6a7b8c675a0c715ac0d0071786eb241a28d0a7c","tarball":"https://registry.npmjs.org/hashring/-/hashring-1.0.1.tgz","integrity":"sha512-0ckhK9NuDPxBr3gvuLMfTYDqJuiKfqDQjAfCdgFKX7ZeL25Q83b0FVN10dU6C8IfgaJJXlND+rboAh4Qk2f/Ow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBr4aR1lKPTaLDwWPzQDfT+uSwpXKDkl0VYKkdDlsRtgIgZHFEb4MtZ4PsNe9VGXi+xENLz/+TRB4PWSpPeJJ4bxw="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}]},"1.0.2":{"name":"hashring","version":"1.0.2","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"connection-parse":"0.0.x","nan":"0.3.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","microtime":"0.3.x","mocha":"1.8.x","should":"1.2.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"_id":"hashring@1.0.2","dist":{"shasum":"d33d455f1a4e39f28122beb2d7b858526e6df318","tarball":"https://registry.npmjs.org/hashring/-/hashring-1.0.2.tgz","integrity":"sha512-SZq/l1BqJoZV7+HszxydKOYDNq6h3UeM3KcfJNuK/9Bh3UijevAquhNAuZNRi5gQ7meWEvaidfWBELOOic4AdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFRTWKTCHk35jZD+3DMAhvQHOHCMNfI+88QfFckB7Bs3AiEAxbUcfle/QuVBSfYAwCCqQzdNDCJ95M31aZacTPwqGbM="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}]},"1.0.3":{"name":"hashring","version":"1.0.3","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"bindings":"1.1.x","connection-parse":"0.0.x","nan":"0.3.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","microtime":"0.3.x","mocha":"1.8.x","should":"1.2.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"_id":"hashring@1.0.3","dist":{"shasum":"fec1fc68ad8f9ec5dd0212b78cdd5583cee8994b","tarball":"https://registry.npmjs.org/hashring/-/hashring-1.0.3.tgz","integrity":"sha512-RjODZPp3olQ25wqyc2MOalwiLvrEL5vveI+xHoma0t7dwK7a9HiO7GzSgk5eZylHKh8HGike+0C35rgJmQSXOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuaqExzDCEco01mS3gHJlKgNhYHp6tnROO3dHziRZiRgIgOJzogQ8kcfpOnRmDpQ7szlJVWcBFZ101XwMSjY27TT8="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}]},"2.0.0":{"name":"hashring","version":"2.0.0","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"bindings":"1.1.x","connection-parse":"0.0.x","nan":"1.0.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","microtime":"0.6.x","mocha":"1.8.x","should":"1.2.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"_id":"hashring@2.0.0","_shasum":"09faae6f124dedeeb809636e78b1ed5656ee3b59","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"dist":{"shasum":"09faae6f124dedeeb809636e78b1ed5656ee3b59","tarball":"https://registry.npmjs.org/hashring/-/hashring-2.0.0.tgz","integrity":"sha512-Xcp6g7ixbDiVX0cY+h4MhwIg83TpYFR/U6SaXA4lC/rn2QyP/6n0TS0QDqfJftuwibf3NOaumbZL65GnTNPJhw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbG5HOCquDBgGnTF0+59elxDVL5aVx/m2owU9XpH6J9QIgYxyR8nqB+IS0hvqtDqaRh80aa7lGU/gs78rZIHuWq3A="}]}},"2.0.1":{"name":"hashring","version":"2.0.1","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"bindings":"1.2.x","connection-parse":"0.0.x","nan":"1.1.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","microtime":"0.6.x","mocha":"1.20.x","should":"4.0.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"_id":"hashring@2.0.1","_shasum":"998606ffbd3f0b663fd6410a5ccb987b6c1751ee","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"dist":{"shasum":"998606ffbd3f0b663fd6410a5ccb987b6c1751ee","tarball":"https://registry.npmjs.org/hashring/-/hashring-2.0.1.tgz","integrity":"sha512-HYlHVwQM2UGqB+IFlKEdaLFut+yS9BZo36NMyhZUI8v4gOlSIsLs1ZHAfIF2NHUDnkThSevZDB/llhqEW4MHbA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtZ2CdsZPxpCc1pJni0Oi/AfMgNVZgUUyWv2Pudmyd+AIgex7Mj57v7da3Yjkwo9tWMqihrlsjA2nAX5WnWP34MnM="}]}},"2.0.2":{"name":"hashring","version":"2.0.2","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"bindings":"1.2.x","connection-parse":"0.0.x","nan":"1.1.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","microtime":"0.6.x","mocha":"1.20.x","should":"4.0.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"_id":"hashring@2.0.2","_shasum":"7b26e82322e93e5e8ceba49df8efd468759bc98f","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"dist":{"shasum":"7b26e82322e93e5e8ceba49df8efd468759bc98f","tarball":"https://registry.npmjs.org/hashring/-/hashring-2.0.2.tgz","integrity":"sha512-Vlm+zaPOENEUKFJnR2vMcdf/ltpL0j6OQA2K0yz4BxMv2CiFQm90SNGCJ0vfCIqU/zSdRbXsYJq8W74omT30HA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/DqdYxy0KmNP9Dqpf0cwjXgD8H5L0ATBMIyAmMfkpEwIgb+0qa6zBZRtW5f8F+0r1y0OlLLxuYy5edPsH4O7l4+Y="}]}},"3.0.0":{"name":"hashring","version":"3.0.0","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"bindings":"1.2.x","connection-parse":"0.0.x","nan":"1.3.x","simple-lru-cache":"0.0.x"},"devDependencies":{"benchmark":"1.0.x","devnull":"0.0.x","mocha":"1.21.x","pre-commit":"0.0.x","should":"4.0.x"},"scripts":{"test":"make test","install":"node-gyp rebuild"},"gypfile":true,"gitHead":"d30bf43503fc60eec307b57652a37fc4f26770e9","_id":"hashring@3.0.0","_shasum":"7fe391ea1c9b6cd266b8ddf2a3816086b17ac186","_from":".","_npmVersion":"1.4.27","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"dist":{"shasum":"7fe391ea1c9b6cd266b8ddf2a3816086b17ac186","tarball":"https://registry.npmjs.org/hashring/-/hashring-3.0.0.tgz","integrity":"sha512-uqL3Ug6/SbDLXJVNBYdl+VvnHQsSKBF2S5F7rDiprDy0WN25axMa/AwyhS0BQwPWZEQkuT2OKA/pYntySrSR2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICabbpTiepogCc16r3AGgNyWuCn13qbCUH2j0okF6mhjAiEA32aUhoWjQ2dFKXAwOecQVdBAdpY86fka8vYC+/86sh0="}]}},"3.1.0":{"name":"hashring","version":"3.1.0","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"bindings":"1.2.x","connection-parse":"0.0.x","nan":"1.5.x","simple-lru-cache":"0.0.x"},"devDependencies":{"assume":"0.0.x","benchmark":"1.0.x","devnull":"0.0.x","istanbul":"0.3.x","mocha":"2.1.x","pre-commit":"0.0.x"},"scripts":{"100%":"istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100","test":"mocha tests/api.test.js tests/distribution.test.js","watch":"mocha --watch tests/api.test.js tests/distribution.test.js","coverage":"istanbul cover ./node_modules/.bin/_mocha -- tests/api.test.js tests/distribution.test.js","test-travis":"istanbul cover node_modules/.bin/_mocha --report lcovonly -- tests/api.test.js tests/distribution.test.js","install":"node-gyp rebuild"},"gypfile":true,"gitHead":"47ca4fc5da2543022a0cb1b767afd0a5696fabf0","_id":"hashring@3.1.0","_shasum":"f315f99f281d9ef0292ca7abe50aa8f4ef7f8aad","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"V1","email":"info@3rd-Eden.com"},"maintainers":[{"name":"V1","email":"info@3rd-Eden.com"}],"dist":{"shasum":"f315f99f281d9ef0292ca7abe50aa8f4ef7f8aad","tarball":"https://registry.npmjs.org/hashring/-/hashring-3.1.0.tgz","integrity":"sha512-y9S3pILAovQRBvBkitDZfDn9grEy9oruriOILikNQj5jjzTOYGaWRlI9jiUCRpkmeuclhNKvM3RjUbqC+5yKlw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVhjNM0HD84TqfbteCm8g/w5wXPy1LUZWi7ddVoeMcoQIhAJ3AY5ube+vQXEdADfrobUStFYxReZ6ebP/JLq29APCB"}]}},"3.1.1":{"name":"hashring","version":"3.1.1","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"http://github.com/3rd-Eden/node-hashring.git"},"dependencies":{"bindings":"1.2.x","connection-parse":"0.0.x","nan":"1.8.x","simple-lru-cache":"0.0.x"},"devDependencies":{"assume":"1.2.x","benchmark":"1.0.x","devnull":"0.0.x","istanbul":"0.3.x","mocha":"2.2.x","pre-commit":"1.0.x"},"scripts":{"100%":"istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100","test":"mocha tests/api.test.js tests/distribution.test.js","watch":"mocha --watch tests/api.test.js tests/distribution.test.js","coverage":"istanbul cover ./node_modules/.bin/_mocha -- tests/api.test.js tests/distribution.test.js","test-travis":"istanbul cover node_modules/.bin/_mocha --report lcovonly -- tests/api.test.js tests/distribution.test.js","install":"node-gyp rebuild"},"gypfile":true,"gitHead":"6da62601d1ddee810f11354d86137514809d12ad","_id":"hashring@3.1.1","_shasum":"a603f0d36de41b1813d9a3c03e7f6b5fe2142971","_from":".","_npmVersion":"2.7.5","_nodeVersion":"0.10.35","_npmUser":{"name":"3rdeden","email":"npm@3rd-Eden.com"},"maintainers":[{"name":"v1","email":"info@3rd-Eden.com"},{"name":"3rdeden","email":"npm@3rd-Eden.com"}],"dist":{"shasum":"a603f0d36de41b1813d9a3c03e7f6b5fe2142971","tarball":"https://registry.npmjs.org/hashring/-/hashring-3.1.1.tgz","integrity":"sha512-IUsrmRbxNkgfxASr4lfj2QUqJY3n66YxyGIujV5CErhPtr+dTdH9H412g0Jfl+WDOCn2K3e259k9NmXDxSmr0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEg+YZzTDp1LUhTnDupF7D0WBczDnIH1U5iy6aSX7lTcAiEAn0suU3uougesz+Kbjv0cd4aj8xA9/PIIEMF9kB46YOQ="}]}},"3.2.0":{"name":"hashring","version":"3.2.0","author":{"name":"Arnout Kazemier"},"description":"A consistent hashring compatible with ketama hashing and python's hash_ring","main":"./index.js","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"license":"MIT","bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"homepage":"http://github.com/3rd-Eden/node-hashring/","repository":{"type":"git","url":"git+ssh://git@github.com/3rd-Eden/node-hashring.git"},"dependencies":{"connection-parse":"0.0.x","simple-lru-cache":"0.0.x"},"devDependencies":{"assume":"1.2.x","benchmark":"1.0.x","devnull":"0.0.x","istanbul":"0.3.x","mocha":"2.2.x","pre-commit":"1.1.x"},"scripts":{"100%":"istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100","test":"mocha tests/api.test.js tests/distribution.test.js","watch":"mocha --watch tests/api.test.js tests/distribution.test.js","coverage":"istanbul cover ./node_modules/.bin/_mocha -- tests/api.test.js tests/distribution.test.js","test-travis":"istanbul cover node_modules/.bin/_mocha --report lcovonly -- tests/api.test.js tests/distribution.test.js"},"gitHead":"20f1abe3761bf920c9c2c61fda53f0a3b93403c9","_id":"hashring@3.2.0","_shasum":"fda4efde8aa22cdb97fb1d2a65e88401e1c144ce","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"3rdeden","email":"npm@3rd-Eden.com"},"maintainers":[{"name":"v1","email":"info@3rd-Eden.com"},{"name":"3rdeden","email":"npm@3rd-Eden.com"}],"dist":{"shasum":"fda4efde8aa22cdb97fb1d2a65e88401e1c144ce","tarball":"https://registry.npmjs.org/hashring/-/hashring-3.2.0.tgz","integrity":"sha512-xCMovURClsQZ+TR30icCZj+34Fq1hs0y6YCASD6ZqdRfYRybb5Iadws2WS+w09mGM/kf9xyA5FCdJQGcgcraSA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJu6LJzeD1eSKxhUnS9upB4pWcc2q+2wsKD7TaT+xAwwIhAME6rbql6LpMXVCmDEcPoHLf/HIVQelGOZXjIQkLC8d8"}]}}},"maintainers":[{"email":"npm@3rd-Eden.com","name":"3rdeden"},{"email":"npm@3rd-Eden.com","name":"v1"}],"time":{"modified":"2022-06-18T19:31:32.257Z","created":"2011-04-20T20:30:02.991Z","0.0.1":"2011-04-20T20:30:03.461Z","0.0.2":"2011-04-21T20:47:03.562Z","0.0.3":"2011-04-22T17:30:38.314Z","0.0.4":"2011-05-06T09:11:44.814Z","0.0.5":"2011-06-05T19:10:20.651Z","0.0.6":"2012-05-03T19:38:00.705Z","0.0.7":"2013-01-11T16:03:52.440Z","0.0.8":"2013-02-13T19:01:43.574Z","1.0.0":"2013-02-24T09:49:25.038Z","1.0.1":"2013-03-14T13:57:48.260Z","1.0.2":"2013-09-13T19:32:10.692Z","1.0.3":"2013-10-16T12:07:22.253Z","2.0.0":"2014-05-18T13:50:26.038Z","2.0.1":"2014-05-31T18:27:51.838Z","2.0.2":"2014-08-06T12:13:40.815Z","3.0.0":"2014-09-22T06:53:49.275Z","3.1.0":"2015-01-16T09:25:23.499Z","3.1.1":"2015-05-06T13:11:53.203Z","3.2.0":"2015-08-21T12:22:44.452Z"},"author":{"name":"Arnout Kazemier"},"repository":{"type":"git","url":"git+ssh://git@github.com/3rd-Eden/node-hashring.git"},"readme":"# HashRing\n\nThe HashRing module provides consistent hashing that is compatible with the\noriginal libketama library that was developed at last.fm. In addition to beeing\ncompatible with `libketama` it's also compatible with the `hash_ring` module for\nPython. See the compatiblity section of the API for more details on this.\n\n### Build status\n\n[![BuildStatus](https://secure.travis-ci.org/3rd-Eden/node-hashring.png?branch=master)](http://travis-ci.org/3rd-Eden/node-hashring)\n\n## Installation\n\nThe advised installation of module is done through the Node package manager (npm).\n\n```\nnpm install hashring --save\n```\n\nThe `--save` parameter tells npm that it should automatically add the module to\nthe `dependencies` field in your package.json.\n\n## Usage\n\n```js\nvar HashRing = require('hashring');\n```\n\nThe HashRing constructor is designed to handle different argument types as a\nconsistent hash ring can be use for different use cases. You can supply the\nconstructor with:\n\n#### String\n\nA single server, possible, but pointless in most cases if you only use one\nserver, then done use the HashRing at all, it only adds overhead.\n\n```js\nvar ring = new HashRing('127.0.0.1:11211');\n```\n\n#### Array\n\nMultiple servers for the HashRing.\n\n```js\nvar ring = new HashRing(['127.0.0.1:11211', '127.0.0.2:11211']);\n```\n\n#### Object\n\nAn Object where the keys of the Object are the servers and the value can be a\n`Number` and it will be seen as weight for server. The value can also be an\nObject. Where the key can be a weight or a vnode.\n\nWeights or vnodes are used to give servers a bigger distribution in the\nHashRing. For example you have 3 servers where you want to distribute your keys\nover but not all servers are equal in capacity as 2 of those machines have 200mb\nof memory and the other has 3.2 gig of memory. The last server is substantially\nbigger and there for should receive a greater distrubtion in the ring.\n\nFor a rule of thumb use the amount of memory as weight:\n\n```js\nvar HashRing = require('hashring');\n\nvar ring = new HashRing({\n  '127.0.0.1:11211': 200,\n  '127.0.0.2:11211': { weight: 200 }, // same as above\n  '127.0.0.3:11211': 3200\n});\n```\n\nIf you want create a server with multiple vnodes (virtual nodes):\n\n```js\nvar HashRing = require('hashring');\n\nvar ring = new HashRing({\n  '127.0.0.1:11211': { vnodes: 50 },\n  '127.0.0.2:11211': { vnodes: 200 },\n  '127.0.0.3:11211': { vnodes: 100 }\n});\n```\n\n### Algorithm\n\nWith the second argument you can configure the algorithm that is used to hash\nthe keys. It defaults to `md5` and can only contain values that are accepted in\nNode's `crypto` API. Alternatively you can supply it with a function for a\ncustom hasher. But do note that the hashValue will be calculated on the result.\n\n### Options\n\n- `vnode count` The amount of virtual nodes per server, defaults to 40 as this\n  generates 160 points per server as used by ketama hashing.\n- `compatiblity` Allows you to force a compatibility mode of the HashRing. It\n  default to ketama hash rings but if you are coming from a python world you\n  might want compatibility with the `hash_ring` module. There's a small diff\n  between `hash_ring` and `ketama` and that's the amount of replica's of a server.\n  Ketama uses 4 and `hash_ring` uses 3. Set this to `hash_ring` if you want to\n  use 3.\n- `replicas` The amount of replicas per server. Defaults to 4.\n- `max cache size` We use a simple LRU cache inside the module to speed up\n  frequent key lookups, you can customize the amount of keys that need to be\n  cached. It defaults to 5000.\n- `default port` The default port number which will removed from the server\n  address to provide ketama compatibility.\n\n```js\n'use strict';\n\n// require the module, it returns a HashRing constructor\nvar HashRing = require('hashring');\n\n// Setup hash rings with your servers, in this example I just assume that all\n// servers are equal, and we want to bump the cache size to 10.000 items.\nvar ring = new HashRing([\n    '127.0.0.1',\n    '127.0.0.2',\n    '127.0.0.3', \n    '127.0.0.4'\n  ], 'md5', {\n    'max cache size': 10000\n  });\n\n// Now we are going to get some a server for a key\nring.get('foo bar banana'); // returns 127.0.0.x\n\n// Or if you might want to do some replication scheme and store/fetch data from\n// multiple servers\nring.range('foo bar banana', 2).forEach(function forEach(server) {\n  console.log(server); // do stuff with your server\n});\n\n// Add or remove a new a server to the ring, they accept the same arguments as\n// the constructor\nring.add('127.0.0.7').remove('127.0.0.1');\n```\n\n### API's Table of Contents\n\n- [HashRing.continuum()](#hashringcontinuum)\n- [HashRing.get()](#hashringgetkey)\n- [HashRing.range()](#hashringrangekey-size-unique)\n- [HashRing.swap()](#hashringswapfrom-to)\n- [HashRing.add()](#hashringaddserver)\n- [HashRing.remove()](#hashringremoveserver)\n- [HashRing.reset()](#hashringreset)\n- [HashRing.end()](#hashringend)\n\n#### HashRing.continuum()\n\nGenerates the continuum of server a.k.a as the Hash Ring based on their weights\nand virtual nodes assigned.\n\n---\n\n#### HashRing.get(**key**)\n\nFind the correct node for the key which is closest to the point after what the\ngiven key hashes to.\n\n- **key** String, Random key that needs to be searched in the hash ring\n\n**returns:** The matching server address.\n\n---\n\n#### HashRing.range(**key**, **size**, **unique**)\n\nReturns a range of servers. Could be useful for replication.\n\n- **key** String, Random key that needs to be searched in the hash ring\n- **size** Number, Amount items to be returned (maximum). Defaults to the amount\n  of servers that are in the hashring.\n- **unique** Boolean, Don't return duplicate servers. Defaults to true.\n\n**returns:** The array of servers that we found.\n\n---\n\n#### HashRing.swap(**from*, **to**)\n\nHotswap identical servers with each other. This doesn't require the cache to be\ncompletely nuked and the hash ring distribution to be re-calculated.\n\nPlease note that removing the server and a new adding server could potentially\ncreate a different distribution.\n\n- **from** String, The server that needs to be replaced\n- **to** String. The server that replaces the server\n\n---\n\n#### HashRing.add(**server**)\n\nAdd a new server to ring without having to re-initialize the hashring. It\naccepts the same arguments as you can use in the constructor.\n\n- **server** Server that need to be added to the ring.\n\n---\n\n#### HashRing.remove(**server**)\n\nRemove a server from the hash ring.\n\n- **server** Server that need to be removed from the ring.\n\n---\n\n#### HashRing.has(**server**)\n\nChecks if a given server exists in the hash ring.\n\n- **server** Server for whose existence we're checking.\n\n---\n\n#### HashRing.reset()\n\nReset the HashRing and clean up it's references.\n\n---\n\n### HashRing.end()\n\nReset's the HashRing and closes the ring.\n\n---\n\n#### HashRing.find(**hashValue**) (private)\n\nFinds the correct position of the given hashValue in the hashring.\n\n- **hashValue** Number, The hashValue from the HashRing#hashValue method.\n\n**returns:** Index of the value in the ring.\n\n---\n\n#### HashRing.hash(**key**) (private)\n\nGenerates the hash for the key.\n\n- **key** String, Random key that needs to be hashed.\n\n**returns:** The hashed valued.\n\n---\n\n#### HashRing.digest(**key**) (private)\n\nDigest hash so we can make a numeric representation from the hash. So it can be\nfed in to our hashValue.\n\n- **key** String, Random key that needs to be hashed.\n\n**returns:** An array of charCodeAt(0) converted chars.\n\n---\n\n#### HashRing.hashValue(**key**) (private)\n\nGet the hashed value of the given key, it does the digesting, hashing yo.\n\n- **key** String, Random key that needs to be hashed.\n\n**returns:** The hash value of the key.\n\n---\n\n#### HashRing.points(**servers**)\n\nReturns the points per server.\n\n- **servers** Optional server that you want to filter for\n\n**returns:** A Object with server -> Array of points mapping\n\n## Upgrading from 0.0.x to 1.x.x\n\nThe 0.0.x releases had some serious flaws that causes it to be incompatible\nwith the 1.0.0 release. These flaws are the reason that 1.0.0 got released. They\nare not backwards compatible as they change the way that keys are hashed. The\nfollowing incompatible changes have been made for the sake of consistency:\n\n- Only accepts hashers that are build in to node (for now). As it can only\n  guarantee proper hashing of values.\n- The replace function was actually doing swaps of keys, so it's original\n  functionality has been renamed to `swap`. The replace API is now removing the\n  given server and adds it again. As this causes the servers to be properly\n  re-hashed.\n- The module now requires a C++ compiler to be installed on your server as\n  hashing the value requires support for 64bit bitshifting and JavaScript as a\n  language only supports 32bit bitshifting.\n- It adds 4 replica's instead 3 for the servers. This is how libketama\n  originally did it, if you want to have 3 replica's in the hash ring you can\n  set the compatibility option to `hash_ring`.\n- The API's have be renamed, deprecation notices are added in to place and they\n  will be removed in the next minor version bump (1.1.0)\n- Added human readable configuration options instead of camelcase. This\n  increases readability of the module.\n- CRC32 was removed as crypto engine because it was to unstable.\n","homepage":"http://github.com/3rd-Eden/node-hashring/","keywords":["hashring","hash ring","hashing","hashvalue","ketama","hash_ring","hash","consistent hashing","libketama"],"bugs":{"url":"http://github.com/3rd-Eden/node-hashring/issues"},"license":"MIT","readmeFilename":"README.md","users":{"iisii":true,"shanewholloway":true,"anlibraly":true,"shaomingquan":true}}