@@ -241,26 +241,7 @@ class MockTimers {
241241 toFake : {
242242 __proto__ : null ,
243243 setTimeout : ( ) => {
244- this . #realSetTimeout = ObjectGetOwnPropertyDescriptor (
245- globalThis ,
246- 'setTimeout' ,
247- ) ;
248- this . #realClearTimeout = ObjectGetOwnPropertyDescriptor (
249- globalThis ,
250- 'clearTimeout' ,
251- ) ;
252- this . #realTimersSetTimeout = ObjectGetOwnPropertyDescriptor (
253- nodeTimers ,
254- 'setTimeout' ,
255- ) ;
256- this . #realTimersClearTimeout = ObjectGetOwnPropertyDescriptor (
257- nodeTimers ,
258- 'clearTimeout' ,
259- ) ;
260- this . #realPromisifiedSetTimeout = ObjectGetOwnPropertyDescriptor (
261- nodeTimersPromises ,
262- 'setTimeout' ,
263- ) ;
244+ this . #storeOriginalSetTimeout( ) ;
264245
265246 globalThis . setTimeout = this . #setTimeout;
266247 globalThis . clearTimeout = this . #clearTimeout;
@@ -274,26 +255,7 @@ class MockTimers {
274255 ) ;
275256 } ,
276257 setInterval : ( ) => {
277- this . #realSetInterval = ObjectGetOwnPropertyDescriptor (
278- globalThis ,
279- 'setInterval' ,
280- ) ;
281- this . #realClearInterval = ObjectGetOwnPropertyDescriptor (
282- globalThis ,
283- 'clearInterval' ,
284- ) ;
285- this . #realTimersSetInterval = ObjectGetOwnPropertyDescriptor (
286- nodeTimers ,
287- 'setInterval' ,
288- ) ;
289- this . #realTimersClearInterval = ObjectGetOwnPropertyDescriptor (
290- nodeTimers ,
291- 'clearInterval' ,
292- ) ;
293- this . #realPromisifiedSetInterval = ObjectGetOwnPropertyDescriptor (
294- nodeTimersPromises ,
295- 'setInterval' ,
296- ) ;
258+ this . #storeOriginalSetInterval( ) ;
297259
298260 globalThis . setInterval = this . #setInterval;
299261 globalThis . clearInterval = this . #clearInterval;
@@ -307,26 +269,7 @@ class MockTimers {
307269 ) ;
308270 } ,
309271 setImmediate : ( ) => {
310- this . #realSetImmediate = ObjectGetOwnPropertyDescriptor (
311- globalThis ,
312- 'setImmediate' ,
313- ) ;
314- this . #realClearImmediate = ObjectGetOwnPropertyDescriptor (
315- globalThis ,
316- 'clearImmediate' ,
317- ) ;
318- this . #realTimersSetImmediate = ObjectGetOwnPropertyDescriptor (
319- nodeTimers ,
320- 'setImmediate' ,
321- ) ;
322- this . #realTimersClearImmediate = ObjectGetOwnPropertyDescriptor (
323- nodeTimers ,
324- 'clearImmediate' ,
325- ) ;
326- this . #realPromisifiedSetImmediate = ObjectGetOwnPropertyDescriptor (
327- nodeTimersPromises ,
328- 'setImmediate' ,
329- ) ;
272+ this . #storeOriginalSetImmediate( ) ;
330273
331274 globalThis . setImmediate = this . #setImmediate;
332275 globalThis . clearImmediate = this . #clearImmediate;
@@ -343,85 +286,13 @@ class MockTimers {
343286 toReal : {
344287 __proto__ : null ,
345288 setTimeout : ( ) => {
346- ObjectDefineProperty (
347- globalThis ,
348- 'setTimeout' ,
349- this . #realSetTimeout,
350- ) ;
351- ObjectDefineProperty (
352- globalThis ,
353- 'clearTimeout' ,
354- this . #realClearTimeout,
355- ) ;
356- ObjectDefineProperty (
357- nodeTimers ,
358- 'setTimeout' ,
359- this . #realSetTimeout,
360- ) ;
361- ObjectDefineProperty (
362- nodeTimers ,
363- 'clearTimeout' ,
364- this . #realTimersClearTimeout,
365- ) ;
366- ObjectDefineProperty (
367- nodeTimersPromises ,
368- 'setTimeout' ,
369- this . #realPromisifiedSetTimeout,
370- ) ;
289+ this . #restoreOriginalSetTimeout( ) ;
371290 } ,
372291 setInterval : ( ) => {
373- ObjectDefineProperty (
374- globalThis ,
375- 'setInterval' ,
376- this . #realSetInterval,
377- ) ;
378- ObjectDefineProperty (
379- globalThis ,
380- 'clearInterval' ,
381- this . #realClearInterval,
382- ) ;
383- ObjectDefineProperty (
384- nodeTimers ,
385- 'setInterval' ,
386- this . #realTimersSetInterval,
387- ) ;
388- ObjectDefineProperty (
389- nodeTimers ,
390- 'clearInterval' ,
391- this . #realTimersClearInterval,
392- ) ;
393- ObjectDefineProperty (
394- nodeTimersPromises ,
395- 'setInterval' ,
396- this . #realPromisifiedSetInterval,
397- ) ;
292+ this . #restoreOriginalSetInterval( ) ;
398293 } ,
399294 setImmediate : ( ) => {
400- ObjectDefineProperty (
401- globalThis ,
402- 'setImmediate' ,
403- this . #realSetImmediate,
404- ) ;
405- ObjectDefineProperty (
406- globalThis ,
407- 'clearImmediate' ,
408- this . #realClearImmediate,
409- ) ;
410- ObjectDefineProperty (
411- nodeTimers ,
412- 'setImmediate' ,
413- this . #realTimersSetImmediate,
414- ) ;
415- ObjectDefineProperty (
416- nodeTimers ,
417- 'clearImmediate' ,
418- this . #realTimersClearImmediate,
419- ) ;
420- ObjectDefineProperty (
421- nodeTimersPromises ,
422- 'setImmediate' ,
423- this . #realPromisifiedSetImmediate,
424- ) ;
295+ this . #restoreSetImmediate( ) ;
425296 } ,
426297 } ,
427298 } ;
@@ -431,6 +302,159 @@ class MockTimers {
431302 this . #isEnabled = activate ;
432303 }
433304
305+ #restoreSetImmediate( ) {
306+ ObjectDefineProperty (
307+ globalThis ,
308+ 'setImmediate' ,
309+ this . #realSetImmediate
310+ ) ;
311+ ObjectDefineProperty (
312+ globalThis ,
313+ 'clearImmediate' ,
314+ this . #realClearImmediate
315+ ) ;
316+ ObjectDefineProperty (
317+ nodeTimers ,
318+ 'setImmediate' ,
319+ this . #realTimersSetImmediate
320+ ) ;
321+ ObjectDefineProperty (
322+ nodeTimers ,
323+ 'clearImmediate' ,
324+ this . #realTimersClearImmediate
325+ ) ;
326+ ObjectDefineProperty (
327+ nodeTimersPromises ,
328+ 'setImmediate' ,
329+ this . #realPromisifiedSetImmediate
330+ ) ;
331+ }
332+
333+ #restoreOriginalSetInterval( ) {
334+ ObjectDefineProperty (
335+ globalThis ,
336+ 'setInterval' ,
337+ this . #realSetInterval
338+ ) ;
339+ ObjectDefineProperty (
340+ globalThis ,
341+ 'clearInterval' ,
342+ this . #realClearInterval
343+ ) ;
344+ ObjectDefineProperty (
345+ nodeTimers ,
346+ 'setInterval' ,
347+ this . #realTimersSetInterval
348+ ) ;
349+ ObjectDefineProperty (
350+ nodeTimers ,
351+ 'clearInterval' ,
352+ this . #realTimersClearInterval
353+ ) ;
354+ ObjectDefineProperty (
355+ nodeTimersPromises ,
356+ 'setInterval' ,
357+ this . #realPromisifiedSetInterval
358+ ) ;
359+ }
360+
361+ #restoreOriginalSetTimeout( ) {
362+ ObjectDefineProperty (
363+ globalThis ,
364+ 'setTimeout' ,
365+ this . #realSetTimeout
366+ ) ;
367+ ObjectDefineProperty (
368+ globalThis ,
369+ 'clearTimeout' ,
370+ this . #realClearTimeout
371+ ) ;
372+ ObjectDefineProperty (
373+ nodeTimers ,
374+ 'setTimeout' ,
375+ this . #realSetTimeout
376+ ) ;
377+ ObjectDefineProperty (
378+ nodeTimers ,
379+ 'clearTimeout' ,
380+ this . #realTimersClearTimeout
381+ ) ;
382+ ObjectDefineProperty (
383+ nodeTimersPromises ,
384+ 'setTimeout' ,
385+ this . #realPromisifiedSetTimeout
386+ ) ;
387+ }
388+
389+ #storeOriginalSetImmediate( ) {
390+ this . #realSetImmediate = ObjectGetOwnPropertyDescriptor (
391+ globalThis ,
392+ 'setImmediate'
393+ ) ;
394+ this . #realClearImmediate = ObjectGetOwnPropertyDescriptor (
395+ globalThis ,
396+ 'clearImmediate'
397+ ) ;
398+ this . #realTimersSetImmediate = ObjectGetOwnPropertyDescriptor (
399+ nodeTimers ,
400+ 'setImmediate'
401+ ) ;
402+ this . #realTimersClearImmediate = ObjectGetOwnPropertyDescriptor (
403+ nodeTimers ,
404+ 'clearImmediate'
405+ ) ;
406+ this . #realPromisifiedSetImmediate = ObjectGetOwnPropertyDescriptor (
407+ nodeTimersPromises ,
408+ 'setImmediate'
409+ ) ;
410+ }
411+
412+ #storeOriginalSetInterval( ) {
413+ this . #realSetInterval = ObjectGetOwnPropertyDescriptor (
414+ globalThis ,
415+ 'setInterval'
416+ ) ;
417+ this . #realClearInterval = ObjectGetOwnPropertyDescriptor (
418+ globalThis ,
419+ 'clearInterval'
420+ ) ;
421+ this . #realTimersSetInterval = ObjectGetOwnPropertyDescriptor (
422+ nodeTimers ,
423+ 'setInterval'
424+ ) ;
425+ this . #realTimersClearInterval = ObjectGetOwnPropertyDescriptor (
426+ nodeTimers ,
427+ 'clearInterval'
428+ ) ;
429+ this . #realPromisifiedSetInterval = ObjectGetOwnPropertyDescriptor (
430+ nodeTimersPromises ,
431+ 'setInterval'
432+ ) ;
433+ }
434+
435+ #storeOriginalSetTimeout( ) {
436+ this . #realSetTimeout = ObjectGetOwnPropertyDescriptor (
437+ globalThis ,
438+ 'setTimeout'
439+ ) ;
440+ this . #realClearTimeout = ObjectGetOwnPropertyDescriptor (
441+ globalThis ,
442+ 'clearTimeout'
443+ ) ;
444+ this . #realTimersSetTimeout = ObjectGetOwnPropertyDescriptor (
445+ nodeTimers ,
446+ 'setTimeout'
447+ ) ;
448+ this . #realTimersClearTimeout = ObjectGetOwnPropertyDescriptor (
449+ nodeTimers ,
450+ 'clearTimeout'
451+ ) ;
452+ this . #realPromisifiedSetTimeout = ObjectGetOwnPropertyDescriptor (
453+ nodeTimersPromises ,
454+ 'setTimeout'
455+ ) ;
456+ }
457+
434458 tick ( time = 1 ) {
435459 if ( ! this . #isEnabled) {
436460 throw new ERR_INVALID_STATE (
0 commit comments