@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
1 lines • 3.39 kB
Source Map (JSON)
{"version":3,"file":"stream-handler.mjs","sources":["../../../../src/logger/handler/stream-handler.ts"],"sourcesContent":["import type { Writable } from 'node:stream'\nimport type { Handler, HandlerOptions, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\nimport { LineFormatter } from '../formatter'\n\nexport interface StreamHandlerOptions extends HandlerOptions {\n stream: Writable\n}\n\n/**\n * Stream Handler\n *\n * Node.js stream handler for writing logs to streams.\n */\nexport class StreamHandler extends AbstractHandler implements Handler {\n /**\n * Stream for writing logs.\n * @private\n */\n private stream: Writable\n\n /**\n * Creates a StreamHandler instance.\n *\n * @param {LogLevel} level - Minimum log level.\n * @param options\n * - `stream: Writable` - Stream to write to (e.g., `process.stdout`, `process.stderr`, `fs.WriteStream`)\n * - `bubble?: boolean` - Determines whether the handler should bubble the record to the next handler.\n */\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n options: StreamHandlerOptions\n ) {\n const opts = {\n bubble: true,\n ...options\n }\n super(level, opts.bubble)\n\n this.stream = opts.stream\n this.setFormatter(new LineFormatter())\n }\n\n /**\n * @inheritDoc\n */\n public override async handle(record: LogRecord): Promise<boolean> {\n try {\n const formatter = this.getFormatter()!\n const message = formatter.format(record) + '\\n'\n this.stream.write(message)\n } catch (error) {\n // If stream write fails, log to stderr\n console.error(`StreamHandler write error: ${error}`)\n return false\n }\n\n return true\n }\n\n /**\n * Closes the stream (if supported).\n *\n * @returns {Promise<void>}\n */\n public async close(): Promise<void> {\n if (typeof this.stream.end === 'function') {\n return new Promise((resolve, reject) => {\n this.stream.end((error?: Error | null) => {\n if (error) reject(error)\n else resolve()\n })\n })\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAeO,MAAM,sBAAsB,eAAA,CAAmC;AAAA,EAftE;AAesE,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAK5D,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUR,WAAA,CACE,KAAA,GAAkB,QAAA,CAAS,KAAA,EAC3B,OAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,GAAG;AAAA,KACL;AACA,IAAA,KAAA,CAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AAExB,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AACnB,IAAA,IAAA,CAAK,YAAA,CAAa,IAAI,aAAA,EAAe,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAsB,OAAO,MAAA,EAAqC;AAChE,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAY,KAAK,YAAA,EAAa;AACpC,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA,GAAI,IAAA;AAC3C,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,OAAO,CAAA;AAAA,IAC3B,SAAS,KAAA,EAAO;AAEd,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,2BAAA,EAA8B,KAAK,CAAA,CAAE,CAAA;AACnD,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,KAAA,GAAuB;AAClC,IAAA,IAAI,OAAO,IAAA,CAAK,MAAA,CAAO,GAAA,KAAQ,UAAA,EAAY;AACzC,MAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,QAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAyB;AACxC,UAAA,IAAI,KAAA,SAAc,KAAK,CAAA;AAAA,eAClB,OAAA,EAAQ;AAAA,QACf,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AACF;;;;"}