@mtkruto/node 0.0.830 → 0.0.831

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.
Files changed (117) hide show
  1. package/esm/client/client.d.ts +24 -0
  2. package/esm/client/client.js +166 -3
  3. package/esm/constants.d.ts +4 -0
  4. package/esm/constants.js +4 -0
  5. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/DomHandler.d.ts +83 -0
  6. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/DomHandler.js +203 -0
  7. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/DomSerializer.d.ts +50 -0
  8. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/DomSerializer.js +274 -0
  9. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/ElementType.d.ts +47 -0
  10. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/ElementType.js +51 -0
  11. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/FeedHandler.d.ts +66 -0
  12. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/FeedHandler.js +191 -0
  13. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/Node.d.ts +168 -0
  14. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/Node.js +385 -0
  15. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/Parser.d.ts +159 -0
  16. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/Parser.js +431 -0
  17. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/Tokenizer.d.ts +181 -0
  18. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/Tokenizer.js +1046 -0
  19. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/mod.d.ts +42 -0
  20. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/mod.js +52 -0
  21. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode.d.ts +11 -0
  22. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode.js +122 -0
  23. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode_codepoint.d.ts +1 -0
  24. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode_codepoint.js +24 -0
  25. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/encode.d.ts +46 -0
  26. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/encode.js +121 -0
  27. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/decode.d.ts +31 -0
  28. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/decode.js +30 -0
  29. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/entities.d.ts +2128 -0
  30. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/entities.js +2127 -0
  31. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/legacy.d.ts +109 -0
  32. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/legacy.js +108 -0
  33. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/xml.d.ts +8 -0
  34. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/xml.js +1 -0
  35. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/mod.d.ts +90 -0
  36. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/mod.js +95 -0
  37. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/helpers.d.ts +50 -0
  38. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/helpers.js +128 -0
  39. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/legacy.d.ts +46 -0
  40. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/legacy.js +110 -0
  41. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/manipulation.d.ts +42 -0
  42. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/manipulation.js +120 -0
  43. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/mod.d.ts +6 -0
  44. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/mod.js +6 -0
  45. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/querying.d.ts +54 -0
  46. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/querying.js +110 -0
  47. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/stringify.d.ts +40 -0
  48. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/stringify.js +75 -0
  49. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/traversal.d.ts +58 -0
  50. package/esm/deps/deno.land/x/html_parser@v0.1.3/src/utils/traversal.js +101 -0
  51. package/esm/deps.d.ts +1 -0
  52. package/esm/deps.js +1 -0
  53. package/esm/storage/storage.d.ts +9 -0
  54. package/esm/storage/storage.js +59 -0
  55. package/esm/types/0_message_entity.d.ts +92 -0
  56. package/esm/types/0_message_entity.js +128 -0
  57. package/esm/utilities/0_html.d.ts +2 -0
  58. package/esm/utilities/0_html.js +74 -0
  59. package/package.json +1 -1
  60. package/script/client/client.d.ts +24 -0
  61. package/script/client/client.js +165 -2
  62. package/script/constants.d.ts +4 -0
  63. package/script/constants.js +5 -1
  64. package/script/deps/deno.land/x/html_parser@v0.1.3/src/DomHandler.d.ts +83 -0
  65. package/script/deps/deno.land/x/html_parser@v0.1.3/src/DomHandler.js +207 -0
  66. package/script/deps/deno.land/x/html_parser@v0.1.3/src/DomSerializer.d.ts +50 -0
  67. package/script/deps/deno.land/x/html_parser@v0.1.3/src/DomSerializer.js +301 -0
  68. package/script/deps/deno.land/x/html_parser@v0.1.3/src/ElementType.d.ts +47 -0
  69. package/script/deps/deno.land/x/html_parser@v0.1.3/src/ElementType.js +55 -0
  70. package/script/deps/deno.land/x/html_parser@v0.1.3/src/FeedHandler.d.ts +66 -0
  71. package/script/deps/deno.land/x/html_parser@v0.1.3/src/FeedHandler.js +222 -0
  72. package/script/deps/deno.land/x/html_parser@v0.1.3/src/Node.d.ts +168 -0
  73. package/script/deps/deno.land/x/html_parser@v0.1.3/src/Node.js +404 -0
  74. package/script/deps/deno.land/x/html_parser@v0.1.3/src/Parser.d.ts +159 -0
  75. package/script/deps/deno.land/x/html_parser@v0.1.3/src/Parser.js +438 -0
  76. package/script/deps/deno.land/x/html_parser@v0.1.3/src/Tokenizer.d.ts +181 -0
  77. package/script/deps/deno.land/x/html_parser@v0.1.3/src/Tokenizer.js +1052 -0
  78. package/script/deps/deno.land/x/html_parser@v0.1.3/src/mod.d.ts +42 -0
  79. package/script/deps/deno.land/x/html_parser@v0.1.3/src/mod.js +88 -0
  80. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode.d.ts +11 -0
  81. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode.js +128 -0
  82. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode_codepoint.d.ts +1 -0
  83. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/decode_codepoint.js +30 -0
  84. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/encode.d.ts +46 -0
  85. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/encode.js +129 -0
  86. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/decode.d.ts +31 -0
  87. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/decode.js +32 -0
  88. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/entities.d.ts +2128 -0
  89. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/entities.js +2129 -0
  90. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/legacy.d.ts +109 -0
  91. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/legacy.js +110 -0
  92. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/xml.d.ts +8 -0
  93. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/maps/xml.js +3 -0
  94. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/mod.d.ts +90 -0
  95. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/entities/mod.js +114 -0
  96. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/helpers.d.ts +50 -0
  97. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/helpers.js +134 -0
  98. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/legacy.d.ts +46 -0
  99. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/legacy.js +118 -0
  100. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/manipulation.d.ts +42 -0
  101. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/manipulation.js +129 -0
  102. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/mod.d.ts +6 -0
  103. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/mod.js +22 -0
  104. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/querying.d.ts +54 -0
  105. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/querying.js +119 -0
  106. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/stringify.d.ts +40 -0
  107. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/stringify.js +86 -0
  108. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/traversal.d.ts +58 -0
  109. package/script/deps/deno.land/x/html_parser@v0.1.3/src/utils/traversal.js +112 -0
  110. package/script/deps.d.ts +1 -0
  111. package/script/deps.js +3 -1
  112. package/script/storage/storage.d.ts +9 -0
  113. package/script/storage/storage.js +59 -0
  114. package/script/types/0_message_entity.d.ts +92 -0
  115. package/script/types/0_message_entity.js +156 -0
  116. package/script/utilities/0_html.d.ts +2 -0
  117. package/script/utilities/0_html.js +78 -0
