@mtkruto/node 0.1.108 → 0.1.109

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 (65) hide show
  1. package/esm/0_deps.d.ts +1 -1
  2. package/esm/0_deps.js +1 -1
  3. package/esm/4_constants.d.ts +1 -1
  4. package/esm/4_constants.js +1 -1
  5. package/esm/client/0_html.js +26 -14
  6. package/esm/client/0_utilities.d.ts +1 -1
  7. package/esm/client/0_utilities.js +1 -2
  8. package/esm/client/1_client_abstract.d.ts +1 -1
  9. package/esm/client/1_client_abstract.js +16 -8
  10. package/esm/client/2_client_plain.d.ts +1 -2
  11. package/esm/client/2_client_plain.js +20 -15
  12. package/esm/client/4_client.d.ts +4 -55
  13. package/esm/client/4_client.js +619 -716
  14. package/esm/connection/1_connection_web_socket.d.ts +1 -9
  15. package/esm/connection/1_connection_web_socket.js +81 -108
  16. package/esm/storage/0_storage.d.ts +3 -2
  17. package/esm/storage/0_storage.js +35 -26
  18. package/esm/storage/0_utilities.d.ts +1 -1
  19. package/esm/storage/0_utilities.js +56 -26
  20. package/esm/storage/1_storage_local_storage.d.ts +1 -1
  21. package/esm/storage/1_storage_session_storage.d.ts +1 -1
  22. package/esm/transport/1_transport_abridged.d.ts +1 -2
  23. package/esm/transport/1_transport_abridged.js +24 -19
  24. package/esm/transport/1_transport_intermediate.d.ts +1 -2
  25. package/esm/transport/1_transport_intermediate.js +23 -18
  26. package/esm/types/0_color.d.ts +2 -1
  27. package/esm/types/0_color.js +21 -1
  28. package/esm/types/1_chat.js +5 -5
  29. package/esm/types/1_user.js +2 -2
  30. package/esm/utilities/0_base64.js +3 -3
  31. package/esm/utilities/0_queue.d.ts +2 -4
  32. package/esm/utilities/0_queue.js +39 -36
  33. package/package.json +1 -1
  34. package/script/0_deps.d.ts +1 -1
  35. package/script/0_deps.js +3 -3
  36. package/script/4_constants.d.ts +1 -1
  37. package/script/4_constants.js +1 -1
  38. package/script/client/0_html.js +26 -14
  39. package/script/client/0_utilities.d.ts +1 -1
  40. package/script/client/0_utilities.js +1 -2
  41. package/script/client/1_client_abstract.d.ts +1 -1
  42. package/script/client/1_client_abstract.js +16 -8
  43. package/script/client/2_client_plain.d.ts +1 -2
  44. package/script/client/2_client_plain.js +20 -15
  45. package/script/client/4_client.d.ts +4 -55
  46. package/script/client/4_client.js +619 -716
  47. package/script/connection/1_connection_web_socket.d.ts +1 -9
  48. package/script/connection/1_connection_web_socket.js +81 -108
  49. package/script/storage/0_storage.d.ts +3 -2
  50. package/script/storage/0_storage.js +35 -26
  51. package/script/storage/0_utilities.d.ts +1 -1
  52. package/script/storage/0_utilities.js +55 -25
  53. package/script/storage/1_storage_local_storage.d.ts +1 -1
  54. package/script/storage/1_storage_session_storage.d.ts +1 -1
  55. package/script/transport/1_transport_abridged.d.ts +1 -2
  56. package/script/transport/1_transport_abridged.js +24 -19
  57. package/script/transport/1_transport_intermediate.d.ts +1 -2
  58. package/script/transport/1_transport_intermediate.js +23 -18
  59. package/script/types/0_color.d.ts +2 -1
  60. package/script/types/0_color.js +24 -3
  61. package/script/types/1_chat.js +4 -4
  62. package/script/types/1_user.js +1 -1
  63. package/script/utilities/0_base64.js +2 -2
  64. package/script/utilities/0_queue.d.ts +2 -4
  65. package/script/utilities/0_queue.js +39 -36
