@@ -26,6 +26,10 @@ type Win = Window &
2626 } ;
2727 } ;
2828
29+ function isString ( value : unknown ) : value is string {
30+ return typeof value === 'string' ;
31+ }
32+
2933export default class JSDOMEnvironment implements JestEnvironment < number > {
3034 dom : JSDOM | null ;
3135 fakeTimers : LegacyFakeTimers < number > | null ;
@@ -65,33 +69,33 @@ export default class JSDOMEnvironment implements JestEnvironment<number> {
6569 const global = ( this . global = this . dom . window . document
6670 . defaultView as unknown as Win ) ;
6771
68- if ( ! global ) {
72+ if ( global == null ) {
6973 throw new Error ( 'JSDOM did not return a Window object' ) ;
7074 }
7175
72- // for "universal" code (code should use `globalThis`)
73- global . global = global as any ;
76+ // @ts -expect-error - for "universal" code (code should use `globalThis`)
77+ global . global = global ;
7478
7579 // Node's error-message stack size is limited at 10, but it's pretty useful
7680 // to see more than that when a test fails.
7781 this . global . Error . stackTraceLimit = 100 ;
78- installCommonGlobals ( global as any , projectConfig . globals ) ;
82+ installCommonGlobals ( global , projectConfig . globals ) ;
7983
8084 // TODO: remove this ASAP, but it currently causes tests to run really slow
8185 global . Buffer = Buffer ;
8286
8387 // Report uncaught errors.
8488 this . errorEventListener = event => {
85- if ( userErrorListenerCount === 0 && event . error ) {
89+ if ( userErrorListenerCount === 0 && event . error != null ) {
8690 process . emit ( 'uncaughtException' , event . error ) ;
8791 }
8892 } ;
8993 global . addEventListener ( 'error' , this . errorEventListener ) ;
9094
9195 // However, don't report them as uncaught if the user listens to 'error' event.
9296 // In that case, we assume the might have custom error handling logic.
93- const originalAddListener = global . addEventListener ;
94- const originalRemoveListener = global . removeEventListener ;
97+ const originalAddListener = global . addEventListener . bind ( global ) ;
98+ const originalRemoveListener = global . removeEventListener . bind ( global ) ;
9599 let userErrorListenerCount = 0 ;
96100 global . addEventListener = function (
97101 ...args : Parameters < typeof originalAddListener >
@@ -114,7 +118,7 @@ export default class JSDOMEnvironment implements JestEnvironment<number> {
114118 const { customExportConditions} = projectConfig . testEnvironmentOptions ;
115119 if (
116120 Array . isArray ( customExportConditions ) &&
117- customExportConditions . every ( item => typeof item === 'string' )
121+ customExportConditions . every ( isString )
118122 ) {
119123 this . customExportConditions = customExportConditions ;
120124 } else {
@@ -124,7 +128,7 @@ export default class JSDOMEnvironment implements JestEnvironment<number> {
124128 }
125129 }
126130
127- this . moduleMocker = new ModuleMocker ( global as any ) ;
131+ this . moduleMocker = new ModuleMocker ( global ) ;
128132
129133 this . fakeTimers = new LegacyFakeTimers ( {
130134 config : projectConfig ,
@@ -152,7 +156,7 @@ export default class JSDOMEnvironment implements JestEnvironment<number> {
152156 if ( this . fakeTimersModern ) {
153157 this . fakeTimersModern . dispose ( ) ;
154158 }
155- if ( this . global ) {
159+ if ( this . global != null ) {
156160 if ( this . errorEventListener ) {
157161 this . global . removeEventListener ( 'error' , this . errorEventListener ) ;
158162 }
0 commit comments