UNPKG

logsdx

Version:

log streaming with dx on the 🧠

1 lines • 5.68 kB
{"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"]}