Форматтеры преобразуют массив входных данных в строку. Все форматтеры наследуют абстрактный класс BaseFormatter.
abstract class BaseFormatter<Input extends LoggerInput<T>, T = never> {
public constructor(protected readonly separator: string = "\n") {}
public execute(input: Input[]): string;
public filter(input: LoggerInput[]): { can: Input[]; cannot: LoggerInput[] };
public abstract canFormat(input: LoggerInput): boolean;
protected abstract format(input: Input[]): string[];
}
execute — применяет форматирование и соединяет результат через разделитель.filter — разделяет входной массив на те элементы, которые может обработать форматтер, и остальные.canFormat — проверяет, может ли форматтер обработать конкретное значение.format — преобразует массив обработанных данных в массив строк.Вызывает toString() у объектов, которые имеют этот метод.
class DefaultFormatter extends BaseFormatter<{ toString(): string }>
Форматирует ошибки в строку с именем, сообщением, причиной (cause) и стеком.
class ErrorFormatter extends BaseFormatter<Error>
Преобразует null и undefined в строки "null" и "undefined".
class NullableFormatter extends BaseFormatter<Nullable>
Составной форматтер, который применяет массив форматтеров последовательно. Каждый форматтер обрабатывает свою часть данных. Если после всех форматтеров остались необработанные данные, они преобразуются через toString().
class FormatterHandler extends BaseFormatter<LoggerInput> {
public constructor(private readonly formatters: BaseFormatter<LoggerInput>[]);
}