├── .github └── workflows │ └── nodejs.yml ├── .gitignore ├── Makefile ├── README.md ├── index.js ├── package-lock.json ├── package.json └── test ├── index.js └── sample_event.json /.github/workflows/nodejs.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [10.x, 12.x] 20 | 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v1 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - run: npm ci 28 | - run: npm run build --if-present 29 | - run: npm test 30 | env: 31 | CI: true 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.zip 2 | node_modules 3 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ARCHIVE=index.zip 2 | REPORTER=dot 3 | 4 | all: test 5 | 6 | test: 7 | @NODE_ENV=test ./node_modules/.bin/mocha --reporter $(REPORTER) 8 | 9 | clean: 10 | rm -f $(ARCHIVE) 11 | 12 | build: clean 13 | zip -r $(ARCHIVE) . 14 | 15 | .PHONY: test 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Lambda/Node/Honeybadger template 2 | 3 | An AWS Lambda function which reports exceptions to the :zap: [Honeybadger.io error 4 | notifier for Node.js](https://www.honeybadger.io/for/node). 5 | 6 | ## Lambda setup 7 | 8 | Before starting, install the required node packages (these are vendored during 9 | the build process): `npm install`. 10 | 11 | Then, to build a zip file for Lambda, run `make build`. After that just create a 12 | new function and chose the "Upload a .ZIP file" option along with the following 13 | config: 14 | 15 | - Runtime: NodeJS 16 | - Handler: index.handler 17 | - Role: Basic Execution Role 18 | - Memory: 128mb 19 | - Timeout: 3 20 | 21 | ## Support 22 | 23 | Create an issue on [honeybadger-io/honeybadger-node](https://github.com/honeybadger-io/honeybadger-node/issues) or email support@honeybadger.io. 24 | 25 | ## Running the tests 26 | 27 | ```sh 28 | make 29 | ``` 30 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // Configure they API key for your Honeybadger project. 2 | const HONEYBADGER_API_KEY = "change me"; 3 | 4 | const Honeybadger = require("@honeybadger-io/js"); 5 | 6 | Honeybadger.configure({ 7 | reportData: true, 8 | apiKey: HONEYBADGER_API_KEY, 9 | }); 10 | 11 | console.log("Loading function"); 12 | 13 | const handler = async function handler(event, context) { 14 | console.log("Event:", event); 15 | console.log("Context:", context); 16 | throw new Error("Something went wrong."); 17 | console.log("Shouldn't make it here."); 18 | } 19 | 20 | exports.handler = Honeybadger.lambdaHandler(handler); 21 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "honeybadger-lambda-node", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "honeybadger-lambda-node", 9 | "version": "0.0.1", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@honeybadger-io/js": "^3.2.9", 13 | "promise": "^7.1.1" 14 | }, 15 | "devDependencies": { 16 | "mocha": "^2.4.5", 17 | "nock": "^13.2.4" 18 | } 19 | }, 20 | "node_modules/@honeybadger-io/js": { 21 | "version": "3.2.9", 22 | "resolved": "https://registry.npmjs.org/@honeybadger-io/js/-/js-3.2.9.tgz", 23 | "integrity": "sha512-ByaN4rouf9+nqPv87Ccny6/Fbs1gn2bVYFb8za/IgyYqR9OfgvzwY2/ddDjO57sgOCkHjBq8U78rqA4opn5ddw==", 24 | "dependencies": { 25 | "@types/express": "^4.17.13", 26 | "stacktrace-parser": "^0.1.10" 27 | } 28 | }, 29 | "node_modules/@types/body-parser": { 30 | "version": "1.19.1", 31 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", 32 | "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", 33 | "dependencies": { 34 | "@types/connect": "*", 35 | "@types/node": "*" 36 | } 37 | }, 38 | "node_modules/@types/connect": { 39 | "version": "3.4.35", 40 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 41 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 42 | "dependencies": { 43 | "@types/node": "*" 44 | } 45 | }, 46 | "node_modules/@types/express": { 47 | "version": "4.17.13", 48 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 49 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 50 | "dependencies": { 51 | "@types/body-parser": "*", 52 | "@types/express-serve-static-core": "^4.17.18", 53 | "@types/qs": "*", 54 | "@types/serve-static": "*" 55 | } 56 | }, 57 | "node_modules/@types/express-serve-static-core": { 58 | "version": "4.17.24", 59 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", 60 | "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", 61 | "dependencies": { 62 | "@types/node": "*", 63 | "@types/qs": "*", 64 | "@types/range-parser": "*" 65 | } 66 | }, 67 | "node_modules/@types/mime": { 68 | "version": "1.3.2", 69 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 70 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 71 | }, 72 | "node_modules/@types/node": { 73 | "version": "16.3.3", 74 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.3.tgz", 75 | "integrity": "sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==" 76 | }, 77 | "node_modules/@types/qs": { 78 | "version": "6.9.7", 79 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 80 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 81 | }, 82 | "node_modules/@types/range-parser": { 83 | "version": "1.2.4", 84 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 85 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 86 | }, 87 | "node_modules/@types/serve-static": { 88 | "version": "1.13.10", 89 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 90 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 91 | "dependencies": { 92 | "@types/mime": "^1", 93 | "@types/node": "*" 94 | } 95 | }, 96 | "node_modules/asap": { 97 | "version": "2.0.6", 98 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 99 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 100 | }, 101 | "node_modules/commander": { 102 | "version": "2.3.0", 103 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", 104 | "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", 105 | "dev": true, 106 | "engines": { 107 | "node": ">= 0.6.x" 108 | } 109 | }, 110 | "node_modules/debug": { 111 | "version": "4.3.1", 112 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 113 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 114 | "dev": true, 115 | "dependencies": { 116 | "ms": "2.1.2" 117 | }, 118 | "engines": { 119 | "node": ">=6.0" 120 | } 121 | }, 122 | "node_modules/debug/node_modules/ms": { 123 | "version": "2.1.2", 124 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 125 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 126 | "dev": true 127 | }, 128 | "node_modules/diff": { 129 | "version": "1.4.0", 130 | "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", 131 | "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", 132 | "dev": true, 133 | "engines": { 134 | "node": ">=0.3.1" 135 | } 136 | }, 137 | "node_modules/escape-string-regexp": { 138 | "version": "1.0.2", 139 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", 140 | "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", 141 | "dev": true, 142 | "engines": { 143 | "node": ">=0.8.0" 144 | } 145 | }, 146 | "node_modules/glob": { 147 | "version": "3.2.11", 148 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 149 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", 150 | "dev": true, 151 | "dependencies": { 152 | "inherits": "2", 153 | "minimatch": "0.3" 154 | }, 155 | "engines": { 156 | "node": "*" 157 | } 158 | }, 159 | "node_modules/growl": { 160 | "version": "1.9.2", 161 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 162 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 163 | "dev": true 164 | }, 165 | "node_modules/inherits": { 166 | "version": "2.0.4", 167 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 168 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 169 | "dev": true 170 | }, 171 | "node_modules/jade": { 172 | "version": "0.26.3", 173 | "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", 174 | "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", 175 | "dev": true, 176 | "dependencies": { 177 | "commander": "0.6.1", 178 | "mkdirp": "0.3.0" 179 | }, 180 | "bin": { 181 | "jade": "bin/jade" 182 | } 183 | }, 184 | "node_modules/jade/node_modules/commander": { 185 | "version": "0.6.1", 186 | "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", 187 | "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", 188 | "dev": true, 189 | "engines": { 190 | "node": ">= 0.4.x" 191 | } 192 | }, 193 | "node_modules/jade/node_modules/mkdirp": { 194 | "version": "0.3.0", 195 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", 196 | "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", 197 | "dev": true, 198 | "engines": { 199 | "node": "*" 200 | } 201 | }, 202 | "node_modules/json-stringify-safe": { 203 | "version": "5.0.1", 204 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 205 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 206 | "dev": true 207 | }, 208 | "node_modules/lodash.set": { 209 | "version": "4.3.2", 210 | "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", 211 | "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", 212 | "dev": true 213 | }, 214 | "node_modules/lru-cache": { 215 | "version": "2.7.3", 216 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 217 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 218 | "dev": true 219 | }, 220 | "node_modules/minimatch": { 221 | "version": "0.3.0", 222 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 223 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", 224 | "dev": true, 225 | "dependencies": { 226 | "lru-cache": "2", 227 | "sigmund": "~1.0.0" 228 | }, 229 | "engines": { 230 | "node": "*" 231 | } 232 | }, 233 | "node_modules/minimist": { 234 | "version": "0.0.8", 235 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 236 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 237 | "dev": true 238 | }, 239 | "node_modules/mkdirp": { 240 | "version": "0.5.1", 241 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 242 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 243 | "dev": true, 244 | "dependencies": { 245 | "minimist": "0.0.8" 246 | }, 247 | "bin": { 248 | "mkdirp": "bin/cmd.js" 249 | } 250 | }, 251 | "node_modules/mocha": { 252 | "version": "2.5.3", 253 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", 254 | "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", 255 | "dev": true, 256 | "dependencies": { 257 | "commander": "2.3.0", 258 | "debug": "2.2.0", 259 | "diff": "1.4.0", 260 | "escape-string-regexp": "1.0.2", 261 | "glob": "3.2.11", 262 | "growl": "1.9.2", 263 | "jade": "0.26.3", 264 | "mkdirp": "0.5.1", 265 | "supports-color": "1.2.0", 266 | "to-iso-string": "0.0.2" 267 | }, 268 | "bin": { 269 | "_mocha": "bin/_mocha", 270 | "mocha": "bin/mocha" 271 | }, 272 | "engines": { 273 | "node": ">= 0.8.x" 274 | } 275 | }, 276 | "node_modules/mocha/node_modules/debug": { 277 | "version": "2.2.0", 278 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 279 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 280 | "dev": true, 281 | "dependencies": { 282 | "ms": "0.7.1" 283 | } 284 | }, 285 | "node_modules/ms": { 286 | "version": "0.7.1", 287 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 288 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 289 | "dev": true 290 | }, 291 | "node_modules/nock": { 292 | "version": "13.2.4", 293 | "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz", 294 | "integrity": "sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug==", 295 | "dev": true, 296 | "dependencies": { 297 | "debug": "^4.1.0", 298 | "json-stringify-safe": "^5.0.1", 299 | "lodash.set": "^4.3.2", 300 | "propagate": "^2.0.0" 301 | }, 302 | "engines": { 303 | "node": ">= 10.13" 304 | } 305 | }, 306 | "node_modules/promise": { 307 | "version": "7.3.1", 308 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 309 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 310 | "dependencies": { 311 | "asap": "~2.0.3" 312 | } 313 | }, 314 | "node_modules/propagate": { 315 | "version": "2.0.1", 316 | "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", 317 | "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", 318 | "dev": true, 319 | "engines": { 320 | "node": ">= 8" 321 | } 322 | }, 323 | "node_modules/sigmund": { 324 | "version": "1.0.1", 325 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 326 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 327 | "dev": true 328 | }, 329 | "node_modules/stacktrace-parser": { 330 | "version": "0.1.10", 331 | "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", 332 | "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", 333 | "dependencies": { 334 | "type-fest": "^0.7.1" 335 | }, 336 | "engines": { 337 | "node": ">=6" 338 | } 339 | }, 340 | "node_modules/supports-color": { 341 | "version": "1.2.0", 342 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", 343 | "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", 344 | "dev": true, 345 | "bin": { 346 | "supports-color": "cli.js" 347 | }, 348 | "engines": { 349 | "node": ">=0.10.0" 350 | } 351 | }, 352 | "node_modules/to-iso-string": { 353 | "version": "0.0.2", 354 | "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", 355 | "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", 356 | "dev": true 357 | }, 358 | "node_modules/type-fest": { 359 | "version": "0.7.1", 360 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", 361 | "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", 362 | "engines": { 363 | "node": ">=8" 364 | } 365 | } 366 | }, 367 | "dependencies": { 368 | "@honeybadger-io/js": { 369 | "version": "3.2.9", 370 | "resolved": "https://registry.npmjs.org/@honeybadger-io/js/-/js-3.2.9.tgz", 371 | "integrity": "sha512-ByaN4rouf9+nqPv87Ccny6/Fbs1gn2bVYFb8za/IgyYqR9OfgvzwY2/ddDjO57sgOCkHjBq8U78rqA4opn5ddw==", 372 | "requires": { 373 | "@types/express": "^4.17.13", 374 | "stacktrace-parser": "^0.1.10" 375 | } 376 | }, 377 | "@types/body-parser": { 378 | "version": "1.19.1", 379 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", 380 | "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", 381 | "requires": { 382 | "@types/connect": "*", 383 | "@types/node": "*" 384 | } 385 | }, 386 | "@types/connect": { 387 | "version": "3.4.35", 388 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 389 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 390 | "requires": { 391 | "@types/node": "*" 392 | } 393 | }, 394 | "@types/express": { 395 | "version": "4.17.13", 396 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 397 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 398 | "requires": { 399 | "@types/body-parser": "*", 400 | "@types/express-serve-static-core": "^4.17.18", 401 | "@types/qs": "*", 402 | "@types/serve-static": "*" 403 | } 404 | }, 405 | "@types/express-serve-static-core": { 406 | "version": "4.17.24", 407 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", 408 | "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", 409 | "requires": { 410 | "@types/node": "*", 411 | "@types/qs": "*", 412 | "@types/range-parser": "*" 413 | } 414 | }, 415 | "@types/mime": { 416 | "version": "1.3.2", 417 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 418 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 419 | }, 420 | "@types/node": { 421 | "version": "16.3.3", 422 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.3.tgz", 423 | "integrity": "sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==" 424 | }, 425 | "@types/qs": { 426 | "version": "6.9.7", 427 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 428 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 429 | }, 430 | "@types/range-parser": { 431 | "version": "1.2.4", 432 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 433 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 434 | }, 435 | "@types/serve-static": { 436 | "version": "1.13.10", 437 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 438 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 439 | "requires": { 440 | "@types/mime": "^1", 441 | "@types/node": "*" 442 | } 443 | }, 444 | "asap": { 445 | "version": "2.0.6", 446 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 447 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 448 | }, 449 | "commander": { 450 | "version": "2.3.0", 451 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", 452 | "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", 453 | "dev": true 454 | }, 455 | "debug": { 456 | "version": "4.3.1", 457 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 458 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 459 | "dev": true, 460 | "requires": { 461 | "ms": "2.1.2" 462 | }, 463 | "dependencies": { 464 | "ms": { 465 | "version": "2.1.2", 466 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 467 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 468 | "dev": true 469 | } 470 | } 471 | }, 472 | "diff": { 473 | "version": "1.4.0", 474 | "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", 475 | "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", 476 | "dev": true 477 | }, 478 | "escape-string-regexp": { 479 | "version": "1.0.2", 480 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", 481 | "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", 482 | "dev": true 483 | }, 484 | "glob": { 485 | "version": "3.2.11", 486 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 487 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", 488 | "dev": true, 489 | "requires": { 490 | "inherits": "2", 491 | "minimatch": "0.3" 492 | } 493 | }, 494 | "growl": { 495 | "version": "1.9.2", 496 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 497 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 498 | "dev": true 499 | }, 500 | "inherits": { 501 | "version": "2.0.4", 502 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 503 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 504 | "dev": true 505 | }, 506 | "jade": { 507 | "version": "0.26.3", 508 | "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", 509 | "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", 510 | "dev": true, 511 | "requires": { 512 | "commander": "0.6.1", 513 | "mkdirp": "0.3.0" 514 | }, 515 | "dependencies": { 516 | "commander": { 517 | "version": "0.6.1", 518 | "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", 519 | "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", 520 | "dev": true 521 | }, 522 | "mkdirp": { 523 | "version": "0.3.0", 524 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", 525 | "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", 526 | "dev": true 527 | } 528 | } 529 | }, 530 | "json-stringify-safe": { 531 | "version": "5.0.1", 532 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 533 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 534 | "dev": true 535 | }, 536 | "lodash.set": { 537 | "version": "4.3.2", 538 | "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", 539 | "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", 540 | "dev": true 541 | }, 542 | "lru-cache": { 543 | "version": "2.7.3", 544 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 545 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 546 | "dev": true 547 | }, 548 | "minimatch": { 549 | "version": "0.3.0", 550 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 551 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", 552 | "dev": true, 553 | "requires": { 554 | "lru-cache": "2", 555 | "sigmund": "~1.0.0" 556 | } 557 | }, 558 | "minimist": { 559 | "version": "0.0.8", 560 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 561 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 562 | "dev": true 563 | }, 564 | "mkdirp": { 565 | "version": "0.5.1", 566 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 567 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 568 | "dev": true, 569 | "requires": { 570 | "minimist": "0.0.8" 571 | } 572 | }, 573 | "mocha": { 574 | "version": "2.5.3", 575 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", 576 | "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", 577 | "dev": true, 578 | "requires": { 579 | "commander": "2.3.0", 580 | "debug": "2.2.0", 581 | "diff": "1.4.0", 582 | "escape-string-regexp": "1.0.2", 583 | "glob": "3.2.11", 584 | "growl": "1.9.2", 585 | "jade": "0.26.3", 586 | "mkdirp": "0.5.1", 587 | "supports-color": "1.2.0", 588 | "to-iso-string": "0.0.2" 589 | }, 590 | "dependencies": { 591 | "debug": { 592 | "version": "2.2.0", 593 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 594 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 595 | "dev": true, 596 | "requires": { 597 | "ms": "0.7.1" 598 | } 599 | } 600 | } 601 | }, 602 | "ms": { 603 | "version": "0.7.1", 604 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 605 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 606 | "dev": true 607 | }, 608 | "nock": { 609 | "version": "13.2.4", 610 | "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz", 611 | "integrity": "sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug==", 612 | "dev": true, 613 | "requires": { 614 | "debug": "^4.1.0", 615 | "json-stringify-safe": "^5.0.1", 616 | "lodash.set": "^4.3.2", 617 | "propagate": "^2.0.0" 618 | } 619 | }, 620 | "promise": { 621 | "version": "7.3.1", 622 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 623 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 624 | "requires": { 625 | "asap": "~2.0.3" 626 | } 627 | }, 628 | "propagate": { 629 | "version": "2.0.1", 630 | "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", 631 | "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", 632 | "dev": true 633 | }, 634 | "sigmund": { 635 | "version": "1.0.1", 636 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 637 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 638 | "dev": true 639 | }, 640 | "stacktrace-parser": { 641 | "version": "0.1.10", 642 | "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", 643 | "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", 644 | "requires": { 645 | "type-fest": "^0.7.1" 646 | } 647 | }, 648 | "supports-color": { 649 | "version": "1.2.0", 650 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", 651 | "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", 652 | "dev": true 653 | }, 654 | "to-iso-string": { 655 | "version": "0.0.2", 656 | "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", 657 | "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", 658 | "dev": true 659 | }, 660 | "type-fest": { 661 | "version": "0.7.1", 662 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", 663 | "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" 664 | } 665 | } 666 | } 667 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "honeybadger-lambda-node", 3 | "version": "0.0.1", 4 | "description": "A Node template for AWS Lamda which reports errors to Honeybadger.io", 5 | "main": "lambda.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "dependencies": { 10 | "@honeybadger-io/js": "^3.2.9", 11 | "promise": "^7.1.1" 12 | }, 13 | "devDependencies": { 14 | "mocha": "^2.4.5", 15 | "nock": "^13.2.4" 16 | }, 17 | "scripts": { 18 | "test": "mocha" 19 | }, 20 | "keywords": [], 21 | "author": "josh@honeybadger.io", 22 | "license": "MIT" 23 | } 24 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | var assert = require("assert"); 2 | var nock = require("nock"); 3 | 4 | var index = require("../index"); 5 | var sampleEvent = require("./sample_event.json"); 6 | 7 | describe("logplex", function() { 8 | describe("#handler()", function() { 9 | it("should notify Honeybadger of exceptions", function(done) { 10 | var api = nock("https://api.honeybadger.io") 11 | .post("/v1/notices/js") 12 | .reply(201, '{"id":"1a327bf6-e17a-40c1-ad79-404ea1489c7a"}'); 13 | 14 | index.handler(sampleEvent, {}, function(err) { 15 | api.done(); 16 | done(); 17 | }); 18 | }); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /test/sample_event.json: -------------------------------------------------------------------------------- 1 | {} 2 | --------------------------------------------------------------------------------