@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
1 lines • 7.34 kB
Source Map (JSON)
{"version":3,"file":"telegram-formatter.mjs","sources":["../../../../src/logger/formatter/telegram-formatter.ts"],"sourcesContent":["import type { Formatter, LogRecord } from '../../types/logger'\nimport { AbstractFormatter } from './abstract-formatter'\n\n/**\n * TelegramFormatter\n *\n * Formats a log entry for sending to Telegram.\n * Supports HTML markup with escaped special characters.\n *\n * @link https://core.telegram.org/bots/api#html-style\n */\nexport class TelegramFormatter extends AbstractFormatter implements Formatter {\n private useHtml: boolean\n private maxMessageLength: number\n\n constructor(\n useHtml: boolean = true,\n dateFormat: string = 'YYYY-MM-DD HH:mm:ss',\n maxMessageLength: number = 4096\n ) {\n super(dateFormat)\n this.useHtml = useHtml\n this.maxMessageLength = maxMessageLength\n }\n\n public override format(record: LogRecord): string {\n // Basic formatting\n let message = this._formatBaseMessage(record)\n\n // Add context and extra, if any\n const additionalInfo = this._formatAdditionalInfo(record)\n if (additionalInfo) {\n message += `\\n\\n${additionalInfo}`\n }\n\n // Truncate the message if it exceeds the maximum length\n if (message.length > this.maxMessageLength) {\n message = message.substring(0, this.maxMessageLength - 3) + '...'\n }\n\n return message\n }\n\n protected _formatBaseMessage(record: LogRecord): string {\n const date = this._formatDate(record.timestamp)\n const level = record.levelName\n\n if (this.useHtml) {\n return `<b>${level}</b> | <code>${record.channel}</code>\\n`\n + `<i>Time:</i> ${date}\\n`\n + `<i>Message:</i>\\n${record.message}`\n } else {\n return `*${level}* \\`${record.channel}\\`\\n`\n + `_Time:_ \\`${date}\\`\\n`\n + `_Message:_\\n${record.message}`\n }\n }\n\n protected _formatAdditionalInfo(record: LogRecord): string {\n const parts: string[] = []\n\n // Add context if it is not empty\n if (record.context && Object.keys(record.context).length > 0) {\n const contextStr = JSON.stringify(record.context, null, 2)\n if (this.useHtml) {\n parts.push(`<i>Context:</i>\\n<pre><code class=\"language-json\">${this._escapeHtml(contextStr)}</code></pre>`)\n } else {\n parts.push(`_Context:_\\n\\`\\`\\`json\\n${contextStr}\\n\\`\\`\\``)\n }\n }\n\n // Add extra if it is not empty\n if (record.extra && Object.keys(record.extra).length > 0) {\n const extraStr = JSON.stringify(record.extra, null, 2)\n if (this.useHtml) {\n parts.push(`<i>Extra:</i>\\n<pre><code class=\"language-json\">${this._escapeHtml(extraStr)}</code></pre>`)\n } else {\n parts.push(`_Extra:_\\n\\`\\`\\`json\\n${extraStr}\\n\\`\\`\\``)\n }\n }\n\n return parts.join('\\n\\n')\n }\n\n protected _escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n }\n\n protected _escapeMarkdownV2(text: string): string {\n return text\n .replace(/_/g, '\\\\_')\n .replace(/\\*/g, '\\\\*')\n .replace(/\\[/g, '\\\\[')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\(/g, '\\\\(')\n .replace(/\\)/g, '\\\\)')\n .replace(/~/g, '\\\\~')\n .replace(/`/g, '\\\\`')\n .replace(/>/g, '\\\\>')\n .replace(/#/g, '\\\\#')\n .replace(/\\+/g, '\\\\+')\n .replace(/-/g, '\\\\-')\n .replace(/=/g, '\\\\=')\n .replace(/\\|/g, '\\\\|')\n .replace(/\\{/g, '\\\\{')\n .replace(/\\}/g, '\\\\}')\n .replace(/\\./g, '\\\\.')\n .replace(/!/g, '\\\\!')\n }\n\n /**\n * Set the use of HTML markup\n */\n public setUseHtml(useHtml: boolean): this {\n this.useHtml = useHtml\n return this\n }\n\n /**\n * // Set the maximum message length\n */\n public setMaxMessageLength(maxLength: number): this {\n this.maxMessageLength = maxLength\n return this\n }\n}\n"],"names":[],"mappings":"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"}