{"_id":"@autolotto/bunnyhop","_rev":"35-f37cd0d3114fd51447d12b0cebd3a1e9","name":"@autolotto/bunnyhop","description":"#### A pluggable microservice messaging framework built on top of amqp. This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","dist-tags":{"latest":"2.4.5"},"versions":{"1.0.0":{"name":"@autolotto/bunnyhop","version":"1.0.0","main":"index.js","license":"MIT","dependencies":{"amqplib":"^0.5.1","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"gitHead":"62df93b150fdc3fde42367353dfba656aa080415","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.0.0","_npmVersion":"5.0.0","_nodeVersion":"8.0.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-X3RDyo0P8n4t4uTy2SU+RiBAMB+OBrna7+XM5NroYFsapI9V7z81A7G6Kt3dKkDoCeGe4KKtJ+rTyG1UliHXdQ==","shasum":"9bd002f44178352c943153d2fff8f33eddd30dd1","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID4IzmFOO4wvidfRaKcqT586pHHZ6NwZI/lVDo+2n6XQAiBsIk5hQitQijWo6WSuj5obAY+Kzfz5u/zQGAokQqviLQ=="}]},"maintainers":[{"name":"balmasi","email":"borna@borna-almasi.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.0.0.tgz_1496772112705_0.11741350614465773"},"directories":{}},"1.0.1":{"name":"@autolotto/bunnyhop","version":"1.0.1","main":"index.js","license":"MIT","scripts":{"release":"np"},"dependencies":{"amqplib":"^0.5.1","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"np":"^2.15.0"},"gitHead":"2f34b4ee6150c2624abc636f5513b42e228cd1db","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.0.1","_npmVersion":"5.0.0","_nodeVersion":"8.0.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-fLCEbEOJhxFAhuP6WRH5NYz1idpWNiji+8UtjjlwRwGzAOubRX/15giNDAerc0EqPSLAp++IwlT8dEXnuIqWmA==","shasum":"b30aa399d943c2b4a3e148e7432d7694e6ba2783","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGqh+NXV3/NCyvrCh83/3nTv9HMLPnDcF84gPeY0F5maAiBM5gSp4dtoPdUCC8kAbTreipkJkbi2B2kZ9gjTpl6FGw=="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.0.1.tgz_1496790385196_0.3778840722516179"},"directories":{}},"1.0.2":{"name":"@autolotto/bunnyhop","version":"1.0.2","main":"index.js","license":"MIT","scripts":{"release":"np"},"dependencies":{"amqplib":"^0.5.1","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"np":"^2.15.0"},"gitHead":"c4c8caf633bacf181002694961954376802b68c1","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.0.2","_shasum":"d82ed08f9b67f20b8111370e162e4e4045f91e32","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"shasum":"d82ed08f9b67f20b8111370e162e4e4045f91e32","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.0.2.tgz","integrity":"sha512-d8oAGWtkuokllA6sfvCqAE9g4tkbCU0ushGXM4gtdEcS/P4Pkq3p4k0qBLKeqXF/XHa/iv+YqCN193rBlJp3Qg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrlyt3+GGsDk1jCbmBHC9LKnNrUYf/mDldwBq9PRs5QgIhANIk6ay7v73THPA2x9e31CDY1TdHHejZaCDxlyAnUWlH"}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.0.2.tgz_1496867571207_0.5573236593045294"},"directories":{}},"1.1.0":{"name":"@autolotto/bunnyhop","version":"1.1.0","main":"build/index.js","license":"MIT","scripts":{"release":"np","build":"babel src -s -d build --ignore src/example","build:clean":"rm -rf build","dev":"watch 'npm run build' src"},"babel":{"presets":["env"]},"dependencies":{"amqplib":"^0.5.1","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","np":"^2.15.0","watch":"^1.0.2"},"gitHead":"5f5c2e7a6100f9dfc72a693dfe95c096876e70ae","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.1.0","_shasum":"8b7f961a16c0db3c71d3f018e4a89852dfc06e76","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"shasum":"8b7f961a16c0db3c71d3f018e4a89852dfc06e76","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.1.0.tgz","integrity":"sha512-8xUhQWAIqrhsdIJGP9eQwxP+0p7VFpVLgWkQSl1n64Qmq9BJlaszmBMz+l9obgaoanMCauNIC86WjLVOdx5kUw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjEtdyDiEKFXT97JJrRg7Bi3H1Y4+501oJ9CHRmfIPVwIgYtayGk4zsVrczsILi22jLR4vmkjl5+KMxilJoueVqrw="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.1.0.tgz_1496869016937_0.9604209861718118"},"directories":{}},"1.1.1":{"name":"@autolotto/bunnyhop","version":"1.1.1","main":"build/index.js","license":"MIT","scripts":{"release":"np","build":"babel src -s -d build --ignore src/example","build:clean":"rm -rf build","dev":"watch 'npm run build' src"},"babel":{"presets":["env"]},"dependencies":{"amqplib":"^0.5.1","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","np":"^2.15.0","watch":"^1.0.2"},"gitHead":"e950dbae2df5c44495c1475b26182d12fbc427b2","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.1.1","_shasum":"956be3a7d77a95ede9d698b8671d64fe7e6b55f3","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"shasum":"956be3a7d77a95ede9d698b8671d64fe7e6b55f3","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.1.1.tgz","integrity":"sha512-xtrqeG2sykFt2NAIaknbxp3njFYjHuc8foPKNK0u1KI5zH5A1gKhWKv7R3ZPLi3R08WPa+4DTIoM9Uo746RiDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHgYkDVQfAVxIhEUXoz2JbLfy4RDM9bs9DP58XCuvhXpAiBCT500MVUufmN+OcthtqtG6xaAABZAGbBkRtAjyF7fqg=="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.1.1.tgz_1496872953607_0.22026395332068205"},"directories":{}},"1.2.0":{"name":"@autolotto/bunnyhop","version":"1.2.0","main":"build/index.js","license":"MIT","scripts":{"release":"np","build":"babel src -s -d build --ignore src/example","build:clean":"rm -rf build","dev":"watch 'npm run build' src"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","np":"^2.15.0","watch":"^1.0.2"},"gitHead":"e3707407ccfcdb5a27e255b1bcea227cd77ede93","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.2.0","_shasum":"d23d61e60d656da67a5a762cebd3aa856b92660b","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"shasum":"d23d61e60d656da67a5a762cebd3aa856b92660b","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.2.0.tgz","integrity":"sha512-x/lJGAH7YRXVzNORnQnCoVU5yFpEIHc/jA83CnyWMwbD4Ph3AZW74MhXvgQSqlWViEpciSGiybDTaK2PCfJyPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmNcIzjTzOYczneZcQ7ngpORgehff52ULVbyNOO0QIzQIgBSiDF5jesTHefdHzsNOOHHBL4lXIftOt3Maj3mNmBCg="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.2.0.tgz_1496949685689_0.6776048745959997"},"directories":{}},"1.2.1":{"name":"@autolotto/bunnyhop","version":"1.2.1","main":"build/index.js","license":"MIT","scripts":{"release":"np","build":"babel src -s -d build --ignore src/example","build:clean":"rm -rf build","dev":"watch 'npm run build' src"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","np":"^2.15.0","watch":"^1.0.2"},"gitHead":"848a38a35479ead3e78706efb602d8e64f2a831d","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.2.1","_shasum":"5a21510fc300b6b22f22f26c2ef97d13f90b15e8","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"shasum":"5a21510fc300b6b22f22f26c2ef97d13f90b15e8","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.2.1.tgz","integrity":"sha512-WkW3w+YHh1qrgdy9o3jJOsuE887LgwCXtWflryceL21oAdH8RVz7SjwjTNv4bS9nX0Irq+15xkz2NbZQYepDPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBpp5psMpdedsUWmC1/TK7GpqwbKsxXuix7UzzqZ3M0gIhAJAvAmk/t3kHD2sS/FauLVDfA9Jhlf1EizAwoAfsPYP7"}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.2.1.tgz_1496959259205_0.6010130974464118"},"directories":{}},"1.2.2":{"name":"@autolotto/bunnyhop","version":"1.2.2","main":"build/index.js","license":"MIT","scripts":{"release":"yarn build:clean && yarn build && np","build":"babel src -s -d build --ignore src/example","build:clean":"rm -rf build","dev":"watch 'npm run build' src"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","np":"^2.15.0","watch":"^1.0.2"},"gitHead":"6660c98f257bb32b12b01f58a5549ed20563e8be","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@1.2.2","_shasum":"e7f8da1459761e4b9ee8ea660c98eeacd2da8baa","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"shasum":"e7f8da1459761e4b9ee8ea660c98eeacd2da8baa","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-1.2.2.tgz","integrity":"sha512-0YErURDsMcgF7co2JsWs3FE7oGBXZWyxVWzVZIUfx6gXCDStoMrbgXbjSj6IVgIMzEoXnoB5uLhFq8NNvFM5BA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzcIJ6liFoX/O+XC3svgvkbWjvSQLWsDU5cJs/NKZ8EAiEAqmmNiDiwGVNANraOodl4Gs/oaxS3IYvXD19FLST1I9A="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-1.2.2.tgz_1496959437862_0.9118727331515402"},"directories":{}},"2.0.0":{"name":"@autolotto/bunnyhop","version":"2.0.0","main":"build/index.js","license":"MIT","scripts":{"release":"yarn build:clean && yarn build && np","build":"babel src -s -d build --ignore src/example","build:clean":"rm -rf build","dev":"watch 'npm run build' src"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","np":"^2.15.0","watch":"^1.0.2"},"gitHead":"a0575b72cc144585cad9addbaecdb6686ce2a07e","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@2.0.0","_npmVersion":"5.0.0","_nodeVersion":"8.0.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-tbd/cYTz+DY5aJxt4sTzhEOH1LsII1c6h6GOJ43hBdpCNoMwL/imjb5PDW/4VxaY8vSU89RVtRt1LzW0JeXLWw==","shasum":"d7f38013f03db5ba8ae143d33ac6471e9a4384b9","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7EB8aYWq1B8emgf4abnwlBwpLciCEqfn3Elvg88UvXwIhAJyMLpyEw0y1+ZcBzNWbPsF6aE3WFJ0Ae/MuzJiO3bGN"}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.0.0.tgz_1497030260242_0.9388883644714952"},"directories":{}},"2.0.1":{"name":"@autolotto/bunnyhop","version":"2.0.1","main":"build/index.js","license":"MIT","scripts":{"release":"yarn build:clean && yarn build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","babel-register":"^6.24.1","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.0.0","watch":"^1.0.2"},"gitHead":"be66450c030204d917046df1645d9de9295ab599","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@2.0.1","_npmVersion":"5.0.0","_nodeVersion":"8.0.0","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-LW3SLOmn21IaYX/ZX9AQ11SvQwYE4sPlMHqj1ocjgk8bufH2sGUHRotlUoQ1DdBF7JsNNzFKNRSxAzn0KeqRbA==","shasum":"685116bd398ef1e4bfe59b4d81977d1f322007ea","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE3ZzitE0Jl6m7UJtxyCrrelSsWIzHE0FJwZmjDuCLDZAiAjATuc7SAFjjnI1D0So8IBeqKk0F1CF5I46HXgqCh+6g=="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.0.1.tgz_1497063065308_0.19557943171821535"},"directories":{}},"2.0.2":{"name":"@autolotto/bunnyhop","version":"2.0.2","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"yarn build:clean && yarn build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","babel-register":"^6.24.1","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.0.0","watch":"^1.0.2"},"gitHead":"6076901adea9c51cce89111deca9c51b46231e4d","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.0.2","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-kEotoxTFwmjrnf+X+GkpYw+6J6CnX3YW5L7UJTs0jXO6QstjNgRSZWI5g15ELUYVVWPA02z77nnjrwRbpiYemw==","shasum":"0f3cf765a9072eb6f388e0693d417f8a45ae625d","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHv0RSGDB5QOHh6uggPEBJxoh0PXqKrICr9Jhi/nNu2kAiEA5SOp4GBg3FTxPXkDlyqpvH1d2ap5B1H8uDWn6zc3JAY="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.0.2.tgz_1498152497481_0.3460586881265044"},"directories":{}},"2.0.3":{"name":"@autolotto/bunnyhop","version":"2.0.3","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"yarn build:clean && yarn build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.24.1","babel-preset-env":"^1.5.2","babel-register":"^6.24.1","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.0.0","watch":"^1.0.2"},"gitHead":"19af04635c6e839357a1056dd0842ab53b5dcbee","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.0.3","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-/JrlHJjr7jxcnjyhkWFEyZ/vaNoLF7p7Pys10wlQ06BgvanxnLeXqg7d4A1sRl0urKdVCPgWrjZMTNh4yDp4tg==","shasum":"d9e05f2a15e7e0e9a6d0f721184c175da045a989","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDa1roP2cuvRxlccDOcVkbhyMDggLAOluYRmWV1Da/zCQIgMufK0FrQedAYY85T5KzuJaAjw/m6GHTEVBjlxJetVj8="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.0.3.tgz_1502838342068_0.5881739140022546"},"directories":{}},"2.0.4":{"name":"@autolotto/bunnyhop","version":"2.0.4","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"gitHead":"d625876dba8c15c258df4aac43540035ebbaeff7","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.0.4","_npmVersion":"5.4.0","_nodeVersion":"8.2.1","_npmUser":{"name":"rpeterson","email":"rpeterson@serenitysoft.com"},"dist":{"integrity":"sha512-UaWmOwnfGwCkO2t4j1lEbNQ2TB03UKOBJt/pKlSZ1lYPuS9e8gl7VgR+uK9ukubvev/znfWw7gouOsakEAmNaQ==","shasum":"ac480cc45d7e679dcccec2f841c6a3cced03575a","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.0.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEasbXLqRDEDnrGraQveIrUo3+oYNrf2oWxNIDeXB4F5AiEAiZT9jHS1hiP+m9pZA06I6gnsEyA18ikaiqwr7uS4L5c="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.0.4.tgz_1505913352424_0.5532565463799983"},"directories":{}},"2.0.5":{"name":"@autolotto/bunnyhop","version":"2.0.5","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"gitHead":"a1c1f961abfdc71aa21ccafb45c0e6182df2d636","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.0.5","_npmVersion":"5.4.2","_nodeVersion":"8.2.1","_npmUser":{"name":"rpeterson","email":"rpeterson@serenitysoft.com"},"dist":{"integrity":"sha512-yJEuhZEAD+ZXPC06tFYkcjLPSKULAuE1fmB+B9z6yi6epV1N9+oCY2VccK7Dv0aE0kIaopoOqsJ9LlPVOedfEw==","shasum":"ad03b0e04d73e2707443d3af054ed1818527405a","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.0.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQmBj4Xdp5jXSwYGShcYETuBg+9OLq3oADfvJQW4s8NgIgR/avCuiGGtvaQgVLha5my0S/yaP/uFM1GZZz8q9olAM="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.0.5.tgz_1506550580995_0.8025232246145606"},"directories":{}},"2.1.0":{"name":"@autolotto/bunnyhop","version":"2.1.0","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"gitHead":"4e10d47a30252182bd16612665280f1a3876fe07","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.2.1","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-ide332odn84oosCAoueF/E5RNrdd06THfit3bTg+1sEDer2YFQ9nAV9vKN/Ftw/WkRAFRlrouTMJLH/Q85PzLQ==","shasum":"1b393458267bb5260955acb2479c5c599905369c","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd4m4GaoKPJugRXxaJYwuR2U/Z5sFJnwf8Bv0TgzFMPQIhAKUoax5QhrRKkKvbl2hfkYo14mRjXXez9OCZeVq3N6R3"}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.1.0.tgz_1511905855455_0.7891961103305221"},"directories":{}},"2.2.0":{"name":"@autolotto/bunnyhop","version":"2.2.0","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"gitHead":"297fae0b6cf95d649a45ccfc821082c74eef18cb","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.2.0","_npmVersion":"5.5.1","_nodeVersion":"8.2.1","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-ldwJgbVXCnQhAud79sah39Zk9srBysafLayfUJ4Gg2BNUb36QbPxT6o2HhP4KXpLX9RvMguMs1r/YuITcwOUaA==","shasum":"88ab68d5dfec365c1c0bd1febdc53832e7947b51","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7oRjRzRy0zT2CU+qgPlpamfNNOSouF2cQcm7t3YM6uAiAAp544rdR78BaoVsl9q0qD/DVxw43AF3pjvYIxT3236g=="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.2.0.tgz_1512418679842_0.9494820951949805"},"directories":{}},"2.4.0":{"name":"@autolotto/bunnyhop","version":"2.4.0","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"gitHead":"ac9c12f56fd67bc06de7764f1b05c8298a555f11","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.4.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"rpeterson","email":"rpeterson@serenitysoft.com"},"dist":{"integrity":"sha512-RZtj1VFpH4lqXjULcUTudyNOQWQALv+oWpCXQuvYh9UeAdHMwS2TgktRwXVq6CN/wo/IfKqKlB8GU0+LbJar9g==","shasum":"38865f5a4e18c6e66fa6cb9f510055b0953afd51","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.4.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwOkU9sSbpv7D8GYLbT4VtwraEspq2GJYX9KIdFbdh9QIhAP0Cbxe94gEGuPpJw10IPK514VTit+VT0e/hFaAWMlD5"}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.4.0.tgz_1512491613228_0.18612753576599061"},"directories":{}},"2.4.1":{"name":"@autolotto/bunnyhop","version":"2.4.1","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 5000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"gitHead":"46bef7a023c39bf372af4fb6909931fcb6d6e9a1","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.4.1","_npmVersion":"5.5.1","_nodeVersion":"8.2.1","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-R78ZIFlQzq7e8pJeNkHYpYwOlwg/VpGD/iQyYGw1aQwlHadtzXhkr1ZoDdJ1BPUtwB4H6fZ2hTTZyTcPwyvZeA==","shasum":"7ce64bbaffd65c9091b0642823e93f1da3cc3579","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.4.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNWPXVg9ARbBcrp7naRhvXALe7PAJFCbfHpu1M+gHxKAiEA52Kx9BrOKLXvospjPz2Weej63QlorOvFvGvzSPyyHJI="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.4.1.tgz_1513033234219_0.0007415406871587038"},"directories":{}},"2.4.2":{"name":"@autolotto/bunnyhop","version":"2.4.2","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/autolotto/bunnyhop.git"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 8000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"gitHead":"a69ae93847fff347886cfb3f7639ee7a130ac8b3","description":"This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","bugs":{"url":"https://github.com/autolotto/bunnyhop/issues"},"homepage":"https://github.com/autolotto/bunnyhop#readme","_id":"@autolotto/bunnyhop@2.4.2","_npmVersion":"5.6.0","_nodeVersion":"8.2.1","_npmUser":{"name":"balmasi","email":"borna@borna-almasi.com"},"dist":{"integrity":"sha512-WBdGwxqESP2FoFYINuRIZ+xjFp7x/oN1PJpueh3BFb/c8QOT0WPHNS6Y/H7b44Oc6B+c97qUPyTHecjmwFxk7w==","shasum":"ec2ba7d1eb316bff35aa6e975034c3e34e7f3a98","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.4.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGN2xFNR8wkXHWtoC4rspJ3fzULVdnd3kn1O3LbayWW5AiEAvovDJTFGH1ZePcJw+opj/cNTO97oYee7aSEMnfqahkk="}]},"maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"},{"email":"borna@borna-almasi.com","name":"balmasi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop-2.4.2.tgz_1513294703333_0.6150112256873399"},"directories":{}},"2.4.4":{"name":"@autolotto/bunnyhop","version":"2.4.4","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"https://github.com/autolotto/bunnyhop"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 8000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.1","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.4","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.19.1","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.0","np":"^2.15.0","testdouble":"^3.2.6","watch":"^1.0.2"},"description":"#### A pluggable microservice messaging framework built on top of amqp. This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@2.4.4","dist":{"shasum":"375ff1ac91bbb6e800fdef781e3b473133fbb36e","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.4.4.tgz","fileCount":55,"unpackedSize":341555,"integrity":"sha512-0bZzos7jBdNrqep/i1/fYSCYqODM7f/VBi52jJcbNs2qUanQ1N8jLjhgUF3toUmHuW1UXL12dzGfnYcMP4mYVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCo93RwWjm/NxaSeknTHqkiy21N8SkFd/Qq5OZV0cRfngIhANTILKgrI3dhYIy2aEtHjv21PST+e+XiAaJGk4zChez0"}]},"maintainers":[{"email":"borna@borna-almasi.com","name":"balmasi"},{"email":"kris@autolotto.com","name":"krisread"},{"email":"rpeterson@serenitysoft.com","name":"rpeterson"}],"_npmUser":{"name":"krisread","email":"kris@autolotto.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop_2.4.4_1518550222050_0.590067350803035"},"_hasShrinkwrap":false},"2.4.5":{"name":"@autolotto/bunnyhop","version":"2.4.5","main":"build/index.js","license":"MIT","repository":{"type":"git","url":"https://github.com/autolotto/bunnyhop"},"scripts":{"release":"npm run build:clean && npm run build && np","build":"babel src -s -d build --ignore src/example,src/**/*.test.js","build:clean":"rm -rf build","dev":"watch 'npm run build' src","test":"ava -v -T 8000","test:watch":"npm run test -- -w"},"babel":{"presets":[["env",{"targets":{"node":"6.5.0"}}]]},"ava":{"require":"babel-register","babel":"inherit"},"dependencies":{"amqplib":"^0.5.2","death":"^1.1.0","debug":"^2.6.8","lodash":"^4.17.10","uuid":"^3.0.1"},"devDependencies":{"ava":"^0.25.0","babel-cli":"^6.26.0","babel-preset-env":"^1.5.2","babel-register":"^6.26.0","bluebird":"^3.5.1","np":"^2.20.1","testdouble":"^3.2.6","watch":"^1.0.2"},"description":"#### A pluggable microservice messaging framework built on top of amqp. This package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.","_id":"@autolotto/bunnyhop@2.4.5","dist":{"shasum":"e074fe6b6b752fd46fc5da47a2a9933f771814f3","tarball":"https://registry.npmjs.org/@autolotto/bunnyhop/-/bunnyhop-2.4.5.tgz","fileCount":55,"unpackedSize":317609,"integrity":"sha512-agNVaCtbclaJu4IqUcDIWfA16gtukxSKILS2YtMLmlKIwQlGmP4JMU0tiKc5z0eIrJIJoKvCFC6/5+80eZbiBg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIp34JPp6W5TRH44BUE3VXRY4hyjbHaaT0Y3ry42VSDAiBWamDHv97w6GVheDGwHkNKWYmbWCXCSYuyZ3NUnMoJxA=="}]},"maintainers":[{"email":"borna@borna-almasi.com","name":"balmasi"},{"email":"kris@autolotto.com","name":"krisread"},{"email":"rpeterson@serenitysoft.com","name":"rpeterson"}],"_npmUser":{"name":"krisread","email":"kris@autolotto.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bunnyhop_2.4.5_1528847076598_0.5235688432832846"},"_hasShrinkwrap":false}},"readme":"# ![BunnyHop Logo](logo.png) BunnyHop \n#### A pluggable microservice messaging framework built on top of amqp.\nThis package allows for send/receive and publish/subscribe pattern messaging over RabbitMQ.\n\n\n\n## Quickstart\nLet's say we're building 2 services.\n\n### Process 1\n```javascript\nconst BunnyHop = require('bunnyhop');\n\n/* Give your service a name. This step is required.\nHere we are not passing in options so it uses the defaults.\nNotice there is no new keyword.\n*/\nconst bus = BunnyHop('user')\n// This goes out to every service subscribed to 'event.user.created'.\n// If service has multiple processes or instances, only one of the instances picks the message up (round robin)\nbus.publish('event.User.Created', {\n    username: 'goku'\n});\n\n// Tell a service listening on 'cmd.payment.create' to do something. `send` is \n// typically only used for commands, and thus the targer service can reject your command, \n// or send you back a response.\nbus.send('cmd.Payment.Create', {\n    card: '4111-1111-1111-111x'\n});\n\n/* OR you can make RPC calls with the sync: true option, which return a promise */\nasync function sampleRPC () {\n    try {\n        const returnValueFromRemote = await bus.send('cmd.Domain.DoSomething', { sampleData: 1 }, { sync: true })\n    catch (err) {\n        console.error(`${err.message} is an actual error`);\n    }\n}\n\n\n\n/*\nIn order to do a timeout with an RPC call, use the timeoutMs option along with { sync: true }\nNOTE: Timeouts only work for sync calls and will be ignored otherwise\n*/\n\nasync sampleTimeoutRPC () {\n  // Timeout if DoSomething doesn't reply within 10 milliseconds\n  try {\n    await bus.send('cmd.Domain.DoSomething', { sampleData: 1}, { sync: true, timeoutMs: 10 })\n  } catch (err) {\n   assert(err.name === 'TimeoutError');\n   assert(err.message === 'Operation Timed Out.');\n  }\n}\n```\n\n### Process 2\n```javascript\nconst BunnyHop = require('bunnyhop');\n// The service name will affect routing behaviour, so make sure it's unique in your system\nconst bus = BunnyHop('payment')\n\nconst { User, Payment}  = require('./path/to/libs');\n\n// Notice you can't respond back to publisher.\nbus.subscribe('event.User.Created', async (message) => {\n    // Payload is in 'content' property\n    const { username } = message.content;\n    const user = await User.findByUsername(username);\n    if (username === 'goku') {\n        user.raisePowerLevelBeyond(9000)\n    }\n});\n\n/* OR Subscribe to a pattern (Only works for subscribe) */\nbus.subscribe('Event.User.*', () => {}); // Gets 'Event.User.Created' and 'Event.User.Deleted' ...\nbus.subscribe('Event.#', () => {}); // Gets all Events (see Topic Tutorial: https://www.rabbitmq.com/tutorials/tutorial-five-javascript.html)\n\n\nbus.listen('cmd.Payment.Create', async (msg) => {\n    // if error is thrown (or promise is rejected), the error gets sent back to the sender\n    await Payment.create(msg.content);\n    // If you return something, it will make its way back to the sender too\n})\n\n/*\nOr turn OFF auto acknowledgement and manually tell the sender you've received the message.\nautoAck: false adds the `ack()` and `reject()` handles on the message\n*/\nbus.listen('A.B.C', (msg) => {\n    if (something) {\n        // Tell bus you've received the message was successfully processed. Don't Resend.\n        msg.ack();\n    } else {\n        // Delivery wasn't processed but still should be deleted anyway. Maybe validation failed or something.\n       msg.reject()\n    }\n}, { autoAck: false })\n\n// same goes for subscribe\nbus.subscribe('A.*.C', () => {}, { autoAck: false });\n```\n\n## Configuration\n\nYou can provide custom options when initializing BunnyHop.\n\nTop-level options exposed by BunnyHop:\n\n| options | description | default |\n|---------|-------------|---------|\n| engine | Another engine to replace the AMQP DefaultEngine | DefaultEngine |\n| url | AMQP URL to connect to  | `'amqp://localhost'` |\n| serialization | manager to use for serializing and deserializing messages | `require('./lib/serialization/json')` |\n| connectionManager | manager to use for handling connection to AMQP server | `require('./lib/connectionManager')` |\n| onHandlerSuccess| function with signature is onHandlerSuccess({*} Result, ...{*} OriginalHandlerArguments) called when listen/subscribe handler completes.| undefined |\n| onHandlerError| function with signature onHandlerError(Error) called when listen/subscribe throws an error/returns rejected promise | undefined |\n\n**Note**\n\nThe `onHandlerSuccess` does not affect return values of the handler. It is purely a side effect.\nThe `onHandlerError` hooks CONSUMES the error. Errors will not propagate unless you throw them again \n\n-----------------\n\nTop-level options exposed by the [Default Engine](#plugins-and-engines):\n\n| options | description | default |\n|---------|-------------|---------|\n| errorFormatter | function to format `Error` into JSON | `error => _.pick(error, ['message', 'code', 'details']` |\n| topicExchange | The exchange name to use for `publish` | `'amq.topic'` |\n| directExchange | The exchange name to use for `send` | `'amq.direct'` |\n| rpcReplyQueue | The queue to reply to when doing RPC calls via send's `sync: true` option | `'rpcReplyQueue'` |\n| subscriptionQueue | The queue name subscribers of one service share | `${serviceName}_subscription`| \n\nTop-level options exposed by the [Local Engine](#plugins-and-engines):\n\n| options | description | default |\n|---------|-------------|---------|\n| | | |\n\n```javascript\nBunnyHop('service_name', { url: 'amqp://cloud-amqp-provider:1234', customOption: 1 }\n```\n\n## Plugins and Engines\n\nThe interface to  `send`/`listen`/`publish`/`subscribe` is fixed.\nIn order to provide some flexibility to the developer, BunnyHop models a pipeline of functions that are run after calling those function.\n\nThese functions can be either a `plugin` or an `engine`.  An `engine` is simply the last plugin in the pipeline.\n\n**Given the following desired behaviour:**\n\n*add correlation id to message* **>**  *add date to message* **>** *log message* **>** **publish message**\n\n**You can use a pipline like:**\n\n*CorrelationPlugin* **>** *DatePlugin* **>** *LogPlugin* **>** **DefaultEngine**\n\n### Configuring Plugins and Engines\n\nPlugins are defined similar to `connect` or `express` middleware. You can simply use `use` when initializing:\n\n```javascript\nconst bus = BunnyHop('my_service')\n    .use(Plugin1)\n    .use(Plugin2)\n    .use(Plugin3);\n```\n\nTo use another engine, supply the `engine` [configuration parameter](#configuration)\n\n_Legacy Support: You can also use the `engine` function (deprecated):_\n\n```javascript\n\nconst bus = BunnyHop('your_service')\n    .use(Plugin1)\n    .engine(CustomEngine);\n```\n\n### Included Engines\n\n- DefaultEngine: Sends messages usinq message queues (over AQMP)\n- LocalEngine: Sends messages in local memory by directly calling destination function\n\n#### Using The Local Engine\n\nThe local engine operates WITHOUT RabbitMQ and directly calls listeners or subscribers for every send or publish (respectively).\n\n```javascript\nconst BunnyHop = require('bunnyhop');\nconst LocalEngine = BunnyHop.Engines.LocalEngine;\n\nconst bus = BunnyHop('payment', { engine: LocalEngine, connectionManager: LocalEngine.ConnectionManager });\n````\n\nThis is often useful to write unit tests for your bunnyhop services!!! \n\n\n### Included Plugins\n##### Timeout\nWhen doing synchronous calls, you can optionally add a timeout rejection if your RPC call is time-sensitive\n\nfor example if `doSomething()` returns a resolved promise after 1000ms, but you want to time out the RPC call after 500ms, you can do the following:\n\n```javascript\nbus.use(TimeoutPlugin);\n\nconst rpcPromise = bus.send('A.B.doSomething', { some: 'inputData' }, { sync: true, timeoutMs: 500 })\n// after 500 ms, rpcPromise is Rejected with TimeoutError\n```\nIf your bunnyhop client RECEIVES the RPC result in less than 500ms, the `rpcPromise` resolves as usual\n\nIt is highly recommended to use this as the last plugin in your plugin chain for timing accuracy because other internal middleware may affect response times of your timeouts \n\nNote that *both the **sync** and **timeoutMs** options have to be set for timeoutes to work*\n\n##### Correlator\n\nCorrelate simply adds a random `.properties.correlationId` (Correlation Identity) property to any outgoing message that do not already have one. This is useful for following messages in logs across services.\n\n#### Logger\n\nLogger ensures that incoming and outgoing messages are logged to stdout via the debug module. (Use this in non-high throughput scenarios, otherwise you'll have some very quickly growing logs)\n\n#### Package\n\nPackage repackages  messages, encapsulating the original message as a `.data` property and adding additional properties for information like message type and time message was issued and observed by our system\n```javascript\n// bus.publish('event.domain.somethingHappened', { my: 'event' });\n{ my: 'event' }\n// BECOMES\n{\n    data: { my: 'event' },\n    dateIssued: \"2017-06-05T19:10:01.945Z\",\n    type: \"event.domain.sometingHappened\"\n};\n\n\n// bus.listen or bus.subscribe('event.domain.somethingHappened', ...)\n{ my: 'event' }\n// BECOMES\n{\n    // date processed is the date the message was observed by the receiving system\n    dateProcessed: \"2017-06-05T19:10:01.945Z\",\n    data: { my: 'event' } \n    type: 'event.domain.somethingHappened'\n};\n/**\nNotice How on the receive side, if the message doesn't already have a `dateIssued`, we do not generate one. We do, however, add a `dateProcessed` property.\nIf you use package on the send AND receive side, the receive side will assume the message is prepackaged if it has `data`, `dateIssued` and `type` in `message.content` and  `message.content.data` as the data payload.\nOtherwise, it will use `message.content` as the payload.\n**/\n```\n\n### Date Parser\nA date parser plugin, which parses date strings into dates for incoming messages, is available in a [standalone repo](https://github.com/autolotto/bunnyhop-plugin-date-parser)\n\n####  A Note on Plugin Ordering\nThe plugin ordering when using `use` matters. Given\n```javascript\nconst bus = BunnyHop('my_service')\n    .use(Plugin1)\n    .use(Plugin2)\n    .use(Plugin3);\n```\nAssuming all plugins have pre-engine and post-engine behaviour,\nthe given setup will behave as follows:\n\n\n```\nPlugin 3\n  Plugin 2\n    Plugin 1\n       Engine\n    Plugin 1\n  Plugin 2\nPlugin 3\n```\n\nIf it looks like a call stack, it's because it is. The pipeline is functionally composed and \nplugins have a `next` function to hand off control to the next function in the pipeline \n(see Custom Plugins) below\n\n### Writing a Custom Plugin\nIt is easy to write a custom plugin. just define a file with the following signature\n\n```javascript\nfunction MyPlugin (pluginAPI) {\n  const log = pluginAPI.getPluginLogger();\n  // This is pretty useful for debuggin, so make sure to put it in. \n  log.info('Using My Plugin');\n\n  return {\n    send: next =>\n      (routingKey, message, options) => {\n        // DO SOMETHING BEFORE ONLY\n        return next(routingKey, message, options);\n      },\n    listen: next =>\n      async (routingKey, listenFn, options) => {\n        const returnVal = await next(routingKey, listenFn, options);\n        // DO SOMETHING AFTER ONLY\n        // Use returnVal or fire and forget (no await)\n        return returnVal \n      },\n    publish: next =>\n      (routingKey, message, options) => {\n        // DO SOMETHING BEFORE\n        next(routingKey, message, options);\n        // DO SOMETHING AFTER\n      }\n      \n    /* subscribe <- Only define the hooks you need! */ \n  }\n}\n\nmodule.exports = MyPlugin;\n```\n#### The Plugin API\nYou may have notice the plugin gets a `pluginAPI` as the first argument. Every plugin gets that and\ncan use it to modify its own behaviour. Valid API functions are\n\n```javascript 1.8\ngetChannel();  // Gets the open channel to the AMQP server\ngetConnection (); // Gets the open connection to AMQP server\ngetInitialOptions (); // Gives you access to the options provided at the top level to bunnyhop\ngetServiceName (); // Simply returns the service name bunnyhop was initialized with\ngetPluginLogger (); // Gets the logger with `info`, `error`, and `debug` defined\n```\n\nTo configure your custom plugin, you can read custom options from the bunnyhop intiialization options \nusing `getInitialOptions ()` just wrap your plugin in another function which configures it like so:\n\n```javascript\nfunction CatPluginInitializer (pluginOptions = { cat: 'white' }) {\n  return function CatPlugin(pluginAPI) {\n    const log = pluginAPI.getPluginLogger();\n     return {\n       send: next =>\n         (routingKey, message, options) => {\n           if (pluginOptions.cat === 'white') {\n             log.info('Using white cat mode');\n           }\n           return next(routingKey, message,options);\n         }\n       // ... \n     } \n  }\n}\n```\n\nAnd now when you're instantiating BunnyHop you can call the customizer\n \n```javascript\nconst bus = BunnyHop('my_service')\n    .use(Plugin1)\n    .use(CatPlugin({ cat: 'green' }))\n````\n\n### Writing a Custom Engine\nIf you choose to write a custom engine, you must do everything required to communicate to the AMQP server.\n\nThe engine is the last plugin in the chain, so there is no `next` function.\n\n\nSome things to consider for your engine:\n\n* serialization and deserialization\n* Error formatting\n* Options to read (expose) from global BunnyHop options\n* Asserting Channels, Queues, and Exchanges\n\nFor More details, see the default engine in `./lib/engines/default.engine.js`\n\n\n### Structured Handler Registration\nYou probably don't want to write your bunnyhop listen and subscribe handlers file for every project, so I've made a helper package to provide some structure and convention around how you define `listen` and `subscribe` handlers.\n\nCheck out https://github.com/autolotto/bunnyhop-handler for more details.\n","maintainers":[{"email":"rpeterson@serenitysoft.com","name":"rpeterson"}],"time":{"modified":"2023-02-28T00:31:15.050Z","created":"2017-06-06T18:01:52.912Z","1.0.0":"2017-06-06T18:01:52.912Z","1.0.1":"2017-06-06T23:06:25.273Z","1.0.2":"2017-06-07T20:32:51.315Z","1.1.0":"2017-06-07T20:56:57.041Z","1.1.1":"2017-06-07T22:02:33.744Z","1.2.0":"2017-06-08T19:21:25.839Z","1.2.1":"2017-06-08T22:00:59.314Z","1.2.2":"2017-06-08T22:03:58.065Z","2.0.0":"2017-06-09T17:44:20.386Z","2.0.1":"2017-06-10T02:51:05.546Z","2.0.2":"2017-06-22T17:28:17.589Z","2.0.3":"2017-08-15T23:05:42.230Z","2.0.4":"2017-09-20T13:15:54.528Z","2.0.5":"2017-09-27T22:16:22.126Z","2.1.0":"2017-11-28T21:50:55.542Z","2.2.0":"2017-12-04T20:17:59.936Z","2.4.0":"2017-12-05T16:33:34.299Z","2.4.1":"2017-12-11T23:00:34.320Z","2.4.2":"2017-12-14T23:38:23.543Z","2.4.4":"2018-02-13T19:30:22.098Z","2.4.5":"2018-06-12T23:44:36.657Z"},"license":"MIT","readmeFilename":"README.md","repository":{"type":"git","url":"https://github.com/autolotto/bunnyhop"}}