1
1
import { channel , client } from '@vitest/browser/client'
2
2
3
- function on ( event , listener ) {
4
- window . addEventListener ( event , listener )
5
- return ( ) => window . removeEventListener ( event , listener )
6
- }
7
-
8
3
function serializeError ( unhandledError ) {
9
4
if ( typeof unhandledError !== 'object' || ! unhandledError ) {
10
5
return {
@@ -19,41 +14,40 @@ function serializeError(unhandledError) {
19
14
}
20
15
}
21
16
22
- function catchWindowErrors ( cb ) {
17
+ function catchWindowErrors ( errorEvent , prop , cb ) {
23
18
let userErrorListenerCount = 0
24
19
function throwUnhandlerError ( e ) {
25
- if ( userErrorListenerCount === 0 && e . error != null ) {
20
+ if ( userErrorListenerCount === 0 && e [ prop ] != null ) {
26
21
cb ( e )
27
22
}
28
23
else {
29
- console . error ( e . error )
24
+ console . error ( e [ prop ] )
30
25
}
31
26
}
32
27
const addEventListener = window . addEventListener . bind ( window )
33
28
const removeEventListener = window . removeEventListener . bind ( window )
34
- window . addEventListener ( 'error' , throwUnhandlerError )
29
+ window . addEventListener ( errorEvent , throwUnhandlerError )
35
30
window . addEventListener = function ( ...args ) {
36
- if ( args [ 0 ] === 'error' ) {
31
+ if ( args [ 0 ] === errorEvent ) {
37
32
userErrorListenerCount ++
38
33
}
39
34
return addEventListener . apply ( this , args )
40
35
}
41
36
window . removeEventListener = function ( ...args ) {
42
- if ( args [ 0 ] === 'error' && userErrorListenerCount ) {
37
+ if ( args [ 0 ] === errorEvent && userErrorListenerCount ) {
43
38
userErrorListenerCount --
44
39
}
45
40
return removeEventListener . apply ( this , args )
46
41
}
47
42
return function clearErrorHandlers ( ) {
48
- window . removeEventListener ( 'error' , throwUnhandlerError )
43
+ window . removeEventListener ( errorEvent , throwUnhandlerError )
49
44
}
50
45
}
51
46
52
47
function registerUnexpectedErrors ( ) {
53
- catchWindowErrors ( event =>
54
- reportUnexpectedError ( 'Error' , event . error ) ,
55
- )
56
- on ( 'unhandledrejection' , event =>
48
+ catchWindowErrors ( 'error' , 'error' , event =>
49
+ reportUnexpectedError ( 'Error' , event . error ) )
50
+ catchWindowErrors ( 'unhandledrejection' , 'reason' , event =>
57
51
reportUnexpectedError ( 'Unhandled Rejection' , event . reason ) )
58
52
}
59
53
0 commit comments