Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 324e25a

Browse files
author
Michal Vlasák
committed
🐛 Update extendSentry options and types
1 parent 76872b2 commit 324e25a

4 files changed

Lines changed: 13 additions & 16 deletions

File tree

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,6 @@ const loggerFactory = (data: string | CosmasOptions = {}, loggerOptions: CosmasO
195195
return loggerProxy;
196196
};
197197

198-
const factoryProxy = makeCallable(loggerFactory(), loggerFactory);
198+
const factoryProxy: CosmasFactory = makeCallable(loggerFactory(), loggerFactory);
199199

200200
export default factoryProxy;

src/interfaces.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ export interface CosmasOptions {
2222
ignoredHttpMethods?: string[];
2323
config?: LoggerOptions;
2424
pretty?: boolean;
25-
sentry?: string | boolean;
26-
sentryLevel?: pino.LevelWithSilent;
2725
loggerName?: string;
2826
skip?: (req: Request, res?: Response) => boolean;
2927
}

src/sentry.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@ const PINO_TO_SENTRY: { [key: number]: Severity } = {
2323
60: Severity.Critical,
2424
};
2525

26-
export const extendSentry = (logger: Cosmas, dsn: string | true) => {
26+
export const extendSentry = (logger: Cosmas, options: { sentry: string | true; sentryLevel: number }) => {
2727
const sentry = require('@sentry/node');
28-
if (typeof dsn === 'string') {
29-
sentry.init({ dsn });
28+
if (typeof options.sentry === 'string') {
29+
sentry.init({ dsn: options.sentry });
3030
}
3131

3232
const originalWrite = logger[streamSym].write;
3333
// unfortunately, this is the only place in pino, we can hook onto, where we can be sure all
3434
// the hooks, formatters and serializers are already applied
3535
logger[streamSym].write = function (s: string) {
3636
const obj = JSON.parse(s);
37-
if (obj.level >= (logger.options.sentryLevel || levels.warn)) {
37+
if (obj.level >= (options.sentryLevel || levels.warn)) {
3838
withScope((scope) => {
3939
scope.setLevel(PINO_TO_SENTRY[obj.level]);
4040
scope.setExtras(obj);

src/tests/sentry-mocked.test.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import omit = require('omit-deep');
2+
import { CosmasFactory } from '../index';
23
import { levels } from '../levels';
34

4-
let loggerFactory;
5+
let loggerFactory: CosmasFactory;
56
let extendSentry;
67
const scope: any = {};
78
const withScope = jest.fn((fn) =>
@@ -53,9 +54,9 @@ describe('sentry mocked', () => {
5354
});
5455
test('can create logger with options', () => {
5556
expect(() => loggerFactory()).not.toThrowError();
56-
expect(() => extendSentry(loggerFactory, true)).not.toThrowError();
57+
expect(() => extendSentry(loggerFactory, { sentry: true })).not.toThrowError();
5758
expect(init).not.toHaveBeenCalled();
58-
expect(() => extendSentry(loggerFactory, 'dummy')).not.toThrowError();
59+
expect(() => extendSentry(loggerFactory, { sentry: 'dummy' })).not.toThrowError();
5960
expect(init.mock.calls[0]).toMatchInlineSnapshot(`
6061
Array [
6162
Object {
@@ -69,11 +70,11 @@ describe('sentry mocked', () => {
6970
const dateNow = Date.now;
7071
Date.now = jest.fn(() => 1520343036000);
7172
await new Promise((resolve, reject) => {
72-
const logger = loggerFactory({
73+
const logger = loggerFactory();
74+
extendSentry(logger, {
7375
sentry: 'DSN',
7476
sentryLevel: levels.fatal,
7577
});
76-
extendSentry(logger);
7778
captureMessage.mockImplementation(createCapture(resolve));
7879
// expect to trigger only fatal
7980
logger.trace('trace');
@@ -110,10 +111,8 @@ Object {
110111

111112
test('sentry captureException with stack and correct levels', async () => {
112113
await new Promise((resolve, reject) => {
113-
const logger = loggerFactory({
114-
sentry: 'DSN',
115-
});
116-
extendSentry(logger);
114+
const logger = loggerFactory();
115+
extendSentry(logger, { sentry: 'DSN' });
117116
captureException.mockReset();
118117
captureException.mockImplementation(createCapture(resolve));
119118
logger.error(new Error());

0 commit comments

Comments
 (0)