diff --git a/types/honeybadger/honeybadger-tests.ts b/types/honeybadger/honeybadger-tests.ts new file mode 100644 index 0000000000..d5f18cfe9e --- /dev/null +++ b/types/honeybadger/honeybadger-tests.ts @@ -0,0 +1,38 @@ +import Honeybadger = require("honeybadger"); + +Honeybadger.configure({ + apiKey: "abcdef" +}); + +const err = Error("error"); + +Honeybadger.notify(err, function notifyCallback(err: Error, notice: any) { + if (err) console.error(err); + console.log(notice); +}); + +Honeybadger.setContext({ + user_id: 123 +}); + +Honeybadger.resetContext(); + +Honeybadger.resetContext({ + user_id: 123 +}); + +const other_hb = Honeybadger.factory({apiKey: "zxcvbnm"}); +other_hb.notify("This will go to an alternate project."); + +Honeybadger.onUncaughtException(err => { + console.log(err); +}); + +function handler(event: any, context: any) { + console.log('Event:', event); + console.log('Context:', context); + throw(new Error('Something went wrong.')); + console.log("Shouldn't make it here."); +} + +exports.handler = Honeybadger.lambdaHandler(handler); diff --git a/types/honeybadger/index.d.ts b/types/honeybadger/index.d.ts new file mode 100644 index 0000000000..eb218b7e99 --- /dev/null +++ b/types/honeybadger/index.d.ts @@ -0,0 +1,49 @@ +// Type definitions for honeybadger 1.3 +// Project: https://github.com/honeybadger-io/honeybadger-node +// Definitions by: Ryan Skrzypek +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.9 + +import { RequestHandler, ErrorRequestHandler } from "express"; +import { EventEmitter } from "events"; + +declare namespace honeybadger { + interface ConfigureOptions { + apiKey: string; + endpoint?: string; + hostname?: string; + environment?: string; + projectRoot?: string; + logger?: Console; + developmentEnvironment?: ReadonlyArray; + filters?: ReadonlyArray; + } + interface metadata { + name?: string; + message?: string; + context?: object; + session?: object; + headers?: object; + params?: object; + cgiData?: object; + url?: string; + component?: string; + action?: string; + fingerprint?: string; + } + type CallbackFunction = (err: Error | null, notice: object | null) => void; + type LambdaHandler = (event: object, context: object) => void; + interface HoneyBadgerInstance extends EventEmitter { + configure: (options: ConfigureOptions) => void; + notify: (err?: any, name?: any, extra?: CallbackFunction | metadata, callback?: CallbackFunction) => void; + setContext: (context: object) => void; + resetContext: (context?: object) => void; + factory: (options?: ConfigureOptions) => HoneyBadgerInstance; + errorHandler: ErrorRequestHandler; + requestHandler: RequestHandler; + lambdaHandler: (handler: LambdaHandler) => LambdaHandler; + onUncaughtException: (func: (error: Error) => void) => void; + } +} +declare const honeybadger: honeybadger.HoneyBadgerInstance; +export = honeybadger; diff --git a/types/honeybadger/tsconfig.json b/types/honeybadger/tsconfig.json new file mode 100644 index 0000000000..1349f86614 --- /dev/null +++ b/types/honeybadger/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "honeybadger-tests.ts" + ] +} \ No newline at end of file diff --git a/types/honeybadger/tslint.json b/types/honeybadger/tslint.json new file mode 100644 index 0000000000..d1261eaec4 --- /dev/null +++ b/types/honeybadger/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} \ No newline at end of file