@@ -241,26 +241,7 @@ class MockTimers {
241
241
toFake : {
242
242
__proto__ : null ,
243
243
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( ) ;
264
245
265
246
globalThis . setTimeout = this . #setTimeout;
266
247
globalThis . clearTimeout = this . #clearTimeout;
@@ -274,26 +255,7 @@ class MockTimers {
274
255
) ;
275
256
} ,
276
257
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( ) ;
297
259
298
260
globalThis . setInterval = this . #setInterval;
299
261
globalThis . clearInterval = this . #clearInterval;
@@ -307,26 +269,7 @@ class MockTimers {
307
269
) ;
308
270
} ,
309
271
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( ) ;
330
273
331
274
globalThis . setImmediate = this . #setImmediate;
332
275
globalThis . clearImmediate = this . #clearImmediate;
@@ -343,85 +286,13 @@ class MockTimers {
343
286
toReal : {
344
287
__proto__ : null ,
345
288
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( ) ;
371
290
} ,
372
291
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( ) ;
398
293
} ,
399
294
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( ) ;
425
296
} ,
426
297
} ,
427
298
} ;
@@ -431,6 +302,159 @@ class MockTimers {
431
302
this . #isEnabled = activate ;
432
303
}
433
304
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
+
434
458
tick ( time = 1 ) {
435
459
if ( ! this . #isEnabled) {
436
460
throw new ERR_INVALID_STATE (
0 commit comments