@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,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = void 0;
4
+ const Node_js_1 = require("../Node.js");
5
+ const emptyArray = [];
6
+ /**
7
+ * Get a node's children.
8
+ *
9
+ * @param elem Node to get the children of.
10
+ * @returns `elem`'s children, or an empty array.
11
+ */
12
+ function getChildren(elem) {
13
+ return elem.children ?? emptyArray;
14
+ }
15
+ exports.getChildren = getChildren;
16
+ /**
17
+ * Get a node's parent.
18
+ *
19
+ * @param elem Node to get the parent of.
20
+ * @returns `elem`'s parent node.
21
+ */
22
+ function getParent(elem) {
23
+ return elem.parent || null;
24
+ }
25
+ exports.getParent = getParent;
26
+ /**
27
+ * Gets an elements siblings, including the element itself.
28
+ *
29
+ * Attempts to get the children through the element's parent first.
30
+ * If we don't have a parent (the element is a root node),
31
+ * we walk the element's `prev` & `next` to get all remaining nodes.
32
+ *
33
+ * @param elem Element to get the siblings of.
34
+ * @returns `elem`'s siblings.
35
+ */
36
+ function getSiblings(elem) {
37
+ const parent = getParent(elem);
38
+ if (parent != null)
39
+ return getChildren(parent);
40
+ const siblings = [elem];
41
+ let { prev, next } = elem;
42
+ while (prev != null) {
43
+ siblings.unshift(prev);
44
+ ({ prev } = prev);
45
+ }
46
+ while (next != null) {
47
+ siblings.push(next);
48
+ ({ next } = next);
49
+ }
50
+ return siblings;
51
+ }
52
+ exports.getSiblings = getSiblings;
53
+ /**
54
+ * Gets an attribute from an element.
55
+ *
56
+ * @param elem Element to check.
57
+ * @param name Attribute name to retrieve.
58
+ * @returns The element's attribute value, or `undefined`.
59
+ */
60
+ function getAttributeValue(elem, name) {
61
+ return elem.attribs?.[name];
62
+ }
63
+ exports.getAttributeValue = getAttributeValue;
64
+ /**
65
+ * Checks whether an element has an attribute.
66
+ *
67
+ * @param elem Element to check.
68
+ * @param name Attribute name to look for.
69
+ * @returns Returns whether `elem` has the attribute `name`.
70
+ */
71
+ function hasAttrib(elem, name) {
72
+ return (elem.attribs != null &&
73
+ Object.prototype.hasOwnProperty.call(elem.attribs, name) &&
74
+ elem.attribs[name] != null);
75
+ }
76
+ exports.hasAttrib = hasAttrib;
77
+ /**
78
+ * Get the tag name of an element.
79
+ *
80
+ * @param elem The element to get the name for.
81
+ * @returns The tag name of `elem`.
82
+ */
83
+ function getName(elem) {
84
+ return elem.name;
85
+ }
86
+ exports.getName = getName;
87
+ /**
88
+ * Returns the next element sibling of a node.
89
+ *
90
+ * @param elem The element to get the next sibling of.
91
+ * @returns `elem`'s next sibling that is a tag.
92
+ */
93
+ function nextElementSibling(elem) {
94
+ let { next } = elem;
95
+ while (next !== null && !(0, Node_js_1.isTag)(next))
96
+ ({ next } = next);
97
+ return next;
98
+ }
99
+ exports.nextElementSibling = nextElementSibling;
100
+ /**
101
+ * Returns the previous element sibling of a node.
102
+ *
103
+ * @param elem The element to get the previous sibling of.
104
+ * @returns `elem`'s previous sibling that is a tag.
105
+ */
106
+ function prevElementSibling(elem) {
107
+ let { prev } = elem;
108
+ while (prev !== null && !(0, Node_js_1.isTag)(prev))
109
+ ({ prev } = prev);
110
+ return prev;
111
+ }
112
+ exports.prevElementSibling = prevElementSibling;
package/script/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/script/deps.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Mutex = exports.gzip = exports.gunzip = exports.initTgCrypto = exports.ige256Encrypt = exports.ige256Decrypt = exports.factorize = exports.ctr256Encrypt = exports.ctr256Decrypt = void 0;
17
+ exports.Parser = exports.Mutex = exports.gzip = exports.gunzip = exports.initTgCrypto = exports.ige256Encrypt = exports.ige256Decrypt = exports.factorize = exports.ctr256Encrypt = exports.ctr256Decrypt = void 0;
18
18
  __exportStar(require("./deps/deno.land/std@0.186.0/testing/asserts.js"), exports);
