@rxap/nest-sentry 9.0.3-dev.2 → 9.0.3-dev.4
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 +22 -0
- package/package.json +1 -1
- package/src/lib/sentry.interceptor.d.ts +2 -2
- package/src/lib/sentry.interceptor.js +3 -0
- package/src/lib/sentry.interceptor.js.map +1 -1
- package/src/lib/sentry.logger.d.ts +6 -4
- package/src/lib/sentry.logger.js +87 -11
- package/src/lib/sentry.logger.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
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.4](https://gitlab.com/rxap/nest/compare/@rxap/nest-sentry@9.0.3-dev.3...@rxap/nest-sentry@9.0.3-dev.4) (2023-04-04)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **interceptor:** allow exceptions to inject additionally scopes ([0fd500b](https://gitlab.com/rxap/nest/commit/0fd500ba1eaea4b5d0bcefdb6679be596476331f))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [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)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **logger:** mirror the ConsoleLogger implementation ([4ce7f2a](https://gitlab.com/rxap/nest/commit/4ce7f2a144d1e1ab3f0b3e6f858c928cc0482587))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
## [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
29
|
|
|
8
30
|
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CallHandler, ExecutionContext,
|
|
1
|
+
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
2
|
import { Scope } from '@sentry/core';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { SentryInterceptorOptions } from './sentry.interfaces';
|
|
@@ -7,7 +7,7 @@ export declare class SentryInterceptor implements NestInterceptor {
|
|
|
7
7
|
protected readonly client: SentryService;
|
|
8
8
|
protected readonly options?: SentryInterceptorOptions;
|
|
9
9
|
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
10
|
-
protected captureException(context: ExecutionContext, scope: Scope, exception:
|
|
10
|
+
protected captureException(context: ExecutionContext, scope: Scope, exception: unknown): void;
|
|
11
11
|
private captureHttpException;
|
|
12
12
|
private captureRpcException;
|
|
13
13
|
private captureWsException;
|
|
@@ -24,6 +24,9 @@ let SentryInterceptor = class SentryInterceptor {
|
|
|
24
24
|
return next.handle();
|
|
25
25
|
}
|
|
26
26
|
captureException(context, scope, exception) {
|
|
27
|
+
if (exception && typeof exception === 'object' && typeof exception['setScope'] === 'function') {
|
|
28
|
+
exception['setScope'](scope);
|
|
29
|
+
}
|
|
27
30
|
switch (context.getType()) {
|
|
28
31
|
case 'http':
|
|
29
32
|
return this.captureHttpException(scope, context.switchToHttp(), exception);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.interceptor.js","sourceRoot":"","sources":["../../../../../libs/sentry/src/lib/sentry.interceptor.ts"],"names":[],"mappings":";;;;AAAA,2CAQwB;AAGxB,uCAAqD;AAErD,8CAAqC;AAGrC,qDAAiD;AACjD,qCAAsD;AAI/C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAS5B,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC3B,wDAAwD;YACxD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,eAAG,EAAC;gBACF,KAAK,EAAE,CAAC,SAAwB,EAAE,EAAE;oBAClC,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;wBAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;4BACzC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;wBAC1D,CAAC,CAAC,CAAC;qBACJ;gBACH,CAAC;aACF,CAAC,CACH,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAES,gBAAgB,CAAC,OAAyB,EAAE,KAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"sentry.interceptor.js","sourceRoot":"","sources":["../../../../../libs/sentry/src/lib/sentry.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
9
|
-
error(message: string,
|
|
10
|
-
warn(message: string,
|
|
11
|
-
debug(message: string,
|
|
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
|
}
|
package/src/lib/sentry.logger.js
CHANGED
|
@@ -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,
|
|
15
|
-
|
|
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,
|
|
40
|
-
|
|
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, {
|
|
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,
|
|
55
|
-
|
|
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, {
|
|
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,
|
|
78
|
-
|
|
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, {
|
|
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":";;;;AAAA,2CAAmE;AACnE,uCAAuC;AAEvC,qCAAyE;
|
|
1
|
+
{"version":3,"file":"sentry.logger.js","sourceRoot":"","sources":["../../../../../libs/sentry/src/lib/sentry.logger.ts"],"names":[],"mappings":"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"}
|