import { InferFeatures, LoggerPlugin, DReactionCore, assertHasLoggerPlugin, Plugin, } from 'dreaction-client-core'; /** * Track calls to console.log, console.warn, and console.debug and send them to DReaction logger */ const trackGlobalLogs = () => (dreaction: DReactionCore) => { assertHasLoggerPlugin(dreaction); const client = dreaction as DReactionCore & InferFeatures; const originalConsoleLog = console.log; const originalConsoleInfo = console.info; const originalConsoleWarn = console.warn; const originalConsoleDebug = console.debug; return { onConnect: () => { console.log = (...args: Parameters) => { originalConsoleLog(...args); client.log(...args); }; console.info = (...args: Parameters) => { originalConsoleInfo(...args); client.info(...args); }; console.warn = (...args: Parameters) => { originalConsoleWarn(...args); client.warn(args[0]); }; console.debug = (...args: Parameters) => { originalConsoleDebug(...args); client.debug(args[0]); }; // console.error is taken care of by ./trackGlobalErrors.ts }, onDisconnect: () => { console.log = originalConsoleLog; console.warn = originalConsoleWarn; console.debug = originalConsoleDebug; console.info = originalConsoleInfo; }, } satisfies Plugin; }; export default trackGlobalLogs;