{"version":3,"file":"logger-factory.mjs","sources":["../../../src/logger/logger-factory.ts"],"sourcesContent":["import type { LoggerInterface } from '../types/logger'\nimport { LogLevel } from '../types/logger'\nimport { Logger } from './logger'\nimport { NullLogger } from './null-logger'\nimport { ConsoleV2Handler } from './handler'\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class LoggerFactory {\n  static createNullLogger(): LoggerInterface {\n    return NullLogger.create()\n  }\n\n  static createForBrowser(channel: string, isDevMode: boolean = false): LoggerInterface {\n    if (isDevMode) {\n      return LoggerFactory.createForBrowserDevelopment(channel)\n    }\n\n    return LoggerFactory.createForBrowserProduction(channel)\n  }\n\n  static createForBrowserDevelopment(channel: string, level: LogLevel = LogLevel.DEBUG): LoggerInterface {\n    const logger = new Logger(channel)\n    const handler = new ConsoleV2Handler(level)\n    logger.pushHandler(handler)\n    return logger\n  }\n\n  static createForBrowserProduction(channel: string, level: LogLevel = LogLevel.ERROR): LoggerInterface {\n    const logger = new Logger(channel)\n    const handler = new ConsoleV2Handler(level)\n    logger.pushHandler(handler)\n    return logger\n  }\n\n  static async forcedLog(\n    logger: LoggerInterface,\n    action: 'debug' | 'info' | 'notice' | 'warning' | 'error' | 'critical' | 'alert' | 'emergency',\n    message: string,\n    context: Record<string, any>\n  ): Promise<void> {\n    if (typeof globalThis !== 'undefined' && 'vitest' in globalThis) {\n      return\n    }\n\n    if (logger instanceof NullLogger) {\n      switch (action) {\n        case 'debug':\n          console.log(message, context)\n          return\n        case 'info':\n        case 'notice':\n          console.info(message, context)\n          return\n        case 'warning':\n          console.warn(message, context)\n          return\n        default:\n          console.error(message, context)\n          return\n      }\n    }\n\n    return logger[action](message, context)\n  }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOO,MAAM,aAAA,CAAc;AAAA,EAP3B;AAO2B,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA,EACzB,OAAO,gBAAA,GAAoC;AACzC,IAAA,OAAO,WAAW,MAAA,EAAO;AAAA,EAC3B;AAAA,EAEA,OAAO,gBAAA,CAAiB,OAAA,EAAiB,SAAA,GAAqB,KAAA,EAAwB;AACpF,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAO,aAAA,CAAc,4BAA4B,OAAO,CAAA;AAAA,IAC1D;AAEA,IAAA,OAAO,aAAA,CAAc,2BAA2B,OAAO,CAAA;AAAA,EACzD;AAAA,EAEA,OAAO,2BAAA,CAA4B,OAAA,EAAiB,KAAA,GAAkB,SAAS,KAAA,EAAwB;AACrG,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,OAAO,CAAA;AACjC,IAAA,MAAM,OAAA,GAAU,IAAI,gBAAA,CAAiB,KAAK,CAAA;AAC1C,IAAA,MAAA,CAAO,YAAY,OAAO,CAAA;AAC1B,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,OAAO,0BAAA,CAA2B,OAAA,EAAiB,KAAA,GAAkB,SAAS,KAAA,EAAwB;AACpG,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,OAAO,CAAA;AACjC,IAAA,MAAM,OAAA,GAAU,IAAI,gBAAA,CAAiB,KAAK,CAAA;AAC1C,IAAA,MAAA,CAAO,YAAY,OAAO,CAAA;AAC1B,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,aAAa,SAAA,CACX,MAAA,EACA,MAAA,EACA,SACA,OAAA,EACe;AACf,IAAA,IAAI,OAAO,UAAA,KAAe,WAAA,IAAe,QAAA,IAAY,UAAA,EAAY;AAC/D,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,kBAAkB,UAAA,EAAY;AAChC,MAAA,QAAQ,MAAA;AAAQ,QACd,KAAK,OAAA;AACH,UAAA,OAAA,CAAQ,GAAA,CAAI,SAAS,OAAO,CAAA;AAC5B,UAAA;AAAA,QACF,KAAK,MAAA;AAAA,QACL,KAAK,QAAA;AACH,UAAA,OAAA,CAAQ,IAAA,CAAK,SAAS,OAAO,CAAA;AAC7B,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,OAAA,CAAQ,IAAA,CAAK,SAAS,OAAO,CAAA;AAC7B,UAAA;AAAA,QACF;AACE,UAAA,OAAA,CAAQ,KAAA,CAAM,SAAS,OAAO,CAAA;AAC9B,UAAA;AAAA;AACJ,IACF;AAEA,IAAA,OAAO,MAAA,CAAO,MAAM,CAAA,CAAE,OAAA,EAAS,OAAO,CAAA;AAAA,EACxC;AACF;;;;"}