import { getGlobalContext } from '../global' // Global logger to guarantee all submodules use the same logger instance export type LogOriginalConsole = Pick & { console: Console } declare global { interface ZeedGlobalContext { originalConsole?: LogOriginalConsole } } /** * Retrieves the global console object, ensuring that it is stored in the global context. * If the global context does not have a reference to the original console object, it creates one. * The original console object is then bound to the global context, allowing access to its methods. */ export function getGlobalConsole(): LogOriginalConsole | undefined { const gcontext = getGlobalContext() if (gcontext.originalConsole == null) { const originalConsole = typeof console !== 'undefined' ? console : undefined gcontext.originalConsole = originalConsole ? { console: originalConsole, log: originalConsole.log.bind(originalConsole), info: originalConsole.info.bind(originalConsole), warn: originalConsole.warn.bind(originalConsole), error: originalConsole.error.bind(originalConsole), debug: originalConsole.debug.bind(originalConsole), } : undefined } return gcontext.originalConsole }