@sinonjs/fake-timers
Advanced tools
Comparing version 8.1.0 to 9.0.0
{ | ||
"name": "@sinonjs/fake-timers", | ||
"description": "Fake JavaScript timers", | ||
"version": "8.1.0", | ||
"version": "9.0.0", | ||
"homepage": "https://github.com/sinonjs/fake-timers", | ||
@@ -6,0 +6,0 @@ "author": "Christian Johansen", |
@@ -58,4 +58,3 @@ # `@sinonjs/fake-timers` | ||
[Poblano](https://en.wikipedia.org/wiki/Poblano) will be printed synchronously to | ||
the screen. If you want to simulate asynchronous behavior, you have to use your | ||
imagination when calling the various functions. | ||
the screen. If you want to simulate asynchronous behavior, please see the `async` function variants (eg `clock.tick(time)` vs `await clock.tickAsync(time)`). | ||
@@ -154,10 +153,10 @@ The `next`, `runAll`, `runToFrame`, and `runToLast` methods are available to advance the clock. See the | ||
| Parameter | Type | Default | Description | | ||
| -------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| `config.now` | Number/Date | 0 | installs FakeTimers with the specified unix epoch | | ||
| `config.toFake` | String[] | ["setTimeout", "clearTimeout", "setImmediate", "clearImmediate","setInterval", "clearInterval", "Date", "requestAnimationFrame", "cancelAnimationFrame", "requestIdleCallback", "cancelIdleCallback", "hrtime"] | an array with explicit function names to hijack. _When not set, FakeTimers will automatically fake all methods **except** `nextTick`_ e.g., `FakeTimers.install({ toFake: ["setTimeout","nextTick"]})` will fake only `setTimeout` and `nextTick` | | ||
| `config.loopLimit` | Number | 1000 | the maximum number of timers that will be run when calling runAll() | | ||
| `config.shouldAdvanceTime` | Boolean | false | tells FakeTimers to increment mocked time automatically based on the real system time shift (e.g. the mocked time will be incremented by 20ms for every 20ms change in the real system time) | | ||
| `config.advanceTimeDelta` | Number | 20 | relevant only when using with `shouldAdvanceTime: true`. increment mocked time by `advanceTimeDelta` ms every `advanceTimeDelta` ms change in the real system time. | | ||
| `config.shouldClearNativeTimers` | Boolean | false | tells FakeTimers to clear 'native' (i.e. not fake) timers by delegating to their respective handlers. These are not cleared by default, leading to potentially unexpected behavior if timers existed prior to installing FakeTimers. | | ||
| Parameter | Type | Default | Description | | ||
| -------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| `config.now` | Number/Date | 0 | installs FakeTimers with the specified unix epoch | | ||
| `config.toFake` | String[] | ["setTimeout", "clearTimeout", "setImmediate", "clearImmediate","setInterval", "clearInterval", "Date", "requestAnimationFrame", "cancelAnimationFrame", "requestIdleCallback", "cancelIdleCallback", "hrtime", "performance"] | an array with explicit function names (or objects, in the case of "performance") to hijack. _When not set, FakeTimers will automatically fake all methods **except** `nextTick`_ e.g., `FakeTimers.install({ toFake: ["setTimeout","nextTick"]})` will fake only `setTimeout` and `nextTick` | | ||
| `config.loopLimit` | Number | 1000 | the maximum number of timers that will be run when calling runAll() | | ||
| `config.shouldAdvanceTime` | Boolean | false | tells FakeTimers to increment mocked time automatically based on the real system time shift (e.g. the mocked time will be incremented by 20ms for every 20ms change in the real system time) | | ||
| `config.advanceTimeDelta` | Number | 20 | relevant only when using with `shouldAdvanceTime: true`. increment mocked time by `advanceTimeDelta` ms every `advanceTimeDelta` ms change in the real system time. | | ||
| `config.shouldClearNativeTimers` | Boolean | false | tells FakeTimers to clear 'native' (i.e. not fake) timers by delegating to their respective handlers. These are not cleared by default, leading to potentially unexpected behavior if timers existed prior to installing FakeTimers. | | ||
@@ -164,0 +163,0 @@ ### `var id = clock.setTimeout(callback, timeout)` |
@@ -160,2 +160,6 @@ "use strict"; | ||
(typeof _global.Performance).match(/^(function|object)$/); | ||
const hasPerformanceConstructorPrototype = | ||
_global.performance && | ||
_global.performance.constructor && | ||
_global.performance.constructor.prototype; | ||
const queueMicrotaskPresent = _global.hasOwnProperty("queueMicrotask"); | ||
@@ -742,2 +746,3 @@ const requestAnimationFramePresent = | ||
* Gets clear handler name for a given timer type | ||
* | ||
* @param {string} ttype | ||
@@ -754,2 +759,3 @@ */ | ||
* Gets schedule handler name for a given timer type | ||
* | ||
* @param {string} ttype | ||
@@ -1590,16 +1596,2 @@ */ | ||
clock.performance = Object.create(null); | ||
if (hasPerformancePrototype) { | ||
const proto = _global.Performance.prototype; | ||
Object.getOwnPropertyNames(proto).forEach(function (name) { | ||
if (name.indexOf("getEntries") === 0) { | ||
// match expected return type for getEntries functions | ||
clock.performance[name] = NOOP_ARRAY; | ||
} else { | ||
clock.performance[name] = NOOP; | ||
} | ||
}); | ||
} | ||
clock.performance.now = function FakeTimersNow() { | ||
@@ -1682,2 +1674,28 @@ const hrt = hrtime(); | ||
if (clock.methods.includes("performance")) { | ||
const proto = (() => { | ||
if (hasPerformancePrototype) { | ||
return _global.Performance.prototype; | ||
} | ||
if (hasPerformanceConstructorPrototype) { | ||
return _global.performance.constructor.prototype; | ||
} | ||
})(); | ||
if (proto) { | ||
Object.getOwnPropertyNames(proto).forEach(function (name) { | ||
if (name !== "now") { | ||
clock.performance[name] = | ||
name.indexOf("getEntries") === 0 | ||
? NOOP_ARRAY | ||
: NOOP; | ||
} | ||
}); | ||
} else if ((config.toFake || []).includes("performance")) { | ||
// user explicitly tried to fake performance when not present | ||
throw new ReferenceError( | ||
"non-existent performance object cannot be faked" | ||
); | ||
} | ||
} | ||
for (i = 0, l = clock.methods.length; i < l; i++) { | ||
@@ -1684,0 +1702,0 @@ const nameOfMethodToReplace = clock.methods[i]; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1532
78440
4
353