export interface Logger { info(message: string): void warn(message: string): void error(message: string): void debug(message: string): void } class ConsoleLogger implements Logger { info(message: string): void { // eslint-disable-next-line no-console console.log(message) } warn(message: string): void { // eslint-disable-next-line no-console console.warn(message) } error(message: string): void { // eslint-disable-next-line no-console console.error(message) } debug(message: string): void { // eslint-disable-next-line no-console console.debug(message) } } let activeLogger: Logger = new ConsoleLogger() export const setLogger = (logger: Logger): void => { activeLogger = logger } export const logger = (): Logger => activeLogger