@@ -0,0 +1,101 @@
1
+ import { isTag } from '../Node.js';
2
+ const emptyArray = [];
3
+ /**
4
+ * Get a node's children.
5
+ *
6
+ * @param elem Node to get the children of.
7
+ * @returns `elem`'s children, or an empty array.
8
+ */
9
+ export function getChildren(elem) {
10
+ return elem.children ?? emptyArray;
11
+ }
12
+ /**
13
+ * Get a node's parent.
14
+ *
15
+ * @param elem Node to get the parent of.
16
+ * @returns `elem`'s parent node.
17
+ */
18
+ export function getParent(elem) {
19
+ return elem.parent || null;
20
+ }
21
+ /**
22
+ * Gets an elements siblings, including the element itself.
23
+ *
24
+ * Attempts to get the children through the element's parent first.
25
+ * If we don't have a parent (the element is a root node),
26
+ * we walk the element's `prev` & `next` to get all remaining nodes.
27
+ *
28
+ * @param elem Element to get the siblings of.
29
+ * @returns `elem`'s siblings.
30
+ */
31
+ export function getSiblings(elem) {
32
+ const parent = getParent(elem);
33
+ if (parent != null)
34
+ return getChildren(parent);
35
+ const siblings = [elem];
36
+ let { prev, next } = elem;
37
+ while (prev != null) {
38
+ siblings.unshift(prev);
39
+ ({ prev } = prev);
40
+ }
41
+ while (next != null) {
42
+ siblings.push(next);
43
+ ({ next } = next);
44
+ }
45
+ return siblings;
46
+ }
47
+ /**
48
+ * Gets an attribute from an element.
49
+ *
50
+ * @param elem Element to check.
51
+ * @param name Attribute name to retrieve.
52
+ * @returns The element's attribute value, or `undefined`.
53
+ */
54
+ export function getAttributeValue(elem, name) {
55
+ return elem.attribs?.[name];
56
+ }
57
+ /**
58
+ * Checks whether an element has an attribute.
59
+ *
60
+ * @param elem Element to check.
61
+ * @param name Attribute name to look for.
62
+ * @returns Returns whether `elem` has the attribute `name`.
63
+ */
64
+ export function hasAttrib(elem, name) {
65
+ return (elem.attribs != null &&
66
+ Object.prototype.hasOwnProperty.call(elem.attribs, name) &&
67
+ elem.attribs[name] != null);
68
+ }
69
+ /**
70
+ * Get the tag name of an element.
71
+ *
72
+ * @param elem The element to get the name for.
73
+ * @returns The tag name of `elem`.
74
+ */
75
+ export function getName(elem) {
76
+ return elem.name;
77
+ }
78
+ /**
79
+ * Returns the next element sibling of a node.
80
+ *
81
+ * @param elem The element to get the next sibling of.
82
+ * @returns `elem`'s next sibling that is a tag.
83
+ */
84
+ export function nextElementSibling(elem) {
85
+ let { next } = elem;
86
+ while (next !== null && !isTag(next))
87
+ ({ next } = next);
88
+ return next;
89
+ }
90
+ /**
91
+ * Returns the previous element sibling of a node.
92
+ *
93
+ * @param elem The element to get the previous sibling of.
94
+ * @returns `elem`'s previous sibling that is a tag.
95
+ */
96
+ export function prevElementSibling(elem) {
97
+ let { prev } = elem;
98
+ while (prev !== null && !isTag(prev))
99
+ ({ prev } = prev);
100
+ return prev;
101
+ }
package/esm/deps.d.ts CHANGED
@@ -2,3 +2,4 @@ export * from "./deps/deno.land/std@0.186.0/testing/asserts.js";
2
2
  export { ctr256Decrypt, ctr256Encrypt, factorize, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/deno.land/x/tgcrypto@0.1.3/mod.js";
3
3
  export { gunzip, gzip } from "./deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.js";
4
4
  export { Mutex } from "async-mutex";
5
+ export { Parser } from "./deps/deno.land/x/html_parser@v0.1.3/src/mod.js";
package/esm/deps.js CHANGED
@@ -2,3 +2,4 @@ export * from "./deps/deno.land/std@0.186.0/testing/asserts.js";
2
2
  export { ctr256Decrypt, ctr256Encrypt, factorize, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/deno.land/x/tgcrypto@0.1.3/mod.js";
3
3
  export { gunzip, gzip } from "./deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.js";
4
4
  export { Mutex } from "async-mutex";
5
+ export { Parser } from "./deps/deno.land/x/html_parser@v0.1.3/src/mod.js";
@@ -11,4 +11,13 @@ export declare abstract class Storage {
11
11
  getAuthKey(): Promise<Uint8Array | null>;
12
12
  setAuthKey(authKey: Uint8Array | null): Promise<void>;
13
13
  get authKeyId(): bigint | null;
14
+ private readonly channelAccessHash__;
15
+ setChannelAccessHash(id: bigint, accessHash: bigint): MaybePromise<void>;
16
+ getChannelAccessHash(id: bigint): Promise<bigint | null>;
17
+ private readonly userAccessHash__;
18
+ setUserAccessHash(id: bigint, accessHash: bigint): MaybePromise<void>;
19
+ getUserAccessHash(id: bigint): Promise<bigint | null>;
20
+ private readonly username__;
21
+ updateUsernames(type: "user" | "channel", id: bigint, usernames: string[]): Promise<void>;
22
+ getUsername(username: string): Promise<readonly ["channel" | "user", bigint, Date] | null>;
14
23
  }
@@ -8,6 +8,24 @@ export class Storage {
8
8
  writable: true,
9
9
  value: null
10
10
  });
11
+ Object.defineProperty(this, "channelAccessHash__", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: "channelAccessHash__"
16
+ });
17
+ Object.defineProperty(this, "userAccessHash__", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: "userAccessHash__"
22
+ });
23
+ Object.defineProperty(this, "username__", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: "username__"
28
+ });
11
29
  }
