{"version":3,"file":"memory-handler.mjs","sources":["../../../../src/logger/handler/memory-handler.ts"],"sourcesContent":["import type { Handler, HandlerOptions, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\n\nexport interface MemoryHandlerOptions extends HandlerOptions {\n  limit?: number\n}\n\n/**\n * Memory Handler\n */\nexport class MemoryHandler extends AbstractHandler implements Handler {\n  private records: LogRecord[] = []\n  private readonly limit: number\n\n  constructor(\n    level: LogLevel = LogLevel.DEBUG,\n    options?: MemoryHandlerOptions\n  ) {\n    const opts = {\n      bubble: true,\n      limit: 1_000,\n      ...options\n    }\n    super(level, opts.bubble)\n    this.limit = opts.limit\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public override async handle(record: LogRecord): Promise<boolean> {\n    this.records.push(record)\n    if (this.records.length > this.limit) {\n      this.records.shift()\n    }\n\n    return true\n  }\n\n  getRecords(): LogRecord[] {\n    return [...this.records]\n  }\n\n  clear(): void {\n    this.records = []\n  }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAWO,MAAM,sBAAsB,eAAA,CAAmC;AAAA,EAXtE;AAWsE,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA,EAC5D,UAAuB,EAAC;AAAA,EACf,KAAA;AAAA,EAEjB,WAAA,CACE,KAAA,GAAkB,QAAA,CAAS,KAAA,EAC3B,OAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO,GAAA;AAAA,MACP,GAAG;AAAA,KACL;AACA,IAAA,KAAA,CAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AACxB,IAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAsB,OAAO,MAAA,EAAqC;AAChE,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,MAAM,CAAA;AACxB,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,IAAA,CAAK,KAAA,EAAO;AACpC,MAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AAAA,IACrB;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,UAAA,GAA0B;AACxB,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,OAAO,CAAA;AAAA,EACzB;AAAA,EAEA,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,UAAU,EAAC;AAAA,EAClB;AACF;;;;"}