timewarp-sim
Version:
🕰️ Deterministic time simulation and manipulation library for TypeScript
50 lines (49 loc) • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DateMocker = exports.OriginalDate = void 0;
let isMocked = false;
exports.OriginalDate = Date;
class DateMocker {
/**
* Enable global Date mocking.
*/
static enable(controller) {
if (isMocked)
return;
exports.OriginalDate = Date;
function MockedDate(value) {
if (!(this instanceof MockedDate)) {
if (value === undefined) {
return new exports.OriginalDate(controller.nowTimestamp()).toString();
}
return new exports.OriginalDate(value).toString();
}
if (value === undefined) {
return new exports.OriginalDate(controller.nowTimestamp());
}
return new exports.OriginalDate(value);
}
MockedDate.now = () => controller.nowTimestamp();
MockedDate.parse = exports.OriginalDate.parse;
MockedDate.UTC = exports.OriginalDate.UTC;
MockedDate.prototype = exports.OriginalDate.prototype;
globalThis.Date = MockedDate;
isMocked = true;
}
/**
* Disable global Date mocking.
*/
static disable() {
if (!isMocked)
return;
globalThis.Date = exports.OriginalDate;
isMocked = false;
}
/**
* Check if global mocking is enabled.
*/
static isEnabled() {
return isMocked;
}
}
exports.DateMocker = DateMocker;