{"version":3,"sources":["../../src/loggers/nestjs.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport type { LogRecord } from \"../common/requestLogger.js\";\nimport { formatMessage } from \"./utils.js\";\n\ntype LogLevel = \"log\" | \"error\" | \"warn\" | \"debug\" | \"verbose\" | \"fatal\";\n\nconst MAX_BUFFER_SIZE = 1000;\n\nlet isPatched = false;\nlet globalLogsContext: AsyncLocalStorage<LogRecord[]>;\n\nexport async function patchNestLogger(\n  logsContext: AsyncLocalStorage<LogRecord[]>,\n) {\n  globalLogsContext = logsContext;\n\n  if (isPatched) {\n    return;\n  }\n\n  try {\n    const { Logger } = await import(/* webpackIgnore: true */ \"@nestjs/common\");\n    const logMethods: LogLevel[] = [\n      \"log\",\n      \"error\",\n      \"warn\",\n      \"debug\",\n      \"verbose\",\n      \"fatal\",\n    ];\n\n    // Patch static methods\n    logMethods.forEach((method) => {\n      const originalMethod = Logger[method];\n      Logger[method] = function (message: any, ...args: any[]) {\n        captureLog(method, [message, ...args]);\n        return originalMethod.apply(Logger, [message, ...args]);\n      };\n    });\n\n    // Patch prototype methods to affect all instances (new and existing)\n    logMethods.forEach((method) => {\n      const originalMethod = Logger.prototype[method];\n      Logger.prototype[method] = function (message: any, ...args: any[]) {\n        captureLog(method, [message, ...args], this.context);\n        return originalMethod.apply(this, [message, ...args]);\n      };\n    });\n\n    isPatched = true;\n  } catch {\n    // @nestjs/common is not installed, silently ignore\n  }\n}\n\nfunction captureLog(level: LogLevel, args: any[], context?: string) {\n  const logs = globalLogsContext?.getStore();\n  if (logs && logs.length < MAX_BUFFER_SIZE) {\n    logs.push({\n      timestamp: Date.now() / 1000,\n      logger: context,\n      level,\n      message: formatMessage(args[0], ...args.slice(1)),\n    });\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;;;;AAAA,mBAA8B;AAI9B,MAAMA,kBAAkB;AAExB,IAAIC,YAAY;AAChB,IAAIC;AAEJ,eAAsBC,gBACpBC,aAA2C;AAE3CF,sBAAoBE;AAEpB,MAAIH,WAAW;AACb;EACF;AAEA,MAAI;AACF,UAAM,EAAEI,OAAM,IAAK,MAAM;;MAAiC;IAAA;AAC1D,UAAMC,aAAyB;MAC7B;MACA;MACA;MACA;MACA;MACA;;AAIFA,eAAWC,QAAQ,CAACC,WAAAA;AAClB,YAAMC,iBAAiBJ,OAAOG,MAAAA;AAC9BH,aAAOG,MAAAA,IAAU,SAAUE,YAAiBC,MAAW;AACrDC,mBAAWJ,QAAQ;UAACE;aAAYC;SAAK;AACrC,eAAOF,eAAeI,MAAMR,QAAQ;UAACK;aAAYC;SAAK;MACxD;IACF,CAAA;AAGAL,eAAWC,QAAQ,CAACC,WAAAA;AAClB,YAAMC,iBAAiBJ,OAAOS,UAAUN,MAAAA;AACxCH,aAAOS,UAAUN,MAAAA,IAAU,SAAUE,YAAiBC,MAAW;AAC/DC,mBAAWJ,QAAQ;UAACE;aAAYC;WAAO,KAAKI,OAAO;AACnD,eAAON,eAAeI,MAAM,MAAM;UAACH;aAAYC;SAAK;MACtD;IACF,CAAA;AAEAV,gBAAY;EACd,QAAQ;EAER;AACF;AA1CsBE;AA4CtB,SAASS,WAAWI,OAAiBL,MAAaI,SAAgB;AAChE,QAAME,OAAOf,uDAAmBgB;AAChC,MAAID,QAAQA,KAAKE,SAASnB,iBAAiB;AACzCiB,SAAKG,KAAK;MACRC,WAAWC,KAAKC,IAAG,IAAK;MACxBC,QAAQT;MACRC;MACAN,aAASe,4BAAcd,KAAK,CAAA,GAAE,GAAKA,KAAKe,MAAM,CAAA,CAAA;IAChD,CAAA;EACF;AACF;AAVSd;","names":["MAX_BUFFER_SIZE","isPatched","globalLogsContext","patchNestLogger","logsContext","Logger","logMethods","forEach","method","originalMethod","message","args","captureLog","apply","prototype","context","level","logs","getStore","length","push","timestamp","Date","now","logger","formatMessage","slice"]}