Основные типы экспортируются из пакета. Ниже приведены наиболее важные.
Тип данных, которые можно передать в логгер. Может быть объектом с toString(), null/undefined, ошибкой или пользовательским типом T.
type LoggerInput<T = never> = Prettify<
{ toString(): string } | Nullable | Error | T
>;
Настройки уровней логирования.
export type LoggerLevels<Levels extends Record<string, number>> = {
readonly levels: Levels;
readonly level: keyof Levels;
};
Контекст вызова (включает уровень и флаги).
type LoggerContext<Levels extends Record<string, number>> =
BaseLoggerContext & {
readonly level: keyof Levels;
};
Базовая часть контекста.
type BaseLoggerContext = {
readonly separator?: string;
readonly writeFile?: boolean;
readonly log?: boolean;
};
Параметры конструктора логгера.
type LoggerConstructor<Levels extends Record<string, number>, T = never> = {
readonly timestampService?: TimestampServiceType;
readonly fileService?: FileServiceType;
readonly formatterHandler?: BaseFormatter<LoggerInput<T>, T>;
readonly name: string;
readonly userInputSettings?: Partial<UserInputSettings>;
readonly baseLevels: LoggerLevels<Levels>;
readonly baseContext?: BaseLoggerContext;
};
Настройки для пользовательского ввода.
type UserInputSettings = {
readonly prefix: string;
readonly separator: string;
};
Интерфейс файлового сервиса.
type FileServiceType = {
read(): Promise<string>;
write(data: string): Promise<boolean>;
overwrite(data: string): Promise<void>;
delete(): Promise<void>;
close(): void;
};
Интерфейс сервиса временных меток.
type TimestampServiceType = {
execute(date?: Date): string;
};
Интерфейс для обёртки строки.
type WrapperType = {
execute(value: string): string;
};
Интерфейс для включаемых/выключаемых компонентов.
type TurnableType<Type, Return = Type> = {
readonly enabled: boolean;
execute(value: Type, use?: boolean): Return;
enable(): void;
disable(): void;
turn(on: boolean): void;
};
Типы для аффиксов.
type Affix = "prefix" | "suffix";
type AffixType = { execute(affix: string, value: string): string };
type AffixHandlerType<Affixes extends AffixType[]> = {
execute(affixes: AllToString<Affixes>, value: string): string;
};
Входной параметр для методов execute и read.
type InputParameter<T = never> = LoggerInput<T> | LoggerInput<T>[];
Настройки для метода read.
type LoggerReadListeners = {
onReadable?: () => void;
onError?: (error: unknown) => void;
onEnd?: () => void;
onData?: (chunk: unknown) => void;
onStart?: () => void;
};
type LoggerReadListenersParameter = {
listeners?: (input: ReadStream) => LoggerReadListeners;
};
type LoggerReadConfigurationParameter<Levels extends string> =
LoggerBaseConfigurationParameter<Levels> & LoggerReadListenersParameter;