export enum Color { Black , Red , Green , Yellow , Grey , LightGrey } export enum TextDecoration { Bold } export abstract class Logger { private readonly indentationSize : number = 2 ; private indentationLevel : number = 0 ; protected get indentation ( ) { return ' ' . repeat ( this . indentationSize * this . indentationLevel ) ; } public increaseIndentation ( ) { ++ this . indentationLevel ; } public decreaseIndentation ( ) { -- this . indentationLevel ; } abstract debug ( message ? ) ; abstract info ( message ? ) ; abstract warn ( message ? ) ; abstract error ( message ? ) ; abstract format ( message , color , textDecorations ? ) ; abstract create ( ) ; }