{"_id":"pdf-bot","_rev":"21-c23b2f7a9f31010e63c4ee13446ca951","name":"pdf-bot","description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","dist-tags":{"latest":"0.6.1"},"versions":{"0.1.0":{"name":"pdf-bot","version":"0.1.0","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"mocha test/*.test.js --recursive","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","mocha":"^3.5.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"4e9d12dc02ea01a964c69e491756011724edfd5a","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.1.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-QgHZPpQn/wLHNG7bGInIxOxxA/JXYKed6kFgbegsQLkgXVPNf8+fd+DkYTkSlUPWP8JT5nAD4EXG6BxSz2tAaQ==","shasum":"fe7de6349137332ad8f8b9f68ff72b1b24b17b88","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJwJcH1ewcuEunedPhdRewZAl5/AQuSxyApWyjrgqPWQIhAJRtkkifjqOPVBchIwkRSlzweSx1GjHCoYlGBDAbVC6e"}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.1.0.tgz_1502555204529_0.47853572806343436"},"directories":{}},"0.1.1":{"name":"pdf-bot","version":"0.1.1","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"mocha test/*.test.js --recursive","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"app-root-path":"^2.0.1","body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","mocha":"^3.5.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"6509039c2ef33ea2dbe8121459d07c4af8a17dad","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.1.1","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-FSfSARsoLvMhl9X98KrK/cXnp+0C9en+xd1FYC+rz/OkAuNUqgaOxKBl/msJflz1c0fdH7Nwh2ww4Wqis5qWdQ==","shasum":"4d120c756106dbce47c965678f37452d802f8cb2","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIErq0OzPBPw2y66fS+LG+dSOmiAa1C9D/lecYU6Fad5xAiEAv9YFczt6vzMFzzpSpFyG/Yw3jZryxLflDCHTzUkrvHo="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.1.1.tgz_1502559765658_0.21313525829464197"},"directories":{}},"0.2.0":{"name":"pdf-bot","version":"0.2.0","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"mocha test/*.test.js --recursive","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","mocha":"^3.5.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"8f82d541da9b972ac46e4f0d63db06784b0e7598","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.2.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-Yk9dz+73p1Yor+ef/5IfTqb8lvvUNomQI51tpDRk7O2C+/RDfyEu1m0GeOmthflajmN/cu/bnQ9zSqW7vGuAlw==","shasum":"b8ca8bc5c6a913bee88831fce96688a0a0076764","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/aIdkJYtsmRFFta6xp+tve04GDiOZLpihf/LPwyu1xAiEAqZ9B6IAhlRfCMMDmwJoVV2oJtb48GkIGNbcVCcp7T1g="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.2.0.tgz_1502565260155_0.32755134208127856"},"directories":{}},"0.2.2":{"name":"pdf-bot","version":"0.2.2","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"mocha test/*.test.js --recursive","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","mocha":"^3.5.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"001144f8ee4e8093f1900744434c6f8c97a99ac4","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.2.2","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-DLQMbHd3Dol9ANGp6/ibT4Pc//atKaBqH8uNx0ahqx/WHrw2cR1tXQ1dV11ML+tTV5S6ViSM5DM4U/DuNmp8Uw==","shasum":"df6eb29ed285bb02668abd17f7bb2ebe6f24df6f","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVttkpg1/QoHCzAA0nUEjcRMaZ6WpEuUId9rgpRvq9tAiEAwTucrPHL0Oc30zfmebHo4QR6qINTq5uRur83DCL1Yjk="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.2.2.tgz_1502621632072_0.9112480322364718"},"directories":{}},"0.2.3":{"name":"pdf-bot","version":"0.2.3","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"2869aa2e1b35ae318fad4cbc55235e4cb9b2689f","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.2.3","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-38QrUaXsopMBfcqo73rWRhctn+lJrRh2I3QCCi2r9sGuNlbx/rg7N4/8vEUBNgiRQiyzis5l5WAqr9wS6D4orA==","shasum":"b0e5f7ac1c8bf0929510a7c33bc792fe8d365c72","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.2.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmVlV+e5bVic4KX5R3AlCWAywgW/dbLUUY2jwaf6QXegIgPtLbOyU9stkoUwU5GOOLwfD3Qy7aO/Zjj9sXISo2ctU="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.2.3.tgz_1502627511875_0.16052128374576569"},"directories":{}},"0.2.4":{"name":"pdf-bot","version":"0.2.4","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"e6f15c7e7ba9c2980a52b8f926e97e855ea164d4","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.2.4","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-hxE3lrSh3Vt8rQaAskYyevBTSpWVB5/2P2QqFGOvDdTPExMiJqBDIqydcpmEBAQI5q5eWNCGOOp/89suE54QlQ==","shasum":"f07773c16c9ff079871bf46c682edf1d1bb9d7cf","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.2.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE7H8fTR2R6/EdiGXYs72hpcVIs6014rkDvrPWxAd2TqAiAW1D+mucXGxH3hsbA9pZCkvVwU+r6xm5Epp5+feQvYag=="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.2.4.tgz_1502631054782_0.4193049524910748"},"directories":{}},"0.2.5":{"name":"pdf-bot","version":"0.2.5","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"c2258365e2e8ff623af047bf0171e4f63474b3fd","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.2.5","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-ACRqzW3PDlCwZGSYxozbAhZ5OCt8bdhzwtudfAZtWICc4ZCZTMSWBwDpm5rY6wABZjxoJrIBLlZ2Gm18dHPS+Q==","shasum":"ec9bbc21066b98069bc5c5e1b85575b32203ebc6","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.2.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/whCL3a7zMhjCIRIHKzF+Ha8xKKaDFXgnUy5wIgBzaAIgfna8dgnJ0oyv4TpVA2sdv03kBoXDdyD+PHe+d5KWS9k="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.2.5.tgz_1502637832598_0.5509822911117226"},"directories":{}},"0.3.0":{"name":"pdf-bot","version":"0.3.0","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"ee6a545e4337ff05993c9de727ea25eb9a8fc0ce","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.3.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-8yR6py+xCukKFhgvMcEHpLOkAdI5kIT8J3onUYiDuMBQpx9zgIQx1pQ4eFiXCBw4OZFBp7g5zPukhc3EUAZt7w==","shasum":"c6dc2613912ce166612df29e35c6b5c025020236","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoHF+oZ2+jZ7ZK5uRkFjXYYC6b2Cbh6RkJDwsd1HUR2wIhAPOwcT1gHMGKs9q3Cl/YVJgPNiXRsh9gLoPDpIxoYxQv"}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.3.0.tgz_1502642110572_0.3084914027713239"},"directories":{}},"0.3.1":{"name":"pdf-bot","version":"0.3.1","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"4771ebfdfc9cc82a563466e44fac2832d6a7b62b","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.3.1","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-RXpG0/Kh+4KIFWRDbQsJwCiLcV6ppLI6WfM9jIsr29EtvmDyIbD6KabNU87HaL9OhuSLGExOd/ZwN4OYL3P37A==","shasum":"4f48dfad4d726994b934618f4b9a8425b369add9","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.3.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHPQuKcJJ6wAXvXQ2w6BXUzPij0k4x9u5iYW5PZh2Mj3AiAgk7x/PPNV8xEf1t7jkEfNX9k6ZT1qASkT4DgcyEe0xA=="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.3.1.tgz_1502642622177_0.7219213366042823"},"directories":{}},"0.3.3":{"name":"pdf-bot","version":"0.3.3","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","crypto":"0.0.3","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"8963781dd4a334a43d2ad59a879dbee7991c0806","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.3.3","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-26RCk2bCzDs3hlGQM+AK4jNLhG0cwp1UcYdCYrhmbVVhEGu32X8nUf4bimDbZ+4SkpMG17hgoy360MI/q2190g==","shasum":"21656ee8a23ecf5b1f4201eeb4350b55ecb644dd","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.3.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAHR0p9fONRp1bnSfkZJn6fk/kqtpiokvCjWy5oGvv3bAiEArL6tI3QB7Srnd7GnwuwBIXCOG6XurtEvVyiNg4C3Yd0="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.3.3.tgz_1502645659267_0.0829299760516733"},"directories":{}},"0.4.1":{"name":"pdf-bot","version":"0.4.1","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"41b3f3890251e211d5e9aac40847bfa1e635bc59","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.4.1","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-1aTQ52epeq2r+i22Oz5STxEmGfVLPu9w4UU+ptMnNcQmhu/yrETMIxAp6rGTjN40BDp6fbzfjsXH7M8gC7z+aA==","shasum":"cacbe8b08664fe499788a702bef7f840d8278ab0","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.4.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkrkpkPheoLGIy1nAZp9tXcVmDPhtGm59nKHMJVesuDAiEAtW6QPTTWLbVqZZa+OC41YRlYFg5GDWQb1Nbs5MQzOn4="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.4.1.tgz_1508230244585_0.287222892511636"},"directories":{}},"0.4.2":{"name":"pdf-bot","version":"0.4.2","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"eb6b753b5b3dc7976fc1823de1b3f071daf77205","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.4.2","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-PGo8R7++IFGvuytTlb0AfWdvMFJ5XtQpKZh60kNurL8j2WC4zfzlqbeimf/wUmpr3HVFvxuhgFskUk404Z8dTA==","shasum":"4a177a5fba8958cc68210e689da37773b7c8c4d9","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.4.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIM7QENHoV137WfYPfvB27v2fTb9OYElxUwn2MAUDbLAIhAOJbFMBNoZ6uOcHPmq2p9antdRP1QVyoQd76UQMzsjAA"}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.4.2.tgz_1508237885265_0.073107301723212"},"directories":{}},"0.4.3":{"name":"pdf-bot","version":"0.4.3","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"f3546959e64b90fd1af1a022f7b70c3b2dc7074a","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.4.3","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-7qHefoLjsSR5YUuCcyxYfKkWqytXxfR9YpQvDZiOq3Fa2GXAPPUUh4hyVVwjx0UM8TLlV8zsltyfl5mTDcHDWg==","shasum":"49c1715c044f20128b7f6ec81c893d99c3bffa7f","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.4.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsfF8USCKbAc6OGfduhPbQ9SzojcR5tO+a1lloo17kjAIhAIuykbKnivPjsnJy1TJdMpfQjDfL5PYuh6Sd7Yz99bGj"}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.4.3.tgz_1508239583470_0.4363392246887088"},"directories":{}},"0.4.5":{"name":"pdf-bot","version":"0.4.5","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.merge":"^4.6.0","lodash.clonedeep":"^4.5.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"60086b29c8576644dace9a1e017dd87b5e2edbe1","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.4.5","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-a2wE8ewulwqXhvlNzBmoWyp4DoXGnN5OggjQQRdRhV/YeutD9Umttx3SKvkiMmj6TxFwXMaeX9h5zfR2C39yHg==","shasum":"da95083483c5286e8258db1de7e386d535601711","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.4.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYSo2Nje+FcbbLcKdFh3/Q2DJRY9bh0pg1TQjNzJeatQIgPr/dqQD5VWgSFwFoYNpyirlYUHZCGBJJl6tg9cQnBtQ="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.4.5.tgz_1510241400773_0.01811865484341979"},"directories":{}},"0.5.0":{"name":"pdf-bot","version":"0.5.0","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","pg":"^7.4.0","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"8b050b69176fb00d6c7d1d30a9d5b893bd0b1aee","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.5.0","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-7rtM+iG6hbXBZfRBCvq4Cq7a+FnQDpod7PGbYgMnoCS50VhATgMBOhb/Dlwlzkgep7QAvCw+4XjpkMC4Wy2H/g==","shasum":"996103c7b9f12608a2bba5a52d7ba5158110e080","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.5.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpF6HRgq3eZiz/OnYAXY3YeU8sRgSEERuoUHT7YJspIAiEA/DtZKtoh0gAwvrb6bkPgiNP2DuWKVv9k1Sw0J8WbBYs="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.5.0.tgz_1510574604764_0.44938458735123277"},"directories":{}},"0.5.1":{"name":"pdf-bot","version":"0.5.1","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","pg":"^7.4.0","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"43e00cc4197d63e48750d903e7d9e74f54126501","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.5.1","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-BAMP7KzcfynfGpxHYcaCPs1aEU+ClcOXfsmjbK4Oqiy+8MRz0YR8cFBQpzuLm3ItK7ip801K7q3BIG/9AmDArQ==","shasum":"fff9c238c9aa4c4468a34496ee68f6931ecd6204","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.5.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAj5Szlvc0y/adJY6Yr7DJMNScHE/9iNo2LU7OeOsax2AiATzSyr5az4kq6iR0UNsz7fccWB1vd871vsUqjS/741FQ=="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.5.1.tgz_1510578189666_0.37380124628543854"},"directories":{}},"0.5.2":{"name":"pdf-bot","version":"0.5.2","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","pg":"^7.4.0","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"fe28f310b88f0189499d8a1d1afce1b1e2b00ee9","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.5.2","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-eFr0ICbSX4DrOXl0Cl74PHSXUFRiIRQFb/+QrWz5PLSRqJG0J25Cri+N6gCexyIaWbYDOIUzzeGU/Pr5cgl7fA==","shasum":"2b5b5864fe6d905744e50a8265fb4b64a2901765","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.5.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYwKLqsGx1lu3cWiVRSXlYzzMBL6oELj0tZqvnB0SRkAiEA2XBADH76WB6NHYqYqjJObvT/DWBjXafm22mAtucP9AE="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.5.2.tgz_1510578464855_0.7045288663357496"},"directories":{}},"0.5.3":{"name":"pdf-bot","version":"0.5.3","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","pg":"^7.4.0","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"eb6c923a30d258b4f7abe565ebc6b01331e07e6b","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.5.3","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-uQUsTRJHy/xlZdrPc4P0C2CFsa+wH2le8HfXt2YHq4Pw2gLRkdTkYRWJf715heZM7foGVWvadp5MvJGeXS33qg==","shasum":"ea083e636103ead5fe46a38b4ba3945106521c84","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.5.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCe9zNnATs87gNhYkRvSMSLAOgMvJ1J7eZHnHPO5MVI1AIgG4tJJE+wJjur4jjBEInx7GU4gSEA5oCb2hY+fAphlZ4="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.5.3.tgz_1510658120365_0.0926722758449614"},"directories":{}},"0.5.4":{"name":"pdf-bot","version":"0.5.4","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.2.0","lodash.chunk":"^4.2.0","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","pg":"^7.4.0","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"f304c3ffc0d4623b01b810cfc731cd4a15a9f3a8","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.5.4","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-wXoUI0eebq7iSCTEHlzWt2h5OKl9fcBKIoaw2AN0sRLmp9C+NSf9JgAd361NrvPVQFOhC13Hbi72PRbTdX3OUw==","shasum":"c3c076d232f19f84bcf358aadf3537a6995cdc38","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.5.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDI/4wNtj6c/hDeuJeAepLPNQxaKdHRe+yxty+jM8oHcQIhALJFq28CPiVsgbMrIWAm5qJKQ0kJMRG2sljsGEzeULTZ"}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot-0.5.4.tgz_1515411067621_0.7250497676432133"},"directories":{}},"0.6.0":{"name":"pdf-bot","version":"0.6.0","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.4.2","lodash.chunk":"^4.2.0","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","pg":"^7.4.0","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"6b7d4c0f3e174e4160fe6b0a24e407d97bf00976","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.6.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-qrTY0nmZ01Pxy2piteiftJsYa2yhr03lvJbDmsqn0Xh2GVEJfGuxQb6Mhe6h7/MOHp77By+WWG1elmn+190ONA==","shasum":"eaa25e3a3cd47b08ccd2a99bdb43c8cb6cd718c1","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.6.0.tgz","fileCount":15,"unpackedSize":60481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXtFQCRA9TVsSAnZWagAAYqEP/i4k7137DOot555pK+da\n0GkXEB9YMAeNqbuQ7cC2Ydbh7jAuqQobiZCnNP8sVRUfRpOsokGSjbwV/V3z\n3t4zgrjEL6N2PoH8xZyTGRlA51GWDS18AZp7Sk4Bwz4qImOW4ItlNoX7oBeA\n2yMiMOaYKYkzG0ToNdK/D6HcwdSBhiQS4uywqSvMlwmCQERNvlZFFaz7ulVX\nLynyR20ayQgFfEj5aqrVL2Hxu1HPnryCnG7qYyNWje8texM6k+n/yVzVyaOp\nymtRRx/6xb3tbyPWheuVNcXI8E80kjB0RXAIr280wxVtrx9httgp1632AxRW\npaWymLm/owVEcPANqwf+tqjycv7Qa7dMWU3BKkqn+MZmbDH1fuLKSP/mabrX\nY966gG6QijOMixPMwx6nxLQJYCn2uKNQcGYlvVZTOl0fvhRIvq0DSMjzXCz+\nMjBZvJdCliitLZpB7hz2Rqu9Dm6VgnuJFhqZZGe0imUNbCIX2w6/oVadb3fw\nTJqj0jkz76aBeBhq0hkJP+6RB8+oZeoBfMgw3dBhJhvZP3FhO+4pMNQ1lLp5\nAr/LYwANCavYbFAdVbBiYbUdshOkDICxTIkn9iAOsX6M1nnxHO4XQpQZ7x8i\noS7R/um5LcNcXZ9DHgY5VpWnatkisVowkrrsLAChYcFHuaNxV8lL/NaJtLW6\n7RLE\r\n=TSvq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYwOsKaZBAI5grInIO9NyO/K0m7f+NXK7IP/vKygR2fwIhAJZ8wMdo2Px4MbJFBzSJ2n2YoLcddHz7oDghHAqE1/0x"}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot_0.6.0_1532940624880_0.5731447327093888"},"_hasShrinkwrap":false},"0.6.1":{"name":"pdf-bot","version":"0.6.1","author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"homepage":"https://github.com/esbenp/pdf-bot","license":"MIT","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"engines":{"node":">= 6"},"description":"A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs","main":"./src/index.js","bin":{"pdf-bot":"./bin/pdf-bot.js"},"files":["bin/","src/","storage/"],"scripts":{"example":"DEBUG=pdf:* node ./bin/pdf-bot.js --config ./examples/pdf-bot.config.js","example:receiving-api":"DEBUG=pdf:* node ./examples/receiving-api.js","test":"nyc --reporter=lcov --reporter=text mocha test/*.test.js --recursive --coverage","test:watch":"mocha -w test/*.test.js --recursive"},"dependencies":{"body-parser":"^1.17.2","cli-table":"^0.3.1","commander":"^2.11.0","debug":"^2.6.8","express":"^4.15.3","html-pdf-chrome":"^0.4.2","lodash.chunk":"^4.2.0","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.0","lowdb":"^0.16.2","node-fetch":"^1.7.1","pg":"^7.4.0","prompt":"^1.0.0","s3":"^4.4.0","uuid":"^3.1.0"},"devDependencies":{"assert":"^1.4.1","coveralls":"^2.13.1","mocha":"^3.5.0","nyc":"^11.1.0","proxyquire":"^1.8.0","sinon":"^3.0.0","supertest":"^3.0.0"},"gitHead":"a2edd1ea570b840965e980c0900c5aaa27d80148","bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"_id":"pdf-bot@0.6.1","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"esbenp","email":"esbenspetersen@gmail.com"},"dist":{"integrity":"sha512-5wkhsPDbNDZqTtjQ4/WxzC1IXCaRX48lbJQXETbwzDhzxjKR2WXXlVnrTAbxCiUKOHm7GTwGflfuzk2nfpnCvg==","shasum":"ac740b18c0c7f0ad56df92570591aaea8bf94fb9","tarball":"https://registry.npmjs.org/pdf-bot/-/pdf-bot-0.6.1.tgz","fileCount":15,"unpackedSize":60734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfTCqCRA9TVsSAnZWagAAvuYP/AlkQFTLwsV1jEI/4gXm\npFhig4wPbqSn5s3A6zSP2KDZcBoMGp+hAkcgtY0VKLmakmleSm3iR6HI6EvI\nuRDc6Pxjho/H3AdYGLz8jTvJSKzJHJShJoaaN177mv/MIlyU0E0Qm5cvIeg7\nzNp9I134iPc0fDfuctWMEivdWtz2YxtXp0ZUZxQL2e1f7oWo7D2lNCKthrqV\nAlK7EgNSlXQ2SlaErPKg104gOFfUDyWnWZ5DO5vdWOaWTH54YcxaPi6hZe4N\n+IA/LIYkjzNgb+7tNdM6Uv3HmBa52hS6l5UxP4XSTnpdi8NAk7b7lVC5pUFN\nVj+R7YkBYT9qDEW6l5W/oZCYnSPQ/e39Fzbei/mIMuNybXMirfT/5xTqd3NJ\nxI2LmHfK93x0RwLnLRUUcStFiQTB3oluwdUr+L/SdCDSIDhZ+Yhmn45IOSFT\nwg31kLcq1RewQctrD2amn4ANgDIUnjFVwx9tmMYi64dUnZrH8FFdL0xbOfjq\nkU+zJkoeJX3UoIgzdrWcWg/fLopbGxbSORNHp1O6vpZr8TfUbjIWO8PR2psc\nWj19T8xEYamRUfBSSB3ETKUMAnm5N9kW8iRTZvh2opnE/g4b901DKemhchoV\nLsrawhnqFb45N3Qk/IXW5r7m0I7BiM60Tz93fqDZx1f2bc5JHUfgmRrigSjp\nkoSP\r\n=YY1C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqgxipNzQcmHyB0YKQU/7aWzvGxZjYbUxW4WMqu///JAiEAv0cAz8iQddPt7PSpH2gEFhvcUpFzZDdvi9dES5kMNgc="}]},"maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pdf-bot_0.6.1_1534931113465_0.13629237013257844"},"_hasShrinkwrap":false}},"readme":"# 🤖 pdf-bot\n\n[![npm](https://img.shields.io/npm/v/pdf-bot.svg)](https://www.npmjs.com/package/pdf-bot) [![Build Status](https://travis-ci.org/esbenp/pdf-bot.svg?branch=master)](https://travis-ci.org/esbenp/pdf-bot) [![Coverage Status](https://coveralls.io/repos/github/esbenp/pdf-bot/badge.svg?branch=master)](https://coveralls.io/github/esbenp/pdf-bot?branch=master)\n\nEasily create a microservice for generating PDFs using headless Chrome.\n\n`pdf-bot` is installed on a server and will receive URLs to turn into PDFs through its API or CLI. `pdf-bot` will manage a queue of PDF jobs. Once a PDF job has run it will notify you using a webhook so you can fetch the API. `pdf-bot` supports storing PDFs on S3 out of the box. Failed PDF generations and Webhook pings will be retried after a configurable decaying schedule.\n\n![How to use the pdf-bot CLI](http://imgur.com/aRHye2l.gif)\n\n`pdf-bot` uses [`html-pdf-chrome`](https://github.com/westy92/html-pdf-chrome) under the hood and supports all the settings that it supports. Major thanks to [@westy92](https://github.com/westy92/html-pdf-chrome) for making this possible.\n\n## How does it work?\n\nImagine you have an app that creates invoices. You want to save those invoices as PDF. You install `pdf-bot` on a server as an API. Your app server sends the URL of the invoice to the `pdf-bot` server. A cronjob on the `pdf-bot` server keeps checking for new jobs, generates a PDF using headless Chrome and sends the location back to the application server using a webhook.\n\n## Prerequisites\n\n* Node.js v6 or later\n\n## Installation\n\n```bash\n$ npm install -g pdf-bot\n$ pdf-bot install\n```\n\n> Make sure the node path is in your $PATH\n\n`pdf-bot install` will prompt for some basic configurations and then create a storage folder where your database and pdf files will be saved.\n\n### Configuration\n\n`pdf-bot` comes packaged with sensible defaults. At the very minimum you must have a config file in the same folder from which you are executing `pdf-bot` with a `storagePath` given. However, in reality what you probably want to do is use the `pdf-bot install` command to generate a configuration file and then use an alias `ALIAS pdf-bot = \"pdf-bot -c /home/pdf-bot.config.js\"`\n\n`pdf-bot.config.js`\n```js\nvar htmlPdf = require('html-pdf-chrome')\n\nmodule.exports = {\n  api: {\n    token: 'crazy-secret'\n  },\n  generator: {\n    completionTrigger: new htmlPdf.CompletionTrigger.Timer(1000) // 1 sec timeout\n  },\n  storagePath: 'storage'\n}\n```\n\n```bash\n$ pdf-bot -c ./pdf-bot.config.js push https://esbenp.github.io\n```\n\n[See a full list of the available configuration options.](#options)\n\n## Usage guide\n\n### Structure and concept\n\n`pdf-bot` is meant to be a microservice that runs a server to generate PDFs for you. That usually means you will send requests from your application server to the PDF server to request an url to be generated as a PDF. `pdf-bot` will manage a queue and retry failed generations. Once a job is successfully generated a path to it will be sent back to your application server.\n\nLet us check out the flow for an app that generates PDF invoices.\n\n```\n1. (App server): An invoice is created ----> Send URL to invoice to pdf-bot server\n2. (pdf-bot server): Put the URL in the queue\n3. (pdf-bot server): PDF is generated using headless Chrome\n4. (pdf-bot server): (if failed try again using 1 min, 3 min, 10 min, 30 min, 60 min delay)\n5. (pdf-bot server): Upload PDF to storage (e.g. Amazon S3)\n6. (pdf-bot server): Send S3 location of PDF back to the app server\n7. (App server): Receive S3 location of PDF -> Check signature sum matches for security\n8. (App server): Handle PDF however you see fit (move it, download it, save it etc.)\n```\n\nYou can send meta data to the `pdf-bot` server that will be sent back to the application. This can help you identify what PDF you are receiving.\n\n### Setup\n\nOn your `pdf-bot` server start by creating a config file `pdf-bot.config.js`. [You can see an example file here](https://github.com/esbenp/pdf-bot/blob/master/examples/pdf-bot.config.js)\n\n`pdf-bot.config.js`\n```js\nmodule.exports = {\n  api: {\n    port: 3000,\n    token: 'api-token'\n  },\n  storage: {\n    's3': createS3Config({\n      bucket: '',\n      accessKeyId: '',\n      region: '',\n      secretAccessKey: ''\n    })\n  },\n  webhook: {\n    secret: '1234',\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n```\n\nAs a minimum you should configure an access token for your API. This will be used to authenticate jobs sent to your `pdf-bot` server. You also need to add a `webhook` configuration to have pdf notifications sent back to your application server. You should add a `secret` that will be used to generate a signature used to check that the request has not been tampered with during transfer.\n\nStart your API using\n\n`pdf-bot -c ./pdf-bot.config.js api`\n\nThis will start an [express server](http://expressjs.com) that listens for new jobs on port `3000`.\n\n#### Setting up Chrome\n\n`pdf-bot` uses [html-pdf-chrome](https://github.com/westy92/html-pdf-chrome) which in turns uses [chrome-launcher](https://github.com/GoogleChrome/lighthouse/tree/master/chrome-launcher) to launch chrome. You should check out those two resources on how to properly setup Chrome. However, with `chrome-launcher` Chrome should be started automatically. Otherwise, `html-pdf-chrome` has a small guide on how to have it running as a process using `pm2`.\n\nYou can install chrome on Ubuntu using\n\n```\nsudo apt-get update && apt-get install chromium-browser\n```\n\nIf you are testing things on OSX or similar, `chrome-launcher` should be able to find and automatically startup Chrome for you.\n\n#### Setting up the receiving API\n\nIn the [examples folder](https://github.com/esbenp/pdf-bot/blob/master/examples/receiving-api.js) there is a small example on how the application API could look. Basically, you just have to define an endpoint that will receive the webhook and check that the signature matches.\n\n```javascript\napi.post('/hook', function (req, res) {\n  var signature = req.get('X-PDF-Signature', 'sha1=')\n\n  var bodyCrypted = require('crypto')\n    .createHmac('sha1', '12345')\n    .update(JSON.stringify(req.body))\n    .digest('hex')\n\n  if (bodyCrypted !== signature) {\n    res.status(401).send()\n    return\n  }\n\n  console.log('PDF webhook received', JSON.stringify(req.body))\n\n  res.status(204).send()\n})\n```\n\n### Setup production environment\n\n[Follow the guide under `production/` to see how to setup `pdf-bot` using `pm2` and `nginx`](https://github.com/esbenp/pdf-bot/blob/master/production/README.md)\n\n### Setup crontab\n\nWe setup our crontab to continuously look for jobs that have not yet been completed.\n\n```bash\n* * * * * node $(npm bin -g)/pdf-bot -c ./pdf-bot.config.js shift:all >> /var/log/pdfbot.log 2>&1\n* * * * * node $(npm bin -g)/pdf-bot -c ./pdf-bot.config.js ping:retry-failed >> /var/log/pdfbot.log 2>&1\n```\n\n### Quick example using the CLI\n\nLet us assume I want to generate a PDF for `https://esbenp.github.io`. I can add the job using the `pdf-bot` CLI.\n\n```bash\n$ pdf-bot -c ./pdf-bot.config.js push https://esbenp.github.io --meta '{\"id\":1}'\n```\n\nNext, if my crontab is not setup to run it automatically I can run it using the `shift:all` command\n\n```bash\n$ pdf-bot -c ./pdf-bot.config.js shift:all\n```\n\nThis will look for the oldest uncompleted job and run it.\n\n### How can I generate PDFs for sites that use Javascript?\n\nThis is a common issue with PDF generation. Luckily, `html-pdf-chrome` has a really awesome API for dealing with Javascript. You can specify a timeout in milliseconds, wait for elements or custom events. To add a wait simply configure the `generator` key in your configuration. Below are a few examples.\n\n**Wait for 5 seconds**\n\n```javascript\nvar htmlPdf = require('html-pdf-chrome')\n\nmodule.exports = {\n  api: {\n    token: 'api-token'\n  },\n  // html-pdf-chrome options\n  generator: {\n    completionTrigger: new htmlPdf.CompletionTrigger.Timer(5000), // waits for 5 sec\n  },\n  webhook: {\n    secret: '1234',\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n```\n\n**Wait for event**\n\n```javascript\nvar htmlPdf = require('html-pdf-chrome')\n\nmodule.exports = {\n  api: {\n    token: 'api-token'\n  },\n  // html-pdf-chrome options\n  generator: {\n    completionTrigger: new htmlPdf.CompletionTrigger.Event(\n      'myEvent', // name of the event to listen for\n      '#myElement', // optional DOM element CSS selector to listen on, defaults to body\n      5000 // optional timeout (milliseconds)\n    )\n  },\n  webhook: {\n    secret: '1234',\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n```\n\nIn your Javascript trigger the event when rendering is complete\n\n```javascript\ndocument.getElementById('myElement').dispatchEvent(new CustomEvent('myEvent'));\n```\n\n**Wait for variable**\n\n```javascript\nvar htmlPdf = require('html-pdf-chrome')\n\nmodule.exports = {\n  api: {\n    token: 'api-token'\n  },\n  // html-pdf-chrome options\n  generator: {\n    completionTrigger: new htmlPdf.CompletionTrigger.Variable(\n      'myVarName', // optional, name of the variable to wait for.  Defaults to 'htmlPdfDone'\n      5000 // optional, timeout (milliseconds)\n    )\n  },\n  webhook: {\n    secret: '1234',\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n```\n\nIn your Javascript set the variable when the rendering is complete\n\n```javascript\nwindow.myVarName = true;\n```\n\n[You can find more completion triggers in html-pdf-chrome's documentation](https://github.com/westy92/html-pdf-chrome#trigger-render-completion)\n\n## API\n\nBelow are given the endpoints that are exposed by `pdf-server`'s REST API\n\n### Push URL to queue: POST /\n\nkey | type | required | description\n--- | ---- | -------- | -----------\nurl | string | yes | The URL to generate a PDF from\nmeta | object | | Optional meta data object to send back to the webhook url\n\n#### Example\n\n```bash\ncurl -X POST -H 'Authorization: Bearer api-token' -H 'Content-Type: application/json' http://pdf-bot.com/ -d '\n  {\n    \"url\":\"https://esbenp.github.io\",\n    \"meta\":{\n      \"type\":\"invoice\",\n      \"id\":1\n    }\n  }'\n```\n\n## Database\n\n### LowDB (file-database) (default)\n\nIf you have low conurrency (run a job every now and then) you can use the default database driver that uses LowDB.\n\n```javascript\nvar LowDB = require('pdf-bot/src/db/lowdb')\n\nmodule.exports = {\n  api: {\n    token: 'api-token'\n  },\n  db: LowDB({\n    lowDbOptions: {},\n    path: '' // defaults to $storagePath/db/db.json\n  }),\n  webhook: {\n    secret: '1234',\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n```\n\n### PostgreSQL\n\n```javascript\nvar pgsql = require('pdf-bot/src/db/pgsql')\n\nmodule.exports = {\n  api: {\n    token: 'api-token'\n  },\n  db: pgsql({\n    database: 'pdfbot',\n    username: 'pdfbot',\n    password: 'pdfbot',\n    port: 5432\n  }),\n  webhook: {\n    secret: '1234',\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n```\n\nOptionally, you can specify a database url by specifying a `connectionString`.\n\nTo install the necessary database tables, run `db:migrate`. You can also destroy the database by running `db:destroy`.\n\n## Storage\n\nCurrently `pdf-bot` comes bundled with build-in support for storing PDFs on Amazon S3.\n\n[Feel free to contribute a PR if you want to see other storage plugins in `pdf-bot`](https://github.com/esbenp/pdf-bot/compare)!\n\n### Amazon S3\n\nTo install S3 storage add a key to the `storage` configuration. Notice, you can add as many different locations you want by giving them different keys.\n\n```javascript\nvar createS3Config = require('pdf-bot/src/storage/s3')\n\nmodule.exports = {\n  api: {\n    token: 'api-token'\n  },\n  storage: {\n    'my_s3': createS3Config({\n      bucket: '[YOUR BUCKET NAME]',\n      accessKeyId: '[YOUR ACCESS KEY ID]',\n      region: '[YOUR REGION]',\n      secretAccessKey: '[YOUR SECRET ACCESS KEY]'\n    })\n  },\n  webhook: {\n    secret: '1234',\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n\n```\n\n## Options\n\n```javascript\nvar decaySchedule = [\n  1000 * 60, // 1 minute\n  1000 * 60 * 3, // 3 minutes\n  1000 * 60 * 10, // 10 minutes\n  1000 * 60 * 30, // 30 minutes\n  1000 * 60 * 60 // 1 hour\n];\n\nmodule.exports = {\n  // The settings of the API\n  api: {\n    // The port your express.js instance listens to requests from. (default: 3000)\n    port: 3000,\n    // Spawn command when a job has been pushed to the API\n    postPushCommand: ['/home/user/.npm-global/bin/pdf-bot', ['-c', './pdf-bot.config.js', 'shift:all']],\n    // The token used to validate requests to your API. Not required, but 100% recommended.\n    token: 'api-token'\n  },\n  db: LowDB(), // see other drivers under Database\n  // html-pdf-chrome\n  generator: {\n    // Triggers that specify when the PDF should be generated\n    completionTrigger: new htmlPdf.CompletionTrigger.Timer(1000), // waits for 1 sec\n    // The port to listen for Chrome (default: 9222)\n    port: 9222\n  },\n  queue: {\n    // How frequent should pdf-bot retry failed generations?\n    // (default: 1 min, 3 min, 10 min, 30 min, 60 min)\n    generationRetryStrategy: function(job, retries) {\n      return decaySchedule[retries - 1] ? decaySchedule[retries - 1] : 0\n    },\n    // How many times should pdf-bot try to generate a PDF?\n    // (default: 5)\n    generationMaxTries: 5,\n    // How many generations to run at the same time when using shift:all\n    parallelism: 4,\n    // How frequent should pdf-bot retry failed webhook pings?\n    // (default: 1 min, 3 min, 10 min, 30 min, 60 min)\n    webhookRetryStrategy: function(job, retries) {\n      return decaySchedule[retries - 1] ? decaySchedule[retries - 1] : 0\n    },\n    // How many times should pdf-bot try to ping a webhook?\n    // (default: 5)\n    webhookMaxTries: 5\n  },\n  storage: {\n    's3': createS3Config({\n      bucket: '',\n      accessKeyId: '',\n      region: '',\n      secretAccessKey: ''\n    })\n  },\n  webhook: {\n    // The prefix to add to all pdf-bot headers on the webhook response.\n    // I.e. X-PDF-Transaction and X-PDF-Signature. (default: X-PDF-)\n    headerNamespace: 'X-PDF-',\n    // Extra request options to add to the Webhook ping.\n    requestOptions: {\n\n    },\n    // The secret used to generate the hmac-sha1 signature hash.\n    // !Not required, but should definitely be included!\n    secret: '1234',\n    // The endpoint to send PDF messages to.\n    url: 'http://localhost:3000/webhooks/pdf'\n  }\n}\n```\n\n## CLI\n\n`pdf-bot` comes with a full CLI included! Use `-c` to pass a configuration to `pdf-bot`. You can also use `--help` to get a list of all commands. An example is given below.\n\n```bash\n$ pdf-bot.js --config ./examples/pdf-bot.config.js --help\n\n\n  Usage: pdf-bot [options] [command]\n\n\n  Options:\n\n    -V, --version        output the version number\n    -c, --config <path>  Path to configuration file\n    -h, --help           output usage information\n\n\n  Commands:\n\n    api                   Start the API\n    db:migrate\n    db:destroy\n    install\n    generate [jobID]      Generate PDF for job\n    jobs [options]        List all completed jobs\n    ping [jobID]          Attempt to ping webhook for job\n    ping:retry-failed\n    pings [jobId]         List pings for a job\n    purge [options]       Will remove all completed jobs\n    push [options] [url]  Push new job to the queue\n    shift                 Run the next job in the queue\n    shift:all             Run all unfinished jobs in the queue\n```\n\n## Debug mode\n\n`pdf-bot` uses `debug` for debug messages. You can turn on debugging by setting the environment variable `DEBUG=pdf:*` like so\n\n```bash\nDEBUG=pdf:* pdf-bot jobs\n```\n\n## Tests\n\n```bash\n$ npm run test\n```\n\n## Issues\n\n[Please report issues to the issue tracker](https://github.com/esbenp/pdf-bot/issues/new)\n\n## License\n\nThe MIT License (MIT). Please see [License File](https://github.com/esbenp/pdf-bot/blob/master/LICENSE) for more information.\n","maintainers":[{"name":"esbenp","email":"esbenspetersen@gmail.com"}],"time":{"modified":"2022-05-12T17:59:35.930Z","created":"2017-08-12T16:26:45.543Z","0.1.0":"2017-08-12T16:26:45.543Z","0.1.1":"2017-08-12T17:42:46.688Z","0.2.0":"2017-08-12T19:14:21.082Z","0.2.2":"2017-08-13T10:53:53.075Z","0.2.3":"2017-08-13T12:31:52.971Z","0.2.4":"2017-08-13T13:30:55.779Z","0.2.5":"2017-08-13T15:23:53.541Z","0.3.0":"2017-08-13T16:35:11.621Z","0.3.1":"2017-08-13T16:43:43.246Z","0.3.3":"2017-08-13T17:34:20.307Z","0.4.1":"2017-10-17T08:50:45.593Z","0.4.2":"2017-10-17T10:58:06.298Z","0.4.3":"2017-10-17T11:26:24.365Z","0.4.5":"2017-11-09T15:30:01.886Z","0.5.0":"2017-11-13T12:03:27.409Z","0.5.1":"2017-11-13T13:03:10.736Z","0.5.2":"2017-11-13T13:07:46.027Z","0.5.3":"2017-11-14T11:15:21.358Z","0.5.4":"2018-01-08T11:31:08.745Z","0.6.0":"2018-07-30T08:50:24.972Z","0.6.1":"2018-08-22T09:45:13.608Z"},"homepage":"https://github.com/esbenp/pdf-bot","repository":{"type":"git","url":"git+https://github.com/esbenp/pdf-bot.git"},"author":{"name":"Esben Petersen","email":"esbenspetersen@gmail.com"},"bugs":{"url":"https://github.com/esbenp/pdf-bot/issues"},"license":"MIT","readmeFilename":"README.md"}