const getPrefix = () => { const prefixName = game.i18n?.localize("YAT.title") || "Timer Module"; return `[${prefixName}] `; }; export const logger = (() => { const originalConsole = console; const wrapper = {}; const methodsToPrefix = [ "log", "info", "warn", "error", "debug", "dir", "dirxml", "assert", "count", "countReset", "group", "groupCollapsed", "groupEnd", "time", "timeLog", "timeEnd", "trace", ]; methodsToPrefix.forEach((methodName) => { wrapper[methodName] = function (...args) { const modifiedArgs = [...args]; const prefix = getPrefix(); // preserve string substitution formatting (e.g., %s, %d) if (typeof modifiedArgs[0] === "string") { modifiedArgs[0] = prefix + modifiedArgs[0]; } else { modifiedArgs.unshift(prefix); } originalConsole[methodName].apply(originalConsole, modifiedArgs); }; }); if (typeof originalConsole.table === "function") { wrapper.table = function (...args) { const prefix = getPrefix(); originalConsole.log(`=== ${prefix} ===`); originalConsole.table.apply(originalConsole, args); }; } if (typeof originalConsole.clear === "function") { wrapper.clear = function () { originalConsole.clear(); }; } return wrapper; })();