codeql-action/node_modules/sinon/lib/sinon/util/fake-timers.js
2020-06-24 14:34:08 +01:00

72 lines
2 KiB
JavaScript

"use strict";
var extend = require("./core/extend");
var FakeTimers = require("@sinonjs/fake-timers");
var globalObject = require("@sinonjs/commons").global;
function createClock(config, globalCtx) {
var FakeTimersCtx = FakeTimers;
if (globalCtx !== null && typeof globalCtx === "object") {
FakeTimersCtx = FakeTimers.withGlobal(globalCtx);
}
var clock = FakeTimersCtx.install(config);
clock.restore = clock.uninstall;
return clock;
}
function addIfDefined(obj, globalPropName) {
var globalProp = globalObject[globalPropName];
if (typeof globalProp !== "undefined") {
obj[globalPropName] = globalProp;
}
}
/**
* @param {number|Date|Object} dateOrConfig The unix epoch value to install with (default 0)
* @returns {Object} Returns a lolex clock instance
*/
exports.useFakeTimers = function(dateOrConfig) {
var hasArguments = typeof dateOrConfig !== "undefined";
var argumentIsDateLike =
(typeof dateOrConfig === "number" || dateOrConfig instanceof Date) && arguments.length === 1;
var argumentIsObject = dateOrConfig !== null && typeof dateOrConfig === "object" && arguments.length === 1;
if (!hasArguments) {
return createClock({
now: 0
});
}
if (argumentIsDateLike) {
return createClock({
now: dateOrConfig
});
}
if (argumentIsObject) {
var config = extend.nonEnum({}, dateOrConfig);
var globalCtx = config.global;
delete config.global;
return createClock(config, globalCtx);
}
throw new TypeError("useFakeTimers expected epoch or config object. See https://github.com/sinonjs/sinon");
};
exports.clock = {
create: function(now) {
return FakeTimers.createClock(now);
}
};
var timers = {
setTimeout: setTimeout,
clearTimeout: clearTimeout,
setInterval: setInterval,
clearInterval: clearInterval,
Date: Date
};
addIfDefined(timers, "setImmediate");
addIfDefined(timers, "clearImmediate");
exports.timers = timers;