src/log/debug.ts
// Types based on @types/debug
export interface IDebug {
(namespace: string): IDebugger
coerce: (val: any) => any
disable: () => string
enable: (namespaces: string) => void
enabled: (namespaces: string) => boolean
log: (...args: any[]) => any
names: RegExp[]
skips: RegExp[]
formatters: DebugFormatters
}
export interface DebugFormatters {
[formatter: string]: (v: any) => string
}
export interface IDebugger {
// (formatter: any, ...args: any[]): void;
(...args: any[]): void
color: string
enabled: boolean
log: (...args: any[]) => any
namespace: string
destroy: () => boolean
// extend: (namespace: string, delimiter?: string) => IDebugger
}
const originalDebug = require('debug') as IDebug
// eslint-disable-next-line @typescript-eslint/naming-convention
export const Debug = ((namespace: string) => {
const instance = originalDebug(namespace)
instance.log = console.log.bind(console) // this enables colors for objects
return instance
}) as IDebug
Debug.coerce = originalDebug.coerce.bind(originalDebug)
Debug.disable = originalDebug.disable.bind(originalDebug)
Debug.enable = originalDebug.enable.bind(originalDebug)
Debug.enabled = originalDebug.enabled.bind(originalDebug)
Debug.log = originalDebug.log.bind(originalDebug)
Debug.names = originalDebug.names
Debug.skips = originalDebug.skips
Debug.formatters = originalDebug.formatters