export type LogLevel = keyof NamespacedLogger & keyof Console; type LogData = Parameters; export class NamespacedLogger { #prefix: string; constructor(namespace: string) { this.#prefix = `${namespace}:`; } add(level: LogLevel, ...data: LogData): void { this[level](...data); } info(...data: Parameters): void { console.info(this.#prefix, ...data); } warn(...data: Parameters): void { console.warn(this.#prefix, ...data); } error(...data: Parameters): void { console.error(this.#prefix, ...data); } }