8000 ref(angular): Extract zonejs error unwrapper into a dedicated functio… · jonator/sentry-javascript@93eac4e · GitHub
[go: up one dir, main page]

Skip to content

Commit 93eac4e

Browse files
authored
ref(angular): Extract zonejs error unwrapper into a dedicated function (getsentry#6443)
1 parent 329836d commit 93eac4e

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

packages/angular/src/errorhandler.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@ export interface ErrorHandlerOptions {
2121
extractor?(error: unknown, defaultExtractor: (error: unknown) => unknown): unknown;
2222
}
2323

24+
// https://github.com/angular/angular/blob/master/packages/core/src/util/errors.ts
25+
function tryToUnwrapZonejsError(error: unknown): unknown | Error {
26+
// TODO: once Angular14 is the minimum requirement ERROR_ORIGINAL_ERROR and
27+
// getOriginalError from error.ts can be used directly.
28+
return error && (error as { ngOriginalError: Error }).ngOriginalError
29+
? (error as { ngOriginalError: Error }).ngOriginalError
30+
: error;
31+
}
32+
2433
/**
2534
* Implementation of Angular's ErrorHandler provider that can be used as a drop-in replacement for the stock one.
2635
*/
@@ -86,13 +95,7 @@ class SentryErrorHandler implements AngularErrorHandler {
8695
* Default implementation of error extraction that handles default error wrapping, HTTP responses, ErrorEvent and few other known cases.
8796
*/
8897
protected _defaultExtractor(errorCandidate: unknown): unknown {
89-
let error = errorCandidate;
90-
91-
// Try to unwrap zone.js error.
92-
// https://github.com/angular/angular/blob/master/packages/core/src/util/errors.ts
93-
if (error && (error as { ngOriginalError: Error }).ngOriginalError) {
94-
error = (error as { ngOriginalError: Error }).ngOriginalError;
95-
}
98+
const error = tryToUnwrapZonejsError(errorCandidate);
9699

97100
// We can handle messages and Error objects directly.
98101
if (typeof error === 'string' || error instanceof Error) {

0 commit comments

Comments
 (0)
0