{"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,EAC7C;AAAA,EACA,SAAqB,CAAA;AAAA,EACrB,QAA+B;AAAA,EAEvC,YAAY,QAAqB;AAC/B,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAwB,CAAC,SAAS;AAChC,UAAM,eAAe,KAAK;AAAA,MACxB,CAAC,QACCA,OAAAA,cAAe,IAAI,SAAsBC,OAAAA,SAAS,IAAI,KACtDD,OAAAA,cAAc,KAAK,YAAY,YAAYC,OAAAA,SAAS,IAAI;AAAA,IAAA;AAG5D,SAAK,OAAO,KAAK,GAAG,YAAY;AAEhC,QAAI,OAAO,KAAK,YAAY,cAAc,eAAe,KAAK,YAAY,cAAc,OAAO;AAC7F;AAAA,IACF;AAEA,QAAI,KAAK,OAAO;AACd,mBAAa,KAAK,KAAK;AAAA,IACzB;AAEA,UAAM,aAAa,OAAO,KAAK,YAAY,cAAc,YAAY,MAAO,KAAK,YAAY,UAAU;AAEvG,SAAK,QAAQ,WAAW,MAAM;AAC5B,WAAK,MAAA;AAAA,IACP,GAAG,UAAU;AAAA,EACf;AAAA,EAEA,MAAM,QAAQ;AACZ,QAAI,KAAK,OAAO,UAAU,GAAG;AAC3B;AAAA,IACF;AAEA,UAAM,MAAM,KAAK,YAAY,OAAO;AAAA,MAClC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAAA;AAAA,MAElB,GAAG,KAAK,YAAY;AAAA,MACpB,MAAM,KAAK,UAAU,KAAK,MAAM;AAAA,IAAA,CACjC,EACE,KAAK,OAAO,QAAQ;AACnB,UAAI,CAAC,IAAI,IAAI;AACX,gBAAQ,MAAM,MAAM,IAAI,KAAA,CAAM;AAC9B,cAAM,IAAI,MAAM,sBAAsB;AAAA,MACxC;AACA,WAAK,SAAS,CAAA;AAAA,IAChB,CAAC,EACA,MAAM,QAAQ,KAAK;AAAA,EACxB;AACF;;"}