19
19
  var mod_js_1 = require("./deps/deno.land/x/tgcrypto@0.1.3/mod.js");
20
20
  Object.defineProperty(exports, "ctr256Decrypt", { enumerable: true, get: function () { return mod_js_1.ctr256Decrypt; } });
@@ -28,3 +28,5 @@ Object.defineProperty(exports, "gunzip", { enumerable: true, get: function () {
28
28
  Object.defineProperty(exports, "gzip", { enumerable: true, get: function () { return gzip_js_1.gzip; } });
29
29
  var async_mutex_1 = require("async-mutex");
30
30
  Object.defineProperty(exports, "Mutex", { enumerable: true, get: function () { return async_mutex_1.Mutex; } });
31
+ var mod_js_2 = require("./deps/deno.land/x/html_parser@v0.1.3/src/mod.js");
32
+ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return mod_js_2.Parser; } });
@@ -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
  }
@@ -11,6 +11,24 @@ class Storage {
11
11
  writable: true,
12
12
  value: null
13
13
  });
14
+ Object.defineProperty(this, "channelAccessHash__", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: "channelAccessHash__"
19
+ });
20
+ Object.defineProperty(this, "userAccessHash__", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: "userAccessHash__"
25
+ });
26
+ Object.defineProperty(this, "username__", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true,
30
+ value: "username__"
31
+ });
14
32
  }
