/** * Base type for logging levels. */ enum LoggingLevel { Silent = 0, Success = 1, Error = 2, Warning = 3, Info = 4, Debug = 5, Verbose = 6, } /** * Returns true if the given element is a logging level. * @param something * @return boolean */ const isLoggingLevel = (something: any): something is LoggingLevel => { return [ LoggingLevel.Silent, LoggingLevel.Success, LoggingLevel.Error, LoggingLevel.Warning, LoggingLevel.Info, LoggingLevel.Debug, LoggingLevel.Verbose ].includes(something) } /** * Base type for a message written to the log. */ interface LogMessage { level: LoggingLevel, date: Date, output: any, caller_name: string, } /** * Returns true if the given object is a log message. * @param something * @return boolean */ const isLogMessage = (something: any): something is LogMessage => { return isLoggingLevel(something?.level) && something?.date instanceof Date; } export { LoggingLevel, LogMessage, isLoggingLevel, isLogMessage }