UNPKG

timewarp-sim

Version:

🕰️ Deterministic time simulation and manipulation library for TypeScript

50 lines (49 loc) 1.51 kB
"use strict"; 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;