{"version":3,"file":"fetch.cjs","sources":["../../../src/transports/fetch.ts"],"sourcesContent":["import { Transport } from './transport';\nimport { LogEvent, LogLevelValue, LogLevel } from '../logger';\n\ninterface FetchConfig {\n  input: Parameters<typeof fetch>[0];\n  init?: Omit<Parameters<typeof fetch>[1], 'body'>;\n  autoFlush?: boolean | { durationMs: number };\n  logLevel?: LogLevel;\n}\n\nexport class SimpleFetchTransport implements Transport {\n  private fetchConfig: FetchConfig;\n  private events: LogEvent[] = [];\n  private timer: NodeJS.Timeout | null = null;\n\n  constructor(config: FetchConfig) {\n    this.fetchConfig = config;\n  }\n\n  log: Transport['log'] = (logs) => {\n    const filteredLogs = logs.filter(\n      (log) =>\n        LogLevelValue[(log.level as LogLevel) ?? LogLevel.info] >=\n        LogLevelValue[this.fetchConfig.logLevel ?? LogLevel.info],\n    );\n\n    this.events.push(...filteredLogs);\n\n    if (typeof this.fetchConfig.autoFlush === 'undefined' || this.fetchConfig.autoFlush === false) {\n      return;\n    }\n\n    if (this.timer) {\n      clearTimeout(this.timer);\n    }\n\n    const flushDelay = typeof this.fetchConfig.autoFlush === 'boolean' ? 2000 : this.fetchConfig.autoFlush.durationMs;\n\n    this.timer = setTimeout(() => {\n      this.flush();\n    }, flushDelay);\n  };\n\n  async flush() {\n    if (this.events.length <= 0) {\n      return;\n    }\n\n    await fetch(this.fetchConfig.input, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      ...this.fetchConfig.init,\n      body: JSON.stringify(this.events),\n    })\n      .then(async (res) => {\n        if (!res.ok) {\n          console.error(await res.text());\n          throw new Error('Failed to flush logs');\n        }\n        this.events = [];\n      })\n      .catch(console.error);\n  }\n}\n"],"names":["LogLevelValue","LogLevel"],"mappings":";;;;;;;;;AAUO,MAAM,qBAA0C;AAAA,EAKrD,YAAY,QAAqB;AAJzB;AACA,kCAAqB,CAAA;AACrB,iCAA+B;AAMvC,+BAAwB,CAAC,SAAS;AAChC,YAAM,eAAe,KAAK;AAAA,QACxB,CAAC,QACCA,OAAe,cAAA,IAAI,SAAsBC,OAAAA,SAAS,IAAI,KACtDD,OAAAA,cAAc,KAAK,YAAY,YAAYC,OAAAA,SAAS,IAAI;AAAA,MAAA;AAGvD,WAAA,OAAO,KAAK,GAAG,YAAY;AAE5B,UAAA,OAAO,KAAK,YAAY,cAAc,eAAe,KAAK,YAAY,cAAc,OAAO;AAC7F;AAAA,MACF;AAEA,UAAI,KAAK,OAAO;AACd,qBAAa,KAAK,KAAK;AAAA,MACzB;AAEM,YAAA,aAAa,OAAO,KAAK,YAAY,cAAc,YAAY,MAAO,KAAK,YAAY,UAAU;AAElG,WAAA,QAAQ,WAAW,MAAM;AAC5B,aAAK,MAAM;AAAA,SACV,UAAU;AAAA,IAAA;AAxBb,SAAK,cAAc;AAAA,EACrB;AAAA,EA0BA,MAAM,QAAQ;AACR,QAAA,KAAK,OAAO,UAAU,GAAG;AAC3B;AAAA,IACF;AAEM,UAAA,MAAM,KAAK,YAAY,OAAO;AAAA,MAClC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,GAAG,KAAK,YAAY;AAAA,MACpB,MAAM,KAAK,UAAU,KAAK,MAAM;AAAA,IAAA,CACjC,EACE,KAAK,OAAO,QAAQ;AACf,UAAA,CAAC,IAAI,IAAI;AACX,gBAAQ,MAAM,MAAM,IAAI,KAAM,CAAA;AACxB,cAAA,IAAI,MAAM,sBAAsB;AAAA,MACxC;AACA,WAAK,SAAS;IACf,CAAA,EACA,MAAM,QAAQ,KAAK;AAAA,EACxB;AACF;;"}