Skip to content

Commit ef97171

Browse files
authored
Fix bugs in createLogger type (#1807)
* fix createLogger type * fix to follow master
1 parent 0e1c812 commit ef97171

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

index.d.ts

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ declare namespace winston {
5858
[optionName: string]: any;
5959
}
6060

61-
interface LogMethod {
61+
interface LogMethod {
6262
(level: string, message: string, callback: LogCallback): Logger;
6363
(level: string, message: string, meta: any, callback: LogCallback): Logger;
6464
(level: string, message: string, ...meta: any[]): Logger;
@@ -74,8 +74,8 @@ declare namespace winston {
7474
(infoObject: object): Logger;
7575
}
7676

77-
interface LoggerOptions {
78-
levels?: Config.AbstractConfigSetLevels;
77+
interface LoggerOptions<T extends Config.AbstractConfigSetLevels = Config.AbstractConfigSetLevels> {
78+
levels?: T;
7979
silent?: boolean;
8080
format?: logform.Format;
8181
level?: string;
@@ -86,7 +86,29 @@ declare namespace winston {
8686
exceptionHandlers?: any;
8787
}
8888

89-
interface Logger extends NodeJSStream.Transform {
89+
type DefaulLevels = {
90+
// for cli and npm levels
91+
error: number;
92+
warn: number;
93+
help: number;
94+
data: number;
95+
info: number;
96+
debug: number;
97+
prompt: number;
98+
http: number;
99+
verbose: number;
100+
input: number;
101+
silly: number;
102+
103+
// for syslog levels only
104+
emerg: number;
105+
alert: number;
106+
crit: number;
107+
warning: number;
108+
notice: number;
109+
}
110+
111+
type Logger<T extends Config.AbstractConfigSetLevels = DefaulLevels> = NodeJSStream.Transform & {
90112
silent: boolean;
91113
format: logform.Format;
92114
levels: Config.AbstractConfigSetLevels;
@@ -103,26 +125,6 @@ declare namespace winston {
103125
clear(): Logger;
104126
close(): Logger;
105127

106-
// for cli and npm levels
107-
error: LeveledLogMethod;
108-
warn: LeveledLogMethod;
109-
help: LeveledLogMethod;
110-
data: LeveledLogMethod;
111-
info: LeveledLogMethod;
112-
debug: LeveledLogMethod;
113-
prompt: LeveledLogMethod;
114-
http: LeveledLogMethod;
115-
verbose: LeveledLogMethod;
116-
input: LeveledLogMethod;
117-
silly: LeveledLogMethod;
118-
119-
// for syslog levels only
120-
emerg: LeveledLogMethod;
121-
alert: LeveledLogMethod;
122-
crit: LeveledLogMethod;
123-
warning: LeveledLogMethod;
124-
notice: LeveledLogMethod;
125-
126128
query(options?: QueryOptions, callback?: (err: Error, results: any) => void): any;
127129
stream(options?: any): NodeJS.ReadableStream;
128130

@@ -142,7 +144,7 @@ declare namespace winston {
142144
isSillyEnabled(): boolean;
143145

144146
new(options?: LoggerOptions): Logger;
145-
}
147+
} & {[K in keyof T]: LeveledLogMethod;}
146148

147149
interface Container {
148150
loggers: Map<string, Logger>;
@@ -162,7 +164,7 @@ declare namespace winston {
162164
let loggers: Container;
163165

164166
let addColors: (target: Config.AbstractConfigSetColors) => any;
165-
let createLogger: (options?: LoggerOptions) => Logger;
167+
let createLogger: <T extends Config.AbstractConfigSetLevels = DefaulLevels>(options?: LoggerOptions<T>) => Logger<T>;
166168

167169
// Pass-through npm level methods routed to the default logger.
168170
let error: LeveledLogMethod;

0 commit comments

Comments
 (0)