{"_id":"watchbot","_rev":"303-cda9b806f6b14f9eaaa04b216b12b5e0","name":"watchbot","description":"Build an AWS stack to do your work for you","dist-tags":{"latest":"1.3.4","dev":"1.0.5-0"},"versions":{"0.0.4":{"name":"watchbot","version":"0.0.4","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-template-builder":"./bin/watchbot-template-builder.js"},"dependencies":{"aws-sdk":"^2.3.0","d3-queue":"^2.0.3","fastlog":"^1.0.0","inquirer":"^1.0.2","minimist":"^1.2.0","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","tape":"^4.5.1"},"gitHead":"e6822aa406f82a4993e20846b5a276e902e6beb3","_id":"watchbot@0.0.4","_shasum":"0ddf563fcca85b3225b528b133136c9febc3139f","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.4","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"0ddf563fcca85b3225b528b133136c9febc3139f","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.4.tgz","integrity":"sha512-58p01nAvCeISWNW5z/QQzrzXav5aztOMNqFzxcuyfqDLLVSi6iSNfLbWH5RbVv3CaCyER52p8J7JwLF1SNvW3w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPS1y4tNvRXLaBNnAO8DS99aesCWaKHE63vcc9/XhpUwIgEUatPh2b4watkSTA1ogJuVbkxB4eodEJ5tmXAHyPjP4="}]},"maintainers":[{"name":"rclark","email":"ryan.clark.j@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.4.tgz_1468682939113_0.43622004543431103"},"directories":{}},"0.0.6":{"name":"watchbot","version":"0.0.6","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-template-builder":"./bin/watchbot-template-builder.js","watchbot-log":"./bin/watchbot-log.js"},"dependencies":{"aws-sdk":"^2.3.0","binary-split":"^1.0.2","cwlogs":"^1.0.2","d3-queue":"^2.0.3","fastlog":"^1.0.0","inquirer":"^1.0.2","minimist":"^1.2.0","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256","_id":"watchbot@0.0.6","_shasum":"4b25ab492e15d712f52bffbbb00b827da80d8b80","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"4b25ab492e15d712f52bffbbb00b827da80d8b80","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.6.tgz","integrity":"sha512-C44bStcP0mgL5bn/ob0WNBIpF4fuulfOZyg0SE9Otf74pDECKkcRDLkJMaV/au+8ezeXzmMd/cK360ftVe9HyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrCHhtkp7se/xK3Hah431Pb8CHwV9UY1blglVrQbuIcQIgTI73cY+qkIFmi1WbTX9W+GMT/E5mGFTkSNz0BOJCWtM="}]},"maintainers":[{"name":"rclark","email":"ryan.clark.j@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-0.0.6.tgz_1469829141744_0.26459303474985063"},"directories":{}},"0.0.7":{"name":"watchbot","version":"0.0.7","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","fastlog":"^1.0.0","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"4e11dcc99bc8c419da026d29fc9fcca410f6b3ca","_id":"watchbot@0.0.7","_shasum":"4607241bd936f6cb022d6bb944a8205520970cec","_from":".","_npmVersion":"2.15.8","_nodeVersion":"6.3.1","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"4607241bd936f6cb022d6bb944a8205520970cec","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.7.tgz","integrity":"sha512-o+LORkI62m79u6B1PTeuHsd8eNMd41AHdw8vpVr+0XHfCXcITpYGn5KcOg1IqlO3pbMUPw+i3Iufiyx453Vd/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAciFuqIKJFbI0aOV7x0nZHq/AS3dVdr38geLb6DML6AIhAIPTG6ow3o4exQvJxYZXzJbsT3Lxnpnq9OhDZVKxz1K5"}]},"maintainers":[{"name":"rclark","email":"ryan.clark.j@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.7.tgz_1470162367452_0.7433948593679816"},"directories":{}},"0.0.8":{"name":"watchbot","version":"0.0.8","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","fastlog":"^1.0.0","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"942fdb3f5496d53e9ea542d3f8548104d0e0b8d9","_id":"watchbot@0.0.8","_shasum":"67ad4362921a480f1002854598bdffad0cd2ca9b","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"isiyu","email":"siyu.song@gmail.com"},"dist":{"shasum":"67ad4362921a480f1002854598bdffad0cd2ca9b","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.8.tgz","integrity":"sha512-ZQaHjw1VwwSlrU0qGxVLp02dMjs2qAHh6wmQW6Ca2YTRbWYa7HXv3nOwTkF6dn+Pz2xkPpd2bXCdruuKwguvyg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/nqo7VNMb858QdbIz2Ewvz61r2VtHS93IrRkNTutNuAiEAkMLZ0p1qQdwSLn0UAJHThtA9xm6/6p2sw4cIgLCZaL8="}]},"maintainers":[{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.8.tgz_1471653966371_0.5848649442195892"},"directories":{}},"0.0.9":{"name":"watchbot","version":"0.0.9","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","fastlog":"^1.0.0","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"92bcf1e6fc2dee0062809db7485afd0fd26b4ade","_id":"watchbot@0.0.9","_shasum":"9646611c63cccecf375d49093c77a7ae0878dfd8","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"9646611c63cccecf375d49093c77a7ae0878dfd8","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.9.tgz","integrity":"sha512-ahSOgiLPHrBjv3S/khRFwEvqnzXYXAUxb1nRImi+fsUzIOwYftSdZ/XYRnOPHnYjJzPchAH72NAFGs+LkKNDHA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCph8LaBlJImnupY9UH6X2qcoqX+bW6aKgcCk3LyYerJgIhAOCSPNzyKbE3CIjWzjBQ6lKqC+Kejf5OFir20AcZt706"}]},"maintainers":[{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.9.tgz_1471996689981_0.9386297487653792"},"directories":{}},"0.0.10":{"name":"watchbot","version":"0.0.10","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","fastlog":"^1.0.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"72d0fbe1baeebb653f1e0a86ab3db53b0c8af1ea","_id":"watchbot@0.0.10","_shasum":"d65e8fc7474ec5042ff38867f907d1b21f87f82f","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"d65e8fc7474ec5042ff38867f907d1b21f87f82f","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.10.tgz","integrity":"sha512-VDkTbjjxQ2FdKJEQBsvot0JykWVWDAx7E4IWc1DcNq52vbV79CUdaEr5ubGiTAfNMzBl86o2zW6WokiAx0blgw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoKzWjVjumzee3XW6cb72HDSBrjTqcy5p/tKkUMjpXHAiEArJc9VIHYtMaxS2TrMvkJTWbpBgY827ULAsLLFp+Y+RA="}]},"maintainers":[{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.10.tgz_1473184520033_0.4321380171459168"},"directories":{}},"0.0.11":{"name":"watchbot","version":"0.0.11","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"04cd9d1f8d8cd6f3425c61a935911a4691fa1619","_id":"watchbot@0.0.11","_shasum":"2e94fb86e670b407ed7c6e25f500cb0798ef16ff","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"2e94fb86e670b407ed7c6e25f500cb0798ef16ff","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.11.tgz","integrity":"sha512-JCuTcTHkt0z0J6IbqQnMisJdAiGLue5FIBsHGBXPwGkI9BXzMSioyX8Pc1jESYShKn4XJoyCkGto8ydL34rbwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICi1jE0HrQ3zQxG5R3eqQFPhYn1cmvexDFIgdxaK+zvhAiAKdrBQSf58Kx2EyvaPuLYZp96wsSXpiw21S2QcX08zCw=="}]},"maintainers":[{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-0.0.11.tgz_1473972624452_0.8647590891923755"},"directories":{}},"0.0.12-0":{"name":"watchbot","version":"0.0.12-0","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"faede1d8dfd68564eb75bb86be95f803c75e239f","_id":"watchbot@0.0.12-0","_shasum":"e0a9ab08af58cd5fe67f9b3d21791a56aae4a9b2","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"e0a9ab08af58cd5fe67f9b3d21791a56aae4a9b2","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.12-0.tgz","integrity":"sha512-kchpNH0esh8iIN5RiByTn0cQuTt8+Sx54TyC9OqBqXYkyIQkL0xsf6t+hKy8sbmtfFp9HIbt/EozAAS5gN2rNw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu28m2RX7a9vB21dkA36F2IrKlwAIfvOmRAKWznoICagIhAJSwIA4BlvVskHN7/ObDToQmHYZUMfC92+6YhgC20Wws"}]},"maintainers":[{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.12-0.tgz_1474042406089_0.6477729300968349"},"directories":{}},"0.0.12-1":{"name":"watchbot","version":"0.0.12-1","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"3fcbe218855401cdc06aa102db03c5a7cd556825","_id":"watchbot@0.0.12-1","_shasum":"088b2dae3ba529183531d5b108f5d9af455e132f","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"088b2dae3ba529183531d5b108f5d9af455e132f","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.12-1.tgz","integrity":"sha512-rdYCBErAi5kIeF9dhN4Zt0Q1p3eO/aBoAJpug2zs6dapS5xU44UPlNIJ6ZhRGVUAyIMRe8gi/bBUHnd4kYH4dw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEfmnT8D3Z+kWbxrpR+QB726Sqhmm4Soji+K4/VugGJhAiB8+nz7FVT39Dnji90Znlz7C7t22z5ZNekPXkgIeb616w=="}]},"maintainers":[{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.12-1.tgz_1474060108903_0.6962536061182618"},"directories":{}},"0.0.12-alpha":{"name":"watchbot","version":"0.0.12-alpha","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"06db2bc2417d8a9a485666fc167472e5d26d1937","_id":"watchbot@0.0.12-alpha","_shasum":"34fa599eb7410c3c710e8a9ab73c1290a630a5a1","_from":".","_npmVersion":"3.10.3","_nodeVersion":"4.4.4","_npmUser":{"name":"rodowi","email":"rod@wilhel.me"},"dist":{"shasum":"34fa599eb7410c3c710e8a9ab73c1290a630a5a1","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.12-alpha.tgz","integrity":"sha512-l07z2cAwgQa9WzpNUtsb0nccC2pLhf8NkGJhudi4YGmU8JMEUOtqG+4ekvgVexDQyp87xkTD0cDahOHj9wvL2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHw4vGNJUmJ2nIurdEfyQ5XTMpr9jUn33weSXy8XDHAYAiEAzyt0PDUxXaY9sV04wmZlMv1sEP/olqWQumkd/mbrKUc="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.12-alpha.tgz_1474383512420_0.313536579022184"},"directories":{}},"0.0.12":{"name":"watchbot","version":"0.0.12","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.0.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"a520f4c82601cbe83affefd97a05220902c7671f","_id":"watchbot@0.0.12","_shasum":"e63981346a9097e84aa127d958eef71c4ab7f82a","_from":".","_npmVersion":"2.15.6","_nodeVersion":"4.4.2","_npmUser":{"name":"yhahn","email":"young@mapbox.com"},"dist":{"shasum":"e63981346a9097e84aa127d958eef71c4ab7f82a","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.12.tgz","integrity":"sha512-WZkOuV/bw+KYC67r9lzheNKxWcXGw1G0CUplWO65KX626fpaY7pco5vph4L78EEye6RAk/3SFHY08q+N/2/wCQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbhe+Bz7tN5/AEgwRFa3dvwq8Ysdry8vqtZLr/nycf+AIhAKZRCexMFfD4pdhb66imgNzww9nQUi3+ejdJOR0sUwkz"}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.12.tgz_1475957433954_0.5542481441516429"},"directories":{}},"0.0.13":{"name":"watchbot","version":"0.0.13","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.5.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"514246888f0804a1a8da754394666023ea182518","_id":"watchbot@0.0.13","_shasum":"aed9d401f0c44605b097705665a39bcb7ac86514","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"aed9d401f0c44605b097705665a39bcb7ac86514","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.13.tgz","integrity":"sha512-Ii5tcLqZhZkvx+H6rlFlekINrdoDTsSYmc7r+x24yKHAuxI6JK2PpP2eq7SzLTgbhMUrCHRoepyIwpAP047rFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFaegYuhUv1L1oQYOAIAzOMCcl2t2VnIvdbddHMM9bG+AiEA4rWbecxxwqKaWVdzBZFnlKN5lt6iGH5txdg1pj7vTvM="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/watchbot-0.0.13.tgz_1476122174442_0.305330517468974"},"directories":{}},"0.0.14":{"name":"watchbot","version":"0.0.14","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.5.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"fdb01c459068a8a1ef593c78cb9db3165ecf36e9","_id":"watchbot@0.0.14","_shasum":"4cf9f4f71acd51ba147004b970af9d0c5a942a71","_from":".","_npmVersion":"2.15.6","_nodeVersion":"4.4.2","_npmUser":{"name":"yhahn","email":"young@mapbox.com"},"dist":{"shasum":"4cf9f4f71acd51ba147004b970af9d0c5a942a71","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-0.0.14.tgz","integrity":"sha512-SpTC8qKm4vYO/o87rDnNqrxDC2NWlZPgiukeLbsvM15s5uyJCelV5vmt0Iz8xbm4DXYYIP62/m9JuV+MBEgb/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIClhXysKZxBHA5je8h4Oelm4BG+j+8+cMMuuKXJyCDs0AiEA5oEs5EUZ7AgW8vzQbvpw/jEgRBWQuQtzorMuSN+WgBQ="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-0.0.14.tgz_1476139880261_0.6388909597881138"},"directories":{}},"1.0.0":{"name":"watchbot","version":"1.0.0","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"5f63c78e91b2863af00ab6e44e05e73fbeb6c671","_id":"watchbot@1.0.0","_shasum":"2cbc943ccd688d74ad63fd216496dbf03aadc192","_from":".","_npmVersion":"2.15.6","_nodeVersion":"4.4.2","_npmUser":{"name":"yhahn","email":"young@mapbox.com"},"dist":{"shasum":"2cbc943ccd688d74ad63fd216496dbf03aadc192","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.0.0.tgz","integrity":"sha512-Qu5wDS32uyzi7HqLj/uZKMHk+u1UeTktXklHaOnhmoc/6HA/OUXKdn7oAuGXrUgBVqP8Bg5kVE2a+O1SUqmKog==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEpv1WTvQmy4ki0vBBAJSWJqbnSaohqRR9lG9/VHeRyJAiEA7lv8zY9QoQMbCEXWClVzOVomA81cGTo0KBMFRFls5EM="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-1.0.0.tgz_1476221155618_0.9432087088935077"},"directories":{}},"1.0.1":{"name":"watchbot","version":"1.0.1","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"ecbecb62352545789015855f656dd22cabe01af7","_id":"watchbot@1.0.1","_shasum":"f60dac47baebd0a0726aeb9aa06d76d9a7f111d1","_from":".","_npmVersion":"2.15.6","_nodeVersion":"4.4.2","_npmUser":{"name":"yhahn","email":"young@mapbox.com"},"dist":{"shasum":"f60dac47baebd0a0726aeb9aa06d76d9a7f111d1","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.0.1.tgz","integrity":"sha512-7PV4oPXdfjrq8UW2MfqIl+QWW/KdcOYl3Me/FFTocs8yU422m8RwG74ShXEI1eCeMKXoICEpxJUaZHT6qxebaQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICrIm9glsyf8wjxkv6kd/ihuAN/vPgdh12FSSSW8K9W6AiByFDU8g7/sI99sFV5UvjPy+3MPyZYQncGb+KoceKz0QQ=="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-1.0.1.tgz_1476577384684_0.14594790642149746"},"directories":{}},"1.0.2":{"name":"watchbot","version":"1.0.2","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"c24e9a6d9363c58138ef0ec314de5b95cbd0b5f9","_id":"watchbot@1.0.2","_shasum":"ac84b10a1bbc07691d7bc84e13f0ea6c9cc67a98","_from":".","_npmVersion":"2.15.6","_nodeVersion":"4.4.2","_npmUser":{"name":"yhahn","email":"young@mapbox.com"},"dist":{"shasum":"ac84b10a1bbc07691d7bc84e13f0ea6c9cc67a98","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.0.2.tgz","integrity":"sha512-3QJQkzT+cfo0hWZGH1jeHjCXlBlQn+m8mN8aVpP2V1Gs+QbvqPpghpyv4LALW/7tVDxvDUKkuc0zk64jvtFpOQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiRNwzf2Pc6eqj3mL12ldoQx2s+S868f5n+ujzmL7o2AIgOrKvoATQ6RdraJavh/BDwu3dGselW5COJNU5T7Sogpk="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-1.0.2.tgz_1476845320730_0.2980134328827262"},"directories":{}},"1.0.3":{"name":"watchbot","version":"1.0.3","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"c13845f9e41737808a39617fffea769bbe2e011c","_id":"watchbot@1.0.3","_shasum":"a312f679eb572502ab406c62a5a926f624f23186","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.3","_npmUser":{"name":"emilymdubois","email":"dubois@mapbox.com"},"dist":{"shasum":"a312f679eb572502ab406c62a5a926f624f23186","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.0.3.tgz","integrity":"sha512-DQEQx3JGOGjqAw/wxhHZw3vBgCGLFdYQ+Qf+JkywsRaBuqjaAaAWUqpf2ISYYKZPMeyEESHBvgA6/KAa29qdbw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDW2RIdMmGPwD5w/bERVpP948eAAF6mSOH9N6XKOWrCeQIgRR82ywbjwrdi1HUG+OzmIZHGdPjKtD0tSCIIxM21uqY="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"alulsh","email":"ulsh@mapbox.com"},{"name":"amyleew","email":"amyleewalton@gmail.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"bsudekum","email":"bobby@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"danieljh","email":"daniel+npm@trvx.org"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emilymdubois","email":"dubois@mapbox.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mattficke","email":"matt@mattficke.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"natslaughter","email":"nat@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"scothis","email":"scothis@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"who8mycakes","email":"nina@mapbox.com"},{"name":"willwhite","email":"will@mapbox.com"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/watchbot-1.0.3.tgz_1478546699998_0.5665755972731858"},"directories":{}},"1.0.4":{"name":"watchbot","version":"1.0.4","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"d16b00ed892f424848c6aaf8e0b830e77799172b","_id":"watchbot@1.0.4","_shasum":"265c6affa1db3a1ca956266401b2b633c0950fcd","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"265c6affa1db3a1ca956266401b2b633c0950fcd","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.0.4.tgz","integrity":"sha512-TWUsrXMvxavXZVdoZ7BR0gKnXwdmBRORBcV6mDW3w7pY1bHILNDI7W2nj8QHSIrT+3aQw9xj34ncLDjHxVmldw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHWN6E5tlgAqGUQO0AfwPNu3/86wYYIcQ94yP7CorfbGAiEAlnxmEOOu51nqLVb0IItVovkBH8wDvTplGoZhcvTdmFE="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"alulsh","email":"ulsh@mapbox.com"},{"name":"amyleew","email":"amyleewalton@gmail.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"bsudekum","email":"bobby@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"danieljh","email":"daniel+npm@trvx.org"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emilymdubois","email":"dubois@mapbox.com"},{"name":"emmagras","email":"emma@gras.org"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mattficke","email":"matt@mattficke.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mikemorris","email":"michael.patrick.morris@gmail.com"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"natslaughter","email":"nat@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"scothis","email":"scothis@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"who8mycakes","email":"nina@mapbox.com"},{"name":"willwhite","email":"will@mapbox.com"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-1.0.4.tgz_1479149170089_0.23329362203367054"},"directories":{}},"1.0.5-0":{"name":"watchbot","version":"1.0.5-0","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"0c03801b0b31dadcddab623d0eb1edefecde8635","_id":"watchbot@1.0.5-0","_shasum":"b00fb696de4a8241e5d52734fdace1d4c3ccd8f0","_from":".","_npmVersion":"2.15.0","_nodeVersion":"4.4.2","_npmUser":{"name":"xrwang","email":"xiaowei@mapbox.com"},"dist":{"shasum":"b00fb696de4a8241e5d52734fdace1d4c3ccd8f0","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.0.5-0.tgz","integrity":"sha512-N1kdcfhSHYYvMzaFkEvyxuUHQeEm6RFcwfEq9sZZ5oSyhIhS/dFpKO8hDNWyGx3Vngg57cp6B8s4cmEpFBIBHA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHaikaVB07L9NsGLlw2vxH32YsIv4mN1yrOgi9u+IpaeAiAiwoiyWtvyDNpODmLIAeO6hGPvks1vZpA0YPuz8OLJzw=="}]},"maintainers":[{"name":"aaronlidman","email":"aaronlidman@gmail.com"},{"name":"aarthykc","email":"aarthy@mapbox.com"},{"name":"alulsh","email":"ulsh@mapbox.com"},{"name":"amyleew","email":"amyleewalton@gmail.com"},{"name":"ansis","email":"ansis.brammanis@gmail.com"},{"name":"apendleton","email":"andrew@mapbox.com"},{"name":"batpad","email":"sanjay@mapbox.com"},{"name":"bergwerkgis","email":"wb@bergwerk-gis.at"},{"name":"bhousel","email":"bryan@mapbox.com"},{"name":"bsudekum","email":"bobby@mapbox.com"},{"name":"camilleanne","email":"camille@mapbox.com"},{"name":"danieljh","email":"daniel+npm@trvx.org"},{"name":"davidtheclark","email":"david.dave.clark@gmail.com"},{"name":"dnomadb","email":"damon@mapbox.com"},{"name":"dthompson","email":"dthompson@gmail.com"},{"name":"emilymdubois","email":"dubois@mapbox.com"},{"name":"freenerd","email":"spam@freenerd.de"},{"name":"gretacb","email":"carol@mapbox.com"},{"name":"ian29","email":"ian.villeda@gmail.com"},{"name":"ianshward","email":"ian@mapbox.com"},{"name":"ingalls","email":"nicholas.ingalls@gmail.com"},{"name":"isiyu","email":"siyu.song@gmail.com"},{"name":"jfirebaugh","email":"john.firebaugh@gmail.com"},{"name":"jrpruit1","email":"jake@jakepruitt.com"},{"name":"karenzshea","email":"karen@mapbox.com"},{"name":"kkaefer","email":"mail@kkaefer.com"},{"name":"lbud","email":"lauren@mapbox.com"},{"name":"lucaswoj","email":"lucas@lucaswoj.com"},{"name":"lxbarth","email":"alex@mapbox.com"},{"name":"lyzidiamond","email":"lyzi@mapbox.com"},{"name":"mapbox-admin","email":"accounts@mapbox.com"},{"name":"mapsam","email":"sam@mapbox.com"},{"name":"mateov","email":"matt@mapbox.com"},{"name":"mattficke","email":"matt@mattficke.com"},{"name":"mcwhittemore","email":"mcwhittemore@gmail.com"},{"name":"miccolis","email":"jeff@miccolis.net"},{"name":"mokob","email":"moritz@mapbox.com"},{"name":"morganherlocker","email":"morgan.herlocker@gmail.com"},{"name":"mourner","email":"agafonkin@gmail.com"},{"name":"mtirwin","email":"irwin@mapbox.com"},{"name":"natslaughter","email":"nat@mapbox.com"},{"name":"nickidlugash","email":"nicki@mapbox.com"},{"name":"planemad","email":"arun.planemad@gmail.com"},{"name":"rclark","email":"ryan.clark.j@gmail.com"},{"name":"rodowi","email":"rod@wilhel.me"},{"name":"samanbb","email":"saman@mapbox.com"},{"name":"scothis","email":"scothis@gmail.com"},{"name":"sgillies","email":"sean@mapbox.com"},{"name":"springmeyer","email":"dane@mapbox.com"},{"name":"themarex","email":"patrick@mapbox.com"},{"name":"tmcw","email":"tom@macwright.org"},{"name":"who8mycakes","email":"nina@mapbox.com"},{"name":"willwhite","email":"will@mapbox.com"},{"name":"xrwang","email":"xiaowei@mapbox.com"},{"name":"yhahn","email":"young@mapbox.com"},{"name":"zmully","email":"mully@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/watchbot-1.0.5-0.tgz_1480807403057_0.37620662176050246"},"directories":{}},"1.1.0":{"name":"watchbot","version":"1.1.0","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"a779f204d6630736cb901dcd6512b8d111db1908","_id":"watchbot@1.1.0","_shasum":"8eb34a667793070bd7ffbee8e773bc686be2fb13","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"8eb34a667793070bd7ffbee8e773bc686be2fb13","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.1.0.tgz","integrity":"sha512-yd/qnqIFWk8jgyOoifACdX8wSzFril62dBGiR9fGaXzjAjr5lAw8TFJrNTbhXmxdgQgT7PxoUzK89PlxaQf7eQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdEPJNaIOTm9R8164pB9aGa/Kq91MB/8P+rk4E0ZBUCAiEAq2TWfrq4U32876BFp0hQv5omvGIbrr5D2QL38W9S3es="}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/watchbot-1.1.0.tgz_1481066580943_0.7750807525590062"},"directories":{}},"1.1.1":{"name":"watchbot","version":"1.1.1","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"fc4a9f6aa1461863f41d2454f6df3aa146c273a5","_id":"watchbot@1.1.1","_shasum":"10eb192d6470c41c7918975f425405a891faa92b","_from":".","_npmVersion":"2.15.9","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"10eb192d6470c41c7918975f425405a891faa92b","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.1.1.tgz","integrity":"sha512-sdUhVahRWfvE7nbzLEjQf3D8UnZyyRZAboeS3kRn6jA8zjguwrYBeHoCGQsJ9h70PMq21asushGGxFwooSFPBw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSrHa+dd/mpmEY02mmxlRX2akdR/CCqLWcF3EYcqPwrgIgY3bb01T3nanii2Bm+vhaJpXdwpaVurpy2VYSl4Xj5gI="}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/watchbot-1.1.1.tgz_1481665394546_0.3571965522132814"},"directories":{}},"1.2.0":{"name":"watchbot","version":"1.2.0","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"c2be95dbafd0ba2d9d1b3dff811cbe0a2fb83562","_id":"watchbot@1.2.0","_shasum":"8cdad714ed0fef9496fd6115ec08a5251f8abdfa","_from":".","_npmVersion":"2.15.9","_nodeVersion":"4.4.7","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"8cdad714ed0fef9496fd6115ec08a5251f8abdfa","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.2.0.tgz","integrity":"sha512-sXW4ZV23OgZKviS+YAMF+E9x7q0AflM/bei7OiOCLVil4SAorRGZrVflVgrNJMMrnHt5OPSSfZDMWTs6O0dTDA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGj6y1ZyRCOUqPSnQNWaA58nTzeV81/DfF/yLR+xlsBAiEAihISjYL4gS+EhgkAoTKU1Au4QbZUk1JvQiABF7hZylc="}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/watchbot-1.2.0.tgz_1481733385304_0.8109352805186063"},"directories":{}},"1.3.0":{"name":"watchbot","version":"1.3.0","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"9cc43e5f841e205f6775ea722b3c7878e1910d80","_id":"watchbot@1.3.0","_shasum":"0015828b90f63df259456eb94427cb34d8e0c96b","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.4.5","_npmUser":{"name":"mapsam","email":"sam@mapbox.com"},"dist":{"shasum":"0015828b90f63df259456eb94427cb34d8e0c96b","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.3.0.tgz","integrity":"sha512-gennOtJOYefZYjgWsm4pvnAFNj04bREEMFIdv7IC1N7eonW/x1g53D26mE5oHpCclHp7omOjbxcVL1yCz9jZhA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEBm19la6VvNQVm/v3E6ZPMq8mc0SUwXi7Euh5N57iN3AiEA/EvidbICYKufJrVzHST4sNLwt3Xkp7F3RU+E7EzxeeA="}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/watchbot-1.3.0.tgz_1484068108436_0.8961092284880579"},"directories":{}},"1.3.1":{"name":"watchbot","version":"1.3.1","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"6fe0b899079fe1fb84d66f0d8c0ebf41bbf7f7eb","_id":"watchbot@1.3.1","_shasum":"1e7156c0d1ad05bebca9691a4a3453b5f514fac5","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.4.5","_npmUser":{"name":"mapsam","email":"sam@mapbox.com"},"dist":{"shasum":"1e7156c0d1ad05bebca9691a4a3453b5f514fac5","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.3.1.tgz","integrity":"sha512-aZB0rjL39yZvG5KOPUfUIRM4cRXDLe26Hxw8QJDCSNQuhwez2MJ4dpeXoWQIrx8KlLy9l8QyvsOh+gygV6Nf/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7bxv8pKL9PynDhk3BlGgYoj0sIhVBaKrG6RqYvP0gsQIgTLl/fVuc9JHsL0gdeoNeZIYX7idYG3cLFENjQSnUJhw="}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-1.3.1.tgz_1484175769316_0.2759335052687675"},"directories":{}},"1.3.2":{"name":"watchbot","version":"1.3.2","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tape":"^4.5.1"},"gitHead":"7ff10d49982b37276e7b4f3ca8f43d3367a784ac","_id":"watchbot@1.3.2","_shasum":"4167c718c8071a227651f4920a30cc6d0698155a","_from":".","_npmVersion":"2.15.9","_nodeVersion":"4.7.0","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"4167c718c8071a227651f4920a30cc6d0698155a","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.3.2.tgz","integrity":"sha512-/C0zVTSJX43tXk6CIAqWar+Tt6i81/jRefCFfMauSPg9btC7mjE1NaEoN+CUmnbpsDJtAvDnTcSmlWz5YCC+Ug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMa9p3MG5SYyAXVGTO0kR5GRdwjoDvh8XzEc/+ejaxWAiADdt58amhr71Pm6ZdOKgDAurfdXnopBnCGUtGx3iFUmQ=="}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-1.3.2.tgz_1484184894177_0.9010663107037544"},"directories":{}},"1.3.3":{"name":"watchbot","version":"1.3.3","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js | tap-spec","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3","watchbot-progress":"^1.0.0"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tap-spec":"^4.1.1","tape":"^4.5.1"},"gitHead":"3b9153d7239463397f6e09f6ef1861b7789c97a9","_id":"watchbot@1.3.3","_shasum":"ab08336b423c8c0697402bf90fa7b492fabc9775","_from":".","_npmVersion":"2.15.9","_nodeVersion":"4.7.0","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"ab08336b423c8c0697402bf90fa7b492fabc9775","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.3.3.tgz","integrity":"sha512-awVafSiRJiT05OiWa04d0xyIV4S4xv6PPij7KqZsTiZtuDZhXvdxLy/ICOyxRB6HJJWBMHbFhmIbC8bRPBROaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4y2Owj6aCgZEHikGFqQDtX77lrNVEV80koGMd1zhv/AIhAOSnJLMbgeZR40hX9W2tdhvmt53ydPAeUr/fgR37D21n"}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/watchbot-1.3.3.tgz_1484591581963_0.030631916131824255"},"directories":{}},"1.3.4":{"name":"watchbot","version":"1.3.4","description":"Build an AWS stack to do your work for you","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"author":{"name":"Mapbox"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"homepage":"https://github.com/mapbox/ecs-watchbot","engines":{"node":"4.4.2"},"main":"index.js","scripts":{"start":"bin/watchbot.js","test":"nyc tape test/*.test.js | tap-spec","coverage":"nyc --reporter html tape test/*.test.js && opener coverage/index.html","pretest":"eslint bin lib test index.js","docs":"documentation build --format html --output docs --config docs/config.json && opener docs/index.html"},"bin":{"watchbot-log":"./bin/watchbot-log.js","watchbot-progress":"./node_modules/@mapbox/watchbot-progress/bin/watchbot-progress.js"},"dependencies":{"@mapbox/watchbot-progress":"^1.1.0","aws-sdk":"^2.4.11","binary-split":"^1.0.2","cloudfriend":"^1.6.0","cwlogs":"^1.0.2","d3-queue":"^2.0.3","dyno":"^1.2.0","fastlog":"^1.0.0","meow":"^3.7.0","stream-combiner":"^0.2.2","underscore":"^1.8.3"},"devDependencies":{"documentation":"^4.0.0-beta2","dynamodb-test":"^0.2.2","eslint":"^2.6.0","nyc":"^6.4.0","opener":"^1.4.1","sinon":"^1.17.5","tap-spec":"^4.1.1","tape":"^4.5.1"},"gitHead":"da0091f5ab949116dfe77bf15bec8a7d4b85bc01","_id":"watchbot@1.3.4","_shasum":"ae05f957381b00c60b258ea3a5a6416d52191ee8","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.2","_npmUser":{"name":"rclark","email":"ryan.clark.j@gmail.com"},"dist":{"shasum":"ae05f957381b00c60b258ea3a5a6416d52191ee8","tarball":"https://registry.npmjs.org/watchbot/-/watchbot-1.3.4.tgz","integrity":"sha512-vaPDmMZLraPggI/EuLVNK9bfV6fgNkUU8xPOk3TcMqu6mgm6sk1jSTb4piV8QQ1YcY/xTlUv645xJ3cUz84bvA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA1lOu5AqE0TdbQJB/IVLdmEg5FCvYxoB4IdueNfxsFcAiEAnLJGJ2pI/u2bkE55HRV1d3yNGiol6YlJU4QQTwWSbDs="}]},"maintainers":[{"name":"emilymdubois","email":"dubois@mapbox.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/watchbot-1.3.4.tgz_1484681304215_0.13161081867292523"},"directories":{}}},"readme":"[![Build Status](https://travis-ci.org/mapbox/ecs-watchbot.svg?branch=master)](https://travis-ci.org/mapbox/ecs-watchbot)\n\n# watchbot\n\nA library to help run a highly-scalable AWS service that performs data processing tasks in response to external events. You provide the the messages and the logic to process them, while Watchbot handles making sure that your processing task is run at least once for each message. Watchbot is similar in many regards to AWS Lambda, but is more configurable, more focused on data processing, and not subject to several of Lambda's limitations.\n\n## Helpful lingo\n\n- **queue**: [An SQS queue](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSConcepts.html) is a \"backlog\" of messages for your stack to process that helps to guarantee every message gets processed at least once.\n- **message**: A message in the queue represents some job to be processed. Generally, you are responsible for sending messages to your stack by [publishing to Watchbot's SNS topic](http://docs.aws.amazon.com/sns/latest/dg/PublishTopic.html), or optionally by POST to a webhook endpoint (see `WatchbotUseWebhooks` in the parameters section below).\n- **task**: A container responsible for processing a single message. You define the work performed by the task through your own ECS image. Watchbot sets environment variables on the container that represent the content of a single message.\n- **watcher**: A Watchbot-defined container that polls the queue, spawns tasks to process messages, and tracks results. You specify how many watchers to run, and how many tasks each watcher is responsible for.\n- **notifications**: SNS messages that are published if a task fails or is retried. You can subscribe to Watchbot's notification topic in order to receive these notifications (e.g. via email).\n- **cluster**: [An ECS cluster](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_clusters.html) of EC2s that are used to run the watcher and task containers that make up your service.\n- **template**: [A CloudFormation template](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html#d0e3428) defining the resources Watchbot needs\n\n## What you provide:\n\n- a cluster that Watchbot will run on\n- a docker image representing your task, housed in [an ECR repository](http://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) and tagged with a git sha or a git tag\n- a CloudFormation template defining any configuration Parameters, Resources, and Outputs that your service needs in order to perform its processing.\n\n**:bulb: Other prerequisites:**\n\n- `cloudformation-kms-production` deployed according to the instructions in [cloudformation-kms](https://github.com/mapbox/cloudformation-kms). Makes encryption of sensitive environment variables that need to be passed to ECS simple using [cfn-config](https://github.com/mapbox/cfn-config).\n\n## What Watchbot provides:\n\n- a queue for you to send messages to in order to trigger your tasks to run\n- [an AWS access key](http://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) with permission to send messages to the queue\n- [an ECS TaskDefinition](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) for your task, using the image you provide\n- watcher container(s) that runs on your cluster and polls the queue, runs your task for each message, removes messages from the queue as tasks complete, and sends notifications if tasks fail or are retried\n- a script to help you include the resources Watchbot needs to run in your template\n\n## Building a Watchbot service\n\n1. Create a Github repository for your code.\n2. Write and test the code that a worker will perform in response to a message.\n3. Write a Dockerfile at the root of your repository which defines the steps required to bootstrap a worker. If you specify a `CMD` instructions, this will be executed when your worker is launched in response to a message. Note that message details will be provided as environment variables to your worker, and that your worker's exit code will determine whether the message is deleted or returned to the queue (see below).\n4. Use the Dockerfile to build an image and store it in an ECR repository. See [ecs-conex](https://github.com/mapbox/ecs-conex) for a CI framework to do this for you whenever you commit to the repository.\n5. Write and deploy your service using a CloudFormation template. See instructions below for more details about building the template.\n\n## Task runtime environment\n\nIn addition to any environment variables pre-configured for your task via `watchbot.template()` (see below), Watchbot will provide each task with a set of environment variables representing the details of the message which it should process:\n\nName | Description\n--- | ---\nSubject | the message's subject\nMessage | the message's body\nMessageId | the message's ID defined by SQS\nSentTimestamp | the time the message was sent\nApproximateFirstReceiveTimestamp | the time the message was first received\nApproximateReceiveCount | the number of times the message has been received\n\nThe environment will also contain some variables referencing resources that Watchbot created:\n\nName | Description\n--- | ---\nWorkTopic | the ARN of the SNS topic that provides messages to SQS\nLogGroup | the name of the CloudWatch LogGroup where logs are sent\n\n**:lock: Encrypting & decrypting environment variables**\n\nThe recommended flow for deploying `watchbot` stacks is to use `cfn-config` which provides a `--kms` option for automatically encrypting CloudFormation parameters marked with `[secure]`. To decrypt at runtime, install [decrypt-kms-env](https://github.com/mapbox/decrypt-kms-env) as a dependency in your Dockerfile and invoke it in your `CMD`. Example:\n\n```Dockerfile\nRUN eval $(./node_modules/.bin/decrypt-kms-env) && npm start\n```\n\n## Task completion\n\nThe exit code from your task determines what the watcher will do with the message that was being processed. Your options are:\n\nExit code | Description | Outcome\n--- | --- | ---\n0 | completed successfully | message is removed from the queue without notification\n3 | rejected the message | message is removed from the queue and a notification is sent\n4 | no-op | message is returned to the queue without notification\nother | failure | message is returned to the queue and a notification is sent\n\n## Building a Watchbot template\n\nWatchbot provides two important methods to help you build a CloudFormation template:\n\n- **watchbot.template(options)** creates CloudFormation JSON objects for the various Resources that Watchbot needs in order to do its job.\n- **watchbot.merge(...templates)** takes multiple CloudFormation templates and merges them together into a single JSON template.\n\nWith those two tools in hand, creating a Watchbot stack will generally involve:\n- determine the appropriate `options` to provide to `watchbot.template` for your situation. See the table below for more details on the various required options, optional ones, and default values.\n- write a CloudFormation template that defines the configuration parameters, stack outputs, permissions required by your worker containers, and any additional resources that are required in order to process jobs.\n- write a script which merges the two templates, adding Watchbot's resources to your template.\n- use [cfn-config](https://github.com/mapbox/cfn-config) to deploy the template by referencing the script that you've written.\n\nAs an example, consider a service where the workers are expected to manipulate objects in an S3 bucket. In the CloudFormation template, we wish to create the S3 bucket that our workers will interact with, and then build the Watchbot resources required to perform the task in response to SNS events.\n\n```js\nvar watchbot = require('watchbot');\n\n// Build the parameters, resources, and outputs that your service needs\nvar myTemplate = {\n  Parameters: {\n    GitSha: { Type: 'String' },\n    Cluster: { Type: 'String' },\n    AlarmEmail: { Type: 'String' }\n  },\n  Resources: {\n    MyBucket: {\n      Type: 'AWS::S3::Bucket',\n      Properties: {\n        Name: 'my-bucket'\n      }\n    }\n  }\n};\n\n// Generate Watchbot resources. You can use references to parameters and\n// resources that were defined above.\nvar watch = watchbot.template({\n  cluster: { Ref: 'Cluster' },\n  service: 'my-repo-name',\n  serviceVersion: { Ref: 'GitSha' },\n  env: { BucketName: 'my-bucket' },\n  workers: 5,\n  reservation: { memory: 512 },\n  notificationEmail: { Ref: 'AlarmEmail' },\n  permissions: [\n    {\n      Effect: 'Allow',\n      Action: ['s3:*'],\n      Resource: {\n        'Fn::Join': ['', ['arn:aws:s3:::', { Ref: 'MyBucket' }]]\n      }\n    }\n  ]\n});\n\nmodule.exports = watchbot.merge(myTemplate, watch);\n```\n\n### watchbot.template options\n\nUse the following configuration options to adjust the resources that Watchbot will provide. Bold options must be provided.\n\nName | Default | Description\n--- | --- | ---\n**cluster** | | the ARN for an ECS cluster\n**service** | | the name of the worker service\n**serviceVersion** | | the version of the worker service to use\n**notificationEmail** | | the email address to receive failure notifications\npermissions | [] | permissions to any AWS resources that the worker will need to perform a task. Be sure to unwrap any `PolicyDocument` objects. The use of `PolicyDocument` here will pass `aws cloudformation validate-template`, but will prevent your stack from being created successfully.\nenv | {} | environment variables to set on worker containers\ncommand | undefined | overrides a Dockerfile's `CMD`\nwatchbotVersion | installed version | the version of watchbot to use\nprefix | Watchbot | a prefix for logical resource names\nuser | false | create an IAM user with permission to publish\nwebhook | false | create an HTTPS endpoint to accept jobs\nwebbhookKey | false | require an access token on the webhook endpoint\nreduce | false | enable reduce-mode (see below)\nreadCapacityUnits | 30 | approximate reads per second to progress table in reduce-mode\nwriteCapacityUnits | 30 | approximate writes per second to progress table in reduce-mode\nwatchers | 1 | number of watcher containers\nworkers | 1 | number of concurrent worker containers per watcher\nbackoff | true | retry jobs with exponential backoff\nlogAggregationFunction | | the ARN of the log collection Lambda function\nmounts | '' | defines container mount points from host EC2s\nreservation | {} | specify desired memory/cpu reservations for worker containers\nmessageTimeout | 600 | max seconds it takes to process a job\nmessageRetention | 1209600 | max seconds a message can remain in SQS\nalarmThreshold | 40 | number of jobs in SQS to trigger alarm\nalarmPeriods | 24 | number of 5-min intervals SQS must be above threshold to alarm\ndebugLogs | false | enable verbose watcher logging\nnotifyAfterRetries | 0 | retry on any exit codes other than 0, 3, and 4 before alarm\nprivileged | false | give the container elevated privileges on the host container instance\n\n### watchbot.template references\n\nAfter building Watchbot resources using `watchbot.template()`, you may wish to reference some of those resources. The object returned from `watchbot.template()` provides references to a few of its resources through a `.ref` property:\n\nName | Description\n--- | ---\n.ref.logGroup | the CloudWatch LogGroup where watcher and worker container's logs are written\n.ref.topic | the SNS topic that you can publish messages to in order to have them processed by Watchbot\n.ref.queueUrl | the URL of the SQS Queue Watchbot built\n.ref.queueArn | the ARN of the SQS Queue Watchbot built\n.ref.queueName | the name of the SQS Queue Watchbot built\n.ref.webhookEnpoint | [conditional] if requested, the URL for the webhook endpoint\n.ref.webhookKey | [conditional] if requested, the access token for making webhook requests\n.ref.accessKeyId | [conditional] if requested, an AccessKeyId with permission to publish to Watchbot's SNS topic\n.ref.secretAccessKey | [conditional] if requested, a SecretAccessKey with permission to publish to Watchbot's SNS topic\n.ref.progressTable | [conditional] if running in reduce-mode, the name of the DynamoDB table that tracks job progress\n\nThese properties each return CloudFormation references (i.e. `{ \"Ref\": \"...\" }` objects) that can be used in your template. In the above example, if I wanted my stack to output the SNS topic built by Watchbot, I could:\n\n```js\nvar outputs = {\n  Outputs: { SnsTopic: { Value: watcher.ref.topic } }\n};\n\nmodule.exports.watchbot.merge(myTemplate, watcher, outputs);\n```\n\n## Logging\n\nEach Watchbot stack will write all its logs to a single CloudWatch LogGroup. The [awscli](http://docs.aws.amazon.com/cli/latest/reference/logs/index.html) or [cwlogs](https://github.com/mapbox/cwlogs) are a couple of tools that can be used to view log events in a LogGroup.\n\nIf your host EC2s **are not** built from [ECS-optimized AMIs](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html), make sure that the `awslogs` driver is enabled on the ecs-agent by setting the following agent configuration:\n\n```\nECS_AVAILABLE_LOGGING_DRIVERS=[\"json-file\",\"awslogs\"]\n```\n\nSee [the AWS documentation](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) for more information.\n\n### Formatting log messages\n\nIn order to help isolate and aggregate logs from any single message, watchbot provides a logging helper that will prefix each line with the ID of the message being processed. Use these utilities in your worker scripts to make sure that your logs are consistent and easy to search.\n\n```js\nvar watchbot = require('watchbot');\n\n// watchbot.log() works just like console.log()\nvar breakfast = 'eggs and beans';\nwatchbot.log('This is something that I want logged: %s', breakfast);\n// [Thu, 28 Jul 2016 00:12:37 GMT] [worker] [e2c045cc-5606-4950-964b-20877900bccb] This is something that I want logged: eggs and beans\n\n// watchbot.logStream() creates a writable stream that will log everything with watchbot.log\nvar logstream = watchbot.logStream();\nrequire('child_process').exec('cat ~/.bashrc').stdout.pipe(logstream);\n```\n\nThere is also a CLI tool to accomplish the same task:\n\n```bash\n# Perform this global installation in your Dockerfile\n$ npm install -g watchbot\n\n# Log a single line instead of using `echo`\n$ watchbot-log \"This is something that I want logged: eggs and beans\"\n\n# Pipe another command's output into watchbot-log\n$ echo \"This is something that I want logged: eggs and beans\" | watchbot-log\n```\n\n## Reduce mode\n\nBy setting the `Reduce` parameter to true, Watchbot will be capable of helping track the\nprogress of distributed map-reduce operations. This is useful if your stack performs\na bunch of individual jobs that need to be \"rolled up\" into a final output of some sort.\n\n### Messaging patterns\n\nGenerally, a reduce-enabled Watchbot stack should be built in order to process three types\nof messages: one type that kicks of a map-reduce operation, one type that processes\nindividual parts, and another type that performs the reduce or \"roll up\" operation.\n\nYour code should include all the logic required to interpret these different types\nof messages. The flow of messages will generally be as follows:\n\n1. You (or some AWS resource) sends the initial message to your Watchbot stack's SNS\ntopic. When your code receives this message, it should:\n  - determine how the work will be split across multiple parts\n  - generate an identifier for the entire map-reduce operation\n  - report to Watchbot the identifier, and the number of parts\n  - send SNS messages to Watchbot's SNS topic for each part, providing the identifier\n  for the operation, and the part number. Part numbers start a `1` and increase up\n  to the total number of parts.\n2. Watchbot will receive the \"work\" jobs that were sent by your initial message processor.\nWhen your code receives these messages, it should:\n  - perform appropriate processing\n  - once processing is complete, report the identifier and the part number of the job\n  to Watchbot. In response, Watchbot will inform your code as to whether or not all\n  the parts in the map-reduce operation are completed.\n  - if the worker receives the notification that all parts are complete, the worker\n  should send a single message to Watchbot's SNS topic to trigger the reduce step\n3. Upon receiving the reduce message, your code should take any appropriate roll-up\naction.\n\n### Using watchbot-progress\n\n`watchbot-progress` is a CLI command that is available to use on a reduce-enabled\nstack. This is one mechanism by which you can report progress to Watchbot as part\nofthe above messaging flow.\n\nFor usage examples and and additional documentation, see [watchbot-progress](https://github.com/mapbox/watchbot-progress).\n\nInstall Watchbot globally as part of your worker's Dockerfile to gain access to the\nCLI command on your workers at runtime:\n\n```\nRUN npm install -g watchbot\n```\n\n```\n$ watchbot-progress <command> <job-id> [options]\n```\n\nNote that by default, workers in reduce-enabled Watchbot stacks will have the `$ProgressTable`\nenvironment variable set automatically. For more information on this command, see\n\n#### Reporting progress in JavaScript\n\nA JavaScript module is also available as a mechanism for progress reporting.\n\n```js\nvar progress = require('watchbot').progress();\n```\n","maintainers":[{"email":"accounts@mapbox.com","name":"mapbox-admin"}],"time":{"modified":"2022-09-20T06:53:14.309Z","created":"2016-07-16T15:29:00.113Z","0.0.4":"2016-07-16T15:29:00.113Z","0.0.6":"2016-07-29T21:52:21.988Z","0.0.7":"2016-08-02T18:26:10.225Z","0.0.8":"2016-08-20T00:46:09.237Z","0.0.9":"2016-08-23T23:58:14.364Z","0.0.10":"2016-09-06T17:55:22.573Z","0.0.11":"2016-09-15T20:50:24.705Z","0.0.12-0":"2016-09-16T16:13:29.506Z","0.0.12-1":"2016-09-16T21:08:32.188Z","0.0.12-alpha":"2016-09-20T14:58:34.702Z","0.0.12":"2016-10-08T20:10:34.637Z","0.0.13":"2016-10-10T17:56:17.034Z","0.0.14":"2016-10-10T22:51:23.194Z","1.0.0":"2016-10-11T21:25:58.022Z","1.0.1":"2016-10-16T00:23:06.929Z","1.0.2":"2016-10-19T02:48:43.052Z","1.0.3":"2016-11-07T19:25:00.694Z","1.0.4":"2016-11-14T18:46:10.358Z","1.0.5-0":"2016-12-03T23:23:25.655Z","7.0.7":"2016-12-06T21:53:04.932Z","1.1.0":"2016-12-06T23:23:03.386Z","1.1.1":"2016-12-13T21:43:15.393Z","1.2.0":"2016-12-14T16:36:26.030Z","1.3.0":"2017-01-10T17:08:30.961Z","1.3.1":"2017-01-11T23:02:49.568Z","1.3.2":"2017-01-12T01:34:54.430Z","1.3.3":"2017-01-16T18:33:02.223Z","1.3.4":"2017-01-17T19:28:26.768Z"},"homepage":"https://github.com/mapbox/ecs-watchbot","repository":{"type":"git","url":"git://github.com/mapbox/ecs-watchbot.git"},"bugs":{"url":"https://github.com/mapbox/ecs-watchbot/issues"},"license":"ISC","readmeFilename":"readme.md","author":{"name":"Mapbox"}}