1 |
|
2 | export 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 |
|
16 | export interface DebugFormatters {
|
17 | [formatter: string]: (v: any) => string
|
18 | }
|
19 |
|
20 | export interface IDebugger {
|
21 |
|
22 | (...args: any[]): void
|
23 | debug: (...args: any[]) => void
|
24 | info: (...args: any[]) => void
|
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 |
|
34 | }
|
35 |
|
36 | export enum DebugLogLevel {
|
37 | debug = 'debug',
|
38 | info = 'info',
|
39 | warn = 'warn',
|
40 | error = 'error',
|
41 | }
|
42 |
|
43 | const OriginalDebug = require('debug') as IDebug
|
44 |
|
45 | export const Debug = ((namespace: string) => {
|
46 | const instance = OriginalDebug(namespace)
|
47 | instance.log = console.log.bind(console)
|
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
|
64 | Debug.coerce = OriginalDebug.coerce.bind(OriginalDebug)
|
65 | Debug.disable = OriginalDebug.disable.bind(OriginalDebug)
|
66 | Debug.enable = OriginalDebug.enable.bind(OriginalDebug)
|
67 | Debug.enabled = OriginalDebug.enabled.bind(OriginalDebug)
|
68 | Debug.log = OriginalDebug.log.bind(OriginalDebug)
|
69 | Debug.names = OriginalDebug.names
|
70 | Debug.skips = OriginalDebug.skips
|
71 | Debug.formatters = OriginalDebug.formatters
|
72 |
|
\ | No newline at end of file |