@rxap/nest-sentry 9.0.3-dev.2 → 9.0.3-dev.3

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [9.0.3-dev.3](https://gitlab.com/rxap/nest/compare/@rxap/nest-sentry@9.0.3-dev.2...@rxap/nest-sentry@9.0.3-dev.3) (2023-04-04)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **logger:** mirror the ConsoleLogger implementation ([4ce7f2a](https://gitlab.com/rxap/nest/commit/4ce7f2a144d1e1ab3f0b3e6f858c928cc0482587))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [9.0.3-dev.2](https://gitlab.com/rxap/nest/compare/@rxap/nest-sentry@9.0.3-dev.1...@rxap/nest-sentry@9.0.3-dev.2) (2023-04-04)
7
18
 
8
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rxap/nest-sentry",
3
- "version": "9.0.3-dev.2",
3
+ "version": "9.0.3-dev.3",
4
4
  "type": "commonjs",
5
5
  "schematics": "./collection.json",
6
6
  "ng-update": {
@@ -5,8 +5,10 @@ export declare class SentryLogger extends ConsoleLogger {
5
5
  protected readonly options: ConsoleLoggerOptions;
6
6
  private readonly sentryOptions;
7
7
  constructor(options: ConsoleLoggerOptions, sentryOptions: SentryModuleOptions);
8
- log(message: string, context?: string, asBreadcrumb?: boolean): void;
9
- error(message: string, stack?: string, context?: string): void;
10
- warn(message: string, context?: string, asBreadcrumb?: boolean): void;
11
- debug(message: string, context?: string, asBreadcrumb?: boolean): void;
8
+ log(message: string, ...optionalParams: any[]): void;
9
+ error(message: string, ...optionalParams: any[]): void;
10
+ warn(message: string, ...optionalParams: any[]): void;
11
+ debug(message: string, ...optionalParams: any[]): void;
12
+ private _getContextAndMessagesToPrint;
13
+ private _getContextAndStackAndMessagesToPrint;
12
14
  }
@@ -5,14 +5,25 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("@nestjs/common");
6
6
  const Sentry = require("@sentry/node");
7
7
  const tokens_1 = require("./tokens");
8
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
8
9
  let SentryLogger = class SentryLogger extends common_1.ConsoleLogger {
9
10
  constructor(options, sentryOptions) {
10
11
  super();
11
12
  this.options = options;
12
13
  this.sentryOptions = sentryOptions;
13
14
  }
14
- log(message, context, asBreadcrumb) {
15
- super.log(message, context);
15
+ log(message, ...optionalParams) {
16
+ let asBreadcrumb = false;
17
+ if (optionalParams.length) {
18
+ if (typeof optionalParams[optionalParams.length - 1] === 'boolean') {
19
+ asBreadcrumb = optionalParams.pop();
20
+ }
21
+ }
22
+ const { context } = this._getContextAndMessagesToPrint([
23
+ message,
24
+ ...optionalParams,
25
+ ]);
26
+ super.log(message, ...optionalParams);
16
27
  if (!this.sentryOptions.dsn) {
17
28
  return;
18
29
  }
@@ -30,14 +41,19 @@ let SentryLogger = class SentryLogger extends common_1.ConsoleLogger {
30
41
  }) :
31
42
  Sentry.captureMessage(message, {
32
43
  level: 'log',
44
+ extra: { context },
33
45
  });
34
46
  }
35
47
  catch (err) {
36
48
  console.error('Failed to capture message with sentry: ' + err.message);
37
49
  }
38
50
  }
39
- error(message, stack, context) {
40
- super.error(message, stack, context);
51
+ error(message, ...optionalParams) {
52
+ const { context, stack } = this._getContextAndStackAndMessagesToPrint([
53
+ message,
54
+ ...optionalParams,
55
+ ]);
56
+ super.error(message, ...optionalParams);
41
57
  if (!this.sentryOptions.dsn) {
42
58
  return;
43
59
  }
@@ -45,14 +61,27 @@ let SentryLogger = class SentryLogger extends common_1.ConsoleLogger {
45
61
  return;
46
62
  }
47
63
  try {
48
- Sentry.captureMessage(message, { level: 'error' });
64
+ Sentry.captureMessage(message, {
65
+ level: 'error',
66
+ extra: { context, stack },
67
+ });
49
68
  }
50
69
  catch (err) {
51
70
  console.error('Failed to capture message with sentry: ' + err.message);
52
71
  }
53
72
  }
54
- warn(message, context, asBreadcrumb) {
55
- super.warn(message, context);
73
+ warn(message, ...optionalParams) {
74
+ let asBreadcrumb = false;
75
+ if (optionalParams.length) {
76
+ if (typeof optionalParams[optionalParams.length - 1] === 'boolean') {
77
+ asBreadcrumb = optionalParams.pop();
78
+ }
79
+ }
80
+ const { context } = this._getContextAndMessagesToPrint([
81
+ message,
82
+ ...optionalParams,
83
+ ]);
84
+ super.warn(message, ...optionalParams);
56
85
  if (!this.sentryOptions.dsn) {
57
86
  return;
58
87
  }
@@ -68,14 +97,27 @@ let SentryLogger = class SentryLogger extends common_1.ConsoleLogger {
68
97
  context
69
98
  }
70
99
  }) :
71
- Sentry.captureMessage(message, { level: 'warning' });
100
+ Sentry.captureMessage(message, {
101
+ level: 'warning',
102
+ extra: { context },
103
+ });
72
104
  }
73
105
  catch (err) {
74
106
  console.error('Failed to capture message with sentry: ' + err.message);
75
107
  }
76
108
  }
77
- debug(message, context, asBreadcrumb) {
78
- super.debug(message, context);
109
+ debug(message, ...optionalParams) {
110
+ let asBreadcrumb = false;
111
+ if (optionalParams.length) {
112
+ if (typeof optionalParams[optionalParams.length - 1] === 'boolean') {
113
+ asBreadcrumb = optionalParams.pop();
114
+ }
115
+ }
116
+ const { context } = this._getContextAndMessagesToPrint([
117
+ message,
118
+ ...optionalParams,
119
+ ]);
120
+ super.debug(message, ...optionalParams);
79
121
  if (!this.sentryOptions.dsn) {
80
122
  return;
81
123
  }
@@ -91,12 +133,46 @@ let SentryLogger = class SentryLogger extends common_1.ConsoleLogger {
91
133
  context
92
134
  }
93
135
  }) :
94
- Sentry.captureMessage(message, { level: 'debug' });
136
+ Sentry.captureMessage(message, {
137
+ level: 'debug',
138
+ extra: { context },
139
+ });
95
140
  }
