{"version":3,"sources":["/Users/jeff/code/oss/logsdx/dist/chunk-BNOJIPVJ.cjs","../src/logenhancer.ts"],"names":[],"mappings":"AAAA;ACOO,IAAM,YAAA,YAAN,MAAkB;AAAA,iBACf,QAAA,EAAuB,CAAC,EAAA;AAAA,kBACxB,QAAA,EAAuB,CAAC,EAAA;AAAA,kBACxB,QAAA,EAAuB,CAAC,EAAA;AAAA,EACxB;AAAA,EAER,WAAA,CAAY,QAAA,EAA8B,CAAC,CAAA,EAAG;AAC5C,IAAA,IAAA,CAAK,MAAA,mBAAQ,OAAA,CAAQ,KAAA,UAAS,OAAA;AAE9B,IAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS;AACnB,MAAA,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA;AAAA,IAClC;AACA,IAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS;AACnB,MAAA,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA;AAAA,IAClC;AACA,IAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS;AACnB,MAAA,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,MAAc,WAAA,CAAY,OAAA,EAAiC;AACzD,IAAA,IAAA,CAAA,MAAW,OAAA,GAAU,OAAA,EAAS;AAC5B,MAAA,GAAA,CAAI,OAAO,OAAA,IAAW,QAAA,EAAU;AAC9B,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,EAAM,MAAM,4DAAA,CAAO,MAAA,GAAA;AACzB,UAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAAA,QACtB,EAAA,MAAA,CAAS,GAAA,EAAK;AACZ,UAAA,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO;AACd,YAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAA;AAChD,UAAA;AACF,QAAA;AACK,MAAA;AACU,QAAA;AACjB,MAAA;AACF,IAAA;AACF,EAAA;AAE2D,EAAA;AAC3B,IAAA;AACI,MAAA;AAC1B,QAAA;AACuB,UAAA;AACC,UAAA;AACd,QAAA;AACI,UAAA;AACgC,YAAA;AAChD,UAAA;AACF,QAAA;AACK,MAAA;AACgB,QAAA;AACvB,MAAA;AACF,IAAA;AACF,EAAA;AAE2D,EAAA;AAC3B,IAAA;AACI,MAAA;AAC1B,QAAA;AACuB,UAAA;AACC,UAAA;AACd,QAAA;AACI,UAAA;AACgC,YAAA;AAChD,UAAA;AACF,QAAA;AACK,MAAA;AACgB,QAAA;AACvB,MAAA;AACF,IAAA;AACF,EAAA;AAEuB,EAAA;AACL,IAAA;AAC6B,MAAA;AAC7C,IAAA;AACwB,IAAA;AAC1B,EAAA;AAE6B,EAAA;AACX,IAAA;AAC6B,MAAA;AAC7C,IAAA;AACwB,IAAA;AAC1B,EAAA;AAE6B,EAAA;AACX,IAAA;AAC6B,MAAA;AAC7C,IAAA;AACwB,IAAA;AAC1B,EAAA;AAE8B,EAAA;AAEyB,IAAA;AAC/C,MAAA;AACqC,QAAA;AAC3B,MAAA;AACI,QAAA;AACmC,UAAA;AACnD,QAAA;AACO,QAAA;AACT,MAAA;AACG,IAAA;AAGQ,IAAA;AACsB,IAAA;AAC7B,MAAA;AAC4B,QAAA;AAClB,MAAA;AACI,QAAA;AACmC,UAAA;AACnD,QAAA;AACF,MAAA;AACF,IAAA;AAGmC,IAAA;AAC7B,MAAA;AACiB,QAAA;AACP,MAAA;AACI,QAAA;AACmC,UAAA;AACnD,QAAA;AACF,MAAA;AACF,IAAA;AAEO,IAAA;AACT,EAAA;AAEQ,EAAA;AACU,IAAA;AACA,IAAA;AACA,IAAA;AAClB,EAAA;AACF;ADrB2D;AACA;AACA;AACA","file":"/Users/jeff/code/oss/logsdx/dist/chunk-BNOJIPVJ.cjs","sourcesContent":[null,"import {\n  type LogPlugin,\n  type LogParser,\n  type LogClient,\n  type LogEnhancerOptions,\n} from \"@/src/types\";\n\nexport class LogEnhancer {\n  private plugins: LogPlugin[] = [];\n  private parsers: LogParser[] = [];\n  private clients: LogClient[] = [];\n  private debug: boolean;\n\n  constructor(options: LogEnhancerOptions = {}) {\n    this.debug = options.debug ?? false;\n\n    if (options.plugins) {\n      this.loadPlugins(options.plugins);\n    }\n    if (options.parsers) {\n      this.loadParsers(options.parsers);\n    }\n    if (options.clients) {\n      this.loadClients(options.clients);\n    }\n  }\n\n  private async loadPlugins(plugins: (string | LogPlugin)[]) {\n    for (const plugin of plugins) {\n      if (typeof plugin === \"string\") {\n        try {\n          const mod = await import(plugin);\n          this.use(mod.default);\n        } catch (err) {\n          if (this.debug) {\n            console.error(`Failed to load plugin: ${plugin}`, err);\n          }\n        }\n      } else {\n        this.use(plugin);\n      }\n    }\n  }\n\n  private async loadParsers(parsers: (string | LogParser)[]) {\n    for (const parser of parsers) {\n      if (typeof parser === \"string\") {\n        try {\n          const mod = await import(parser);\n          this.addParser(mod.default);\n        } catch (err) {\n          if (this.debug) {\n            console.error(`Failed to load parser: ${parser}`, err);\n          }\n        }\n      } else {\n        this.addParser(parser);\n      }\n    }\n  }\n\n  private async loadClients(clients: (string | LogClient)[]) {\n    for (const client of clients) {\n      if (typeof client === \"string\") {\n        try {\n          const mod = await import(client);\n          this.addClient(mod.default);\n        } catch (err) {\n          if (this.debug) {\n            console.error(`Failed to load client: ${client}`, err);\n          }\n        }\n      } else {\n        this.addClient(client);\n      }\n    }\n  }\n\n  use(plugin: LogPlugin) {\n    if (this.debug) {\n      console.log(`Adding plugin: ${plugin.name}`);\n    }\n    this.plugins.push(plugin);\n  }\n\n  addParser(parser: LogParser) {\n    if (this.debug) {\n      console.log(`Adding parser: ${parser.name}`);\n    }\n    this.parsers.push(parser);\n  }\n\n  addClient(client: LogClient) {\n    if (this.debug) {\n      console.log(`Adding client: ${client.name}`);\n    }\n    this.clients.push(client);\n  }\n\n  process(line: string): string {\n    // First parse the line\n    const context = this.parsers.reduce((acc, parser) => {\n      try {\n        return { ...acc, ...parser.parse(line) };\n      } catch (err) {\n        if (this.debug) {\n          console.error(`Parser error in ${parser.name}:`, err);\n        }\n        return acc;\n      }\n    }, {});\n\n    // Then enhance it\n    let result = line;\n    for (const plugin of this.plugins) {\n      try {\n        result = plugin.enhance(result);\n      } catch (err) {\n        if (this.debug) {\n          console.error(`Plugin error in ${plugin.name}:`, err);\n        }\n      }\n    }\n\n    // Finally send to clients\n    for (const client of this.clients) {\n      try {\n        client.write(result);\n      } catch (err) {\n        if (this.debug) {\n          console.error(`Client error in ${client.name}:`, err);\n        }\n      }\n    }\n\n    return result;\n  }\n\n  reset() {\n    this.plugins = [];\n    this.parsers = [];\n    this.clients = [];\n  }\n}\n"]}