{"version":3,"sources":["common/appContext/consoleLogger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,MAAM,EAAE,MAAM,cAAc,CAAC;AASjD,wBAAgB,UAAU,CAAC,QAAQ,KAAA,yBAgBlC;AAED,qBAAa,aAAc,YAAW,MAAM;IACnC,QAAQ,SAAK;gBAER,QAAQ,SAAY;IAIzB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAO1C,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAI7B,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAI7B,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAI5B,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAI5B,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAI7B,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAIpC,MAAM,KAAK,YAAY,WAAkF;CAC1G;AAwBD,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAMjD","file":"../../../common/appContext/consoleLogger.d.ts","sourcesContent":["import { Provider, singletonProvider } from '../provider.js';\nimport AppContext, { ConfigEntry, getTools } from './appContext.js';\nimport { configKey, Logger } from './logging.js';\n\nconst traceLevel = 1;\nconst debugLevel = 2;\nconst infoLevel = 3;\nconst warnLevel = 4;\nconst errorLevel = 5;\nconst fatalLevel = 6;\n\nexport function strToLevel(levelStr) {\n  const key = (levelStr || 'info').toLowerCase();\n  switch (key) {\n    case 'fatal':\n      return fatalLevel;\n    case 'error':\n      return errorLevel;\n    case 'warn':\n      return warnLevel;\n    case 'debug':\n      return debugLevel;\n    case 'trace':\n      return traceLevel;\n    default:\n      return infoLevel;\n  }\n}\n\nexport class ConsoleLogger implements Logger {\n  public minLevel = 0;\n\n  constructor(minLevel = infoLevel) {\n    this.minLevel = minLevel;\n  }\n\n  public log(level: number, info: any, msg?: string) {\n    if (level >= this.minLevel) {\n      // eslint-disable-next-line\n      console.log({ ...info, msg: msg || info.msg });\n    }\n  }\n\n  public fatal(info: any, msg?: string) {\n    this.log(fatalLevel, info, msg);\n  }\n\n  public error(info: any, msg?: string) {\n    this.log(errorLevel, info, msg);\n  }\n\n  public warn(info: any, msg?: string) {\n    this.log(warnLevel, info, msg);\n  }\n\n  public info(info: any, msg?: string) {\n    this.log(infoLevel, info, msg);\n  }\n\n  public debug(info: any, msg?: string) {\n    this.log(debugLevel, info, msg);\n  }\n\n  public trace(info: any, msg?: string) {\n    this.log(traceLevel, info, msg);\n  }\n\n  static get providerName() { return 'driver/littleware/little-elements/common/appContext/consoleLogger'; }\n}\n\nconst defaultConfig = {\n  logLevel: 'info',\n};\n\ninterface Tools {\n  config: ConfigEntry;\n}\n\nAppContext.get().then(\n  (cx) => {\n    cx.putProvider(ConsoleLogger.providerName,\n      { config: `config/${configKey}` },\n      (toolBox) => singletonProvider(\n        async () => {\n          const tools: Tools = await getTools(toolBox) as Tools;\n          const config = { ...defaultConfig, ...tools.config.defaults, ...tools.config.overrides };\n          return new ConsoleLogger(strToLevel(config.logLevel));\n        },\n      ));\n  },\n);\n\nexport async function getLogger(): Promise<Logger> {\n  return AppContext.get().then(\n    (cx) => cx.getProvider(ConsoleLogger.providerName),\n  ).then(\n    (provider: Provider<Logger>) => provider.get(),\n  );\n}\n"]}