96
141
  catch (err) {
97
142
  console.error('Failed to capture message with sentry: ' + err.message);
98
143
  }
99
144
  }
145
+ _getContextAndMessagesToPrint(args) {
146
+ if ((args === null || args === void 0 ? void 0 : args.length) <= 1) {
147
+ return { messages: args, context: this.context };
148
+ }
149
+ const lastElement = args[args.length - 1];
150
+ const isContext = (0, shared_utils_1.isString)(lastElement);
151
+ if (!isContext) {
152
+ return { messages: args, context: this.context };
153
+ }
154
+ return {
155
+ context: lastElement,
156
+ messages: args.slice(0, args.length - 1),
157
+ };
158
+ }
159
+ _getContextAndStackAndMessagesToPrint(args) {
160
+ const { messages, context } = this._getContextAndMessagesToPrint(args);
161
+ if ((messages === null || messages === void 0 ? void 0 : messages.length) <= 1) {
162
+ return { messages, context };
163
+ }
164
+ const lastElement = messages[messages.length - 1];
165
+ const isStack = (0, shared_utils_1.isString)(lastElement);
166
+ // https://github.com/nestjs/nest/issues/11074#issuecomment-1421680060
167
+ if (!isStack && !(0, shared_utils_1.isUndefined)(lastElement)) {
168
+ return { messages, context };
169
+ }
170
+ return {
171
+ stack: lastElement,
172
+ messages: messages.slice(0, messages.length - 1),
173
+ context,
174
+ };
175
+ }
100
176
  };
101
177
  SentryLogger = tslib_1.__decorate([
102
178
  (0, common_1.Injectable)(),
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.logger.js","sourceRoot":"","sources":["../../../../../libs/sentry/src/lib/sentry.logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sentry.logger.js","sourceRoot":"","sources":["../../../../../libs/sentry/src/lib/sentry.logger.ts"],"names":[],"mappings":"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"}