{"version":3,"file":"index.cjs","sources":["../src/index.js"],"sourcesContent":["import { TRACE, DEBUG, INFO, WARN, ERROR, FATAL, nameFromLevel } from '@browser-bunyan/levels';\nconst DEFAULT_CSS = {\n    levels: {\n        trace: 'color: DeepPink',\n        debug: 'color: GoldenRod',\n        info: 'color: DarkTurquoise',\n        warn: 'color: Purple',\n        error: 'color: Crimson',\n        fatal: 'color: Black',\n    },\n    def: 'color: DimGray',\n    msg: 'color: SteelBlue',\n    src: 'color: DimGray; font-style: italic; font-size: 0.9em',\n};\n\nexport class ConsoleFormattedStream {\n\n    constructor({ logByLevel = false, css = DEFAULT_CSS } = {}) {\n        this.logByLevel = logByLevel;\n        this.css = css;\n    }\n\n    write(rec) {\n        let levelCss, consoleMethod;\n        const defaultCss = this.css.def;\n        const msgCss = this.css.msg;\n        const srcCss = this.css.src;\n\n        const loggerName = rec.childName ? rec.name + '/' + rec.childName : rec.name;\n\n        //get level name and pad start with spacs\n        let levelName = nameFromLevel[rec.level];\n        const formattedLevelName = (Array(6 - levelName.length).join(' ') + levelName).toUpperCase();\n\n        if (this.logByLevel) {\n            if (rec.level === TRACE) {\n                levelName = 'debug';\n            } else if (rec.level === FATAL) {\n                levelName = 'error';\n            }\n            consoleMethod = typeof console[levelName] === 'function' ? console[levelName] : console.log;\n        } else {\n            consoleMethod = console.log;\n        }\n\n        if (rec.level < DEBUG) {\n            levelCss = this.css.levels.trace;\n        } else if (rec.level < INFO) {\n            levelCss = this.css.levels.debug;\n        } else if (rec.level < WARN) {\n            levelCss = this.css.levels.info;\n        } else if (rec.level < ERROR) {\n            levelCss = this.css.levels.warn;\n        } else if (rec.level < FATAL) {\n            levelCss = this.css.levels.error;\n        } else {\n            levelCss = this.css.levels.fatal;\n        }\n\n        const padZeros = (number, len) => Array((len + 1) - (number + '').length).join('0') + number;\n\n        const logArgs = [];\n        // [time] level: loggerName: msg src?\n        logArgs.push(`[%s:%s:%s:%s] %c%s%c: %s: %c%s ${rec.src ? '%c%s' : ''}`);\n        logArgs.push(padZeros(rec.time.getHours(), 2));\n        logArgs.push(padZeros(rec.time.getMinutes(), 2));\n        logArgs.push(padZeros(rec.time.getSeconds(), 2));\n        logArgs.push(padZeros(rec.time.getMilliseconds(), 4));\n        logArgs.push(levelCss);\n        logArgs.push(formattedLevelName);\n        logArgs.push(defaultCss);\n        logArgs.push(loggerName);\n        logArgs.push(msgCss);\n        logArgs.push(rec.msg);\n        if (rec.src) {\n            logArgs.push(srcCss);\n            logArgs.push(rec.src);\n        }\n        if (rec.obj) {\n            logArgs.push('\\n');\n            logArgs.push(rec.obj);\n        }\n        if (rec.err && rec.err.stack) {\n            logArgs.push('\\n');\n            logArgs.push(rec.err.stack);\n        }\n        consoleMethod.apply(console, logArgs);\n    }\n\n    static getDefaultCss() {\n        return DEFAULT_CSS;\n    }\n}"],"names":["DEFAULT_CSS","levels","trace","debug","info","warn","error","fatal","def","msg","src","logByLevel","css","this","write","rec","levelCss","consoleMethod","defaultCss","msgCss","srcCss","loggerName","childName","name","levelName","nameFromLevel","level","formattedLevelName","Array","length","join","toUpperCase","TRACE","FATAL","console","log","DEBUG","INFO","WARN","ERROR","padZeros","number","len","logArgs","push","time","getHours","getMinutes","getSeconds","getMilliseconds","obj","err","stack","apply","getDefaultCss"],"mappings":"wCACMA,EAAc,CAChBC,OAAQ,CACJC,MAAO,kBACPC,MAAO,mBACPC,KAAM,uBACNC,KAAM,gBACNC,MAAO,iBACPC,MAAO,gBAEXC,IAAK,iBACLC,IAAK,mBACLC,IAAK,+GAKL,+BAAwD,SAA1CC,eAAoBC,IAAAA,aAAMZ,IACpCa,KAAKF,yBACLE,KAAKD,IAAMA,qBAGfE,MAAA,SAAMC,GACF,IAAIC,EAAUC,EACRC,EAAaL,KAAKD,IAAIJ,IACtBW,EAASN,KAAKD,IAAIH,IAClBW,EAASP,KAAKD,IAAIF,IAElBW,EAAaN,EAAIO,UAAYP,EAAIQ,KAAO,IAAMR,EAAIO,UAAYP,EAAIQ,KAGpEC,EAAYC,gBAAcV,EAAIW,OAC5BC,GAAsBC,MAAM,EAAIJ,EAAUK,QAAQC,KAAK,KAAON,GAAWO,cAE3ElB,KAAKF,YACDI,EAAIW,QAAUM,QACdR,EAAY,QACLT,EAAIW,QAAUO,UACrBT,EAAY,SAEhBP,EAA8C,mBAAvBiB,QAAQV,GAA4BU,QAAQV,GAAaU,QAAQC,KAExFlB,EAAgBiB,QAAQC,IAIxBnB,EADAD,EAAIW,MAAQU,QACDvB,KAAKD,IAAIX,OAAOC,MACpBa,EAAIW,MAAQW,OACRxB,KAAKD,IAAIX,OAAOE,MACpBY,EAAIW,MAAQY,OACRzB,KAAKD,IAAIX,OAAOG,KACpBW,EAAIW,MAAQa,QACR1B,KAAKD,IAAIX,OAAOI,KACpBU,EAAIW,MAAQO,QACRpB,KAAKD,IAAIX,OAAOK,MAEhBO,KAAKD,IAAIX,OAAOM,MAG/B,IAAMiC,EAAW,SAACC,EAAQC,UAAQd,MAAOc,EAAM,GAAMD,EAAS,IAAIZ,QAAQC,KAAK,KAAOW,GAEhFE,EAAU,GAEhBA,EAAQC,wCAAuC7B,EAAIL,IAAM,OAAS,KAClEiC,EAAQC,KAAKJ,EAASzB,EAAI8B,KAAKC,WAAY,IAC3CH,EAAQC,KAAKJ,EAASzB,EAAI8B,KAAKE,aAAc,IAC7CJ,EAAQC,KAAKJ,EAASzB,EAAI8B,KAAKG,aAAc,IAC7CL,EAAQC,KAAKJ,EAASzB,EAAI8B,KAAKI,kBAAmB,IAClDN,EAAQC,KAAK5B,GACb2B,EAAQC,KAAKjB,GACbgB,EAAQC,KAAK1B,GACbyB,EAAQC,KAAKvB,GACbsB,EAAQC,KAAKzB,GACbwB,EAAQC,KAAK7B,EAAIN,KACbM,EAAIL,MACJiC,EAAQC,KAAKxB,GACbuB,EAAQC,KAAK7B,EAAIL,MAEjBK,EAAImC,MACJP,EAAQC,KAAK,MACbD,EAAQC,KAAK7B,EAAImC,MAEjBnC,EAAIoC,KAAOpC,EAAIoC,IAAIC,QACnBT,EAAQC,KAAK,MACbD,EAAQC,KAAK7B,EAAIoC,IAAIC,QAEzBnC,EAAcoC,MAAMnB,QAASS,MAG1BW,cAAP,WACI,OAAOtD"}