{"version":3,"file":"console.cjs","sources":["../../../src/transports/console.ts"],"sourcesContent":["import { Transport } from './transport';\nimport { LogEvent, LogLevel, LogLevelValue } from '../logger';\nimport { isBrowser } from '../runtime';\nexport interface ConsoleTransportConfig {\n  prettyPrint?: boolean;\n  logLevel?: LogLevel;\n}\n\nconst levelColors: { [key: string]: any } = {\n  info: {\n    terminal: '32',\n    browser: 'lightgreen',\n  },\n  debug: {\n    terminal: '36',\n    browser: 'lightblue',\n  },\n  warn: {\n    terminal: '33',\n    browser: 'yellow',\n  },\n  error: {\n    terminal: '31',\n    browser: 'red',\n  },\n};\n\nexport class ConsoleTransport implements Transport {\n  private config: ConsoleTransportConfig;\n\n  constructor(config?: ConsoleTransportConfig) {\n    this.config = { ...config };\n  }\n\n  log: Transport['log'] = (logs) => {\n    logs.forEach((log) => {\n      if (\n        LogLevelValue[(log.level as LogLevel) ?? LogLevel.info] >= LogLevelValue[this.config.logLevel ?? LogLevel.info]\n      ) {\n        this.prettyPrint(log);\n      }\n    });\n  };\n\n  private isStandardLogEvent(log: any): log is LogEvent {\n    return typeof log === 'object' && log !== null && 'level' in log && 'message' in log && 'fields' in log;\n  }\n\n  prettyPrint(ev: LogEvent) {\n    const hasFields = ev.fields && Object.keys(ev.fields).length > 0;\n\n    // check whether pretty print is disabled\n    if (!this.config.prettyPrint) {\n      if (!this.isStandardLogEvent(ev)) {\n        console.log(ev);\n        return;\n      }\n      let msg = `${ev.level} - ${ev.message}`;\n      if (hasFields) {\n        msg += ' ' + JSON.stringify(ev.fields);\n      }\n      console.log(msg);\n      return;\n    }\n\n    if (!this.isStandardLogEvent(ev)) {\n      if (isBrowser) {\n        console.log('%c%s', `color: ${levelColors[LogLevel.info].browser};`, ev);\n      } else {\n        console.log(`\\x1b[${levelColors[LogLevel.info].terminal}m%s\\x1b[0m`, ev);\n      }\n      return;\n    }\n    // print indented message, instead of [object]\n    // We use the %o modifier instead of JSON.stringify because stringify will print the\n    // object as normal text, it loses all the functionality the browser gives for viewing\n    // objects in the console, such as expanding and collapsing the object.\n    let msgString = '';\n    let args: any[] = [ev.level, ev.message];\n\n    if (isBrowser) {\n      msgString = '%c%s - %s';\n      args = [`color: ${levelColors[ev.level].browser};`, ...args];\n    } else {\n      msgString = `\\x1b[${levelColors[ev.level].terminal}m%s\\x1b[0m - %s`;\n    }\n    // we check if the fields object is not empty, otherwise its printed as <empty string>\n    // or just \"\".\n    if (hasFields) {\n      msgString += ' %o';\n      args.push(ev.fields);\n    }\n\n    console.log.apply(console, [msgString, ...args]);\n  }\n\n  flush() {\n    return;\n  }\n}\n"],"names":["LogLevelValue","LogLevel","isBrowser"],"mappings":";;;;AAQA,MAAM,cAAsC;AAAA,EAC1C,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,SAAS;AAAA,EAAA;AAAA,EAEX,OAAO;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EAAA;AAAA,EAEX,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,SAAS;AAAA,EAAA;AAAA,EAEX,OAAO;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EAAA;AAEb;AAEO,MAAM,iBAAsC;AAAA,EACzC;AAAA,EAER,YAAY,QAAiC;AAC3C,SAAK,SAAS,EAAE,GAAG,OAAA;AAAA,EACrB;AAAA,EAEA,MAAwB,CAAC,SAAS;AAChC,SAAK,QAAQ,CAAC,QAAQ;AACpB,UACEA,OAAAA,cAAe,IAAI,SAAsBC,OAAAA,SAAS,IAAI,KAAKD,qBAAc,KAAK,OAAO,YAAYC,OAAAA,SAAS,IAAI,GAC9G;AACA,aAAK,YAAY,GAAG;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,mBAAmB,KAA2B;AACpD,WAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,WAAW,OAAO,aAAa,OAAO,YAAY;AAAA,EACtG;AAAA,EAEA,YAAY,IAAc;AACxB,UAAM,YAAY,GAAG,UAAU,OAAO,KAAK,GAAG,MAAM,EAAE,SAAS;AAG/D,QAAI,CAAC,KAAK,OAAO,aAAa;AAC5B,UAAI,CAAC,KAAK,mBAAmB,EAAE,GAAG;AAChC,gBAAQ,IAAI,EAAE;AACd;AAAA,MACF;AACA,UAAI,MAAM,GAAG,GAAG,KAAK,MAAM,GAAG,OAAO;AACrC,UAAI,WAAW;AACb,eAAO,MAAM,KAAK,UAAU,GAAG,MAAM;AAAA,MACvC;AACA,cAAQ,IAAI,GAAG;AACf;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,mBAAmB,EAAE,GAAG;AAChC,UAAIC,mBAAW;AACb,gBAAQ,IAAI,QAAQ,UAAU,YAAYD,gBAAS,IAAI,EAAE,OAAO,KAAK,EAAE;AAAA,MACzE,OAAO;AACL,gBAAQ,IAAI,QAAQ,YAAYA,OAAAA,SAAS,IAAI,EAAE,QAAQ,cAAc,EAAE;AAAA,MACzE;AACA;AAAA,IACF;AAKA,QAAI,YAAY;AAChB,QAAI,OAAc,CAAC,GAAG,OAAO,GAAG,OAAO;AAEvC,QAAIC,mBAAW;AACb,kBAAY;AACZ,aAAO,CAAC,UAAU,YAAY,GAAG,KAAK,EAAE,OAAO,KAAK,GAAG,IAAI;AAAA,IAC7D,OAAO;AACL,kBAAY,QAAQ,YAAY,GAAG,KAAK,EAAE,QAAQ;AAAA,IACpD;AAGA,QAAI,WAAW;AACb,mBAAa;AACb,WAAK,KAAK,GAAG,MAAM;AAAA,IACrB;AAEA,YAAQ,IAAI,MAAM,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,QAAQ;AACN;AAAA,EACF;AACF;;"}