Skip to content

Commit 08677a5

Browse files
committed
fix(log): export some better typings
1 parent 310fb3a commit 08677a5

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

packages/log/src/index.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,17 @@ export interface LogOptions {
1515
transports?: Transport[];
1616
}
1717

18-
type LogIndex = {
19-
[key in MethodFactoryLevels]: typeof console.log;
20-
};
21-
2218
export interface Log {
2319
level: MethodFactoryLevels;
2420
}
25-
export type DotLog = Log & Omit<LogIndex, 'silent'>;
21+
export type ConsoleLogFn = typeof console.log;
22+
export type DotLog = ReturnType<typeof loglevel.create> & {
23+
debug: ConsoleLogFn;
24+
error: ConsoleLogFn;
25+
info: ConsoleLogFn;
26+
trace: ConsoleLogFn;
27+
warn: ConsoleLogFn;
28+
};
2629

2730
const defaultEnv = { DOT_LOG_LEVEL: 'info' };
2831
const ready = defer();
@@ -66,7 +69,18 @@ export const getLog = (opts?: LogOptions) => {
6669

6770
const log = loglevel.create(logOptions);
6871

69-
return log as unknown as DotLog;
72+
return Object.assign(log, {
73+
get level(): MethodFactoryLevels {
74+
const numLevel = log.level;
75+
const levelNames = ['trace', 'debug', 'info', 'warn', 'error', 'silent'];
76+
return levelNames[numLevel] as MethodFactoryLevels;
77+
},
78+
set level(newLevel: MethodFactoryLevels) {
79+
// eslint-disable-next-line sort-keys
80+
const levelMap = { trace: 0, debug: 1, info: 2, warn: 3, error: 4, silent: 5 } as const;
81+
log.level = levelMap[newLevel as keyof typeof levelMap];
82+
}
83+
}) as DotLog;
7084
};
7185

7286
/**

0 commit comments

Comments
 (0)