UNPKG

@bitrix24/b24jssdk

Version:

Bitrix24 REST API JavaScript SDK

104 lines (100 loc) 3.22 kB
/** * @package @bitrix24/b24jssdk * @version 1.1.0 * @copyright (c) 2026 Bitrix24 * @license MIT * @see https://github.com/bitrix24/b24jssdk * @see https://bitrix24.github.io/b24jssdk/ */ import { AbstractFormatter } from './abstract-formatter.mjs'; var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); class TelegramFormatter extends AbstractFormatter { static { __name(this, "TelegramFormatter"); } useHtml; maxMessageLength; constructor(useHtml = true, dateFormat = "YYYY-MM-DD HH:mm:ss", maxMessageLength = 4096) { super(dateFormat); this.useHtml = useHtml; this.maxMessageLength = maxMessageLength; } format(record) { let message = this._formatBaseMessage(record); const additionalInfo = this._formatAdditionalInfo(record); if (additionalInfo) { message += ` ${additionalInfo}`; } if (message.length > this.maxMessageLength) { message = message.substring(0, this.maxMessageLength - 3) + "..."; } return message; } _formatBaseMessage(record) { const date = this._formatDate(record.timestamp); const level = record.levelName; if (this.useHtml) { return `<b>${level}</b> | <code>${record.channel}</code> <i>Time:</i> ${date} <i>Message:</i> ${record.message}`; } else { return `*${level}* \`${record.channel}\` _Time:_ \`${date}\` _Message:_ ${record.message}`; } } _formatAdditionalInfo(record) { const parts = []; if (record.context && Object.keys(record.context).length > 0) { const contextStr = JSON.stringify(record.context, null, 2); if (this.useHtml) { parts.push(`<i>Context:</i> <pre><code class="language-json">${this._escapeHtml(contextStr)}</code></pre>`); } else { parts.push(`_Context:_ \`\`\`json ${contextStr} \`\`\``); } } if (record.extra && Object.keys(record.extra).length > 0) { const extraStr = JSON.stringify(record.extra, null, 2); if (this.useHtml) { parts.push(`<i>Extra:</i> <pre><code class="language-json">${this._escapeHtml(extraStr)}</code></pre>`); } else { parts.push(`_Extra:_ \`\`\`json ${extraStr} \`\`\``); } } return parts.join("\n\n"); } _escapeHtml(text) { return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;"); } _escapeMarkdownV2(text) { return text.replace(/_/g, "\\_").replace(/\*/g, "\\*").replace(/\[/g, "\\[").replace(/\]/g, "\\]").replace(/\(/g, "\\(").replace(/\)/g, "\\)").replace(/~/g, "\\~").replace(/`/g, "\\`").replace(/>/g, "\\>").replace(/#/g, "\\#").replace(/\+/g, "\\+").replace(/-/g, "\\-").replace(/=/g, "\\=").replace(/\|/g, "\\|").replace(/\{/g, "\\{").replace(/\}/g, "\\}").replace(/\./g, "\\.").replace(/!/g, "\\!"); } /** * Set the use of HTML markup */ setUseHtml(useHtml) { this.useHtml = useHtml; return this; } /** * // Set the maximum message length */ setMaxMessageLength(maxLength) { this.maxMessageLength = maxLength; return this; } } export { TelegramFormatter }; //# sourceMappingURL=telegram-formatter.mjs.map