UNPKG

2.14 kBPlain TextView Raw
1// Types based on @types/debug
2export interface IDebug {
3 (namespace: string): IDebugger
4 coerce: (val: any) => any
5 disable: () => string
6 enable: (namespaces: string) => void
7 enabled: (namespaces: string) => boolean
8 log: (...args: any[]) => any
9
10 names: RegExp[]
11 skips: RegExp[]
12
13 formatters: DebugFormatters
14}
15
16export interface DebugFormatters {
17 [formatter: string]: (v: any) => string
18}
19
20export interface IDebugger {
21 // (formatter: any, ...args: any[]): void;
22 (...args: any[]): void
23 debug: (...args: any[]) => void
24 info: (...args: any[]) => void // alias to just log()
25 warn: (...args: any[]) => void
26 error: (...args: any[]) => void
27
28 color: string
29 enabled: boolean
30 log: (...args: any[]) => any
31 namespace: string
32 destroy: () => boolean
33 // extend: (namespace: string, delimiter?: string) => IDebugger
34}
35
36export enum DebugLogLevel {
37 debug = 'debug',
38 info = 'info',
39 warn = 'warn',
40 error = 'error',
41}
42
43const OriginalDebug = require('debug') as IDebug
44
45export const Debug = ((namespace: string) => {
46 const instance = OriginalDebug(namespace)
47 instance.log = console.log.bind(console) // this enables colors for objects
48 instance.info = instance.bind(instance)
49
50 const instanceDebug = OriginalDebug([namespace, 'debug'].join(':'))
51 instanceDebug.log = console.debug.bind(console)
52 instance.debug = instanceDebug.bind(instanceDebug)
53
54 const instanceWarn = OriginalDebug([namespace, 'warn'].join(':'))
55 instanceWarn.log = console.warn.bind(console)
56 instance.warn = instanceWarn.bind(instanceWarn)
57
58 const instanceError = OriginalDebug([namespace, 'error'].join(':'))
59 instanceError.log = console.error.bind(console)
60 instance.error = instanceError.bind(instanceError)
61
62 return instance
63}) as IDebug
64Debug.coerce = OriginalDebug.coerce.bind(OriginalDebug)
65Debug.disable = OriginalDebug.disable.bind(OriginalDebug)
66Debug.enable = OriginalDebug.enable.bind(OriginalDebug)
67Debug.enabled = OriginalDebug.enabled.bind(OriginalDebug)
68Debug.log = OriginalDebug.log.bind(OriginalDebug)
69Debug.names = OriginalDebug.names
70Debug.skips = OriginalDebug.skips
71Debug.formatters = OriginalDebug.formatters
72
\No newline at end of file