UNPKG

@axiomhq/logging

Version:
1 lines 2.93 kB
{"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;;"}