@naturalcycles/nodejs-lib
Version:
Standard library for Node.js
72 lines (59 loc) • 2.14 kB
text/typescript
// 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
debug: (...args: any[]) => void
info: (...args: any[]) => void // alias to just log()
warn: (...args: any[]) => void
error: (...args: any[]) => void
color: string
enabled: boolean
log: (...args: any[]) => any
namespace: string
destroy: () => boolean
// extend: (namespace: string, delimiter?: string) => IDebugger
}
export enum DebugLogLevel {
debug = 'debug',
info = 'info',
warn = 'warn',
error = 'error',
}
const OriginalDebug = require('debug') as IDebug
export const Debug = ((namespace: string) => {
const instance = OriginalDebug(namespace)
instance.log = console.log.bind(console) // this enables colors for objects
instance.info = instance.bind(instance)
const instanceDebug = OriginalDebug([namespace, 'debug'].join(':'))
instanceDebug.log = console.debug.bind(console)
instance.debug = instanceDebug.bind(instanceDebug)
const instanceWarn = OriginalDebug([namespace, 'warn'].join(':'))
instanceWarn.log = console.warn.bind(console)
instance.warn = instanceWarn.bind(instanceWarn)
const instanceError = OriginalDebug([namespace, 'error'].join(':'))
instanceError.log = console.error.bind(console)
instance.error = instanceError.bind(instanceError)
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