teleproto 1.227.0 → 1.227.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Utils.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import bigInt from "big-integer";
2
- import type { ParseInterface } from "./client/messageParse";
3
2
  import { CustomFile } from "./client/uploads";
4
3
  import type { Entity, EntityLike, MessageIDLike } from "./define";
5
4
  import { EntityCache } from "./entityCache";
@@ -151,7 +150,6 @@ export declare function getInputMedia(media: any, { isPhoto, attributes, forceDo
151
150
  */
152
151
  export declare function getAppropriatedPartSize(fileSize: bigInt.BigInteger): 256 | 512 | 128;
153
152
  export declare function getPeer(peer: EntityLike | any): any;
154
- export declare function sanitizeParseMode(mode: string | ParseInterface): ParseInterface;
155
153
  /**
156
154
  Convert the given peer into its marked ID by default.
157
155
 
package/Utils.js CHANGED
@@ -24,7 +24,6 @@ exports.getInputGeo = getInputGeo;
24
24
  exports.getInputMedia = getInputMedia;
25
25
  exports.getAppropriatedPartSize = getAppropriatedPartSize;
26
26
  exports.getPeer = getPeer;
27
- exports.sanitizeParseMode = sanitizeParseMode;
28
27
  exports.getPeerId = getPeerId;
29
28
  exports.resolveId = resolveId;
30
29
  exports.getMessageId = getMessageId;
@@ -43,9 +42,6 @@ exports.resolveBotFileId = resolveBotFileId;
43
42
  exports.packBotFileId = packBotFileId;
44
43
  const big_integer_1 = __importDefault(require("big-integer"));
45
44
  const mime_1 = __importDefault(require("mime"));
46
- const html_1 = require("./extensions/html");
47
- const markdown_1 = require("./extensions/markdown");
48
- const markdownv2_1 = require("./extensions/markdownv2");
49
45
  const Helpers_1 = require("./Helpers");
50
46
  const tl_1 = require("./tl");
51
47
  function getFileInfo(fileLocation) {
@@ -1042,23 +1038,6 @@ function getPeer(peer) {
1042
1038
  catch (e) { }
1043
1039
  _raiseCastFail(peer, "peer");
1044
1040
  }
1045
- function sanitizeParseMode(mode) {
1046
- if (mode === "md" || mode === "markdown") {
1047
- return markdown_1.MarkdownParser;
1048
- }
1049
- if (mode === "md2" || mode === "markdownv2") {
1050
- return markdownv2_1.MarkdownV2Parser;
1051
- }
1052
- if (mode == "html") {
1053
- return html_1.HTMLParser;
1054
- }
1055
- if (typeof mode == "object") {
1056
- if ("parse" in mode && "unparse" in mode) {
1057
- return mode;
1058
- }
1059
- }
1060
- throw new Error(`Invalid parse mode type ${mode}`);
1061
- }
1062
1041
  /**
1063
1042
  Convert the given peer into its marked ID by default.
1064
1043
 
package/Version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "1.227.0";
1
+ export declare const version = "1.227.1";
package/Version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = "1.227.0";
4
+ exports.version = "1.227.1";
@@ -448,6 +448,8 @@ export declare class TelegramClient extends TelegramBaseClient {
448
448
  * await client.sendMessage("me",{message:"<u> this will be sent as it is</u> ** with no formatting **});
449
449
  */
450
450
  setParseMode(mode: "md" | "md2" | "markdown" | "markdownv2" | "html" | parseMethods.ParseInterface | undefined): void;
451
+ /** @hidden */
452
+ _sanitizeParseMode(mode: string | parseMethods.ParseInterface): parseMethods.ParseInterface;
451
453
  /**
452
454
  * Iterates over the messages for a given chat.
453
455
  * <br/>
@@ -519,6 +521,11 @@ export declare class TelegramClient extends TelegramBaseClient {
519
521
  * ```
520
522
  */
521
523
  getMessages(entity: EntityLike | undefined, getMessagesParams?: Partial<messageMethods.IterMessagesParams>): Promise<import("../Helpers").TotalList<Api.Message>>;
524
+ /** @hidden */
525
+ getCommentData(entity: EntityLike, message: number | Api.Message): Promise<{
526
+ entity: Api.TypeInputPeer;
527
+ replyTo: number;
528
+ }>;
522
529
  /**
523
530
  * Sends a message to the specified user, chat or channel.<br/>
524
531
  * The default parse mode is the same as the official applications (a custom flavour of markdown). **bold**, `code` or __italic__ are available.<br/>
@@ -48,11 +48,12 @@ const chatMethods = __importStar(require("./chats"));
48
48
  const dialogMethods = __importStar(require("./dialogs"));
49
49
  const twoFA = __importStar(require("./2fa"));
50
50
  const tl_1 = require("../tl");
51
- const Utils_1 = require("../Utils");
51
+ const html_1 = require("../extensions/html");
52
+ const markdown_1 = require("../extensions/markdown");
53
+ const markdownv2_1 = require("../extensions/markdownv2");
52
54
  const network_1 = require("../network");
53
55
  const registry_1 = require("../tl/runtime/registry");
54
56
  const updates_1 = require("./updates");
55
- const Logger_1 = require("../extensions/Logger");
56
57
  /**
57
58
  * The TelegramClient uses several methods in different files to provide all the common functionality in a nice interface.</br>
58
59
  * **In short, to create a client you must do:**
@@ -542,12 +543,28 @@ class TelegramClient extends telegramBaseClient_1.TelegramBaseClient {
542
543
  */
543
544
  setParseMode(mode) {
544
545
  if (mode) {
545
- this._parseMode = (0, Utils_1.sanitizeParseMode)(mode);
546
+ this._parseMode = this._sanitizeParseMode(mode);
546
547
  }
547
548
  else {
548
549
  this._parseMode = undefined;
549
550
  }
550
551
  }
552
+ /** @hidden */
553
+ _sanitizeParseMode(mode) {
554
+ if (mode === "md" || mode === "markdown") {
555
+ return markdown_1.MarkdownParser;
556
+ }
557
+ if (mode === "md2" || mode === "markdownv2") {
558
+ return markdownv2_1.MarkdownV2Parser;
559
+ }
560
+ if (mode == "html") {
561
+ return html_1.HTMLParser;
562
+ }
563
+ if (typeof mode == "object" && "parse" in mode && "unparse" in mode) {
564
+ return mode;
565
+ }
566
+ throw new Error(`Invalid parse mode type ${mode}`);
567
+ }
551
568
  //endregion
552
569
  // region messages
553
570
  /**
@@ -625,6 +642,10 @@ class TelegramClient extends telegramBaseClient_1.TelegramBaseClient {
625
642
  getMessages(entity, getMessagesParams = {}) {
626
643
  return messageMethods.getMessages(this, entity, getMessagesParams);
627
644
  }
645
+ /** @hidden */
646
+ getCommentData(entity, message) {
647
+ return messageMethods.getCommentData(this, entity, message);
648
+ }
628
649
  /**
629
650
  * Sends a message to the specified user, chat or channel.<br/>
630
651
  * The default parse mode is the same as the official applications (a custom flavour of markdown). **bold**, `code` or __italic__ are available.<br/>
@@ -1155,13 +1176,10 @@ class TelegramClient extends telegramBaseClient_1.TelegramBaseClient {
1155
1176
  const res = await this.getMe();
1156
1177
  }
1157
1178
  catch (e) {
1158
- this._log.error(`Error while trying to reconnect`);
1179
+ this._log.error(`Error while trying to reconnect`, e);
1159
1180
  if (this._errorHandler) {
1160
1181
  await this._errorHandler(e);
1161
1182
  }
1162
- if (this._log.canSend(Logger_1.LogLevel.ERROR)) {
1163
- console.error(e);
1164
- }
1165
1183
  }
1166
1184
  // Restart update loop if it was stopped during reconnect
1167
1185
  if (!this._loopStarted && !this._destroyed) {
package/client/dialogs.js CHANGED
@@ -44,7 +44,6 @@ const requestIter_1 = require("../requestIter");
44
44
  const utils = __importStar(require("../Utils"));
45
45
  const dialog_1 = require("../tl/custom/dialog");
46
46
  const big_integer_1 = __importDefault(require("big-integer"));
47
- const Logger_1 = require("../extensions/Logger");
48
47
  const _MAX_CHUNK_SIZE = 100;
49
48
  /**
50
49
  Get the key to get messages from a dialog.
@@ -134,12 +133,8 @@ class _DialogsIter extends requestIter_1.RequestIter {
134
133
  }
135
134
  }
136
135
  catch (e) {
137
- console.log("msg", message);
138
136
  this.client._log.error("Got error while trying to finish init message with id " +
139
- m.id);
140
- if (this.client._log.canSend(Logger_1.LogLevel.ERROR)) {
141
- console.error(e);
142
- }
137
+ m.id, e);
143
138
  if (this.client._errorHandler) {
144
139
  await this.client._errorHandler(e);
145
140
  }
@@ -1,10 +1,6 @@
1
1
  import { Api } from "../tl";
2
2
  import type { EntityLike } from "../define";
3
3
  import type { TelegramClient } from "./TelegramClient";
4
- export type messageEntities = typeof Api.MessageEntityBold | typeof Api.MessageEntityItalic | typeof Api.MessageEntityStrike | typeof Api.MessageEntityCode | typeof Api.MessageEntityPre;
5
- export declare const DEFAULT_DELIMITERS: {
6
- [key: string]: messageEntities;
7
- };
8
4
  export interface ParseInterface {
9
5
  parse: (message: string) => [string, Api.TypeMessageEntity[]];
10
6
  unparse: (text: string, entities: Api.TypeMessageEntity[]) => string;
@@ -36,7 +36,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.DEFAULT_DELIMITERS = void 0;
40
39
  exports._replaceWithMention = _replaceWithMention;
41
40
  exports._parseMessageText = _parseMessageText;
42
41
  exports._getResponseMessage = _getResponseMessage;
@@ -45,13 +44,6 @@ const tl_1 = require("../tl");
45
44
  const utils = __importStar(require("../Utils"));
46
45
  const Helpers_1 = require("../Helpers");
47
46
  const big_integer_1 = __importDefault(require("big-integer"));
48
- exports.DEFAULT_DELIMITERS = {
49
- "**": tl_1.Api.MessageEntityBold,
50
- __: tl_1.Api.MessageEntityItalic,
51
- "~~": tl_1.Api.MessageEntityStrike,
52
- "`": tl_1.Api.MessageEntityCode,
53
- "```": tl_1.Api.MessageEntityPre,
54
- };
55
47
  /** @hidden */
56
48
  async function _replaceWithMention(client, entities, i, user) {
57
49
  try {
@@ -78,7 +70,7 @@ async function _parseMessageText(client, message, parseMode) {
78
70
  parseMode = client.parseMode;
79
71
  }
80
72
  else if (typeof parseMode === "string") {
81
- parseMode = (0, Utils_1.sanitizeParseMode)(parseMode);
73
+ parseMode = client._sanitizeParseMode(parseMode);
82
74
  }
83
75
  const [rawMessage, msgEntities] = parseMode.parse(message);
84
76
  for (let i = msgEntities.length - 1; i >= 0; i--) {
@@ -19,7 +19,6 @@ const FilePool_1 = require("../network/FilePool");
19
19
  const registry_1 = require("../tl/runtime/registry");
20
20
  const TCPMTProxy_1 = require("../network/connection/TCPMTProxy");
21
21
  const async_mutex_1 = require("async-mutex");
22
- const Logger_1 = require("../extensions/Logger");
23
22
  const Deferred_1 = __importDefault(require("../extensions/Deferred"));
24
23
  const UpdateManager_1 = require("./UpdateManager");
25
24
  const API_SENDER_IDLE_TIMEOUT_MS = 30000;
@@ -216,8 +215,8 @@ class TelegramBaseClient {
216
215
  }
217
216
  async disconnect() {
218
217
  await this._disconnect();
219
- await this._filePool.close({ waitMs: FILE_POOL_CLOSE_GRACE_MS });
220
- await this._apiSenderPool.close();
218
+ await this._filePool.purge();
219
+ await this._apiSenderPool.purge();
221
220
  this._teardownUpdateState();
222
221
  }
223
222
  /** @hidden */
@@ -246,6 +245,8 @@ class TelegramBaseClient {
246
245
  async destroy() {
247
246
  this._destroyed = true;
248
247
  await this.disconnect();
248
+ await this._filePool.close({ waitMs: FILE_POOL_CLOSE_GRACE_MS });
249
+ await this._apiSenderPool.close();
249
250
  this._eventBuilders = [];
250
251
  }
251
252
  /** @hidden */
@@ -316,8 +317,8 @@ class TelegramBaseClient {
316
317
  if (this._errorHandler) {
317
318
  await this._errorHandler(err);
318
319
  }
319
- else if (this._log.canSend(Logger_1.LogLevel.ERROR)) {
320
- console.error(err);
320
+ else {
321
+ this._log.error("Error while connecting sender", err);
321
322
  }
322
323
  await (0, Helpers_1.sleep)(1000);
323
324
  await sender.disconnect();
@@ -375,10 +376,8 @@ class TelegramBaseClient {
375
376
  await handler(error);
376
377
  }
377
378
  catch (e) {
378
- if (this._log.canSend(Logger_1.LogLevel.ERROR)) {
379
- e.message = `Error ${e.message} thrown while handling top-level error: ${error.message}`;
380
- console.error(e);
381
- }
379
+ e.message = `Error ${e.message} thrown while handling top-level error: ${error.message}`;
380
+ this._log.error(e.message, e);
382
381
  }
383
382
  };
384
383
  }
package/client/uploads.js CHANGED
@@ -49,7 +49,6 @@ const fs_1 = require("fs");
49
49
  const errors = __importStar(require("../errors"));
50
50
  const utils = __importStar(require("../Utils"));
51
51
  const messageParse_1 = require("./messageParse");
52
- const messages_1 = require("./messages");
53
52
  const big_integer_1 = __importDefault(require("big-integer"));
54
53
  /**
55
54
  * A custom file class compatible with File-like upload shape.<br/>
@@ -377,7 +376,7 @@ async function _sendAlbum(client, entity, { file, caption, formattingEntities, f
377
376
  }
378
377
  }
379
378
  if (commentTo != undefined) {
380
- const discussionData = await (0, messages_1.getCommentData)(client, entity, commentTo);
379
+ const discussionData = await client.getCommentData(entity, commentTo);
381
380
  entity = discussionData.entity;
382
381
  replyTo = discussionData.replyTo;
383
382
  }
@@ -473,7 +472,7 @@ async function sendFile(client, entity, { file, caption, forceDocument = false,
473
472
  }
474
473
  entity = await client.getInputEntity(entity);
475
474
  if (commentTo != undefined) {
476
- const discussionData = await (0, messages_1.getCommentData)(client, entity, commentTo);
475
+ const discussionData = await client.getCommentData(entity, commentTo);
477
476
  entity = discussionData.entity;
478
477
  replyTo = discussionData.replyTo;
479
478
  }
package/client/users.js CHANGED
@@ -54,7 +54,6 @@ const Helpers_1 = require("../Helpers");
54
54
  const errors = __importStar(require("../errors"));
55
55
  const utils = __importStar(require("../Utils"));
56
56
  const big_integer_1 = __importDefault(require("big-integer"));
57
- const Logger_1 = require("../extensions/Logger");
58
57
  const RequestState_1 = require("../network/RequestState");
59
58
  // UserMethods {
60
59
  // region Invoking Telegram request
@@ -425,12 +424,10 @@ async function getInputEntity(client, peer) {
425
424
  return utils.getInputPeer(channels.chats[0]);
426
425
  }
427
426
  catch (e) {
427
+ client._log.error("Error while resolving channel entity", e);
428
428
  if (client._errorHandler) {
429
429
  await client._errorHandler(e);
430
430
  }
431
- if (client._log.canSend(Logger_1.LogLevel.ERROR)) {
432
- console.error(e);
433
- }
434
431
  }
435
432
  }
436
433
  throw new Error(`Could not find the input entity for ${JSON.stringify(peer)}.
package/events/Album.js CHANGED
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AlbumEvent = exports.Album = void 0;
4
4
  const common_1 = require("./common");
5
5
  const tl_1 = require("../tl");
6
- const Logger_1 = require("../extensions/Logger");
7
6
  const _ALBUM_DELAY = 500; // 0.5 sec
8
7
  /**
9
8
  * Occurs whenever an album (multiple grouped messages with media) arrive.
@@ -90,13 +89,10 @@ class AlbumEvent extends common_1.EventCommon {
90
89
  }
91
90
  catch (e) {
92
91
  client._log.error("Got error while trying to finish init message with id " +
93
- this.messages[i].id);
92
+ this.messages[i].id, e);
94
93
  if (client._errorHandler) {
95
94
  client._errorHandler(e);
96
95
  }
97
- if (client._log.canSend(Logger_1.LogLevel.ERROR)) {
98
- console.error(e);
99
- }
100
96
  }
101
97
  }
102
98
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NewMessageEvent = exports.NewMessage = void 0;
4
4
  const common_1 = require("./common");
5
5
  const tl_1 = require("../tl");
6
- const Logger_1 = require("../extensions/Logger");
7
6
  /**
8
7
  * Occurs whenever a new text message or a message with media arrives.
9
8
  * @example
@@ -168,13 +167,10 @@ class NewMessageEvent extends common_1.EventCommon {
168
167
  m._finishInit(client, this.originalUpdate._entities || new Map(), undefined);
169
168
  }
170
169
  catch (e) {
171
- client._log.error("Got error while trying to finish init message with id " + m.id);
170
+ client._log.error("Got error while trying to finish init message with id " + m.id, e);
172
171
  if (client._errorHandler) {
173
172
  client._errorHandler(e);
174
173
  }
175
- if (client._log.canSend(Logger_1.LogLevel.ERROR)) {
176
- console.error(e);
177
- }
178
174
  }
179
175
  }
180
176
  /**
@@ -5,50 +5,29 @@ export declare enum LogLevel {
5
5
  INFO = "info",
6
6
  DEBUG = "debug"
7
7
  }
8
+ export interface LogRecord {
9
+ readonly level: LogLevel;
10
+ readonly message: string;
11
+ readonly error?: unknown;
12
+ readonly date: Date;
13
+ }
14
+ export type LogHandler = (record: LogRecord) => void;
8
15
  export declare class Logger {
9
- private levels;
10
- private nodeColors;
16
+ handler?: LogHandler;
11
17
  messageFormat: string;
12
- private _logLevel;
13
18
  tzOffset: number;
19
+ private _logLevel;
14
20
  constructor(level?: LogLevel);
15
- /**
16
- *
17
- * @param level {string}
18
- * @returns {boolean}
19
- */
20
21
  canSend(level: LogLevel): boolean;
21
- /**
22
- * @param message {string}
23
- */
24
- warn(message: string): void;
25
- /**
26
- * @param message {string}
27
- */
28
- info(message: string): void;
29
- /**
30
- * @param message {string}
31
- */
32
- debug(message: string): void;
33
- /**
34
- * @param message {string}
35
- */
36
- error(message: string): void;
22
+ error(message: string, error?: unknown): void;
23
+ warn(message: string, error?: unknown): void;
24
+ info(message: string, error?: unknown): void;
25
+ debug(message: string, error?: unknown): void;
37
26
  format(message: string, level: string): string;
27
+ getDateTime(): string;
38
28
  get logLevel(): LogLevel;
39
29
  setLevel(level: LogLevel): void;
40
30
  static setLevel(level: string): void;
41
- /**
42
- * @param level {string}
43
- * @param message {string}
44
- */
45
- _log(level: LogLevel, message: string): void;
46
- /**
47
- * Override this function for custom Logger. <br />
48
- *
49
- * @param level {string}
50
- * @param message {string}
51
- */
52
- log(level: LogLevel, message: string): void;
53
- getDateTime(): string;
31
+ _log(level: LogLevel, message: string, error?: unknown): void;
32
+ log(level: LogLevel, message: string, error?: unknown): void;
54
33
  }
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- // let _level: string | undefined = undefined;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.Logger = exports.LogLevel = void 0;
5
4
  var LogLevel;
@@ -10,66 +9,40 @@ var LogLevel;
10
9
  LogLevel["INFO"] = "info";
11
10
  LogLevel["DEBUG"] = "debug";
12
11
  })(LogLevel || (exports.LogLevel = LogLevel = {}));
13
- const NodeColors = {
14
- reset: "\x1b[0m",
15
- red: "\x1b[31m",
16
- green: "\x1b[32m",
17
- yellow: "\x1b[33m",
18
- blue: "\x1b[34m",
19
- magenta: "\x1b[35m",
20
- cyan: "\x1b[36m",
21
- white: "\x1b[37m",
22
- bold: "\x1b[1m",
23
- dim: "\x1b[2m",
24
- underline: "\x1b[4m",
12
+ const SEVERITY = {
13
+ none: 0,
14
+ error: 1,
15
+ warn: 2,
16
+ info: 3,
17
+ debug: 4,
25
18
  };
19
+ const COLOR = {
20
+ error: "\x1b[31m",
21
+ warn: "\x1b[35m",
22
+ info: "\x1b[33m",
23
+ debug: "\x1b[36m",
24
+ };
25
+ const RESET = "\x1b[0m";
26
26
  class Logger {
27
- constructor(level) {
28
- this.levels = ["error", "warn", "info", "debug"];
29
- this._logLevel = level || LogLevel.INFO;
30
- this.nodeColors = {
31
- warn: NodeColors.magenta,
32
- info: NodeColors.yellow,
33
- debug: NodeColors.cyan,
34
- error: NodeColors.red,
35
- reset: NodeColors.reset
36
- };
27
+ constructor(level = LogLevel.INFO) {
37
28
  this.messageFormat = "[%t] [%l] - [%m]";
38
29
  this.tzOffset = new Date().getTimezoneOffset() * 60000;
30
+ this._logLevel = level;
39
31
  }
40
- /**
41
- *
42
- * @param level {string}
43
- * @returns {boolean}
44
- */
45
32
  canSend(level) {
46
- return this._logLevel
47
- ? this.levels.indexOf(this._logLevel) >= this.levels.indexOf(level)
48
- : false;
33
+ return SEVERITY[this._logLevel] >= SEVERITY[level];
49
34
  }
50
- /**
51
- * @param message {string}
52
- */
53
- warn(message) {
54
- this._log(LogLevel.WARN, message);
35
+ error(message, error) {
36
+ this._log(LogLevel.ERROR, message, error);
55
37
  }
56
- /**
57
- * @param message {string}
58
- */
59
- info(message) {
60
- this._log(LogLevel.INFO, message);
38
+ warn(message, error) {
39
+ this._log(LogLevel.WARN, message, error);
61
40
  }
62
- /**
63
- * @param message {string}
64
- */
65
- debug(message) {
66
- this._log(LogLevel.DEBUG, message);
41
+ info(message, error) {
42
+ this._log(LogLevel.INFO, message, error);
67
43
  }
68
- /**
69
- * @param message {string}
70
- */
71
- error(message) {
72
- this._log(LogLevel.ERROR, message);
44
+ debug(message, error) {
45
+ this._log(LogLevel.DEBUG, message, error);
73
46
  }
74
47
  format(message, level) {
75
48
  return this.messageFormat
@@ -77,6 +50,9 @@ class Logger {
77
50
  .replace("%l", level.toUpperCase())
78
51
  .replace("%m", message);
79
52
  }
53
+ getDateTime() {
54
+ return new Date(Date.now() - this.tzOffset).toISOString().slice(0, -1);
55
+ }
80
56
  get logLevel() {
81
57
  return this._logLevel;
82
58
  }
@@ -86,43 +62,26 @@ class Logger {
86
62
  static setLevel(level) {
87
63
  console.log("Logger.setLevel is deprecated, it will has no effect. Please, use client.setLogLevel instead.");
88
64
  }
89
- /**
90
- * @param level {string}
91
- * @param message {string}
92
- */
93
- _log(level, message) {
65
+ _log(level, message, error) {
94
66
  if (this.canSend(level)) {
95
- this.log(level, message);
67
+ this.log(level, message, error);
96
68
  }
97
69
  }
98
- /**
99
- * Override this function for custom Logger. <br />
100
- *
101
- * @param level {string}
102
- * @param message {string}
103
- */
104
- log(level, message) {
105
- let nodeColor;
106
- switch (level) {
107
- case LogLevel.ERROR:
108
- nodeColor = this.nodeColors.error;
109
- break;
110
- case LogLevel.WARN:
111
- nodeColor = this.nodeColors.warn;
112
- break;
113
- case LogLevel.INFO:
114
- nodeColor = this.nodeColors.info;
115
- break;
116
- case LogLevel.DEBUG:
117
- nodeColor = this.nodeColors.debug;
118
- break;
119
- default:
120
- nodeColor = "";
70
+ log(level, message, error) {
71
+ var _a;
72
+ if (this.handler) {
73
+ this.handler({
74
+ level,
75
+ message,
76
+ error,
77
+ date: new Date(Date.now() - this.tzOffset),
78
+ });
79
+ return;
80
+ }
81
+ console.log(((_a = COLOR[level]) !== null && _a !== void 0 ? _a : "") + this.format(message, level) + RESET);
82
+ if (error !== undefined) {
83
+ console.error(error);
121
84
  }
122
- console.log(nodeColor + this.format(message, level) + this.nodeColors.reset);
123
- }
124
- getDateTime() {
125
- return new Date(Date.now() - this.tzOffset).toISOString().slice(0, -1);
126
85
  }
127
86
  }
128
87
  exports.Logger = Logger;
@@ -1,5 +1,20 @@
1
1
  import { Api } from "../tl";
2
+ interface OpenTag {
3
+ readonly name: string;
4
+ readonly start: number;
5
+ readonly entity?: Api.TypeMessageEntity;
6
+ }
2
7
  export declare class HTMLParser {
8
+ static readonly _tag: RegExp;
9
+ static readonly _ref: RegExp;
10
+ static readonly _attr: RegExp;
11
+ static readonly _esc: Record<string, string>;
3
12
  static parse(html: string): [string, Api.TypeMessageEntity[]];
4
- static unparse(text: string, entities: Api.TypeMessageEntity[] | undefined, _offset?: number, _length?: number): string;
13
+ static unparse(text: string, entities?: Api.TypeMessageEntity[], _offset?: number, _length?: number): string;
14
+ static _decode(text: string): string;
15
+ static _escapeHtml(text: string): string;
16
+ static _readAttributes(source: string): Record<string, string>;
17
+ static _entityFor(name: string, attrs: Record<string, string>, offset: number, stack: OpenTag[]): Api.TypeMessageEntity | undefined;
18
+ static _markupFor(entity: Api.TypeMessageEntity, text: string): readonly [string, string] | null;
5
19
  }
20
+ export {};