@leaflink/snitch 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ import logger, { ConsoleTransport } from '../index.js';
2
+ describe('console transport', () => {
3
+ beforeAll(() => {
4
+ logger.addTransport(new ConsoleTransport());
5
+ });
6
+ afterAll(() => {
7
+ logger.clearTransports();
8
+ });
9
+ it('should log error to console', () => {
10
+ const customErr = 'custom error';
11
+ const errorSpy = vi.spyOn(console, 'error');
12
+ logger.error(customErr);
13
+ expect(errorSpy).toHaveBeenCalledWith(customErr, '');
14
+ errorSpy.mockClear();
15
+ const customMeta = { meta: { extra: 'something' } };
16
+ logger.error(customErr, customMeta);
17
+ expect(errorSpy).toHaveBeenCalledWith(customErr, customMeta);
18
+ });
19
+ it('should log debug to console', () => {
20
+ const customMsg = 'custom debug';
21
+ const debugSpy = vi.spyOn(console, 'debug');
22
+ logger['debug'](customMsg);
23
+ expect(debugSpy).toHaveBeenCalledWith(customMsg, '');
24
+ debugSpy.mockClear();
25
+ const customMeta = { meta: { extra: 'something' } };
26
+ logger['debug'](customMsg, customMeta);
27
+ expect(debugSpy).toHaveBeenCalledWith(customMsg, customMeta);
28
+ });
29
+ it('should log warn to console', () => {
30
+ const customWarn = 'custom warn';
31
+ const debugSpy = vi.spyOn(console, 'warn');
32
+ logger.warn(customWarn);
33
+ expect(debugSpy).toHaveBeenCalledWith(customWarn, '');
34
+ debugSpy.mockClear();
35
+ const customMeta = { meta: { extra: 'something' } };
36
+ logger.warn(customWarn, customMeta);
37
+ expect(debugSpy).toHaveBeenCalledWith(customWarn, customMeta);
38
+ });
39
+ it('should log to console', () => {
40
+ const customMsg = 'custom log';
41
+ const logSpy = vi.spyOn(console, 'log');
42
+ logger.log(customMsg);
43
+ expect(logSpy).toHaveBeenCalledWith(customMsg, '');
44
+ logSpy.mockClear();
45
+ const customMeta = { meta: { extra: 'something' } };
46
+ logger.log(customMsg, customMeta);
47
+ expect(logSpy).toHaveBeenCalledWith(customMsg, customMeta);
48
+ });
49
+ });
50
+ //# sourceMappingURL=console.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.spec.js","sourceRoot":"","sources":["../../src/transports/console.spec.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,24 @@
1
+ function isEmpty(obj) {
2
+ if (obj === null || obj === undefined || !obj) {
3
+ return true;
4
+ }
5
+ for (const prop in obj) {
6
+ if (Object.hasOwn(obj, prop)) {
7
+ return false;
8
+ }
9
+ }
10
+ return true;
11
+ }
12
+ /**
13
+ * Wraps the meta object to avoid our custom meta properties mixing with datadog's built-in properties.
14
+ *
15
+ * @param meta - The meta object to wrap.
16
+ * @returns The wrapped meta object.
17
+ */
18
+ function wrapMeta(meta) {
19
+ // using `extra` just to match what Sentry does
20
+ return isEmpty(meta) ? {} : { extra: meta };
21
+ }
1
22
  export class DatadogTransport {
2
23
  level;
3
24
  log;
@@ -7,18 +28,18 @@ export class DatadogTransport {
7
28
  // LogLevel maps directly to datadogLogsInstance logger methods
8
29
  if (message instanceof Error) {
9
30
  // Datadog logger has an optional third error param for exception handling
10
- opts.datadogLogsInstance.logger[level](message.message, meta, message);
31
+ opts.datadogLogsInstance.logger[level](message.message, wrapMeta(meta), message);
11
32
  }
12
33
  else if (typeof message === 'string' && meta instanceof Error) {
13
34
  opts.datadogLogsInstance.logger[level](message, {}, meta);
14
35
  }
15
36
  else if (typeof message === 'string') {
16
- opts.datadogLogsInstance.logger[level](message, meta);
37
+ opts.datadogLogsInstance.logger[level](message, wrapMeta(meta));
17
38
  }
18
39
  else {
19
40
  // Datadog requires a string for the message param. Our downstream usage currently provides
20
41
  // either a string or an Error, but for future-proofing this just stringify the unknown object as message.
21
- opts.datadogLogsInstance.logger[level](JSON.stringify(message), meta);
42
+ opts.datadogLogsInstance.logger[level](JSON.stringify(message), wrapMeta(meta));
22
43
  }
23
44
  };
24
45
  }