15
33
  setDc(dc) {
16
34
  return this.set("dc", dc);
@@ -39,5 +57,46 @@ class Storage {
39
57
  get authKeyId() {
40
58
  return this._authKeyId;
41
59
  }
60
+ setChannelAccessHash(id, accessHash) {
61
+ return this.set(`${this.channelAccessHash__}${id}`, String(accessHash));
62
+ }
63
+ async getChannelAccessHash(id) {
64
+ const accessHash = await this.get(`${this.channelAccessHash__}${id}`);
65
+ if (accessHash != null) {
66
+ return BigInt(accessHash);
67
+ }
68
+ else {
69
+ return null;
70
+ }
71
+ }
72
+ setUserAccessHash(id, accessHash) {
73
+ return this.set(`${this.userAccessHash__}${id}`, String(accessHash));
74
+ }
75
+ async getUserAccessHash(id) {
76
+ const accessHash = await this.get(`${this.userAccessHash__}${id}`);
77
+ if (accessHash != null) {
78
+ return BigInt(accessHash);
79
+ }
80
+ else {
81
+ return null;
82
+ }
83
+ }
84
+ async updateUsernames(type, id, usernames) {
85
+ for (let username of usernames) {
86
+ username = username.toLowerCase();
87
+ await this.set(`${this.username__}${username}`, JSON.stringify([type, String(id), new Date()]));
88
+ }
89
+ }
90
+ async getUsername(username) {
91
+ username = username.toLowerCase();
92
+ const username_ = await this.get(`${this.username__}${username}`);
93
+ if (username_ != null) {
94
+ const [type, id, updatedAt] = JSON.parse(username_);
95
+ return [type, BigInt(id), new Date(updatedAt)];
96
+ }
97
+ else {
98
+ return null;
99
+ }
100
+ }
42
101
  }
43
102
  exports.Storage = Storage;
@@ -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,156 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.messageEntityToTlObject = exports.constructMessageEntity = exports.MessageEntityType = void 0;
27
+ const types = __importStar(require("../tl/2_types.js"));
28
+ var MessageEntityType;
29
+ (function (MessageEntityType) {
30
+ MessageEntityType["Mention"] = "mention";
31
+ MessageEntityType["Hashtag"] = "hashtag";
32
+ MessageEntityType["BotCommand"] = "bot_command";
33
+ MessageEntityType["URL"] = "url";
34
+ MessageEntityType["Email"] = "email";
35
+ MessageEntityType["Bold"] = "bold";
36
+ MessageEntityType["Italic"] = "italic";
37
+ MessageEntityType["Code"] = "code";
38
+ MessageEntityType["Pre"] = "pre";
39
+ MessageEntityType["TextURL"] = "text_url";
40
+ MessageEntityType["MentionName"] = "mention_name";
41
+ MessageEntityType["Cashtag"] = "cashtag";
42
+ MessageEntityType["Phone"] = "phone";
43
+ MessageEntityType["Underline"] = "underline";
44
+ MessageEntityType["Strike"] = "strike";
45
+ MessageEntityType["Blockquote"] = "blockquote";
46
+ MessageEntityType["BankCard"] = "bank_card";
47
+ MessageEntityType["Spoiler"] = "spoiler";
48
+ MessageEntityType["CustomEmoji"] = "custom_emoji";
49
+ })(MessageEntityType = exports.MessageEntityType || (exports.MessageEntityType = {}));
50
+ function constructMessageEntity(obj) {
51
+ if (obj instanceof types.MessageEntityMention) {
52
+ return { type: MessageEntityType.Mention, offset: obj.offset, length: obj.length };
53
+ }
54
+ else if (obj instanceof types.MessageEntityHashtag) {
55
+ return { type: MessageEntityType.Hashtag, offset: obj.offset, length: obj.length };
56
+ }
57
+ else if (obj instanceof types.MessageEntityBotCommand) {
58
+ return { type: MessageEntityType.BotCommand, offset: obj.offset, length: obj.length };
59
+ }
60
+ else if (obj instanceof types.MessageEntityURL) {
61
+ return { type: MessageEntityType.URL, offset: obj.offset, length: obj.length };
62
+ }
63
+ else if (obj instanceof types.MessageEntityEmail) {
64
+ return { type: MessageEntityType.Email, offset: obj.offset, length: obj.length };
65
+ }
66
+ else if (obj instanceof types.MessageEntityBold) {
67
+ return { type: MessageEntityType.Bold, offset: obj.offset, length: obj.length };
68
+ }
69
+ else if (obj instanceof types.MessageEntityItalic) {
70
+ return { type: MessageEntityType.Italic, offset: obj.offset, length: obj.length };
71
+ }
72
+ else if (obj instanceof types.MessageEntityCode) {
73
+ return { type: MessageEntityType.Code, offset: obj.offset, length: obj.length };
74
+ }
75
+ else if (obj instanceof types.MessageEntityPre) {
76
+ return { type: MessageEntityType.Pre, offset: obj.offset, length: obj.length, language: obj.language };
77
+ }
78
+ else if (obj instanceof types.MessageEntityTextURL) {
79
+ return { type: MessageEntityType.TextURL, offset: obj.offset, length: obj.length, url: obj.url };
80
+ }
81
+ else if (obj instanceof types.MessageEntityMentionName) {
82
+ return { type: MessageEntityType.MentionName, offset: obj.offset, length: obj.length, userId: Number(obj.userId) };
83
+ }
84
+ else if (obj instanceof types.MessageEntityCashtag) {
85
+ return { type: MessageEntityType.Cashtag, offset: obj.offset, length: obj.length };
86
+ }
87
+ else if (obj instanceof types.MessageEntityPhone) {
88
+ return { type: MessageEntityType.Phone, offset: obj.offset, length: obj.length };
89
+ }
90
+ else if (obj instanceof types.MessageEntityUnderline) {
91
+ return { type: MessageEntityType.Underline, offset: obj.offset, length: obj.length };
92
+ }
93
+ else if (obj instanceof types.MessageEntityStrike) {
94
+ return { type: MessageEntityType.Strike, offset: obj.offset, length: obj.length };
95
+ }
96
+ else if (obj instanceof types.MessageEntityBlockquote) {
97
+ return { type: MessageEntityType.Blockquote, offset: obj.offset, length: obj.length };
98
+ }
99
+ else if (obj instanceof types.MessageEntityBankCard) {
100
+ return { type: MessageEntityType.BankCard, offset: obj.offset, length: obj.length };
101
+ }
102
+ else if (obj instanceof types.MessageEntitySpoiler) {
103
+ return { type: MessageEntityType.Spoiler, offset: obj.offset, length: obj.length };
104
+ }
105
+ else if (obj instanceof types.MessageEntityCustomEmoji) {
106
+ return { type: MessageEntityType.CustomEmoji, offset: obj.offset, length: obj.length, documentId: obj.documentId };
107
+ }
108
+ else {
109
+ return null;
110
+ }
111
+ }
112
+ exports.constructMessageEntity = constructMessageEntity;
113
+ function messageEntityToTlObject(entity) {
114
+ const { offset, length } = entity;
115
+ switch (entity.type) {
116
+ case MessageEntityType.Mention:
117
+ return new types.MessageEntityMention({ offset, length });
118
+ case MessageEntityType.Hashtag:
119
+ return new types.MessageEntityHashtag({ offset, length });
120
+ case MessageEntityType.BotCommand:
121
+ return new types.MessageEntityBotCommand({ offset, length });
122
+ case MessageEntityType.URL:
123
+ return new types.MessageEntityURL({ offset, length });
124
+ case MessageEntityType.Email:
125
+ return new types.MessageEntityEmail({ offset, length });
126
+ case MessageEntityType.Bold:
127
+ return new types.MessageEntityBold({ offset, length });
128
+ case MessageEntityType.Italic:
129
+ return new types.MessageEntityItalic({ offset, length });
130
+ case MessageEntityType.Code:
131
+ return new types.MessageEntityCode({ offset, length });
132
+ case MessageEntityType.Pre:
133
+ return new types.MessageEntityPre({ offset, length, language: entity.language });
134
+ case MessageEntityType.TextURL:
135
+ return new types.MessageEntityTextURL({ offset, length, url: entity.url });
136
+ case MessageEntityType.MentionName:
137
+ return new types.MessageEntityMentionName({ offset, length, userId: BigInt(entity.userId) });
138
+ case MessageEntityType.Cashtag:
139
+ return new types.MessageEntityCashtag({ offset, length });
140
+ case MessageEntityType.Phone:
141
+ return new types.MessageEntityPhone({ offset, length });
142
+ case MessageEntityType.Underline:
143
+ return new types.MessageEntityUnderline({ offset, length });
144
+ case MessageEntityType.Strike:
145
+ return new types.MessageEntityStrike({ offset, length });
146
+ case MessageEntityType.Blockquote:
147
+ return new types.MessageEntityBlockquote({ offset, length });
148
+ case MessageEntityType.BankCard:
149
+ return new types.MessageEntityBankCard({ offset, length });
150
+ case MessageEntityType.Spoiler:
151
+ return new types.MessageEntitySpoiler({ offset, length });
152
+ case MessageEntityType.CustomEmoji:
153
+ return new types.MessageEntityCustomEmoji({ offset, length, documentId: entity.documentId });
154
+ }
155
+ }
156
+ exports.messageEntityToTlObject = messageEntityToTlObject;
@@ -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,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseHtml = void 0;
4
+ const deps_js_1 = require("../deps.js");
5
+ const _0_message_entity_js_1 = require("../types/0_message_entity.js");
6
+ function parseHtml(html) {
7
+ let text = "";
8
+ const entities = new Array();
9
+ const queue = new Array();
10
+ const parser = new deps_js_1.Parser({
11
+ onopentag(name, attribs) {
12
+ switch (name) {
13
+ case "b":
14
+ case "strong":
15
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Bold, offset: text.length, length: 0 });
16
+ break;
17
+ case "em":
18
+ case "i":
19
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Italic, offset: text.length, length: 0 });
20
+ break;
21
+ case "code":
22
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Code, offset: text.length, length: 0 });
23
+ break;
24
+ case "pre": {
25
+ const language = attribs.language ?? "";
26
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Pre, offset: text.length, length: 0, language });
27
+ break;
28
+ }
29
+ case "a": {
30
+ const url = attribs.href;
31
+ if (!url) {
32
+ throw new Error("Missing attribute href");
33
+ }
34
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.TextURL, offset: text.length, length: 0, url });
35
+ break;
36
+ }
37
+ case "ins":
38
+ case "u":
39
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Underline, offset: text.length, length: 0 });
40
+ break;
41
+ case "del":
42
+ case "strike":
43
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Strike, offset: text.length, length: 0 });
44
+ break;
45
+ case "span":
46
+ if (attribs.class != "tg-spoiler") {
47
+ throw new Error("The class attribute must be tg-spoiler");
48
+ }
49
+ // falls through
50
+ case "tg-spoiler":
51
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Spoiler, offset: text.length, length: 0 });
52
+ break;
53
+ case "tg-emoji":
54
+ if (!attribs["emoji-id"]) {
55
+ throw new Error("Missing attribute emoji-id");
56
+ }
57
+ queue.push({ type: _0_message_entity_js_1.MessageEntityType.Spoiler, offset: text.length, length: 0 });
58
+ }
59
+ },
60
+ ontext(data) {
61
+ text += data;
62
+ const lastItem = queue[queue.length - 1];
63
+ if (lastItem) {
64
+ lastItem.length += data.length;
65
+ }
66
+ },
67
+ onclosetag() {
68
+ const lastItem = queue.pop();
69
+ if (lastItem) {
70
+ entities.push(lastItem);
71
+ }
72
+ },
73
+ });
74
+ parser.write(html);
75
+ parser.end();
76
+ return [text, entities];
77
+ }
78
+ exports.parseHtml = parseHtml;