Files
RSSHub/lib/middleware/honeybadger.ts
T
Tony 1fe4e8a4ae feat(core): add honeybadger support (#21574)
* feat(core): add honeybadger support

* feat(honeybadger): configure Honeybadger to disable uncaught error tracking

* feat(tests): add info logger mock to app-bootstrap tests

* test: fix mock value

* test: mock honeybadger as well
2026-04-01 01:10:12 +08:00

29 lines
845 B
TypeScript

import Honeybadger from '@honeybadger-io/js';
import type { MiddlewareHandler } from 'hono';
import { config } from '@/config';
import { getRouteNameFromPath } from '@/utils/helpers';
import logger from '@/utils/logger';
if (config.honeybadger.apiKey) {
Honeybadger.configure({
apiKey: config.honeybadger.apiKey,
enableUncaught: false,
});
Honeybadger.setContext({ node_name: config.nodeName });
logger.info('Honeybadger inited.');
}
const middleware: MiddlewareHandler = async (ctx, next) => {
const time = Date.now();
await next();
if (config.honeybadger.apiKey && Date.now() - time >= config.errorTrackingRouteTimeout) {
Honeybadger.notify(new Error('Route Timeout'), {
context: { name: getRouteNameFromPath(ctx.req.path) },
});
}
};
export default middleware;