@@ -1,29 +1,33 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _TransportIntermediate_connection, _TransportIntermediate_obfuscated;
1
13
  import { bufferFromBigInt, concat } from "../1_utilities.js";
2
14
  import { getObfuscationParameters } from "./0_obfuscation.js";
3
15
  import { Transport } from "./0_transport.js";
4
16
  export class TransportIntermediate extends Transport {
5
17
  constructor(connection, obfuscated = false) {
6
18
  super();
7
- Object.defineProperty(this, "connection", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: connection
12
- });
13
- Object.defineProperty(this, "obfuscated", {
14
- enumerable: true,
15
- configurable: true,
16
- writable: true,
17
- value: obfuscated
18
- });
19
+ _TransportIntermediate_connection.set(this, void 0);
20
+ _TransportIntermediate_obfuscated.set(this, void 0);
21
+ __classPrivateFieldSet(this, _TransportIntermediate_connection, connection, "f");
22
+ __classPrivateFieldSet(this, _TransportIntermediate_obfuscated, obfuscated, "f");
19
23
  }
20
24
  async initialize() {
21
25
  if (!this.initialized) {
22
- if (this.obfuscated) {
23
- this.obfuscationParameters = await getObfuscationParameters(0xEEEEEEEE, this.connection);
26
+ if (__classPrivateFieldGet(this, _TransportIntermediate_obfuscated, "f")) {
27
+ this.obfuscationParameters = await getObfuscationParameters(0xEEEEEEEE, __classPrivateFieldGet(this, _TransportIntermediate_connection, "f"));
24
28
  }
25
29
  else {
26
- await this.connection.write(new Uint8Array([0xEE, 0xEE, 0xEE, 0xEE]));
30
+ await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").write(new Uint8Array([0xEE, 0xEE, 0xEE, 0xEE]));
27
31
  }
28
32
  this.initialized = true;
29
33
  }
@@ -35,13 +39,13 @@ export class TransportIntermediate extends Transport {
35
39
  let length;
36
40
  {
37
41
  const buffer = new Uint8Array(4);
38
- await this.connection.read(buffer);
42
+ await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").read(buffer);
39
43
  this.decrypt(buffer);
40
44
  const dataView = new DataView(buffer.buffer);
41
45
  length = dataView.getUint32(0, true);
42
46
  }
43
47
  const buffer = new Uint8Array(length);
44
- await this.connection.read(buffer);
48
+ await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").read(buffer);
45
49
  this.decrypt(buffer);
46
50
  return buffer;
47
51
  }
@@ -52,9 +56,10 @@ export class TransportIntermediate extends Transport {
52
56
  const length = bufferFromBigInt(buffer.length, 4);
53
57
  const data = concat(length, buffer);
54
58
  this.encrypt(data);
55
- await this.connection.write(data);
59
+ await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").write(data);
56
60
  }
57
61
  deinitialize() {
58
62
  this.initialized = false;
59
63
  }
60
64
  }
65
+ _TransportIntermediate_connection = new WeakMap(), _TransportIntermediate_obfuscated = new WeakMap();
@@ -1,2 +1,3 @@
1
1
  export type Color = "red" | "orange" | "violet" | "green" | "cyan" | "blue" | "pink";
2
- export declare function getColor(id: number): Color;
2
+ export declare function getColorFromPeerId(id: number): Color;
3
+ export declare function getColorFromColorId(id: number): Color;
@@ -7,10 +7,30 @@ const colors = [
7
7
  "blue",
8
8
  "pink",
9
9
  ];
10
- export function getColor(id) {
10
+ export function getColorFromPeerId(id) {
11
11
  id = Number(String(id).replaceAll("-100", "-"));
12
12
  if (id < 0) {
13
13
  id = -id;
14
14
  }
15
15
  return colors[id % 7];
16
16
  }
17
+ export function getColorFromColorId(id) {
18
+ switch (id) {
19
+ case 0:
20
+ return "red";
21
+ case 1:
22
+ return "orange";
23
+ case 2:
24
+ return "violet";
25
+ case 3:
26
+ return "green";
27
+ case 4:
28
+ return "cyan";
29
+ case 5:
30
+ return "blue";
31
+ case 6:
32
+ return "pink";
33
+ default:
34
+ return "blue";
35
+ }
36
+ }
@@ -2,7 +2,7 @@ import { cleanObject, UNREACHABLE } from "../1_utilities.js";
2
2
  import { types } from "../2_tl.js";
3
3
  import { ZERO_CHANNEL_ID } from "../4_constants.js";
4
4
  import { constructChatPhoto } from "./0_chat_photo.js";
5
- import { getColor } from "./0_color.js";
5
+ import { getColorFromColorId, getColorFromPeerId } from "./0_color.js";
6
6
  import { constructRestrictionReason } from "./0_restriction_reason.js";
7
7
  export function constructChat(chat) {
8
8
  if (chat instanceof types.User) {
@@ -11,7 +11,7 @@ export function constructChat(chat) {
11
11
  type: "private",
12
12
  isBot: chat.bot || false,
13
13
  id,
14
- color: getColor(id),
14
+ color: chat.color !== undefined ? getColorFromColorId(chat.color) : getColorFromPeerId(id),
15
15
  firstName: chat.firstName || "",
16
16
  lastName: chat.lastName,
17
17
  isScam: chat.scam || false,
@@ -33,7 +33,7 @@ export function constructChat(chat) {
33
33
  const chat_ = {
34
34
  type: "group",
35
35
  id,
36
- color: getColor(id),
36
+ color: getColorFromPeerId(id),
37
37
  title: chat.title,
38
38
  isCreator: chat.creator || false,
39
39
  };
@@ -49,7 +49,7 @@ export function constructChat(chat) {
49
49
  if (chat.megagroup) {
50
50
  chat_ = {
51
51
  id,
52
- color: getColor(id),
52
+ color: chat.color !== undefined ? getColorFromColorId(chat.color) : getColorFromPeerId(id),
53
53
  type: "supergroup",
54
54
  title,
55
55
  isScam,
@@ -63,7 +63,7 @@ export function constructChat(chat) {
63
63
  const id = ZERO_CHANNEL_ID + -Number(chat.id);
64
64
  chat_ = {
65
65
  id,
66
- color: getColor(id),
66
+ color: chat.color !== undefined ? getColorFromColorId(chat.color) : getColorFromPeerId(id),
67
67
  type: "channel",
68
68
  title,
69
69
  isScam,
@@ -1,12 +1,12 @@
1
1
  import { cleanObject } from "../1_utilities.js";
2
2
  import { types } from "../2_tl.js";
3
3
  import { constructChatPhoto } from "./0_chat_photo.js";
4
- import { getColor } from "./0_color.js";
4
+ import { getColorFromColorId, getColorFromPeerId } from "./0_color.js";
5
5
  export function constructUser(user_) {
6
6
  const id = Number(user_.id);
7
7
  const user = {
8
8
  id,
9
- color: getColor(id),
9
+ color: user_.color !== undefined ? getColorFromColorId(user_.color) : getColorFromPeerId(id),
10
10
  isBot: user_.bot || false,
11
11
  firstName: user_.firstName || "",
12
12
  lastName: user_.lastName,
@@ -1,11 +1,11 @@
1
- import { base64Decode, base64Encode } from "../0_deps.js";
1
+ import { decodeBase64, encodeBase64 } from "../0_deps.js";
2
2
  export function base64EncodeUrlSafe(data) {
3
- return base64Encode(data).replace(/=*$/, "").replaceAll("+", "-").replaceAll("/", "_");
3
+ return encodeBase64(data).replace(/=*$/, "").replaceAll("+", "-").replaceAll("/", "_");
4
4
  }
5
5
  export function base64DecodeUrlSafe(data) {
6
6
  data = data.replaceAll("_", "/").replaceAll("-", "+");
7
7
  if (data.length != 4) {
8
8
  data += "=".repeat(4 - data.length % 4);
9
9
  }
10
- return base64Decode(data);
10
+ return decodeBase64(data);
11
11
  }
@@ -1,8 +1,6 @@
1
1
  export declare class Queue {
2
- private d;
3
- private functions;
2
+ #private;
3
+ functions: (() => Promise<void>)[];
4
4
  constructor(name: string);
5
5
  add(fn: () => Promise<void>): void;
6
- private busy;
7
- private check;
8
6
  }
@@ -1,50 +1,53 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _Queue_instances, _Queue_d, _Queue_busy, _Queue_check;
1
13
  import { debug } from "../0_deps.js";
2
14
  export class Queue {
3
15
  constructor(name) {
4
- Object.defineProperty(this, "d", {
5
- enumerable: true,
6
- configurable: true,
7
- writable: true,
8
- value: void 0
9
- });
16
+ _Queue_instances.add(this);
17
+ _Queue_d.set(this, void 0);
10
18
  Object.defineProperty(this, "functions", {
11
19
  enumerable: true,
12
20
  configurable: true,
13
21
  writable: true,
14
22
  value: new Array()
15
23
  });
16
- Object.defineProperty(this, "busy", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: false
21
- });
22
- this.d = debug(`q/${name}`);
24
+ _Queue_busy.set(this, false);
25
+ __classPrivateFieldSet(this, _Queue_d, debug(`q/${name}`), "f");
23
26
  }
24
27
  add(fn) {
25
28
  this.functions.push(fn);
26
- this.check();
27
- }
28
- check() {
29
- if (this.busy) {
30
- return;
31
- }
32
- else {
33
- this.busy = true;
34
- }
35
- const fn = this.functions.shift();
36
- if (fn !== undefined) {
37
- fn()
38
- .catch((err) => {
39
- this.d("%o", "stack" in err ? err.stack : err);
40
- })
41
- .finally(() => {
42
- this.busy = false;
43
- this.check();
44
- });
45
- }
46
- else {
47
- this.busy = false;
48
- }
29
+ __classPrivateFieldGet(this, _Queue_instances, "m", _Queue_check).call(this);
49
30
  }
50
31
  }
32
+ _Queue_d = new WeakMap(), _Queue_busy = new WeakMap(), _Queue_instances = new WeakSet(), _Queue_check = function _Queue_check() {
33
+ if (__classPrivateFieldGet(this, _Queue_busy, "f")) {
34
+ return;
35
+ }
36
+ else {
37
+ __classPrivateFieldSet(this, _Queue_busy, true, "f");
38
+ }
39
+ const fn = this.functions.shift();
40
+ if (fn !== undefined) {
41
+ fn()
42
+ .catch((err) => {
43
+ __classPrivateFieldGet(this, _Queue_d, "f").call(this, "%o", "stack" in err ? err.stack : err);
44
+ })
45
+ .finally(() => {
46
+ __classPrivateFieldSet(this, _Queue_busy, false, "f");
47
+ __classPrivateFieldGet(this, _Queue_instances, "m", _Queue_check).call(this);
48
+ });
49
+ }
50
+ else {
51
+ __classPrivateFieldSet(this, _Queue_busy, false, "f");
52
+ }
53
+ };
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.1.108",
5
+ "version": "0.1.109",
6
6
  "description": "MTKruto for Node.js",
7
7
  "author": "Roj <rojvv@icloud.com>",
8
8
  "license": "LGPL-3.0-or-later",
@@ -5,4 +5,4 @@ export { Mutex, type MutexInterface } from "async-mutex";
5
5
  export { Parser } from "./deps/deno.land/x/html_parser@v0.1.3/src/mod.js";
6
6
  import { debug as debug_ } from "./deps/raw.githubusercontent.com/MTKruto/debug/main/mod.js";
7
7
  export declare const debug: typeof debug_;
8
- export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.204.0/encoding/base64.js";
8
+ export { decodeBase64, encodeBase64 } from "./deps/deno.land/std@0.204.0/encoding/base64.js";
package/script/0_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.base64Encode = exports.base64Decode = exports.debug = exports.Parser = exports.Mutex = exports.gzip = exports.gunzip = exports.initTgCrypto = exports.ige256Encrypt = exports.ige256Decrypt = exports.factorize = exports.ctr256 = void 0;
17
+ exports.encodeBase64 = exports.decodeBase64 = exports.debug = exports.Parser = exports.Mutex = exports.gzip = exports.gunzip = exports.initTgCrypto = exports.ige256Encrypt = exports.ige256Decrypt = exports.factorize = exports.ctr256 = void 0;
18
18
  __exportStar(require("./deps/deno.land/std@0.204.0/assert/mod.js"), exports);
19
19
  var mod_js_1 = require("./deps/deno.land/x/tgcrypto@0.3.3/mod.js");
20
20
  Object.defineProperty(exports, "ctr256", { enumerable: true, get: function () { return mod_js_1.ctr256; } });
@@ -33,5 +33,5 @@ const mod_js_3 = require("./deps/raw.githubusercontent.com/MTKruto/debug/main/mo
33
33
  const debug = (v) => (0, mod_js_3.debug)(v);
34
34
  exports.debug = debug;
35
35
  var base64_js_1 = require("./deps/deno.land/std@0.204.0/encoding/base64.js");
36
- Object.defineProperty(exports, "base64Decode", { enumerable: true, get: function () { return base64_js_1.decode; } });
37
- Object.defineProperty(exports, "base64Encode", { enumerable: true, get: function () { return base64_js_1.encode; } });
36
+ Object.defineProperty(exports, "decodeBase64", { enumerable: true, get: function () { return base64_js_1.decodeBase64; } });
37
+ Object.defineProperty(exports, "encodeBase64", { enumerable: true, get: function () { return base64_js_1.encodeBase64; } });
@@ -5,7 +5,7 @@ export declare const PUBLIC_KEYS: PublicKeys;
5
5
  export declare const VECTOR_CONSTRUCTOR = 481674261;
6
6
  export declare const INITIAL_DC: DC;
7
7
  export declare const LAYER = 166;
8
- export declare const APP_VERSION = "MTKruto 0.1.108";
8
+ export declare const APP_VERSION = "MTKruto 0.1.109";
9
9
  export declare const DEVICE_MODEL: string;
10
10
  export declare const LANG_CODE: string;
11
11
  export declare const LANG_PACK = "";
@@ -80,7 +80,7 @@ exports.PUBLIC_KEYS = Object.freeze([
80
80
  exports.VECTOR_CONSTRUCTOR = 0x1CB5C415;
81
81
  exports.INITIAL_DC = "2";
82
82
  exports.LAYER = 166;
83
- exports.APP_VERSION = "MTKruto 0.1.108";
83
+ exports.APP_VERSION = "MTKruto 0.1.109";
84
84
  // @ts-ignore: lib
85
85
  exports.DEVICE_MODEL = typeof dntShim.Deno === "undefined" ? typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : process.platform + "-" + process.arch : navigator.userAgent.split(" ")[0] : dntShim.Deno.build.os + "-" + dntShim.Deno.build.arch;
86
86
  exports.LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
@@ -3,26 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseHtml = void 0;
4
4
  const _0_deps_js_1 = require("../0_deps.js");
5
5
  function parseHtml(html) {
6
+ html = html.trim();
6
7
  let text = "";
7
8
  const entities = new Array();
8
- const queue = new Array();
9
+ const stack = new Array();
9
10
  const parser = new _0_deps_js_1.Parser({
10
11
  onopentag(name, attribs) {
11
12
  switch (name) {
12
13
  case "b":
13
14
  case "strong":
14
- queue.push({ type: "bold", offset: text.length, length: 0 });
15
+ stack.push({ type: "bold", offset: text.length, length: 0 });
15
16
  break;
16
17
  case "em":
17
18
  case "i":
18
- queue.push({ type: "italic", offset: text.length, length: 0 });
19
+ stack.push({ type: "italic", offset: text.length, length: 0 });
19
20
  break;
20
21
  case "code":
21
- queue.push({ type: "code", offset: text.length, length: 0 });
22
+ stack.push({ type: "code", offset: text.length, length: 0 });
22
23
  break;
23
24
  case "pre": {
24
25
  const language = attribs.language ?? "";
25
- queue.push({ type: "pre", offset: text.length, length: 0, language });
26
+ stack.push({ type: "pre", offset: text.length, length: 0, language });
26
27
  break;
27
28
  }
28
29
  case "a": {
@@ -30,16 +31,16 @@ function parseHtml(html) {
30
31
  if (!url) {
31
32
  throw new Error("Missing attribute href");
32
33
  }
33
- queue.push({ type: "textLink", offset: text.length, length: 0, url });
34
+ stack.push({ type: "textLink", offset: text.length, length: 0, url });
34
35
  break;
35
36
  }
36
37
  case "ins":
37
38
  case "u":
38
- queue.push({ type: "underline", offset: text.length, length: 0 });
39
+ stack.push({ type: "underline", offset: text.length, length: 0 });
39
40
  break;
40
41
  case "del":
41
42
  case "strike":
42
- queue.push({ type: "strikethrough", offset: text.length, length: 0 });
43
+ stack.push({ type: "strikethrough", offset: text.length, length: 0 });
43
44
  break;
44
45
  case "span":
45
46
  if (attribs.class != "tg-spoiler") {
@@ -47,24 +48,29 @@ function parseHtml(html) {
47
48
  }
48
49
  // falls through
49
50
  case "tg-spoiler":
50
- queue.push({ type: "spoiler", offset: text.length, length: 0 });
51
+ stack.push({ type: "spoiler", offset: text.length, length: 0 });
51
52
  break;
52
53
  case "tg-emoji":
53
54
  if (!attribs["emoji-id"]) {
54
55
  throw new Error("Missing attribute emoji-id");
55
56
  }
56
- queue.push({ type: "spoiler", offset: text.length, length: 0 });
57
+ stack.push({ type: "spoiler", offset: text.length, length: 0 });
58
+ break;
59
+ case "blockquote":
60
+ stack.push({ type: "blockquote", offset: text.length, length: 0 });
57
61
  }
58
62
  },
59
63
  ontext(data) {
64
+ if (!text.length) {
65
+ data = data.trimStart();
66
+ }
60
67
  text += data;
61
- const lastItem = queue[queue.length - 1];
62
- if (lastItem) {
63
- lastItem.length += data.length;
68
+ for (const item of stack) {
69
+ item.length += data.length;
64
70
  }
65
71
  },
66
72
  onclosetag() {
67
- const lastItem = queue.pop();
73
+ const lastItem = stack.pop();
68
74
  if (lastItem) {
69
75
  entities.push(lastItem);
70
76
  }
@@ -72,6 +78,12 @@ function parseHtml(html) {
72
78
  });
73
79
  parser.write(html);
74
80
  parser.end();
81
+ text = text.trimEnd();
82
+ for (const entity of entities) {
83
+ while (text[entity.offset + (entity.length - 1)] === undefined) {
84
+ --entity.length;
85
+ }
86
+ }
75
87
  return [text, entities];
76
88
  }
77
89
  exports.parseHtml = parseHtml;
@@ -2,4 +2,4 @@ import { types } from "../2_tl.js";
2
2
  export declare const resolve: () => Promise<void>;
3
3
  export type With<T, K extends keyof T> = T & Required<Pick<T, K>>;
4
4
  export declare function isPtsUpdate(v: types.TypeUpdate | types.TypeUpdates): v is types.UpdateShortMessage | types.UpdateShortChatMessage | types.UpdateShortSentMessage | types.UpdateNewMessage | types.UpdateDeleteMessages | types.UpdateReadHistoryInbox | types.UpdateReadHistoryOutbox | types.UpdatePinnedChannelMessages | types.UpdatePinnedMessages | types.UpdateFolderPeers | types.UpdateChannelWebPage | types.UpdateEditMessage | types.UpdateReadMessagesContents | types.UpdateWebPage;
5
- export declare function isChannelPtsUpdate(v: types.TypeUpdate | types.TypeUpdates): v is types.UpdateNewChannelMessage | types.UpdateEditChannelMessage | types.UpdateDeleteChannelMessages | types.UpdateReadChannelInbox;
5
+ export declare function isChannelPtsUpdate(v: types.TypeUpdate | types.TypeUpdates): v is types.UpdateNewChannelMessage | types.UpdateEditChannelMessage | types.UpdateDeleteChannelMessages;
@@ -24,7 +24,6 @@ exports.isPtsUpdate = isPtsUpdate;
24
24
  function isChannelPtsUpdate(v) {
25
25
  return v instanceof _2_tl_js_1.types.UpdateNewChannelMessage ||
26
26
  v instanceof _2_tl_js_1.types.UpdateEditChannelMessage ||
27
- v instanceof _2_tl_js_1.types.UpdateDeleteChannelMessages ||
28
- v instanceof _2_tl_js_1.types.UpdateReadChannelInbox;
27
+ v instanceof _2_tl_js_1.types.UpdateDeleteChannelMessages;
29
28
  }
30
29
  exports.isChannelPtsUpdate = isChannelPtsUpdate;
@@ -15,11 +15,11 @@ export interface ClientAbstractParams {
15
15
  cdn?: boolean;
16
16
  }
17
17
  export declare abstract class ClientAbstract {
18
+ #private;
18
19
  protected readonly initialDc: DC;
19
20
  protected readonly transportProvider: TransportProvider;
20
21
  protected readonly cdn: boolean;
21
22
  protected transport?: ReturnType<TransportProvider>;
22
- private dc?;
23
23
  constructor(params?: ClientAbstractParams);
24
24
  protected stateChangeHandler?: (connected: boolean) => void;
25
25
  get dcId(): number;
@@ -1,4 +1,16 @@
1
1
  "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _ClientAbstract_dc;
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
15
  exports.ClientAbstract = void 0;
4
16
  const _0_deps_js_1 = require("../0_deps.js");
@@ -30,12 +42,7 @@ class ClientAbstract {
30
42
  writable: true,
31
43
  value: void 0
32
44
  });
33
- Object.defineProperty(this, "dc", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: void 0
38
- });
45
+ _ClientAbstract_dc.set(this, void 0);
39
46
  Object.defineProperty(this, "stateChangeHandler", {
40
47
  enumerable: true,
41
48
  configurable: true,
@@ -54,13 +61,13 @@ class ClientAbstract {
54
61
  }
55
62
  // MaybePromise since `Client` has to deal with `Storage.set()`
56
63
  setDc(dc) {
57
- this.dc = dc;
64
+ __classPrivateFieldSet(this, _ClientAbstract_dc, dc, "f");
58
65
  }
59
66
  get connected() {
60
67
  return this.transport === undefined ? false : this.transport.connection.connected;
61
68
  }
62
69
  async connect() {
63
- this.transport = this.transportProvider({ dc: this.dc ?? this.initialDc, cdn: this.cdn });
70
+ this.transport = this.transportProvider({ dc: __classPrivateFieldGet(this, _ClientAbstract_dc, "f") ?? this.initialDc, cdn: this.cdn });
64
71
  this.transport.connection.stateChangeHandler = this.stateChangeHandler;
65
72
  await (0, _0_deps_js_1.initTgCrypto)();
66
73
  await this.transport.connection.open();
@@ -82,3 +89,4 @@ class ClientAbstract {
82
89
  }
83
90
  }
84
91
  exports.ClientAbstract = ClientAbstract;
92
+ _ClientAbstract_dc = new WeakMap();
@@ -8,8 +8,7 @@ export interface ClientPlainParams extends ClientAbstractParams {
8
8
  publicKeys?: PublicKeys;
9
9
  }
10
10
  export declare class ClientPlain extends ClientAbstract {
11
- private readonly publicKeys;
12
- private lastMsgId;
11
+ #private;
13
12
  constructor(params?: ClientPlainParams);
14
13
  invoke<T extends functions.Function<unknown>>(function_: T): Promise<T["__R"]>;
15
14
  createAuthKey(): Promise<{
@@ -1,4 +1,16 @@
1
1
  "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _ClientPlain_publicKeys, _ClientPlain_lastMsgId;
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
15
  exports.ClientPlain = void 0;
4
16
  const _0_deps_js_1 = require("../0_deps.js");
@@ -11,25 +23,15 @@ const d = (0, _0_deps_js_1.debug)("ClientPlain/createAuthKey");
11
23
  class ClientPlain extends _1_client_abstract_js_1.ClientAbstract {
12
24
  constructor(params) {
13
25
  super(params);
14
- Object.defineProperty(this, "publicKeys", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: void 0
19
- });
20
- Object.defineProperty(this, "lastMsgId", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: 0n
25
- });
26
- this.publicKeys = params?.publicKeys ?? _4_constants_js_1.PUBLIC_KEYS;
26
+ _ClientPlain_publicKeys.set(this, void 0);
27
+ _ClientPlain_lastMsgId.set(this, 0n);
28
+ __classPrivateFieldSet(this, _ClientPlain_publicKeys, params?.publicKeys ?? _4_constants_js_1.PUBLIC_KEYS, "f");
27
29
  }
28
30
  async invoke(function_) {
29
31
  if (!this.transport) {
30
32
  throw new Error("Not connected");
31
33
  }
32
- const msgId = this.lastMsgId = (0, _0_message_js_1.getMessageId)(this.lastMsgId);
34
+ const msgId = __classPrivateFieldSet(this, _ClientPlain_lastMsgId, (0, _0_message_js_1.getMessageId)(__classPrivateFieldGet(this, _ClientPlain_lastMsgId, "f")), "f");
33
35
  await this.transport.transport.send((0, _0_message_js_1.packUnencryptedMessage)(function_[_2_tl_js_1.serialize](), msgId));
34
36
  const buffer = await this.transport.transport.receive();
35
37
  if (buffer.length == 4) {
@@ -63,14 +65,16 @@ class ClientPlain extends _1_client_abstract_js_1.ClientAbstract {
63
65
  (0, _1_utilities_js_1.UNREACHABLE)();
64
66
  }
65
67
  const pq_ = (0, _1_utilities_js_1.bigIntFromBuffer)(resPq.pq, false, false);
68
+ d("pq=%d", pq_);
66
69
  const [p_, q_] = (0, _0_deps_js_1.factorize)(pq_);
67
70
  d("factorized pq");
71
+ d("p=%d, q=%d", p_, q_);
68
72
  const p = (0, _1_utilities_js_1.bufferFromBigInt)(p_, 4, false, false);
69
73
  const q = (0, _1_utilities_js_1.bufferFromBigInt)(q_, 4, false, false);
70
74
  let publicKeyFingerprint;
71
75
  let publicKey;
72
76
  for (const fingerprint of resPq.serverPublicKeyFingerprints) {
73
- const maybePublicKey = this.publicKeys.find(([k]) => (k == fingerprint));
77
+ const maybePublicKey = __classPrivateFieldGet(this, _ClientPlain_publicKeys, "f").find(([k]) => (k == fingerprint));
74
78
  if (maybePublicKey) {
75
79
  publicKeyFingerprint = fingerprint;
76
80
  publicKey = maybePublicKey[1];
@@ -141,3 +145,4 @@ class ClientPlain extends _1_client_abstract_js_1.ClientAbstract {
141
145
  }
142
146
  }
143
147
  exports.ClientPlain = ClientPlain;
148
+ _ClientPlain_publicKeys = new WeakMap(), _ClientPlain_lastMsgId = new WeakMap();