UNPKG

vega-lite

Version:

Vega-Lite is a concise high-level language for interactive visualization.

94 lines (77 loc) 1.96 kB
/** * Vega-Lite's singleton logger utility. */ import {Debug, Error as ErrorLevel, Info, logger, LoggerInterface, Warn} from 'vega-util'; export * as message from './message.js'; /** * Main (default) Vega Logger instance for Vega-Lite. */ const main = logger(Warn); let current: LoggerInterface = main; /** * Logger tool for checking if the code throws correct warning. */ export class LocalLogger implements LoggerInterface { public warns: any[] = []; public infos: any[] = []; public debugs: any[] = []; #level: number = Warn; public level(): number; public level(_: number): this; public level(_?: number) { if (_) { this.#level = _; return this; } return this.#level; } public warn(...args: readonly any[]) { if (this.#level >= Warn) this.warns.push(...args); return this; } public info(...args: readonly any[]) { if (this.#level >= Info) this.infos.push(...args); return this; } public debug(...args: readonly any[]) { if (this.#level >= Debug) this.debugs.push(...args); return this; } public error(...args: readonly any[]): this { if (this.#level >= ErrorLevel) throw Error(...args); return this; } } export function wrap(f: (logger: LocalLogger) => void) { return () => { current = new LocalLogger(); f(current as LocalLogger); reset(); }; } /** * Set the singleton logger to be a custom logger. */ export function set(newLogger: LoggerInterface) { current = newLogger; return current; } /** * Reset the main logger to use the default Vega Logger. */ export function reset() { current = main; return current; } export function error(...args: readonly any[]) { current.error(...args); } export function warn(...args: readonly any[]) { current.warn(...args); } export function info(...args: readonly any[]) { current.info(...args); } export function debug(...args: readonly any[]) { current.debug(...args); }