UNPKG

la-gregory

Version:
81 lines 2.6 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setPerformanceOffset = exports.clearDateMock = exports.setDate = exports.advanceDate = void 0; var nowDate = undefined; // performance.now() = nowDate + performanceOffset var performanceOffset = 0; var now = function () { return nowDate; }; var mockDateClass = function (OriginalDate) { // if undefined, use real date, or else mock date var mockNow = function () { return (now() === undefined ? OriginalDate.now() : now()); }; // eslint-disable-next-line @typescript-eslint/no-explicit-any function Date() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var dateArgs = args.length === 0 ? [mockNow()] : args; var instance = new (OriginalDate.bind.apply(OriginalDate, __spreadArrays([void 0], dateArgs)))(); // @ts-ignore Object.setPrototypeOf(instance, Object.getPrototypeOf(this)); return instance; } Date.prototype = Object.create(OriginalDate.prototype); Object.setPrototypeOf(Date, OriginalDate); Date.now = function () { return mockNow(); }; Date.__OriginalDate__ = OriginalDate; return Date; }; var MockDate = mockDateClass(Date); if (global.window) { // dom env global.window.Date = MockDate; global.window.performance.now = function () { return MockDate.now() + performanceOffset; }; } else { // node / native env global.Date = MockDate; require('perf_hooks').performance.now = function () { return MockDate.now() + performanceOffset; }; } /** * Move date by offset `ms` */ exports.advanceDate = function (ms) { if (nowDate === undefined) { nowDate = ms; } else { nowDate += ms; } }; /** * Set date to absolute value */ exports.setDate = function (dateOrMs) { nowDate = dateOrMs instanceof Date ? dateOrMs.getTime() : dateOrMs; }; /** * Clear date mock */ exports.clearDateMock = function () { nowDate = undefined; performanceOffset = 0; }; /** * Set offset between performance.now() and Date.now() */ exports.setPerformanceOffset = function (offset) { performanceOffset = offset; }; //# sourceMappingURL=index.js.map