/* Magic Mirror
 * Log
 *
 * This logger is very simple, but needs to be extended.
 * This system can eventually be used to push the log messages to an external target.
 *
 * By Michael Teeuw https://michaelteeuw.nl
 * MIT Licensed.
 */
(function (root, factory) {
	if (typeof exports === "object") {
		// add timestamps in front of log messages
		require("console-stamp")(console, {
			pattern: "yyyy-mm-dd HH:MM:ss.l",
			include: ["debug", "log", "info", "warn", "error"]
		});

		// Node, CommonJS-like
		module.exports = factory(root.config);
	} else {
		// Browser globals (root is window)
		root.Log = factory(root.config);
	}
})(this, function (config) {
	let logLevel = {
		debug: Function.prototype.bind.call(console.debug, console),
		log: Function.prototype.bind.call(console.log, console),
		info: Function.prototype.bind.call(console.info, console),
		warn: Function.prototype.bind.call(console.warn, console),
		error: Function.prototype.bind.call(console.error, console),
		group: Function.prototype.bind.call(console.group, console),
		groupCollapsed: Function.prototype.bind.call(console.groupCollapsed, console),
		groupEnd: Function.prototype.bind.call(console.groupEnd, console),
		time: Function.prototype.bind.call(console.time, console),
		timeEnd: Function.prototype.bind.call(console.timeEnd, console)
	};

	// the timeStamp instruction fails when running the tests so it is not added in test environment
	if (process.env.NODE_ENV.trim() !== "test") {
		logLevel.push({ timeStamp: Function.prototype.bind.call(console.timeStamp, console) });
	}

	logLevel.setLogLevel = function (newLevel) {
		if (newLevel) {
			Object.keys(logLevel).forEach(function (key, index) {
				if (!newLevel.includes(key.toLocaleUpperCase())) {
					logLevel[key] = function () {};
				}
			});
		}
	};

	return logLevel;
});

/* Magic Mirror
 * Log
 *
 * This logger is very simple, but needs to be extended.
 * This system can eventually be used to push the log messages to an external target.
 *
 * By Michael Teeuw https://michaelteeuw.nl
 * MIT Licensed.
 */
(function (root, factory) {
	if (typeof exports === "object") {
		// add timestamps in front of log messages
		require("console-stamp")(console, {
			pattern: "yyyy-mm-dd HH:MM:ss.l",
			include: ["debug", "log", "info", "warn", "error"]
		});

		// Node, CommonJS-like
		module.exports = factory(root.config);
	} else {
		// Browser globals (root is window)
		root.Log = factory(root.config);
	}
})(this, function (config) {
	let logLevel = {
		debug: Function.prototype.bind.call(console.debug, console),
		log: Function.prototype.bind.call(console.log, console),
		info: Function.prototype.bind.call(console.info, console),
		warn: Function.prototype.bind.call(console.warn, console),
		error: Function.prototype.bind.call(console.error, console),
		group: Function.prototype.bind.call(console.group, console),
		groupCollapsed: Function.prototype.bind.call(console.groupCollapsed, console),
		groupEnd: Function.prototype.bind.call(console.groupEnd, console),
		time: Function.prototype.bind.call(console.time, console),
		timeEnd: Function.prototype.bind.call(console.timeEnd, console)
	};

	// the timeStamp instruction fails when running the tests so it is not added in test environment
	if (typeof process === "object" && process.env.NODE_ENV.trim() !== "test") {
		logLevel = Object.assign(logLevel, { timeStamp: Function.prototype.bind.call(console.timeStamp, console) });
	}

	logLevel.setLogLevel = function (newLevel) {
		if (newLevel) {
			Object.keys(logLevel).forEach(function (key, index) {
				if (!newLevel.includes(key.toLocaleUpperCase())) {
					logLevel[key] = function () {};
				}
			});
		}
	};

	return logLevel;
});

fix logger.js after jest changes