12
30
  setDc(dc) {
13
31
  return this.set("dc", dc);
@@ -36,4 +54,45 @@ export class Storage {
36
54
  get authKeyId() {
37
55
  return this._authKeyId;
38
56
  }
57
+ setChannelAccessHash(id, accessHash) {
58
+ return this.set(`${this.channelAccessHash__}${id}`, String(accessHash));
59
+ }
60
+ async getChannelAccessHash(id) {
61
+ const accessHash = await this.get(`${this.channelAccessHash__}${id}`);
62
+ if (accessHash != null) {
63
+ return BigInt(accessHash);
64
+ }
65
+ else {
66
+ return null;
67
+ }
68
+ }
69
+ setUserAccessHash(id, accessHash) {
70
+ return this.set(`${this.userAccessHash__}${id}`, String(accessHash));
71
+ }
72
+ async getUserAccessHash(id) {
73
+ const accessHash = await this.get(`${this.userAccessHash__}${id}`);
74
+ if (accessHash != null) {
75
+ return BigInt(accessHash);
76
+ }
77
+ else {
78
+ return null;
79
+ }
80
+ }
81
+ async updateUsernames(type, id, usernames) {
82
+ for (let username of usernames) {
83
+ username = username.toLowerCase();
84
+ await this.set(`${this.username__}${username}`, JSON.stringify([type, String(id), new Date()]));
85
+ }
86
+ }
87
+ async getUsername(username) {
88
+ username = username.toLowerCase();
89
+ const username_ = await this.get(`${this.username__}${username}`);
90
+ if (username_ != null) {
91
+ const [type, id, updatedAt] = JSON.parse(username_);
92
+ return [type, BigInt(id), new Date(updatedAt)];
93
+ }
94
+ else {
95
+ return null;
96
+ }
97
+ }
39
98
  }
@@ -0,0 +1,92 @@
1
+ import * as types from "../tl/2_types.js";
2
+ export declare enum MessageEntityType {
3
+ Mention = "mention",
4
+ Hashtag = "hashtag",
5
+ BotCommand = "bot_command",
6
+ URL = "url",
7
+ Email = "email",
8
+ Bold = "bold",
9
+ Italic = "italic",
10
+ Code = "code",
11
+ Pre = "pre",
12
+ TextURL = "text_url",
13
+ MentionName = "mention_name",
14
+ Cashtag = "cashtag",
15
+ Phone = "phone",
16
+ Underline = "underline",
17
+ Strike = "strike",
18
+ Blockquote = "blockquote",
19
+ BankCard = "bank_card",
20
+ Spoiler = "spoiler",
21
+ CustomEmoji = "custom_emoji"
22
+ }
23
+ export declare namespace MessageEntity {
24
+ interface Base {
25
+ offset: number;
26
+ length: number;
27
+ }
28
+ interface Mention extends Base {
29
+ type: MessageEntityType.Mention;
30
+ }
31
+ interface Hashtag extends Base {
32
+ type: MessageEntityType.Hashtag;
33
+ }
34
+ interface BotCommand extends Base {
35
+ type: MessageEntityType.BotCommand;
36
+ }
37
+ interface URL extends Base {
38
+ type: MessageEntityType.URL;
39
+ }
40
+ interface EmailAddress extends Base {
41
+ type: MessageEntityType.Email;
42
+ }
43
+ interface Bold extends Base {
44
+ type: MessageEntityType.Bold;
45
+ }
46
+ interface Italic extends Base {
47
+ type: MessageEntityType.Italic;
48
+ }
49
+ interface Pre extends Base {
50
+ type: MessageEntityType.Pre;
51
+ language: string;
52
+ }
53
+ interface Code extends Base {
54
+ type: MessageEntityType.Code;
55
+ }
56
+ interface TextURL extends Base {
57
+ type: MessageEntityType.TextURL;
58
+ url: string;
59
+ }
60
+ interface MentionName extends Base {
61
+ type: MessageEntityType.MentionName;
62
+ userId: number;
63
+ }
64
+ interface Cashtag extends Base {
65
+ type: MessageEntityType.Cashtag;
66
+ }
67
+ interface Phone extends Base {
68
+ type: MessageEntityType.Phone;
69
+ }
70
+ interface Underline extends Base {
71
+ type: MessageEntityType.Underline;
72
+ }
73
+ interface Strike extends Base {
74
+ type: MessageEntityType.Strike;
75
+ }
76
+ interface Blockquote extends Base {
77
+ type: MessageEntityType.Blockquote;
78
+ }
79
+ interface BankCard extends Base {
80
+ type: MessageEntityType.BankCard;
81
+ }
82
+ interface Spoiler extends Base {
83
+ type: MessageEntityType.Spoiler;
84
+ }
85
+ interface CustomEmoji extends Base {
86
+ type: MessageEntityType.CustomEmoji;
87
+ documentId: bigint;
88
+ }
89
+ }
90
+ export type MessageEntity = MessageEntity.Mention | MessageEntity.Hashtag | MessageEntity.BotCommand | MessageEntity.URL | MessageEntity.EmailAddress | MessageEntity.Bold | MessageEntity.Italic | MessageEntity.Code | MessageEntity.Pre | MessageEntity.TextURL | MessageEntity.MentionName | MessageEntity.Cashtag | MessageEntity.Phone | MessageEntity.Underline | MessageEntity.Strike | MessageEntity.Blockquote | MessageEntity.BankCard | MessageEntity.Spoiler | MessageEntity.CustomEmoji;
91
+ export declare function constructMessageEntity(obj: types.TypeMessageEntity): MessageEntity | null;
92
+ export declare function messageEntityToTlObject(entity: MessageEntity): types.MessageEntityMention | types.MessageEntityHashtag | types.MessageEntityBotCommand | types.MessageEntityURL | types.MessageEntityEmail | types.MessageEntityBold | types.MessageEntityItalic | types.MessageEntityCode | types.MessageEntityPre | types.MessageEntityTextURL | types.MessageEntityMentionName | types.MessageEntityPhone | types.MessageEntityCashtag | types.MessageEntityUnderline | types.MessageEntityStrike | types.MessageEntityBlockquote | types.MessageEntityBankCard | types.MessageEntitySpoiler | types.MessageEntityCustomEmoji;
@@ -0,0 +1,128 @@
1
+ import * as types from "../tl/2_types.js";
2
+ export var MessageEntityType;
3
+ (function (MessageEntityType) {
4
+ MessageEntityType["Mention"] = "mention";
5
+ MessageEntityType["Hashtag"] = "hashtag";
6
+ MessageEntityType["BotCommand"] = "bot_command";
7
+ MessageEntityType["URL"] = "url";
8
+ MessageEntityType["Email"] = "email";
9
+ MessageEntityType["Bold"] = "bold";
10
+ MessageEntityType["Italic"] = "italic";
11
+ MessageEntityType["Code"] = "code";
12
+ MessageEntityType["Pre"] = "pre";
13
+ MessageEntityType["TextURL"] = "text_url";
14
+ MessageEntityType["MentionName"] = "mention_name";
15
+ MessageEntityType["Cashtag"] = "cashtag";
16
+ MessageEntityType["Phone"] = "phone";
17
+ MessageEntityType["Underline"] = "underline";
18
+ MessageEntityType["Strike"] = "strike";
19
+ MessageEntityType["Blockquote"] = "blockquote";
20
+ MessageEntityType["BankCard"] = "bank_card";
21
+ MessageEntityType["Spoiler"] = "spoiler";
22
+ MessageEntityType["CustomEmoji"] = "custom_emoji";
23
+ })(MessageEntityType || (MessageEntityType = {}));
24
+ export function constructMessageEntity(obj) {
25
+ if (obj instanceof types.MessageEntityMention) {
26
+ return { type: MessageEntityType.Mention, offset: obj.offset, length: obj.length };
27
+ }
28
+ else if (obj instanceof types.MessageEntityHashtag) {
29
+ return { type: MessageEntityType.Hashtag, offset: obj.offset, length: obj.length };
30
+ }
31
+ else if (obj instanceof types.MessageEntityBotCommand) {
32
+ return { type: MessageEntityType.BotCommand, offset: obj.offset, length: obj.length };
33
+ }
34
+ else if (obj instanceof types.MessageEntityURL) {
35
+ return { type: MessageEntityType.URL, offset: obj.offset, length: obj.length };
36
+ }
37
+ else if (obj instanceof types.MessageEntityEmail) {
38
+ return { type: MessageEntityType.Email, offset: obj.offset, length: obj.length };
39
+ }
40
+ else if (obj instanceof types.MessageEntityBold) {
41
+ return { type: MessageEntityType.Bold, offset: obj.offset, length: obj.length };
42
+ }
43
+ else if (obj instanceof types.MessageEntityItalic) {
44
+ return { type: MessageEntityType.Italic, offset: obj.offset, length: obj.length };
45
+ }
46
+ else if (obj instanceof types.MessageEntityCode) {
47
+ return { type: MessageEntityType.Code, offset: obj.offset, length: obj.length };
48
+ }
49
+ else if (obj instanceof types.MessageEntityPre) {
50
+ return { type: MessageEntityType.Pre, offset: obj.offset, length: obj.length, language: obj.language };
51
+ }
52
+ else if (obj instanceof types.MessageEntityTextURL) {
53
+ return { type: MessageEntityType.TextURL, offset: obj.offset, length: obj.length, url: obj.url };
54
+ }
55
+ else if (obj instanceof types.MessageEntityMentionName) {
56
+ return { type: MessageEntityType.MentionName, offset: obj.offset, length: obj.length, userId: Number(obj.userId) };
57
+ }
58
+ else if (obj instanceof types.MessageEntityCashtag) {
59
+ return { type: MessageEntityType.Cashtag, offset: obj.offset, length: obj.length };
60
+ }
61
+ else if (obj instanceof types.MessageEntityPhone) {
62
+ return { type: MessageEntityType.Phone, offset: obj.offset, length: obj.length };
63
+ }
64
+ else if (obj instanceof types.MessageEntityUnderline) {
65
+ return { type: MessageEntityType.Underline, offset: obj.offset, length: obj.length };
66
+ }
67
+ else if (obj instanceof types.MessageEntityStrike) {
68
+ return { type: MessageEntityType.Strike, offset: obj.offset, length: obj.length };
69
+ }
70
+ else if (obj instanceof types.MessageEntityBlockquote) {
71
+ return { type: MessageEntityType.Blockquote, offset: obj.offset, length: obj.length };
72
+ }
73
+ else if (obj instanceof types.MessageEntityBankCard) {
74
+ return { type: MessageEntityType.BankCard, offset: obj.offset, length: obj.length };
75
+ }
76
+ else if (obj instanceof types.MessageEntitySpoiler) {
77
+ return { type: MessageEntityType.Spoiler, offset: obj.offset, length: obj.length };
78
+ }
79
+ else if (obj instanceof types.MessageEntityCustomEmoji) {
80
+ return { type: MessageEntityType.CustomEmoji, offset: obj.offset, length: obj.length, documentId: obj.documentId };
81
+ }
82
+ else {
83
+ return null;
84
+ }
85
+ }
86
+ export function messageEntityToTlObject(entity) {
87
+ const { offset, length } = entity;
88
+ switch (entity.type) {
89
+ case MessageEntityType.Mention:
90
+ return new types.MessageEntityMention({ offset, length });
91
+ case MessageEntityType.Hashtag:
92
+ return new types.MessageEntityHashtag({ offset, length });
93
+ case MessageEntityType.BotCommand:
94
+ return new types.MessageEntityBotCommand({ offset, length });
95
+ case MessageEntityType.URL:
96
+ return new types.MessageEntityURL({ offset, length });
97
+ case MessageEntityType.Email:
98
+ return new types.MessageEntityEmail({ offset, length });
99
+ case MessageEntityType.Bold:
100
+ return new types.MessageEntityBold({ offset, length });
101
+ case MessageEntityType.Italic:
102
+ return new types.MessageEntityItalic({ offset, length });
103
+ case MessageEntityType.Code:
104
+ return new types.MessageEntityCode({ offset, length });
105
+ case MessageEntityType.Pre:
106
+ return new types.MessageEntityPre({ offset, length, language: entity.language });
107
+ case MessageEntityType.TextURL:
108
+ return new types.MessageEntityTextURL({ offset, length, url: entity.url });
109
+ case MessageEntityType.MentionName:
110
+ return new types.MessageEntityMentionName({ offset, length, userId: BigInt(entity.userId) });
111
+ case MessageEntityType.Cashtag:
112
+ return new types.MessageEntityCashtag({ offset, length });
113
+ case MessageEntityType.Phone:
114
+ return new types.MessageEntityPhone({ offset, length });
115
+ case MessageEntityType.Underline:
116
+ return new types.MessageEntityUnderline({ offset, length });
117
+ case MessageEntityType.Strike:
118
+ return new types.MessageEntityStrike({ offset, length });
119
+ case MessageEntityType.Blockquote:
120
+ return new types.MessageEntityBlockquote({ offset, length });
121
+ case MessageEntityType.BankCard:
122
+ return new types.MessageEntityBankCard({ offset, length });
123
+ case MessageEntityType.Spoiler:
124
+ return new types.MessageEntitySpoiler({ offset, length });
125
+ case MessageEntityType.CustomEmoji:
126
+ return new types.MessageEntityCustomEmoji({ offset, length, documentId: entity.documentId });
127
+ }
128
+ }
@@ -0,0 +1,2 @@
1
+ import { MessageEntity } from "../types/0_message_entity.js";
2
+ export declare function parseHtml(html: string): readonly [string, MessageEntity[]];
@@ -0,0 +1,74 @@
1
+ import { Parser } from "../deps.js";
2
+ import { MessageEntityType } from "../types/0_message_entity.js";
3
+ export function parseHtml(html) {
4
+ let text = "";
5
+ const entities = new Array();
6
+ const queue = new Array();
7
+ const parser = new Parser({
8
+ onopentag(name, attribs) {
9
+ switch (name) {
10
+ case "b":
11
+ case "strong":
12
+ queue.push({ type: MessageEntityType.Bold, offset: text.length, length: 0 });
13
+ break;
14
+ case "em":
15
+ case "i":
16
+ queue.push({ type: MessageEntityType.Italic, offset: text.length, length: 0 });
17
+ break;
18
+ case "code":
19
+ queue.push({ type: MessageEntityType.Code, offset: text.length, length: 0 });
20
+ break;
21
+ case "pre": {
22
+ const language = attribs.language ?? "";
23
+ queue.push({ type: MessageEntityType.Pre, offset: text.length, length: 0, language });
24
+ break;
25
+ }
26
+ case "a": {
27
+ const url = attribs.href;
28
+ if (!url) {
29
+ throw new Error("Missing attribute href");
30
+ }
31
+ queue.push({ type: MessageEntityType.TextURL, offset: text.length, length: 0, url });
32
+ break;
33
+ }
34
+ case "ins":
35
+ case "u":
36
+ queue.push({ type: MessageEntityType.Underline, offset: text.length, length: 0 });
37
+ break;
38
+ case "del":
39
+ case "strike":
40
+ queue.push({ type: MessageEntityType.Strike, offset: text.length, length: 0 });
41
+ break;
42
+ case "span":
43
+ if (attribs.class != "tg-spoiler") {
44
+ throw new Error("The class attribute must be tg-spoiler");
45
+ }
46
+ // falls through
47
+ case "tg-spoiler":
48
+ queue.push({ type: MessageEntityType.Spoiler, offset: text.length, length: 0 });
49
+ break;
50
+ case "tg-emoji":
51
+ if (!attribs["emoji-id"]) {
52
+ throw new Error("Missing attribute emoji-id");
53
+ }
54
+ queue.push({ type: MessageEntityType.Spoiler, offset: text.length, length: 0 });
55
+ }
56
+ },
57
+ ontext(data) {
58
+ text += data;
59
+ const lastItem = queue[queue.length - 1];
60
+ if (lastItem) {
61
+ lastItem.length += data.length;
62
+ }
63
+ },
64
+ onclosetag() {
65
+ const lastItem = queue.pop();
66
+ if (lastItem) {
67
+ entities.push(lastItem);
68
+ }
69
+ },
70
+ });
71
+ parser.write(html);
72
+ parser.end();
73
+ return [text, entities];
74
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "module": "./esm/mod.js",
3
3
  "main": "./script/mod.js",
4
4
  "name": "@mtkruto/node",
5
- "version": "0.0.830",
5
+ "version": "0.0.831",
6
6
  "description": "MTKruto for Node.js",
7
7
  "author": "Roj <rojvv@icloud.com>",
8
8
  "license": "LGPL-3.0-or-later",
@@ -4,7 +4,12 @@ import * as functions from "../tl/3_functions.js";
4
4
  import { ClientAbstract } from "./client_abstract.js";
5
5
  import { Storage } from "../storage/storage.js";
6
6
  import { DC, TransportProvider } from "../transport/transport_provider.js";
7
+ import { MessageEntity } from "../types/0_message_entity.js";
7
8
  export declare const restartAuth: unique symbol;
9
+ export declare enum ParseMode {
10
+ None = "none",
11
+ HTML = "html"
12
+ }
8
13
  export interface AuthorizeUserParams<S = string> {
9
14
  phone: S | (() => MaybePromise<S>);
10
15
  code: S | (() => MaybePromise<S>);
@@ -12,6 +17,10 @@ export interface AuthorizeUserParams<S = string> {
12
17
  }
13
18
  export type UpdatesHandler = null | ((client: Client, update: types.Updates) => MaybePromise<void>);
14
19
  export interface ClientParams {
20
+ /**
21
+ * Default parse mode. Defauls to `ParseMode.None`.
22
+ */
23
+ parseMode?: ParseMode;
15
24
  /**
16
25
  * The transport provider to use. Defaults to `defaultTransportProvider`.
17
26
  */
@@ -51,6 +60,7 @@ export declare class Client extends ClientAbstract {
51
60
  private promises;
52
61
  private toAcknowledge;
53
62
  updatesHandler: UpdatesHandler;
63
+ readonly parseMode: ParseMode;
54
64
  readonly appVersion: string;
55
65
  readonly deviceModel: string;
56
66
  readonly langCode: string;
@@ -113,4 +123,18 @@ export declare class Client extends ClientAbstract {
113
123
  * Alias for `invoke` with its second parameter being `true`.
114
124
  */
115
125
  send<T extends (functions.Function<unknown> | types.Type) = functions.Function<unknown>>(function_: T): Promise<void>;
126
+ private processChats;
127
+ private processUsers;
128
+ private processUpdates;
129
+ getInputPeer(id: string | number): Promise<types.InputPeerChat | types.InputPeerUser | types.InputPeerChannel>;
130
+ sendMessage(chatId: number | string, text: string, params?: {
131
+ parseMode?: ParseMode;
132
+ entities?: MessageEntity[];
133
+ disableWebPagePreview?: boolean;
134
+ disableNotification?: boolean;
135
+ protectContent?: boolean;
136
+ replyToMessageId?: number;
137
+ messageThreadId?: number;
138
+ sendAs?: number | string;
139
+ }): Promise<types.TypeUpdates>;
116
140
  }