{"_id":"beaver","_rev":"47-f145094afb8d55689441a7090e23b0c3","name":"beaver","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","dist-tags":{"latest":"0.2.1"},"versions":{"0.0.1":{"name":"beaver","preferGlobal":"true","description":"CLI tool for piping logs anywhere via TCP","version":"0.0.1","author":{"name":"Clifton King","email":"cliftonk@gmail.com"},"repository":{"type":"git","url":"git://github.com/clifton/beaver.git"},"keywords":["cli","loggly","sysadmin","tools"],"dependencies":{"forever":"~> 0.6.3"},"bin":{"beaver":"./bin/beaver"},"main":"./lib/beaver","engines":{"node":">= 0.4.0"},"_id":"beaver@0.0.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"e2a69de041658aa515ddd1539b4d120d8d6f901d","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.0.1.tgz","integrity":"sha512-sQiSDsoNNE/sV0Pd3Z15y35jUtIoBDqVxUARImsvdo2InG7kEVFYTjvoTSxfE0IIlabftYlhsJ5RTVi/qisH2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXEbKZlDOsIeEFuoRw5AYpCadGsRiulQiqyat5NbQl/QIgKamBIWB9t7PTEHtQh13LkArs8EQwBaJo1K9U2/67ZrM="}]},"scripts":{},"maintainers":[{"name":"clifton","email":"clifton@orgsync.com"}],"directories":{}},"0.0.2":{"name":"beaver","preferGlobal":"true","description":"CLI tool for piping logs anywhere via TCP","version":"0.0.2","author":{"name":"Clifton King","email":"cliftonk@gmail.com"},"repository":{"type":"git","url":"git://github.com/clifton/beaver.git"},"keywords":["cli","loggly","sysadmin","tools"],"dependencies":{"forever":"~> 0.6.3"},"bin":{"beaver":"./bin/beaver"},"main":"./lib/beaver","engines":{"node":">= 0.4.0"},"_id":"beaver@0.0.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"0d04be60e75afcbe403b01d0859ae887b522e4cf","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.0.2.tgz","integrity":"sha512-KFqmEFKJaRF1ziJFKpDxkcNMK/Noxf6GebnFoJNdajT3UmQB85FwgAk5D71gjgBivRVTLqbU1N2SIOC74bg6Zg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiJAsFhwEpzF+b1Cy/8g3o4L+8ESJ8muLFupUPq5bLJQIgb2LkyFXW+dV4JodusA/2LeZ0++o2GNMzF7nPW/ROt88="}]},"scripts":{},"maintainers":[{"name":"clifton","email":"clifton@orgsync.com"}],"directories":{}},"0.0.3":{"name":"beaver","preferGlobal":"true","description":"CLI tool for piping logs anywhere via TCP","version":"0.0.3","author":{"name":"Clifton King","email":"cliftonk@gmail.com"},"repository":{"type":"git","url":"git://github.com/clifton/beaver.git"},"keywords":["cli","loggly","sysadmin","tools"],"dependencies":{"forever":"~> 0.6.3"},"bin":{"beaver":"./bin/beaver"},"main":"./lib/beaver","engines":{"node":">= 0.4.0"},"_id":"beaver@0.0.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"94a34abeb49fc6ff755b75ad0544a4489531418a","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.0.3.tgz","integrity":"sha512-FV4+tMydNEE4vfwUnRPV3Ji2qJkN5SakwO4sX36K8v9NUfqsnlTnfw4h8S6DLx2LbaikOci5ARsr+mx4/ap9bw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEiNU7THddSJmdr40LcPs477m8MDKdYR3MzKJhn5Xz8pAiEAtbpoD0NH+I6ogrE0vPf4CZfgFlA70k5HKSpJGDMb+7Q="}]},"scripts":{},"maintainers":[{"name":"clifton","email":"clifton@orgsync.com"}]},"0.0.4":{"name":"beaver","preferGlobal":"true","description":"CLI tool for piping a log's tail over TCP","version":"0.0.4","author":{"name":"Clifton King","email":"cliftonk@gmail.com"},"repository":{"type":"git","url":"git://github.com/clifton/beaver.git"},"keywords":["cli","loggly","sysadmin","tools","logging","tcp"],"bin":{"beaver":"./bin/beaver"},"engines":{"node":">= 0.4.0"},"_id":"beaver@0.0.4","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"03fdfb7811c2782246257586d5c37c0bec306fa5","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.0.4.tgz","integrity":"sha512-8H4rgLAwAHbn7rbi2UXCJaK1bTkVDYEPfyv1gVZPZKqIA+qQYNLNcuDoKKetSdef7q/6qRkOnMFKVfc5AE4nGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0K9nOvVJ+N3jQP3eBWoSbV2qKR0Nxjy1XJ0MkX80yfAiAjeZY6xnBRsXrNH/xjQkYkuwEE+cNJba1RR72NmT731A=="}]},"scripts":{},"maintainers":[{"name":"clifton","email":"clifton@orgsync.com"}]},"0.0.5":{"name":"beaver","preferGlobal":"true","description":"CLI tool for piping a log's tail over TCP","version":"0.0.5","author":{"name":"Clifton King","email":"cliftonk@gmail.com"},"repository":{"type":"git","url":"git://github.com/clifton/beaver.git"},"keywords":["cli","loggly","sysadmin","tools","logging","tcp"],"bin":{"beaver":"./bin/beaver"},"engines":{"node":">= 0.4.0"},"_id":"beaver@0.0.5","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"e98e79622b5014b55f17cbaad65808f5d27fd4d8","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.0.5.tgz","integrity":"sha512-n+KyGu4YlpDTovB1zGK1tIaF7VenzwIbHNsATnb/j3fPDv7YRcDHBSAHMAwq9eR4b/1Cnscxd10OuWVHg9CgRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGAaxE2J43UayGru2RTTAsjecDNVi3QsAynQGZw3yac8AiEA4NkN19fZADw6yxjCYR6WRNWateVtTMJACDqB1dm8X8U="}]},"scripts":{},"maintainers":[{"name":"clifton","email":"clifton@orgsync.com"}]},"0.0.6":{"name":"beaver","preferGlobal":"true","description":"CLI tool for piping a log's tail over TCP","version":"0.0.6","author":{"name":"Clifton King","email":"cliftonk@gmail.com"},"repository":{"type":"git","url":"git://github.com/clifton/beaver.git"},"keywords":["cli","loggly","sysadmin","tools","logging","tcp"],"bin":{"beaver":"./bin/beaver"},"engines":{"node":">= 0.4.0"},"_id":"beaver@0.0.6","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"8dccc6de242f34b4abf9601a314c1a79431d135b","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.0.6.tgz","integrity":"sha512-mKNXgbmhuAZ60ROkHrEWNPYQr/iFredGGjq4tYnwMLHf8pYSJm2DTmfDevCQ2G8OaFIqIHfV8tFFS6GM31e2Zw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGg7dvEsHN7Vdvlj2S0XsyBkbZC3EOx02S57KuvJO2ljAiARJEPNk+UJG80kY9jDgeCHFOX6rLgHJ8HUgUu50CDKrg=="}]},"scripts":{},"maintainers":[{"name":"clifton","email":"clifton@orgsync.com"}]},"0.1.10":{"name":"beaver","version":"0.1.10","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.10","_shasum":"5bc347744cf1e66cfc1e494b8e784e5abb0ff636","_from":".","_npmVersion":"2.14.7","_nodeVersion":"0.10.30","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"dist":{"shasum":"5bc347744cf1e66cfc1e494b8e784e5abb0ff636","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.10.tgz","integrity":"sha512-MBrjfDWpB0oamKPxnGidFT/YPCY/0qBuNLOPU8uP9VPhjPOr53UhAelJn1I7ppBlfI/R774PGWQJ7kEBdWPbMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL0/PZEizprXTO/4aKwkmtl8ewgsl7fAnI5PMZmaOBmAIhAO3nc3eUmJ1/kkbIoFLQQgCttdqpWv1D5n94NEq930O9"}]}},"0.1.11":{"name":"beaver","version":"0.1.11","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.11","_shasum":"37558fb847eb4ad7ae2174606daa7f9c12f8f05a","_from":".","_npmVersion":"2.14.7","_nodeVersion":"0.10.30","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"dist":{"shasum":"37558fb847eb4ad7ae2174606daa7f9c12f8f05a","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.11.tgz","integrity":"sha512-ZXAOABrvWd39+o89GknGTfMkth3f8dD9LW81QAccjagTPtk3aAYlhRV8snu/SOhFMJEi/DzcwsDlBiVW7nVPYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwdWxPEOCiVac3D/DEvQ6CWjXII17c/YP4AkOSbQs56wIhALAwFTM6zXUoBZHhUEmfcO6X8wE6LMYK1sFMd/aYfaKj"}]}},"0.1.12":{"name":"beaver","version":"0.1.12","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.12","_shasum":"1c2fb782f1259d9d816b9d7bae9f5252fa9f956e","_from":".","_npmVersion":"2.14.7","_nodeVersion":"0.10.30","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"dist":{"shasum":"1c2fb782f1259d9d816b9d7bae9f5252fa9f956e","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.12.tgz","integrity":"sha512-k0QjPcvST3cYpiSvWRTDeG54xKMzSuhgqKxLYGiNzQmi2EwWXF95gq5kkJO5HXTYTMP1yVERPXyGGuB2AKYX2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkMtLQvKU9PeS9slVeh3r17DnIpYC83lLcHXfHFmfWXgIgRbjBqTpr8HfvlEaZ7aFFP4GIWMlTD7HAhCK5BfqZthQ="}]}},"0.1.13":{"name":"beaver","version":"0.1.13","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.13","_shasum":"58e42bccc3cfe2c47f31922782f549bd2e89f544","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"dist":{"shasum":"58e42bccc3cfe2c47f31922782f549bd2e89f544","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.13.tgz","integrity":"sha512-l8iC4bCScaEHxcCdPARNtnfjU34AA93H6JeaOMqt8Fy7ZlPuM13/kROmEfYNQem8N3yKdl45bBrYCzDOr5KAOw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBXSrVlED2qXDU80JvmQv/XdAZpoM7RUzMIN4vso9A9NAiBFPxpaLwXOOAC6jbC1vkqfOdFUPTJDERo6nQBGsvFiMw=="}]}},"0.1.14":{"name":"beaver","version":"0.1.14","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.14","_shasum":"c2a95fb063b89b022a7d6ca61cc494a3c4b7a68d","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.0","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"c2a95fb063b89b022a7d6ca61cc494a3c4b7a68d","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.14.tgz","integrity":"sha512-sqSrr5LG4NGGRmAFC9mibCRVKPIfed0xwZtirYbdvu7WawthiP1ec8Z9XlLyIKq1cuaKl8re7OZ3uNXLOi2YXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9bem/P8oJD0sUHABhLTBgQTKR7624SvcsbQImKUd+sQIhAIUK9kYa4fnHKIjCWMhzBXYZnE9oMkTkMFbXakFfdrFU"}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/beaver-0.1.14.tgz_1458607054931_0.9065440644044429"}},"0.1.15":{"name":"beaver","version":"0.1.15","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.15","_shasum":"e892395324133a23c86b9f18b070bb78cca11ff4","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.0","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"e892395324133a23c86b9f18b070bb78cca11ff4","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.15.tgz","integrity":"sha512-l7FbcLMuyl/NCdPRhpZgxd1VJhq1KdYSwjRiA/I9I34PgzPQnfZWdd8nu2T6/cbmmDa1YwdgElU03uCvlF3UmA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAuVVswusv8THePp8eA6lydA99A4K9SRhQsJXYagp9HjAiEAwGKmMfYqg4ScxIzvUQdifKYL4jdeiq3G5s9wypKQVnw="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/beaver-0.1.15.tgz_1458858572588_0.646574207348749"}},"0.1.16":{"name":"beaver","version":"0.1.16","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.16","_shasum":"52a0ec0a0cedc46bafd789f1b92cd924afa26c25","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"52a0ec0a0cedc46bafd789f1b92cd924afa26c25","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.16.tgz","integrity":"sha512-SHdnQNehCr7irQd1NJMdHgLuQFrwqZVN3UK4tLkL29Qc9FcON4sfOYFQvspRs6YzGHTULqrWWpsbAA4WTl/W5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBRnpKSk5Qe56ciEO+8j69cQCCzW6UCtUZAEWm9Fu8swIgTk/HrBzU/Ty+4I3nwdtygLyuuOvfYA9qgIEYQnhDHrw="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.16.tgz_1459350604493_0.4262513571884483"}},"0.1.17":{"name":"beaver","version":"0.1.17","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.17","_shasum":"d718988d5d7ea8f985edc2b00c77f572826064d6","_from":".","_npmVersion":"2.15.0","_nodeVersion":"4.4.2","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"d718988d5d7ea8f985edc2b00c77f572826064d6","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.17.tgz","integrity":"sha512-XBz4U1DmZKxd8yOr45+wIcqREmxMd0DiD9QjIw4CJQF8QN/S3/E02pTLTk6ZPdAZcc/g1zq5Ax8V17mtdoL+mA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHTi68DU4M0LQXy0fFKNkrX0jZ+r78ODi008RGAteIOyAiEAprZXZpMNRCadvNgeytA4Q49NwIpXPhmiQOzPcmYPcTY="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.17.tgz_1460483484566_0.7975207741837949"}},"0.1.18":{"name":"beaver","version":"0.1.18","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.18","_shasum":"483930cb6be187d717b06a1e14e10cefce7884f2","_from":".","_npmVersion":"2.15.0","_nodeVersion":"4.4.2","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"483930cb6be187d717b06a1e14e10cefce7884f2","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.18.tgz","integrity":"sha512-ftSNH0kh5kaniKtpKJFNFXQbfK8MA/VqHhqEk3ZPlyz6oAnV3uXClWdJ5p+7SBPZQsyUVdC6m0ZPbeiYnkYXYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC789ZiWWSErCqXLkS7ZXvlpcZgxOucZeW39Sr5CRyaOwIhAMXeadx0WgZwzSrSDWQK7oOSN0fqa+i8RJgZxW7xmWex"}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.18.tgz_1460741298408_0.8457232175860554"}},"0.1.19":{"name":"beaver","version":"0.1.19","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.19","_shasum":"a73eeaa361904bc971e6afce40029138fbe6cba6","_from":".","_npmVersion":"2.15.0","_nodeVersion":"4.4.2","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"a73eeaa361904bc971e6afce40029138fbe6cba6","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.19.tgz","integrity":"sha512-wkEGDHSYu3MZ2MxBk0pZnDu5KuuJimCSxjp1owE+FU5Uj5Pp4PtOnIY8df3mQlxx1UCrEX4EtHFwR9PF/KWraw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCa5q4foXFMn61J8jIeTITBvZL9zsCrb94LCu4Z6vk7mQIgZfoyupx511dNW3RqWKAWSgj8ugSORyKqxVH/GoOYeHw="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.19.tgz_1461007575216_0.5897072716616094"}},"0.1.20":{"name":"beaver","version":"0.1.20","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.20","_shasum":"032c9950a5cf1eb16c513233bac365d375311ce8","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.3","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"032c9950a5cf1eb16c513233bac365d375311ce8","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.20.tgz","integrity":"sha512-WZ3pJNpCvGet1rMyIYc2ztMVLAHL1ecgU4/zAdqpH/ZcVqTnKVleAUpnY5WWHuteJMO9a2zo0YgQbMXnwv5fgg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0yGokAl7gk8/Z3KUYpUaJkvygJ+Qrh/0mjBzxOmwxPAiEAyFHV/h562Yz2LSjYM2frAllqPZi3X7rqN1Ypciuonis="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.20.tgz_1461261746376_0.4500614309217781"}},"0.1.21":{"name":"beaver","version":"0.1.21","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.21","_shasum":"dc90eb739499429543f972081b71c8f0b8d3e949","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.3","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"dc90eb739499429543f972081b71c8f0b8d3e949","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.21.tgz","integrity":"sha512-3cIdWXAzVFm9tou4gmftS7EgKEJbodVhZ4pM+Few2hc3uW8n0OwDQwM+YatXRMOuo8T6hq8wYDRSfFp1TqGEPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBloMdJJzlDFF7G8Djz/13nVqKy95jPTTlslvXyTKR2YAiALRX5nxWezkBYqth26L0PyVDpw+V2rBIokFyT08yOhtQ=="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/beaver-0.1.21.tgz_1461966104153_0.9968840116634965"}},"0.1.22":{"name":"beaver","version":"0.1.22","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.22","_shasum":"43cd18f0761b7c51df53af093efd4ca5f3f1785c","_from":".","_npmVersion":"2.15.5","_nodeVersion":"4.4.5","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"43cd18f0761b7c51df53af093efd4ca5f3f1785c","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.22.tgz","integrity":"sha512-bjAlMIV+X4HesQn1rflygkS/9B1p6p4gd2EesAn3GJZchibAHnFbcPkjKbLtc+z3xhJ99ACYYLfRN6Z2J0jAJg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAshNJnOBUP2Nkn42yOyCndSSxJ0tebrZji0ILpgoS5zAiBbndZg1j0A/mDrHWKWpK3xx++MhlP0TFaneAI/KnWjaw=="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.22.tgz_1464384366927_0.2326792231760919"}},"0.1.23":{"name":"beaver","version":"0.1.23","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"LGPLv3","_id":"beaver@0.1.23","_shasum":"f53e32e30e478dcd7a4b117861906b0afee52f6d","_from":".","_npmVersion":"2.15.5","_nodeVersion":"4.4.5","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"f53e32e30e478dcd7a4b117861906b0afee52f6d","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.23.tgz","integrity":"sha512-so1/dNVDbw26hhsAjcU0BBYkRix/A4pYiHWl8lmvprabUv3yIina1Dsbc99JjptqRXZ3+akaUAPO3X280VLrmA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhMxCoUV2WJVz1bBxN4Wu09xt7Cdo4cGDwXkwmp5n0bAIgVkY7/Y/+jSx3igAFmAfADzdNhZAlCDlK0YTgiq9UrWc="}]},"maintainers":[{"name":"genixpro","email":"genixpro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/beaver-0.1.23.tgz_1467819315998_0.6378097599372268"}},"0.1.24":{"name":"beaver","version":"0.1.24","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT","_id":"beaver@0.1.24","_shasum":"1787651cf0b6cb2753af11ab3bdca8b7877c0252","_from":".","_npmVersion":"2.15.9","_nodeVersion":"4.5.0","_npmUser":{"name":"genixpro","email":"genixpro@gmail.com"},"dist":{"shasum":"1787651cf0b6cb2753af11ab3bdca8b7877c0252","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.24.tgz","integrity":"sha512-dsPWt+6noDl2uUKywXeJ2k1cLCOK/e9WCk/KwwIWRlFg5/9fiOOIcLJxQw5K4j8Ki4Mw2Hao11HOpntO6APtWA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQsDKPSGah4DaFsrKLyvoM9T8FXCriFwA2XLYa8kDmYAIgFZXRhks2qSUPz7o2SObzHhodCewNhp8VM6J7oqdsmak="}]},"maintainers":[{"name":"gabrielcastro","email":"npm@gabrielcastro.ca"},{"name":"genixpro","email":"genixpro@gmail.com"},{"name":"niksawtschuk","email":"nik@sawtschuk.com"},{"name":"sgiacomel","email":"simone@getsensibill.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/beaver-0.1.24.tgz_1477063903564_0.10725661320611835"}},"0.1.25":{"name":"beaver","version":"0.1.25","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"4.7.x","async":"1.4.x","bluebird":"3.4.x","amqplib":"0.4.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT","_id":"beaver@0.1.25","_shasum":"95f7ad60358e841a7de8fa6d97b261b1c479969e","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.4","_npmUser":{"name":"sgiacomel","email":"simone@getsensibill.com"},"dist":{"shasum":"95f7ad60358e841a7de8fa6d97b261b1c479969e","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.25.tgz","integrity":"sha512-Wk32RDHyohHuqNxchDyReFT2cIBK+57K4hyHr8YVGcBGZz4/qLC3Zls7a+q7eCZJVjrqpB2ASerfTfF/T67oGg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8RYiSIoU7cNHkykkKPBII+0j0yO5dwYwENJOzhDWGoAIgS3/y6hOpREhbCU5aCNjpbZQoKRwvcIkZbPHSF+JxTPI="}]},"maintainers":[{"name":"gabrielcastro","email":"npm@gabrielcastro.ca"},{"name":"niksawtschuk","email":"nik@sawtschuk.com"},{"name":"sgiacomel","email":"simone@getsensibill.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.25.tgz_1485043909833_0.010576566914096475"}},"0.1.26":{"name":"beaver","version":"0.1.26","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"4.7.x","async":"1.4.x","bluebird":"3.4.x","amqplib":"0.4.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT","_id":"beaver@0.1.26","_shasum":"1d921699ac97918aea8e4da28c978d23c3f19eca","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgiacomel","email":"simone@getsensibill.com"},"dist":{"shasum":"1d921699ac97918aea8e4da28c978d23c3f19eca","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.26.tgz","integrity":"sha512-ZT0SREItHD93010lC4hI9TfH9JAOi90ps6Xyfszww+SdZQaZNETdv5DizD1zziK4OI5e/dPvuaAmIO6oU4Ujew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFMDdhFu4uRWpPqrSqzUlSSdF31ryiESmvPxIagMhaywIhALUd+fPkOFmUW8EEKgRBSJYDoq341NwSQTbSn9CEhRfu"}]},"maintainers":[{"name":"gabrielcastro","email":"npm@gabrielcastro.ca"},{"name":"niksawtschuk","email":"nik@sawtschuk.com"},{"name":"sgiacomel","email":"simone@getsensibill.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.26.tgz_1487000362688_0.5960716174449772"}},"0.1.27":{"name":"beaver","version":"0.1.27","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT","_id":"beaver@0.1.27","_shasum":"67222ce52c87063b7feaab013b1b9d9c438bb889","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgiacomel","email":"simone@getsensibill.com"},"dist":{"shasum":"67222ce52c87063b7feaab013b1b9d9c438bb889","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.27.tgz","integrity":"sha512-lZYAqC/Q7wl0dJoC+a1egRzmMeHqeJusSgJq4uqeZCwYY6tqlJyVyp0P3cJiBRc+efpvTA4urbHYTA1mTcZUfw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrGGwUJFDL6A2UTDNOKDfiUI+OqMTJMIaD27FLY19xBQIhANGoEVn6XtrwPrAWFjVmQFi4QWP/4AbV2ked5smuTlhE"}]},"maintainers":[{"name":"gabrielcastro","email":"npm@gabrielcastro.ca"},{"name":"niksawtschuk","email":"nik@sawtschuk.com"},{"name":"sgiacomel","email":"simone@getsensibill.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.27.tgz_1487020214907_0.015291265677660704"}},"0.1.28":{"name":"beaver","version":"0.1.28","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"3.6.x","mongoose-querystream-worker":"0.0.x","async":"1.4.x","amqplib":"0.3.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT","_id":"beaver@0.1.28","_shasum":"69652d28b581849498572d099550e69c3bcd5200","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgiacomel","email":"simone@getsensibill.com"},"dist":{"shasum":"69652d28b581849498572d099550e69c3bcd5200","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.1.28.tgz","integrity":"sha512-k0pMQ0Lq//ZtNiWuLxMgh3vFzd3liG0UWAsrhP3NyqKukatikJdAISolbLMplchKBthBU7kpNrhFrLgn9QQedg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtokBjtILy/+rB6Qwx3QtoA2F6vdC5CrsNGceq0aZaAAIhAIhIuOfgK95GJHr/NOgqnu5lia8x+fqqPDDUa8/xpVP+"}]},"maintainers":[{"name":"gabrielcastro","email":"npm@gabrielcastro.ca"},{"name":"niksawtschuk","email":"nik@sawtschuk.com"},{"name":"sgiacomel","email":"simone@getsensibill.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/beaver-0.1.28.tgz_1487359432631_0.04190690256655216"}},"0.2.0":{"name":"beaver","version":"0.2.0","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"4.7.x","async":"1.4.x","bluebird":"3.4.x","amqplib":"0.4.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Bradley Arsenault"},{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT","_id":"beaver@0.2.0","_shasum":"7bfcb0ebdb2d4deb500bbb73aa299e7ced682606","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgiacomel","email":"simone@getsensibill.com"},"dist":{"shasum":"7bfcb0ebdb2d4deb500bbb73aa299e7ced682606","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.2.0.tgz","integrity":"sha512-nJYF6jnGHOyzDg3QFvxbVqd8PzZu24sH9Xun6Hy5REAnXbCfymN1ulnN1JBa5lwWeWhbd0CuVLER01ow/UcoLg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJrMjB1VL4aRaCnbwx7jf4/1NYcTmt6v4y6pTTJ2x2GQIgEqiHUp9CoCum+xQjm6iImYA8E4AUS8xHfvDFXJQ8Qww="}]},"maintainers":[{"name":"gabrielcastro","email":"npm@gabrielcastro.ca"},{"name":"niksawtschuk","email":"nik@sawtschuk.com"},{"name":"sgiacomel","email":"simone@getsensibill.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/beaver-0.2.0.tgz_1487768492172_0.6534190436359495"}},"0.2.1":{"name":"beaver","version":"0.2.1","description":"An AMQP based task execution framework for NodeJS that is both reliable and super easy to use.","main":"lib/lib.js","scripts":{"test":"mocha --reporter spec test"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"dependencies":{"mongoose":"4.11.x","async":"1.4.x","bluebird":"3.4.x","amqplib":"0.4.x","underscore":"1.8.x","sift":"2.0.x","moment":"2.10.x"},"devDependencies":{"mocha":"1.20.x"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"contributors":[{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT","_id":"beaver@0.2.1","_shasum":"388ffbbbf1c295c306983edc18858427257e9e3d","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"sgiacomel","email":"simone@getsensibill.com"},"dist":{"shasum":"388ffbbbf1c295c306983edc18858427257e9e3d","tarball":"https://registry.npmjs.org/beaver/-/beaver-0.2.1.tgz","integrity":"sha512-qX98WRN/nz/LcKI7Rikep0rPlqaHeic9bwcyASA95eJiPfe3R2ekLlHOxftaQ172Bc2fm6im4iQ135ZO7sl2zg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDMpohrQbtYzbeXNZPzW0NBVo1ODLm0UOqWRL4M4zmpwAiBfdyp+X+ogHIgwsFiG6K/XKqJHRlwLgVrY6GCl3mXHuQ=="}]},"maintainers":[{"email":"nik@sawtschuk.com","name":"niksawtschuk"},{"email":"simone@getsensibill.com","name":"sgiacomel"},{"email":"npm@gabrielcastro.ca","name":"gabrielcastro"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/beaver-0.2.1.tgz_1512505744937_0.3577668322250247"}}},"maintainers":[{"email":"nik@sawtschuk.com","name":"niksawtschuk"},{"email":"simone@getsensibill.com","name":"sgiacomel"},{"email":"npm@gabrielcastro.ca","name":"gabrielcastro"}],"time":{"modified":"2022-06-13T04:28:15.567Z","created":"2011-08-11T00:15:51.544Z","0.0.1":"2011-08-11T00:15:52.578Z","0.0.2":"2011-08-11T00:21:26.075Z","0.0.3":"2011-08-11T09:13:00.379Z","0.0.4":"2011-08-11T10:47:14.785Z","0.0.5":"2011-09-08T18:11:14.651Z","0.0.6":"2011-09-09T23:28:47.314Z","0.1.10":"2015-10-30T22:11:16.090Z","0.1.11":"2015-10-30T22:22:40.170Z","0.1.12":"2015-12-10T17:56:25.604Z","0.1.13":"2016-01-07T19:46:45.503Z","0.1.14":"2016-03-22T00:37:37.786Z","0.1.15":"2016-03-24T22:29:35.980Z","0.1.16":"2016-03-30T15:10:05.477Z","0.1.17":"2016-04-12T17:51:26.201Z","0.1.18":"2016-04-15T17:28:23.024Z","0.1.19":"2016-04-18T19:26:16.423Z","0.1.20":"2016-04-21T18:02:27.772Z","0.1.21":"2016-04-29T21:41:47.305Z","0.1.22":"2016-05-27T21:26:08.925Z","0.1.23":"2016-07-06T15:35:18.925Z","0.1.24":"2016-10-21T15:31:46.168Z","0.1.25":"2017-01-22T00:11:51.985Z","0.1.26":"2017-02-13T15:39:23.365Z","0.1.27":"2017-02-13T21:10:15.592Z","0.1.28":"2017-02-17T19:23:53.327Z","0.2.0":"2017-02-22T13:01:32.953Z","0.2.1":"2017-12-05T20:29:06.574Z"},"repository":{"type":"mercurial","url":"https://bitbucket.org/sensibill/beaver/"},"keywords":["task","execution","job","background","task","reliable","execution","cron","cluster","AMQP","RabbitMQ","MongoDB","node","mongo","mongoose"],"readme":"# Beaver.js\n\nA convenient but reliable background task execution framework for NodeJS.\n\nNOTE! This library was recently renamed from \"taskbeaver\". Someone had already created a package called \"beaver\" but was not actively using it, so we just took it over. So the history of the beaver library is somewhat contaminated by this other library.\n\n## Not another task execution framework!\n\nBut wait you say! There is already bull and kue available for NodeJS, and they are decent. Both of these libraries are\n great tools written by great developers. Unfortunately, they depend upon a tool that just does not scale: Redis.\n\nI also find these libraries to be very inconvenient to use for several of the core use cases of task manager.\n\n## Use cases\n\nThere are three types of tasks being targeted by this framework:\n\n* Type A) Tasks to be executed when a database object is in a particular state. This may include downloading the latest emails every\n        24 hours for each User object, or pushing a payment through several successive stages reliably.\n* Type B) Cluster-wide cron-style tasks. These are tasks that need to be executed on a regular schedule, but only once throughout the entire cluster.\n* Type C) Event triggered - e.g. sending an email after a user requests a password reset.\n\nMost task execution frameworks only conveniently handle Type-C tasks - you queue a \"job\" with a name and parameters to be executed, and it\ngets processed by a worker. All of the current NodeJS frameworks are built on this model. Occasionally, some task execution frameworks will\nhandle Type-B tasks. But they often have certain caveats, such as not working reliably in a cluster. Most task frameworks don't bother with\nType-A tasks, leaving this up to client.\n\n## How to use!\n\nBeaver uses three types of objects for the task execution framework. You will require each of the following three objects in order to execute tasks:\n\n* 1) A Registry. The Registry is where tasks are registered for execution. There should only ever be a single, global Registry object that is shared across your application.\n* 2) A Queue. The Queue manages the queues for tasks. It handles the connection to the AMQP server for queueing.\n* 3) A Worker. A Worker is the worker which executes the tasks.\n\nThe most basic usage is for registering a task and triggering an event to have that task executed, E.g. Type-C tasks. You can also see this code in\nthe examples folder of the repository as basic_usage.js. This works as follows:\n\n    var beaver = require('taskbeaver');\n    var async = require('async');\n\n    var registry = new beaver.Registry({\n        defaultTimeout: 10000 // This field is optional, and sets the number of default number of milliseconds until something crashes\n    });\n\n    // Register a couple of hooks so that we can print the log output as the task executes to the console.\n    registry.registerHook(\"log\", function (task, level, message, callback)\n    {\n        console.log(\"Task log: \", message);\n        return callback();\n    });\n\n    registry.registerHook(\"percentageComplete\", function (task, percent, callback)\n    {\n        console.log(\"Task is \" + percent.toFixed(0) + \"% completed.\");\n        return callback();\n    });\n\n    var queue = new beaver.AMQPQueue(registry, {url: \"amqp://localhost\"});\n\n    // Register a task\n    registry.registerTask({\n        name:    \"example_task\",\n        timeout: 5000, // This field is optional if defaultTimeout is set, otherwise it is mandatory. A value of null means no timeout\n        func:    function (parameters, done)\n                 {\n                     // The \"this\" variable is set to a Task object.\n                     var task = this;\n\n                     // You can log without waiting for a callback\n                     task.log(\"This task is just getting started!\");\n\n                     // Process some data here\n                     // ...\n                     // When you log, you can also provide and wait for a callback. Generally this way is recommended for extra reliability\n                     // Note that you can also provide a log-level with your log messages. When you provide a log level, you must provide\n                     // a callback.\n                     task.log(\"error\", \"I processed some data for object with name \" + parameters.name, function (err)\n                     {\n                         if (err)\n                         {\n                             return done(err);\n                         }\n                         else\n                         {\n                             // You can also update the percentage complete. Same thing, accepts an optional callback for extra reliability.\n                             task.updatePercentageComplete(50);\n\n                             // Or you can do both at the same time\n                             task.updatePercentageCompleteAndLog(75, \"Almost done!\");\n\n                             // And we're done!\n                             return done();\n                         }\n                     });\n                 }\n    });\n\n    // Initialize the queue. Make sure you have registered all your tasks before calling this\n    queue.initialize(function (err)\n    {\n        // Create eight workers with default options and attach them to the queue.\n        // This allows 8 tasks to be processed in parallel.\n        async.times(8, function (n, done)\n            {\n                var worker = new beaver.Worker(queue, {});\n\n                // Register the worker to the queue so that it will start executing tasks\n                queue.registerWorker(worker, function (err)\n                {\n                    if (err)\n                    {\n                        return done(err);\n                    }\n                    else\n                    {\n                        return done();\n                    }\n                });\n            },\n            function (err)\n            {\n                if (err)\n                {\n                    console.error(\"Received an error while creating workers.\", err);\n                }\n                else\n                {\n                    // Now we can queue a task to get executed. Again callback here is optional but recommended.\n                    // Send a task to the queue, and the worker should pick it up and execute it\n                    queue.queueTask(\"example_task\", {name: \"CoolObject\"}, function (err, task)\n                    {\n                        if (err)\n                        {\n                            console.error(\"Received an error while queuing a task.\", err);\n                        }\n                        else\n                        {\n                            // Task was queued successfully! It should be executed very soon.\n                            console.log(\"Task was queued successfully.\");\n                        }\n                    });\n                }\n            });\n    });\n\n\nTo be able to handle Type-B tasks, which are cluster wide scheduled tasks, you must create an instance of a Scheduler object. IMPORTANT! Currently you\nmust only create the Scheduler on a single server within your cluster. In the future, you might be able to use some sort of leader election mechanism\nto handle this part automatically. This code is available in examples/scheduled_tasks.js within the repository.\n\n\n    var beaver = require('taskbeaver');\n    var async = require('async');\n\n    var registry = new beaver.Registry({\n        defaultTimeout: 10000 // This field is optional, and sets the number of default number of milliseconds until something crashes\n    });\n\n    // Register a couple of hooks so that we can print the log output as the task executes to the console.\n    registry.registerHook(\"log\", function (task, level, message, callback)\n    {\n        console.log(\"Task log: \", message);\n        return callback();\n    });\n\n    registry.registerHook(\"percentageComplete\", function (task, percent, callback)\n    {\n        console.log(\"Task is \" + percent.toFixed(0) + \"% completed.\");\n        return callback();\n    });\n\n    var queue = new beaver.AMQPQueue(registry, {url: \"amqp://localhost\"});\n\n    // Register a task\n    registry.registerTask({\n        name:    \"scheduled task\",\n        timeout: 5000, // This field is optional if defaultTimeout is set, otherwise it is mandatory. A value of null means no timeout\n        schedule: {\n            interval: 1000 // The number of milliseconds in between executions of the task.\n        },\n        func:    function (parameters, done)\n                 {\n                     // The \"this\" variable is set to a Task object.\n                     var task = this;\n\n                     // You can log without waiting for a callback\n                     task.log(\"This task was executed at \" + new Date().toISOString());\n\n                     // And we're done!\n                     return done();\n                 }\n    });\n\n    // Initialize the queue. Make sure you have registered all your tasks before calling this\n    queue.initialize(function (err)\n    {\n        // Create a single worker to process tasks.\n        var worker = new beaver.Worker(queue, {});\n\n        // Register the worker to the queue so that it will start executing tasks\n        queue.registerWorker(worker, function (err)\n        {\n            if (err)\n            {\n                console.error(\"Error while registering a worker to the queue.\", err);\n            }\n            else\n            {\n                // *IMPORTANT* You must create a Scheduler object and attach it to the queue for scheduled tasks to start executing\n                var scheduler = new beaver.Scheduler(queue, {});\n\n                // Start the scheduler\n                scheduler.start();\n            }\n        });\n    });\n\n\nAnd lastly, the most exciting part of the library. This library comes with a plugin that works with MongoDB and the Mongoose middleware layer for it.\nThis enables you to associate tasks directly with the objects that those tasks are meant to execute on. Note that if you do not create a Scheduler\nsomewhere on your cluster, the only time tasks will get queued is when you explicitly save the object to the database, allowing the Mongoose save\nmiddleware to execute. Otherwise, the system performs a regular scan (default to once per hour) to find objects that match the criteria which\nhave not already been queued.\n\n    var beaver = require('taskbeaver');\n    var async = require('async');\n    var mongoose = require('mongoose');\n\n    var registry = new beaver.Registry({\n        defaultTimeout: 10000 // This field is optional, and sets the number of default number of milliseconds until something crashes\n    });\n\n    // Register a couple of hooks so that we can print the log output as the task executes to the console.\n    registry.registerHook(\"log\", function (task, level, message, callback)\n    {\n        console.log(\"Task log: \", message);\n        return callback();\n    });\n\n    registry.registerHook(\"percentageComplete\", function (task, percent, callback)\n    {\n        console.log(\"Task is \" + percent.toFixed(0) + \"% completed.\");\n        return callback();\n    });\n\n    // Create the queue\n    var queue = new beaver.AMQPQueue(registry, {url: \"amqp://localhost\"});\n\n\n    // Now create a Mongoose Schema, in this case representing a User object\n    var UserSchema = new mongoose.Schema({\n        name: String,\n        last_update_time: Date\n    });\n\n\n    // Add in Beavers MongoosePlugin.\n    UserSchema.plugin(beaver.MongoosePlugin.plugin, {\n        model: 'User',\n        queue: queue\n    });\n\n    // Register a task that should execute on this user object when it matches a particular state. 'filter' can either be a static\n    // query or a function which generates a dynamic query. In this example, we want this particular task to execute on every User\n    // object in the system approximately once per hour.\n    UserSchema.task(\"update_user\", {\n        filter: function createFilter()\n                {\n                    var timeBetweenUpdates = 1000 * 60 * 60;\n                    var now = new Date();\n                    var nowSeconds = new Date().getTime();\n                    return {$or: [\n                        {\n                            last_update_time: {$lt: new Date(nowSeconds - timeBetweenUpdates)}\n                        },\n                        {\n                            last_update_time: null\n                        },\n                        {\n                            last_update_time: {$exists: false}\n                        }\n                    ]};\n                },\n        dbScanInterval: 1000 * 60 * 60 // Scan once per hour for objects not picked up in post-save hooks\n    }, function(user, next)\n    {\n        var task = this;\n        task.log(\"Performing the hourly update of object \" + user._id.toString());\n        user.last_update_time = new Date();\n\n        user.save(next);\n    });\n\n    // Register the User model\n    var User = mongoose.model('User', UserSchema);\n\n    // Connect to the Mongo database\n    var connection = mongoose.connect(\"mongodb://localhost/beaver_examples\");\n\n    // IMPORTANT! You must initialize the MongoosePlugin with a copy of your Mongo connection. This is important for two reasons,\n    // 1 - you might use a different Mongo version then the one included by Beaver, and\n    // 2 - you want to share a single Mongo connection throughout your entire applicaiton, including Beaver.\n    // Mongo Job objects will be described in another example\n    beaver.MongoosePlugin.initialize(connection, {registry: registry, createMongoJobs: true, mongoJobAutoDeleteTime: 1000});\n\n    // Initialize the queue. Make sure you have registered all your tasks before calling this\n    queue.initialize(function (err)\n    {\n        // Create a single worker to process tasks.\n        var worker = new beaver.Worker(queue, {});\n\n        // Register the worker to the queue so that it will start executing tasks\n        queue.registerWorker(worker, function (err)\n        {\n            if (err)\n            {\n                console.error(\"Error while registering a worker to the queue.\", err);\n            }\n            else\n            {\n                // You must create a Scheduler object and attach it to the queue for User objects to be found and executed.\n                var scheduler = new beaver.Scheduler(queue, {});\n\n                // Start the scheduler\n                scheduler.start();\n\n                // Now finally, create a User object, and you should see the task executed on it once per hour.\n                var user = new User({name: \"Bethany\"});\n\n                // Save the user object. The post-save hook should catch this object\n                user.save(function(err){});\n            }\n        });\n    });\n\n\n\n## API Documentation\n\nYou can find API documentation at docs/index.html within the repository. These may also be hosted at some point in the future.\n","readmeFilename":"README.md","contributors":[{"name":"Sensibill Inc.","email":"webmaster@getsensibill.com","url":"https://getsensibill.com"}],"license":"MIT"}