@plugjs/plug
Version:
PlugJS Build System ===================
72 lines (71 loc) • 2.76 kB
TypeScript
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 {};