UNPKG

@plugjs/plug

Version:
72 lines (71 loc) 2.76 kB
import type { LogEmitter } from './emit'; import type { LogLevel } from './levels'; import type { Report } from './report'; /** The basic interface giving access to log facilities. */ export interface Log { /** Log a `TRACE` message */ trace(...args: [any, ...any]): void; /** Log a `DEBUG` message */ debug(...args: [any, ...any]): void; /** Log an `INFO` message */ info(...args: [any, ...any]): void; /** Log a `NOTICE` message */ notice(...args: [any, ...any]): void; /** Log a `WARNING` message */ warn(...args: [any, ...any]): void; /** Log an `ERROR` message */ error(...args: [any, ...any]): void; /** Log an `ERROR` message and fail the build */ fail(...args: [any, ...any]): never; } /** A {@link Logger} extends the basic {@link Log} adding some state. */ export interface Logger extends Log { /** The current level for logging. */ level: LogLevel; /** The current indent level for logging. */ indent: number; /** Enter a sub-level of logging, increasing indent */ enter(): void; /** Enter a sub-level of logging, increasing indent */ enter(evel: LogLevel, message: string): void; /** Leave a sub-level of logging, decreasing indent */ leave(): void; /** Leave a sub-level of logging, decreasing indent */ leave(level: LogLevel, message: string): void; /** Create a {@link Report} associated with this instance */ report(title: string): Report; } /** Return a {@link Logger} associated with the specified task name. */ export declare function getLogger(task?: string, indent?: number): Logger; /** Default implementation of the {@link Logger} interface. */ declare class LoggerImpl implements Logger { private readonly _task; private readonly _emitter; indent: number; private readonly _stack; level: LogLevel; constructor(_task: string, _emitter: LogEmitter, indent: number); private _emit; trace(...args: [any, ...any]): void; debug(...args: [any, ...any]): void; info(...args: [any, ...any]): void; notice(...args: [any, ...any]): void; warn(...args: [any, ...any]): void; error(...args: [any, ...any]): void; fail(...args: [any, ...any]): never; enter(): void; enter(level: LogLevel, message: string): void; leave(): void; leave(level: LogLevel, message: string): void; report(title: string): Report; } /** A test logger, writing to a buffer always _without_ colors/indent */ export declare class TestLogger extends LoggerImpl { private _lines; constructor(); /** Return the _current_ buffer for this instance */ get buffer(): string; /** Reset the buffer and return any previously buffered text */ reset(): string; } export {};