@axiomhq/logging
Version:
The official logging package for Axiom
1 lines • 2.9 kB
Source Map (JSON)
{"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;;"}