{"version":3,"sources":["../../src/loggers/console.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { format } from \"node:util\";\n\nimport type { LogRecord } from \"../common/requestLogger.js\";\n\ntype LogLevel = \"log\" | \"warn\" | \"error\" | \"info\" | \"debug\";\n\nconst MAX_BUFFER_SIZE = 1000;\n\nlet isPatched = false;\nlet globalLogsContext: AsyncLocalStorage<LogRecord[]>;\n\nexport function patchConsole(logsContext: AsyncLocalStorage<LogRecord[]>) {\n  globalLogsContext = logsContext;\n\n  if (isPatched) {\n    return;\n  }\n\n  const logMethods: LogLevel[] = [\"log\", \"warn\", \"error\", \"info\", \"debug\"];\n  logMethods.forEach((method) => {\n    const originalMethod = console[method];\n    console[method] = function (...args: any[]) {\n      captureLog(method, args);\n      return originalMethod.apply(console, args);\n    };\n  });\n\n  isPatched = true;\n}\n\nfunction captureLog(level: LogLevel, args: any[]) {\n  const logs = globalLogsContext?.getStore();\n  if (logs && logs.length < MAX_BUFFER_SIZE) {\n    logs.push({\n      timestamp: Date.now() / 1000,\n      logger: \"console\",\n      level,\n      message: format(...args),\n    });\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;;;;AAAA,uBAAuB;AAMvB,MAAMA,kBAAkB;AAExB,IAAIC,YAAY;AAChB,IAAIC;AAEG,SAASC,aAAaC,aAA2C;AACtEF,sBAAoBE;AAEpB,MAAIH,WAAW;AACb;EACF;AAEA,QAAMI,aAAyB;IAAC;IAAO;IAAQ;IAAS;IAAQ;;AAChEA,aAAWC,QAAQ,CAACC,WAAAA;AAClB,UAAMC,iBAAiBC,QAAQF,MAAAA;AAC/BE,YAAQF,MAAAA,IAAU,YAAaG,MAAW;AACxCC,iBAAWJ,QAAQG,IAAAA;AACnB,aAAOF,eAAeI,MAAMH,SAASC,IAAAA;IACvC;EACF,CAAA;AAEAT,cAAY;AACd;AAjBgBE;AAmBhB,SAASQ,WAAWE,OAAiBH,MAAW;AAC9C,QAAMI,OAAOZ,uDAAmBa;AAChC,MAAID,QAAQA,KAAKE,SAAShB,iBAAiB;AACzCc,SAAKG,KAAK;MACRC,WAAWC,KAAKC,IAAG,IAAK;MACxBC,QAAQ;MACRR;MACAS,aAASC,yBAAAA,GAAUb,IAAAA;IACrB,CAAA;EACF;AACF;AAVSC;","names":["MAX_BUFFER_SIZE","isPatched","globalLogsContext","patchConsole","logsContext","logMethods","forEach","method","originalMethod","console","args","captureLog","apply","level","logs","getStore","length","push","timestamp","Date","now","logger","message","format"]}