From 4a08ef02bc48ddc887f2b91713520eda50793a27 Mon Sep 17 00:00:00 2001 From: Regev Brody Date: Thu, 7 May 2020 14:31:53 +0300 Subject: [PATCH] feat(types): add missing typescript definitions for reporters (#94) --- src/index.js | 1 + src/logLevels.js | 10 +++++++ src/types.js | 24 ++++++++------- types/consola.d.ts | 74 ++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 92 insertions(+), 17 deletions(-) create mode 100644 src/logLevels.js diff --git a/src/index.js b/src/index.js index be61056..dacee74 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ export { default as Consola } from './consola' export { default as Types } from './types' +export { LogLevel } from './logLevels' export { isLogObj } from './utils' export { assignGlobalConsola } from './utils/global' diff --git a/src/logLevels.js b/src/logLevels.js new file mode 100644 index 0000000..a98bc48 --- /dev/null +++ b/src/logLevels.js @@ -0,0 +1,10 @@ +export const LogLevel = {} +LogLevel[LogLevel.Fatal = 0] = 'Fatal' +LogLevel[LogLevel.Error = 0] = 'Error' +LogLevel[LogLevel.Warn = 1] = 'Warn' +LogLevel[LogLevel.Log = 2] = 'Log' +LogLevel[LogLevel.Info = 3] = 'Info' +LogLevel[LogLevel.Success = 3] = 'Success' +LogLevel[LogLevel.Debug = 4] = 'Debug' +LogLevel[LogLevel.Trace = 5] = 'Trace' +LogLevel[LogLevel.Silent = Infinity] = 'Silent' diff --git a/src/types.js b/src/types.js index cc011a9..bb67fcd 100644 --- a/src/types.js +++ b/src/types.js @@ -1,44 +1,46 @@ +import { LogLevel } from './logLevels' + export default { // Level 0 fatal: { - level: 0 + level: LogLevel.Fatal }, error: { - level: 0 + level: LogLevel.Error }, // Level 1 warn: { - level: 1 + level: LogLevel.Warn }, // Level 2 log: { - level: 2 + level: LogLevel.Log }, // Level 3 info: { - level: 3 + level: LogLevel.Info }, success: { - level: 3 + level: LogLevel.Success }, // Level 4 debug: { - level: 4 + level: LogLevel.Debug }, // Level 5 trace: { - level: 5 + level: LogLevel.Trace }, // Silent silent: { - level: Infinity + level: LogLevel.Silent }, // Legacy ready: { - level: 3 + level: LogLevel.Info }, start: { - level: 3 + level: LogLevel.Info } } diff --git a/types/consola.d.ts b/types/consola.d.ts index bbb1477..7da87da 100644 --- a/types/consola.d.ts +++ b/types/consola.d.ts @@ -1,10 +1,25 @@ +import { InspectOptions } from 'util'; + +export enum LogLevel { + Fatal= 0, + Error= 0, + Warn= 1, + Log= 2, + Info= 3, + Success= 3, + Debug= 4, + Trace= 5, + Silent= Infinity, +} + export interface ConsolaLogObject { - level?: number, + level?: LogLevel, tag?: string, type?: string, message?: string, additional?: string | string[], args?: any[], + date?: Date, } type ConsolaMock = (...args: any) => void @@ -13,8 +28,8 @@ type ConsolaMockFn = (type: string, defaults: ConsolaLogObject) => ConsolaMock export interface ConsolaReporterArgs { async: boolean, - stdout: any, - stderr: any, + stdout: NodeJS.WritableStream, + stderr: NodeJS.WritableStream, } export interface ConsolaReporter { @@ -24,7 +39,7 @@ export interface ConsolaReporter { export interface ConsolaOptions { reporters?: ConsolaReporter[], types?: { [type: string]: ConsolaLogObject }, - level?: number, + level?: LogLevel, defaults?: ConsolaLogObject, async?: boolean, stdout?: any, @@ -36,7 +51,7 @@ export interface ConsolaOptions { export declare class Consola { constructor(options: ConsolaOptions) - level: number + level: LogLevel readonly stdout: any readonly stderr: any @@ -87,8 +102,55 @@ export declare class Consola { mock(mockFn: ConsolaMockFn): any } +export interface BasicReporterOptions { + dateFormat?: string; + formatOptions?: InspectOptions; +} + +export declare class BasicReporter implements ConsolaReporter { + protected options: BasicReporterOptions; + + constructor(options?: BasicReporterOptions); + + public log(logObj: ConsolaLogObject, args: ConsolaReporterArgs): void; + + protected formatStack(stack: string): string; + protected formatArgs(args: any[]): string; + protected formatDate(date: Date): string; + protected filterAndJoin(arr: Array): string; + protected formatLogObj(logObj: ConsolaLogObject): string; +} + +export interface FancyReporterOptions extends BasicReporterOptions{ + secondaryColor?: string; +} + +export declare class FancyReporter extends BasicReporter { + constructor(options?: FancyReporterOptions); + + protected formatType(logObj: ConsolaLogObject): void; +} + +export type BrowserReporterOptions = {}; + export declare class BrowserReporter implements ConsolaReporter { - log: (logObj: ConsolaLogObject, args: ConsolaReporterArgs) => void + public log(logObj: ConsolaLogObject, args: ConsolaReporterArgs): void; +} + +export type JSONReporterOptions = { + stream?: NodeJS.WritableStream; +}; + +export declare class JSONReporter implements ConsolaReporter { + constructor(options?: JSONReporterOptions); + public log(logObj: ConsolaLogObject, args: ConsolaReporterArgs): void; +} + +export type Winston = any; + +export declare class WinstonReporter implements ConsolaReporter { + constructor(logger?: Winston); + public log(logObj: ConsolaLogObject, args: ConsolaReporterArgs): void; } declare const consolaGlobalInstance: Consola;