packages/commons/src/debug.ts
/* eslint-disable @typescript-eslint/no-empty-function */
export type DebugFunction = (...args: any[]) => void
export type DebugInitializer = (name: string) => DebugFunction
const debuggers: { [key: string]: DebugFunction } = {}
export function noopDebug(): DebugFunction {
return function () {}
}
let defaultInitializer: DebugInitializer = noopDebug
export function setDebug(debug: DebugInitializer) {
defaultInitializer = debug
Object.keys(debuggers).forEach((name) => {
debuggers[name] = debug(name)
})
}
export function createDebug(name: string) {
if (!debuggers[name]) {
debuggers[name] = defaultInitializer(name)
}
return (...args: any[]) => debuggers[name](...args)
}