From 81d09ad01c92a9547cdb388044b3b3ce8b077aca Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Fri, 12 Jun 2020 14:27:41 +0100 Subject: feat(std/log): inline and deferred statement resolution logging (#5192) --- std/log/mod.ts | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 79 insertions(+), 10 deletions(-) (limited to 'std/log/mod.ts') diff --git a/std/log/mod.ts b/std/log/mod.ts index e596c81ba..f59a84449 100644 --- a/std/log/mod.ts +++ b/std/log/mod.ts @@ -72,16 +72,85 @@ export function getLogger(name?: string): Logger { return result; } -export const debug = (msg: string, ...args: unknown[]): void => - getLogger("default").debug(msg, ...args); -export const info = (msg: string, ...args: unknown[]): void => - getLogger("default").info(msg, ...args); -export const warning = (msg: string, ...args: unknown[]): void => - getLogger("default").warning(msg, ...args); -export const error = (msg: string, ...args: unknown[]): void => - getLogger("default").error(msg, ...args); -export const critical = (msg: string, ...args: unknown[]): void => - getLogger("default").critical(msg, ...args); +export function debug(msg: () => T, ...args: unknown[]): T | undefined; +export function debug( + msg: T extends Function ? never : T, + ...args: unknown[] +): T; +export function debug( + msg: (T extends Function ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").debug(msg, ...args); + } + return getLogger("default").debug(msg, ...args); +} + +export function info(msg: () => T, ...args: unknown[]): T | undefined; +export function info( + msg: T extends Function ? never : T, + ...args: unknown[] +): T; +export function info( + msg: (T extends Function ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").info(msg, ...args); + } + return getLogger("default").info(msg, ...args); +} + +export function warning(msg: () => T, ...args: unknown[]): T | undefined; +export function warning( + msg: T extends Function ? never : T, + ...args: unknown[] +): T; +export function warning( + msg: (T extends Function ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").warning(msg, ...args); + } + return getLogger("default").warning(msg, ...args); +} + +export function error(msg: () => T, ...args: unknown[]): T | undefined; +export function error( + msg: T extends Function ? never : T, + ...args: unknown[] +): T; +export function error( + msg: (T extends Function ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").error(msg, ...args); + } + return getLogger("default").error(msg, ...args); +} + +export function critical(msg: () => T, ...args: unknown[]): T | undefined; +export function critical( + msg: T extends Function ? never : T, + ...args: unknown[] +): T; +export function critical( + msg: (T extends Function ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").critical(msg, ...args); + } + return getLogger("default").critical(msg, ...args); +} export async function setup(config: LogConfig): Promise { state.config = { -- cgit v1.2.3