@@ -30,13 +51,21 @@ export class ReactNativeDatadogTransport {
30
51
  this.level = opts.level || 'info';
31
52
  this.log = (message, meta = {}, level) => {
32
53
  if (message instanceof Error) {
33
- opts.datadogLogsInstance[level](message.message, message.name, message.message, message.stack);
54
+ opts.datadogLogsInstance[level](message.message, message.name, message.message, message.stack, wrapMeta(meta));
34
55
  }
35
56
  else if (typeof message === 'string') {
36
- opts.datadogLogsInstance[level](message, meta);
57
+ if (meta instanceof Error) {
58
+ opts.datadogLogsInstance[level](message, meta.name, meta.message, meta.stack);
59
+ }
60
+ else if (typeof meta === 'object') {
61
+ opts.datadogLogsInstance[level](message, wrapMeta(meta));
62
+ }
63
+ else {
64
+ opts.datadogLogsInstance[level](message, wrapMeta(meta));
65
+ }
37
66
  }
38
67
  else {
39
- opts.datadogLogsInstance[level](JSON.stringify(message), meta);
68
+ opts.datadogLogsInstance[level](JSON.stringify(message), wrapMeta(meta));
40
69
  }
41
70
  };
42
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"datadog.js","sourceRoot":"","sources":["../../src/transports/datadog.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAW;IAChB,GAAG,CAAc;IAEjB,YAAY,IAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;QAClC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,+DAA+D;YAC/D,IAAI,OAAO,YAAY,KAAK,EAAE;gBAC5B,0EAA0E;gBAC1E,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAc,EAAE,OAAO,CAAC,CAAC;aAClF;iBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,YAAY,KAAK,EAAE;gBAC/D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;aAC3D;iBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAc,CAAC,CAAC;aACjE;iBAAM;gBACL,2FAA2F;gBAC3F,0GAA0G;gBAC1G,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAc,CAAC,CAAC;aACjF;QACH,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IACtC,KAAK,CAAW;IAChB,GAAG,CAAc;IAEjB,YAAY,IAAwC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;QAClC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,OAAO,YAAY,KAAK,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;aAChG;iBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAc,CAAC,CAAC;aAC1D;iBAAM;gBACL,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAc,CAAC,CAAC;aAC1E;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"datadog.js","sourceRoot":"","sources":["../../src/transports/datadog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,103 @@
1
+ import logger, { DatadogTransport, ReactNativeDatadogTransport } from '../index.js';
2
+ const DdInstance = {
3
+ logger: {
4
+ error: vi.fn(),
5
+ warn: vi.fn(),
6
+ info: vi.fn(),
7
+ debug: vi.fn(),
8
+ },
9
+ };
10
+ describe('datadog web transport', () => {
11
+ beforeAll(() => {
12
+ logger.addTransport(new DatadogTransport({ datadogLogsInstance: DdInstance, level: 'debug' }));
13
+ });
14
+ afterEach(() => {
15
+ Object.values(DdInstance.logger).forEach((level) => level.mockClear());
16
+ });
17
+ afterAll(() => {
18
+ logger.clearTransports();
19
+ });
20
+ it.each(['info', 'warn', 'debug', 'error'])('should log %s to dd', (level) => {
21
+ const customErr = 'custom error';
22
+ logger[level](customErr);
23
+ expect(DdInstance.logger[level]).toHaveBeenCalledWith(customErr, {});
24
+ });
25
+ it('should log error instance correctly as first arg', () => {
26
+ const customErr = Error('ERR');
27
+ logger.error(customErr);
28
+ expect(DdInstance.logger.error).toHaveBeenCalledWith(customErr.message, {}, customErr);
29
+ });
30
+ it('should log error instance correctly as first arg with meta', () => {
31
+ const customErr = Error('ERR');
32
+ const customMeta = { foo: 'bar' };
33
+ logger.error(customErr, customMeta);
34
+ expect(DdInstance.logger.error).toHaveBeenCalledWith(customErr.message, { extra: customMeta }, customErr);
35
+ });
36
+ it('should log correctly with string as first arg and error isntance as second', () => {
37
+ const customMsg = 'message';
38
+ const customErr = Error('ERR');
39
+ logger.error(customMsg, customErr);
40
+ expect(DdInstance.logger.error).toHaveBeenCalledWith(customMsg, {}, customErr);
41
+ });
42
+ it('should log correctly when first arg is a string and no second arg is passed', () => {
43
+ const customMsg = 'message';
44
+ logger.error(customMsg);
45
+ expect(DdInstance.logger.error).toHaveBeenCalledWith(customMsg, {});
46
+ });
47
+ it('should log correctly when first arg is not a string', () => {
48
+ const customArg = [1, 2, 3];
49
+ logger.error(customArg);
50
+ expect(DdInstance.logger.error).toHaveBeenCalledWith('[' + customArg.join(',') + ']', {});
51
+ });
52
+ });
53
+ const rnDdInstance = {
54
+ error: vi.fn(),
55
+ info: vi.fn(),
56
+ debug: vi.fn(),
57
+ warn: vi.fn(),
58
+ };
59
+ describe('datadog react native transport', () => {
60
+ beforeAll(() => {
61
+ logger.addTransport(new ReactNativeDatadogTransport({ datadogLogsInstance: rnDdInstance, level: 'debug' }));
62
+ });
63
+ afterEach(() => {
64
+ Object.values(rnDdInstance).forEach((level) => level.mockClear());
65
+ });
66
+ afterAll(() => {
67
+ logger.clearTransports();
68
+ });
69
+ it.each `
70
+ meta | expected
71
+ ${undefined} | ${{}}
72
+ `('should log error correctly if first argument is an Error', ({ meta, expected }) => {
73
+ const customError = Error('custom err');
74
+ logger.error(customError, meta);
75
+ expect(rnDdInstance.error).toHaveBeenCalledWith(customError.message, customError.name, customError.message, customError.stack, expected);
76
+ });
77
+ it('should log error correctly if first argument is not an Error nor string', () => {
78
+ const customMeta = 'string meta';
79
+ logger.error([1, 2], 'string meta');
80
+ expect(rnDdInstance.error).toHaveBeenCalledWith('[1,2]', { extra: customMeta });
81
+ });
82
+ describe('when message is a string', () => {
83
+ it('should log an error correctly when meta is an Error', () => {
84
+ const customMessage = 'my message';
85
+ const customError = Error('custom error');
86
+ logger.error(customMessage, customError);
87
+ expect(rnDdInstance.error).toHaveBeenCalledWith(customMessage, customError.name, customError.message, customError.stack);
88
+ });
89
+ it('should log an error message correctly when meta is an object', () => {
90
+ const customMessage = 'custom msg';
91
+ const customMeta = { foo: 'bar' };
92
+ logger.error(customMessage, customMeta);
93
+ expect(rnDdInstance.error).toHaveBeenCalledWith(customMessage, { extra: customMeta });
94
+ });
95
+ it('should log a message correctly when meta is not an object', () => {
96
+ const customMessage = 'custom msg';
97
+ const customMeta = 'string';
98
+ logger.error(customMessage, customMeta);
99
+ expect(rnDdInstance.error).toHaveBeenCalledWith(customMessage, { extra: customMeta });
100
+ });
101
+ });
102
+ });
103
+ //# sourceMappingURL=datadog.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datadog.spec.js","sourceRoot":"","sources":["../../src/transports/datadog.spec.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,14 @@ export class SentryTransport {
41
41
  return;
42
42
  }
43
43
  if (typeof message === 'string') {
44
- opts.sentryInstance.captureMessage(message, meta);
44
+ if (meta instanceof Error) {
45
+ const originalMessage = meta.message;
46
+ meta.message = message;
47
+ opts.sentryInstance.captureException(meta, { extra: { originalMessage } });
48
+ }
49
+ else {
50
+ opts.sentryInstance.captureMessage(message, meta);
51
+ }
45
52
  }
46
53
  else if (message instanceof Error) {
47
54
  opts.sentryInstance.captureException(message, meta);
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../src/transports/sentry.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG;IAC1B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,OAAO;CACf,CAAC;AAmBF,MAAM,OAAO,eAAe;IAC1B,KAAK,CAAW;IAChB,GAAG,CAAc;IAEjB,YAAY,IAA4B;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACrC,kEAAkE;YAClE,iGAAiG;YACjG,4FAA4F;YAC5F,8FAA8F;YAC9F,IACE,IAAI;gBACJ,OAAO,IAAI,KAAK,QAAQ;gBACxB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACpB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,EAChD;gBACA,6DAA6D;gBAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAI,IAAmB,IAAI,EAAE,CAAC;gBACtG,MAAM,WAAW,GAAG;oBAClB,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,GAAG,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAC;gBACF,MAAM,UAAU,GAAG;oBACjB,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC;oBACpC,KAAK,EAAE,WAAW;oBAClB,IAAI;oBACJ,QAAQ;oBACR,IAAI;oBACJ,WAAW;iBACZ,CAAC;gBAEF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBACzD;qBAAM,IAAI,OAAO,YAAY,KAAK,EAAE;oBACnC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBAC3D;gBACD,OAAO;aACR;YAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACnD;iBAAM,IAAI,OAAO,YAAY,KAAK,EAAE;gBACnC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACrD;iBAAM,IAAI,IAAI,YAAY,KAAK,EAAE;gBAChC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAClD;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;aACnE;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../src/transports/sentry.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG;IAC1B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,OAAO;CACf,CAAC;AAmBF,MAAM,OAAO,eAAe;IAC1B,KAAK,CAAW;IAChB,GAAG,CAAc;IAEjB,YAAY,IAA4B;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACrC,kEAAkE;YAClE,iGAAiG;YACjG,4FAA4F;YAC5F,8FAA8F;YAC9F,IACE,IAAI;gBACJ,OAAO,IAAI,KAAK,QAAQ;gBACxB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACpB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,EAChD;gBACA,6DAA6D;gBAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAI,IAAmB,IAAI,EAAE,CAAC;gBACtG,MAAM,WAAW,GAAG;oBAClB,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,GAAG,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAC;gBACF,MAAM,UAAU,GAAG;oBACjB,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC;oBACpC,KAAK,EAAE,WAAW;oBAClB,IAAI;oBACJ,QAAQ;oBACR,IAAI;oBACJ,WAAW;iBACZ,CAAC;gBAEF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBACzD;qBAAM,IAAI,OAAO,YAAY,KAAK,EAAE;oBACnC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBAC3D;gBACD,OAAO;aACR;YAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,IAAI,IAAI,YAAY,KAAK,EAAE;oBACzB,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;oBACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;iBAC5E;qBAAM;oBACL,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACnD;aACF;iBAAM,IAAI,OAAO,YAAY,KAAK,EAAE;gBACnC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACrD;iBAAM,IAAI,IAAI,YAAY,KAAK,EAAE;gBAChC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAClD;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;aACnE;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,73 @@
1
+ import logger, { SentryTransport } from '../index.js';
2
+ const sentryInstance = {
3
+ captureMessage: vi.fn(),
4
+ captureException: vi.fn(),
5
+ };
6
+ describe('sentry transport', () => {
7
+ beforeAll(() => {
8
+ logger.addTransport(new SentryTransport({ sentryInstance }));
9
+ });
10
+ afterEach(() => {
11
+ Object.values(sentryInstance).forEach((val) => val.mockClear());
12
+ });
13
+ afterAll(() => {
14
+ logger.clearTransports();
15
+ });
16
+ it.each([undefined, 'meta'])('should capture message when first arg is a string', (meta) => {
17
+ const customMsg = 'message';
18
+ logger.error(customMsg, meta);
19
+ expect(sentryInstance.captureMessage).toHaveBeenCalledWith(customMsg, meta);
20
+ expect(sentryInstance.captureException).not.toHaveBeenCalled();
21
+ });
22
+ it.each([undefined, 'meta'])('should capture exception when first arg is an Error', (meta) => {
23
+ const customMsg = 'msg';
24
+ const customErr = Error(customMsg);
25
+ logger.error(customErr, meta);
26
+ expect(sentryInstance.captureException).toHaveBeenCalledWith(customErr, meta);
27
+ expect(sentryInstance.captureMessage).not.toHaveBeenCalled();
28
+ });
29
+ it.each([null, [], () => { }])('should capture exception when second arg is an Error', (message) => {
30
+ const customErr = Error('err');
31
+ logger.error(message, customErr);
32
+ expect(sentryInstance.captureException).toHaveBeenCalledWith(customErr, customErr);
33
+ expect(sentryInstance.captureMessage).not.toHaveBeenCalled();
34
+ });
35
+ it('should capture message when args fall into catch all', () => {
36
+ logger.error([], []);
37
+ expect(sentryInstance.captureMessage).toHaveBeenCalledWith('[]', []);
38
+ expect(sentryInstance.captureException).not.toHaveBeenCalled();
39
+ });
40
+ it('should capture message when first arg is string and second arg is properly filled', () => {
41
+ const customMessage = 'Something happened';
42
+ const customMeta = {
43
+ tags: { type: 'buyer' },
44
+ extra: { filters: { id: 1 } },
45
+ contexts: { order: { id: 2 } },
46
+ };
47
+ logger.error(customMessage, customMeta);
48
+ expect(sentryInstance.captureMessage).toHaveBeenCalledWith(customMessage, expect.objectContaining(customMeta));
49
+ expect(sentryInstance.captureException).not.toHaveBeenCalled();
50
+ });
51
+ it('should capture exception when first arg is an Error and second arg is properly filled', () => {
52
+ const customErr = Error('Something happened');
53
+ const customMeta = {
54
+ tags: { type: 'buyer' },
55
+ extra: { filters: { id: 1 } },
56
+ contexts: { order: { id: 2 } },
57
+ };
58
+ logger.error(customErr, customMeta);
59
+ expect(sentryInstance.captureException).toHaveBeenCalledWith(customErr, expect.objectContaining(customMeta));
60
+ expect(sentryInstance.captureMessage).not.toHaveBeenCalled();
61
+ });
62
+ it('should capture an exception with custom message when first arg is a string but second is an Error', () => {
63
+ const customMessage = 'My custom message';
64
+ const customErrorMessage = 'My custom error';
65
+ const customError = Error(customErrorMessage);
66
+ expect(customError.message).toBe(customErrorMessage);
67
+ logger.error(customMessage, customError);
68
+ expect(customError.message).toBe(customMessage);
69
+ expect(sentryInstance.captureException).toHaveBeenCalledWith(customError, expect.objectContaining({ extra: { originalMessage: customErrorMessage } }));
70
+ expect(sentryInstance.captureMessage).not.toHaveBeenCalled();
71
+ });
72
+ });
73
+ //# sourceMappingURL=sentry.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.spec.js","sourceRoot":"","sources":["../../src/transports/sentry.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaflink/snitch",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Front end logging inspired by winston.",
5
5
  "type": "module",
6
6
  "exports": {