@mtkruto/browser 0.0.801 → 0.0.821

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 (137) hide show
  1. package/esm/client/client_plain.js +4 -3
  2. package/esm/connection/connection_web_socket.js +3 -1
  3. package/{types → esm}/mod.d.ts +1 -0
  4. package/esm/mod.js +1 -0
  5. package/{types → esm}/tl/1_tl_object.d.ts +5 -2
  6. package/esm/tl/1_tl_object.js +14 -7
  7. package/esm/tl/3_tl_reader.js +1 -1
  8. package/esm/tl/3_tl_writer.js +2 -1
  9. package/esm/tl/5_message.js +2 -2
  10. package/esm/utilities/1_message.js +2 -2
  11. package/package.json +3 -10
  12. package/script/_dnt.shims.d.ts +1 -0
  13. package/script/client/client.d.ts +50 -0
  14. package/script/client/client_abstract.d.ts +16 -0
  15. package/script/client/client_plain.d.ts +9 -0
  16. package/script/client/client_plain.js +4 -3
  17. package/script/connection/connection.d.ts +7 -0
  18. package/script/connection/connection_web_socket.d.ts +13 -0
  19. package/script/connection/connection_web_socket.js +3 -1
  20. package/script/constants.d.ts +12 -0
  21. package/script/deps/deno.land/std@0.186.0/fmt/colors.d.ts +270 -0
  22. package/script/deps/deno.land/std@0.186.0/testing/_diff.d.ts +26 -0
  23. package/script/deps/deno.land/std@0.186.0/testing/_format.d.ts +1 -0
  24. package/script/deps/deno.land/std@0.186.0/testing/asserts.d.ts +284 -0
  25. package/script/deps/deno.land/x/crc32@v0.2.0/mod.d.ts +15 -0
  26. package/script/deps/deno.land/x/tgcrypto@0.1.3/mod.d.ts +47 -0
  27. package/script/deps/deno.land/x/tgcrypto@0.1.3/tgcrypto.d.ts +2 -0
  28. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.d.ts +16 -0
  29. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/utils/uint8.d.ts +1 -0
  30. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/deflate.d.ts +29 -0
  31. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/inflate.d.ts +23 -0
  32. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/mod.d.ts +2 -0
  33. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/adler32.d.ts +1 -0
  34. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/crc32.d.ts +2 -0
  35. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/deflate.d.ts +78 -0
  36. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/gzheader.d.ts +12 -0
  37. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inffast.d.ts +1 -0
  38. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inflate.d.ts +47 -0
  39. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inftrees.d.ts +1 -0
  40. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/messages.d.ts +12 -0
  41. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/status.d.ts +30 -0
  42. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/trees.d.ts +5 -0
  43. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/zstream.d.ts +14 -0
  44. package/script/deps.d.ts +4 -0
  45. package/script/mod.d.ts +24 -0
  46. package/script/mod.js +3 -1
  47. package/script/session/session.d.ts +12 -0
  48. package/script/session/session_local_storage.d.ts +7 -0
  49. package/script/session/session_memory.d.ts +5 -0
  50. package/script/tl/0_tl_raw_reader.d.ts +13 -0
  51. package/script/tl/0_tl_raw_writer.d.ts +13 -0
  52. package/script/tl/1_tl_object.d.ts +40 -0
  53. package/script/tl/1_tl_object.js +15 -8
  54. package/script/tl/2_types.d.ts +14815 -0
  55. package/script/tl/3_deserialize.d.ts +3 -0
  56. package/script/tl/3_functions.d.ts +6122 -0
  57. package/script/tl/3_tl_reader.d.ts +6 -0
  58. package/script/tl/3_tl_reader.js +2 -2
  59. package/script/tl/3_tl_writer.d.ts +5 -0
  60. package/script/tl/3_tl_writer.js +2 -1
  61. package/script/tl/4_rpc_result.d.ts +8 -0
  62. package/script/tl/5_message.d.ts +11 -0
  63. package/script/tl/5_message.js +1 -1
  64. package/script/tl/6_message_container.d.ts +9 -0
  65. package/script/transport/transport.d.ts +15 -0
  66. package/script/transport/transport_abridged.d.ts +11 -0
  67. package/script/transport/transport_intermediate.d.ts +11 -0
  68. package/script/transport/transport_provider.d.ts +17 -0
  69. package/script/types.d.ts +1 -0
  70. package/script/utilities/0_bigint.d.ts +5 -0
  71. package/script/utilities/0_buffer.d.ts +2 -0
  72. package/script/utilities/0_crypto.d.ts +8 -0
  73. package/script/utilities/0_hash.d.ts +2 -0
  74. package/script/utilities/1_auth.d.ts +1 -0
  75. package/script/utilities/1_message.d.ts +10 -0
  76. package/script/utilities/1_message.js +1 -1
  77. package/script/utilities/1_obfuscation.d.ts +6 -0
  78. package/script/utilities/1_password.d.ts +11 -0
  79. /package/{types → esm}/_dnt.shims.d.ts +0 -0
  80. /package/{types → esm}/client/client.d.ts +0 -0
  81. /package/{types → esm}/client/client_abstract.d.ts +0 -0
  82. /package/{types → esm}/client/client_plain.d.ts +0 -0
  83. /package/{types → esm}/connection/connection.d.ts +0 -0
  84. /package/{types → esm}/connection/connection_web_socket.d.ts +0 -0
  85. /package/{types → esm}/constants.d.ts +0 -0
  86. /package/{types → esm}/deps/deno.land/std@0.186.0/fmt/colors.d.ts +0 -0
  87. /package/{types → esm}/deps/deno.land/std@0.186.0/testing/_diff.d.ts +0 -0
  88. /package/{types → esm}/deps/deno.land/std@0.186.0/testing/_format.d.ts +0 -0
  89. /package/{types → esm}/deps/deno.land/std@0.186.0/testing/asserts.d.ts +0 -0
  90. /package/{types → esm}/deps/deno.land/x/crc32@v0.2.0/mod.d.ts +0 -0
  91. /package/{types → esm}/deps/deno.land/x/tgcrypto@0.1.3/mod.d.ts +0 -0
  92. /package/{types → esm}/deps/deno.land/x/tgcrypto@0.1.3/tgcrypto.d.ts +0 -0
  93. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.d.ts +0 -0
  94. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/utils/uint8.d.ts +0 -0
  95. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/deflate.d.ts +0 -0
  96. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/inflate.d.ts +0 -0
  97. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/mod.d.ts +0 -0
  98. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/adler32.d.ts +0 -0
  99. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/crc32.d.ts +0 -0
  100. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/deflate.d.ts +0 -0
  101. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/gzheader.d.ts +0 -0
  102. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inffast.d.ts +0 -0
  103. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inflate.d.ts +0 -0
  104. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inftrees.d.ts +0 -0
  105. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/messages.d.ts +0 -0
  106. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/status.d.ts +0 -0
  107. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/trees.d.ts +0 -0
  108. /package/{types → esm}/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/zstream.d.ts +0 -0
  109. /package/{types → esm}/deps.d.ts +0 -0
  110. /package/{types → esm}/session/session.d.ts +0 -0
  111. /package/{types → esm}/session/session_local_storage.d.ts +0 -0
  112. /package/{types → esm}/session/session_memory.d.ts +0 -0
  113. /package/{types → esm}/tl/0_tl_raw_reader.d.ts +0 -0
  114. /package/{types → esm}/tl/0_tl_raw_writer.d.ts +0 -0
  115. /package/{types → esm}/tl/2_types.d.ts +0 -0
  116. /package/{types/tl/3_tl_object_deserializer.d.ts → esm/tl/3_deserialize.d.ts} +0 -0
  117. /package/esm/tl/{3_tl_object_deserializer.js → 3_deserialize.js} +0 -0
  118. /package/{types → esm}/tl/3_functions.d.ts +0 -0
  119. /package/{types → esm}/tl/3_tl_reader.d.ts +0 -0
  120. /package/{types → esm}/tl/3_tl_writer.d.ts +0 -0
  121. /package/{types → esm}/tl/4_rpc_result.d.ts +0 -0
  122. /package/{types → esm}/tl/5_message.d.ts +0 -0
  123. /package/{types → esm}/tl/6_message_container.d.ts +0 -0
  124. /package/{types → esm}/transport/transport.d.ts +0 -0
  125. /package/{types → esm}/transport/transport_abridged.d.ts +0 -0
  126. /package/{types → esm}/transport/transport_intermediate.d.ts +0 -0
  127. /package/{types → esm}/transport/transport_provider.d.ts +0 -0
  128. /package/{types → esm}/types.d.ts +0 -0
  129. /package/{types → esm}/utilities/0_bigint.d.ts +0 -0
  130. /package/{types → esm}/utilities/0_buffer.d.ts +0 -0
  131. /package/{types → esm}/utilities/0_crypto.d.ts +0 -0
  132. /package/{types → esm}/utilities/0_hash.d.ts +0 -0
  133. /package/{types → esm}/utilities/1_auth.d.ts +0 -0
  134. /package/{types → esm}/utilities/1_message.d.ts +0 -0
  135. /package/{types → esm}/utilities/1_obfuscation.d.ts +0 -0
  136. /package/{types → esm}/utilities/1_password.d.ts +0 -0
  137. /package/script/tl/{3_tl_object_deserializer.js → 3_deserialize.js} +0 -0
@@ -4,6 +4,7 @@ import { bigIntFromBuffer, getRandomBigInt, modExp } from "../utilities/0_bigint
4
4
  import { bufferFromBigInt, concat } from "../utilities/0_buffer.js";
5
5
  import { sha1 } from "../utilities/0_hash.js";
6
6
  import { rsaPad } from "../utilities/1_auth.js";
7
+ import { serialize } from "../tl/1_tl_object.js";
7
8
  import { packUnencryptedMessage, unpackUnencryptedMessage } from "../utilities/1_message.js";
8
9
  import { ClientDHInnerData, DHGenOK, PQInnerDataDC, ResPQ, ServerDHInnerData, ServerDHParamsOK } from "../tl/2_types.js";
9
10
  import { ReqDHParams, ReqPQMulti, SetClientDHParams } from "../tl/3_functions.js";
@@ -11,7 +12,7 @@ import { TLReader } from "../tl/3_tl_reader.js";
11
12
  import { ClientAbstract } from "./client_abstract.js";
12
13
  export class ClientPlain extends ClientAbstract {
13
14
  async invoke(function_) {
14
- await this.transport.send(packUnencryptedMessage(function_.serialize()));
15
+ await this.transport.send(packUnencryptedMessage(function_[serialize]()));
15
16
  const buffer = await this.transport.receive();
16
17
  if (buffer.length == 4) {
17
18
  const int = bigIntFromBuffer(buffer, true, true);
@@ -60,7 +61,7 @@ export class ClientPlain extends ClientAbstract {
60
61
  newNonce,
61
62
  nonce,
62
63
  serverNonce,
63
- }).serialize(), publicKey);
64
+ })[serialize](), publicKey);
64
65
  const dhParams = await this.invoke(new ReqDHParams({
65
66
  nonce,
66
67
  serverNonce,
@@ -88,7 +89,7 @@ export class ClientPlain extends ClientAbstract {
88
89
  serverNonce,
89
90
  retryId: 0n,
90
91
  gB: bufferFromBigInt(gB, 256, false, false),
91
- }).serialize();
92
+ })[serialize]();
92
93
  let dataWithHash = concat(await sha1(data), data);
93
94
  while (dataWithHash.length % 16 != 0) {
94
95
  dataWithHash = concat(dataWithHash, new Uint8Array(1));
@@ -35,7 +35,9 @@ export class ConnectionWebSocket {
35
35
  this.webSocket.onmessage = async (e) => {
36
36
  // deno-lint-ignore no-explicit-any
37
37
  const data = e.data instanceof Blob ? new Uint8Array(await e.data.arrayBuffer()) : new Uint8Array(e.data);
38
- this.buffer.push(...Array.from(data));
38
+ for (const byte of data) {
39
+ this.buffer.push(byte);
40
+ }
39
41
  if (this.nextResolve != null && this.buffer.length >= this.nextResolve[0]) {
40
42
  this.nextResolve[1]();
41
43
  this.nextResolve = null;
@@ -4,6 +4,7 @@ export declare const utils: {
4
4
  checkPassword: typeof checkPassword;
5
5
  getRandomId: typeof getRandomId;
6
6
  };
7
+ export { as } from "./tl/1_tl_object.js";
7
8
  export * as types from "./tl/2_types.js";
8
9
  export * as functions from "./tl/3_functions.js";
9
10
  export * from "./tl/4_rpc_result.js";
package/esm/mod.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { checkPassword } from "./utilities/1_password.js";
2
2
  import { getRandomId } from "./utilities/0_bigint.js";
3
3
  export const utils = { checkPassword, getRandomId };
4
+ export { as } from "./tl/1_tl_object.js";
4
5
  export * as types from "./tl/2_types.js";
5
6
  export * as functions from "./tl/3_functions.js";
6
7
  export * from "./tl/4_rpc_result.js";
@@ -16,6 +16,8 @@ export declare const id: unique symbol;
16
16
  export declare const params: unique symbol;
17
17
  export declare const paramDesc: unique symbol;
18
18
  export declare const length: unique symbol;
19
+ export declare const serialize: unique symbol;
20
+ export declare const as: unique symbol;
19
21
  export declare function isOptionalParam(ntype: string): boolean;
20
22
  export declare function analyzeOptionalParam(ntype: string): {
21
23
  flagField: string;
@@ -26,11 +28,12 @@ export declare abstract class TLObject {
26
28
  protected abstract get [params](): Params;
27
29
  protected static get [paramDesc](): ParamDesc;
28
30
  get [length](): number;
29
- serialize(): Uint8Array;
31
+ [serialize](): Uint8Array;
32
+ [as]<T extends TLObjectConstructor<InstanceType<T>>>(constructor: T): InstanceType<T>;
30
33
  }
31
34
  export type MaybeVectorTLObject = TLObject | Array<MaybeVectorTLObject | TLObject>;
32
35
  export interface TLObjectConstructor<T = TLObject> {
33
- new (params: Record<string, Param>): T;
36
+ new (params: any): T;
34
37
  [paramDesc]: ParamDesc;
35
38
  }
36
39
  export declare function isTLObjectConstructor(t: unknown): t is typeof TLObject;
@@ -5,6 +5,8 @@ export const id = Symbol("id");
5
5
  export const params = Symbol("params");
6
6
  export const paramDesc = Symbol("paramDesc");
7
7
  export const length = Symbol("length");
8
+ export const serialize = Symbol();
9
+ export const as = Symbol();
8
10
  export function isOptionalParam(ntype) {
9
11
  return ntype.includes("?");
10
12
  }
@@ -22,7 +24,7 @@ function serializeSingleParam(writer, value, type, ntype) {
22
24
  if (isTLObjectConstructor(type)) {
23
25
  if ((type.name == "TypeX" && value instanceof TLObject) ||
24
26
  value instanceof type) {
25
- writer.write(value.serialize());
27
+ writer.write(value[serialize]());
26
28
  return;
27
29
  }
28
30
  else {
@@ -87,10 +89,7 @@ function serializeSingleParam(writer, value, type, ntype) {
87
89
  }
88
90
  break;
89
91
  case "true":
90
- if (value === true) {
91
- writer.writeInt32(0x997275B5);
92
- }
93
- else {
92
+ if (value !== true) {
94
93
  throw new TypeError("Expected true");
95
94
  }
96
95
  }
@@ -101,9 +100,9 @@ export class TLObject {
101
100
  return [];
102
101
  }
103
102
  get [length]() {
104
- return this.serialize().byteLength;
103
+ return this[serialize]().byteLength;
105
104
  }
106
- serialize() {
105
+ [serialize]() {
107
106
  const writer = new TLRawWriter();
108
107
  writer.writeInt32(this[id], false);
109
108
  for (const [value, type, ntype] of this[params]) {
@@ -142,6 +141,14 @@ export class TLObject {
142
141
  }
143
142
  return writer.buffer;
144
143
  }
144
+ [as](constructor) {
145
+ if (this instanceof constructor) {
146
+ return this;
147
+ }
148
+ else {
149
+ throw new TypeError(`Expected ${constructor.name}, got ${this.constructor.name}`);
150
+ }
151
+ }
145
152
  }
146
153
  export function isTLObjectConstructor(t) {
147
154
  // deno-lint-ignore no-explicit-any
@@ -1,7 +1,7 @@
1
1
  import { TLRawReader } from "./0_tl_raw_reader.js";
2
2
  import { paramDesc } from "./1_tl_object.js";
3
3
  import { map } from "./2_types.js";
4
- import { deserialize } from "./3_tl_object_deserializer.js";
4
+ import { deserialize } from "./3_deserialize.js";
5
5
  export class TLReader extends TLRawReader {
6
6
  readObject(id) {
7
7
  if (!id) {
@@ -1,5 +1,6 @@
1
1
  import { VECTOR_CONSTRUCTOR } from "../constants.js";
2
2
  import { TLRawWriter } from "./0_tl_raw_writer.js";
3
+ import { serialize } from "./1_tl_object.js";
3
4
  export class TLWriter extends TLRawWriter {
4
5
  writeObject(object) {
5
6
  if (Array.isArray(object)) {
@@ -10,7 +11,7 @@ export class TLWriter extends TLRawWriter {
10
11
  }
11
12
  }
12
13
  else {
13
- this.write(object.serialize());
14
+ this.write(object[serialize]());
14
15
  }
15
16
  return this;
16
17
  }
@@ -1,4 +1,4 @@
1
- import { id } from "./1_tl_object.js";
1
+ import { id, serialize } from "./1_tl_object.js";
2
2
  import { TLReader } from "./3_tl_reader.js";
3
3
  import { TLWriter } from "./3_tl_writer.js";
4
4
  import { RPCResult } from "./4_rpc_result.js";
@@ -13,7 +13,7 @@ function calculateLength(object) {
13
13
  }
14
14
  }
15
15
  else {
16
- length += object.serialize().length;
16
+ length += object[serialize]().length;
17
17
  }
18
18
  return length;
19
19
  }
@@ -1,7 +1,7 @@
1
1
  import { assertEquals, ige256Decrypt, ige256Encrypt } from "../deps.js";
2
2
  import { TLRawReader } from "../tl/0_tl_raw_reader.js";
3
3
  import { TLRawWriter } from "../tl/0_tl_raw_writer.js";
4
- import { id } from "../tl/1_tl_object.js";
4
+ import { id, serialize } from "../tl/1_tl_object.js";
5
5
  import { TLReader } from "../tl/3_tl_reader.js";
6
6
  import { RPCResult } from "../tl/4_rpc_result.js";
7
7
  import { Message } from "../tl/5_message.js";
@@ -34,7 +34,7 @@ export function unpackUnencryptedMessage(buffer) {
34
34
  return { messageId, message };
35
35
  }
36
36
  export async function encryptMessage(message, authKey, authKeyId, salt, sessionId) {
37
- const encoded = message.body.serialize();
37
+ const encoded = message.body[serialize]();
38
38
  const payloadWriter = new TLRawWriter();
39
39
  payloadWriter.writeInt64(salt);
40
40
  payloadWriter.writeInt64(sessionId);
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "module": "./esm/mod.js",
3
3
  "main": "./script/mod.js",
4
- "types": "./types/mod.d.ts",
5
4
  "name": "@mtkruto/browser",
6
- "version": "0.0.801",
5
+ "version": "0.0.821",
7
6
  "description": "MTKruto for browsers",
8
7
  "author": "Roj <rojvv@icloud.com>",
9
8
  "license": "LGPL-3.0-or-later",
@@ -13,14 +12,8 @@
13
12
  },
14
13
  "exports": {
15
14
  ".": {
16
- "import": {
17
- "types": "./types/mod.d.ts",
18
- "default": "./esm/mod.js"
19
- },
20
- "require": {
21
- "types": "./types/mod.d.ts",
22
- "default": "./script/mod.js"
23
- }
15
+ "import": "./esm/mod.js",
16
+ "require": "./script/mod.js"
24
17
  }
25
18
  },
26
19
  "dependencies": {
@@ -0,0 +1 @@
1
+ export declare const dntGlobalThis: Omit<typeof globalThis, never>;
@@ -0,0 +1,50 @@
1
+ import { MaybePromise } from "../types.js";
2
+ import * as types from "../tl/2_types.js";
3
+ import * as functions from "../tl/3_functions.js";
4
+ import { ClientAbstract } from "./client_abstract.js";
5
+ import { Session } from "../session/session.js";
6
+ import { DC, TransportProvider } from "../transport/transport_provider.js";
7
+ export interface AuthorizeUserParams<S = string, N = {
8
+ first: S;
9
+ last: S;
10
+ }> {
11
+ phone: S | (() => MaybePromise<S>);
12
+ code: S | (() => MaybePromise<S>);
13
+ password: S | (() => MaybePromise<S>);
14
+ names: N | (() => MaybePromise<N>);
15
+ }
16
+ export type UpdatesHandler = null | ((client: Client, update: types.Updates) => MaybePromise<void>);
17
+ export declare class Client extends ClientAbstract {
18
+ readonly session: Session;
19
+ readonly apiId: number;
20
+ readonly apiHash: string;
21
+ private sessionId;
22
+ private state;
23
+ private promises;
24
+ private toAcknowledge;
25
+ updatesHandler: UpdatesHandler;
26
+ readonly appVersion: string;
27
+ readonly deviceModel: string;
28
+ readonly langCode: string;
29
+ readonly langPack: string;
30
+ readonly systemLangCode: string;
31
+ readonly systemVersion: string;
32
+ constructor(session?: Session, apiId?: number, apiHash?: string, params?: {
33
+ transportProvider?: TransportProvider;
34
+ appVersion?: string;
35
+ deviceModel?: string;
36
+ langCode?: string;
37
+ langPack?: string;
38
+ systemLangCode?: string;
39
+ systemVersion?: string;
40
+ });
41
+ private shouldLoadSession;
42
+ setDc(dc: DC): void;
43
+ connect(): Promise<void>;
44
+ authorize(params: string | types.AuthExportedAuthorization | AuthorizeUserParams): Promise<void>;
45
+ private receiveLoop;
46
+ private pingLoop;
47
+ invoke<T extends (functions.Function<unknown> | types.Type) = functions.Function<unknown>>(function_: T): Promise<T extends functions.Function<unknown> ? T["__R"] : void>;
48
+ invoke<T extends (functions.Function<unknown> | types.Type) = functions.Function<unknown>>(function_: T, noWait: true): Promise<void>;
49
+ send<T extends (functions.Function<unknown> | types.Type) = functions.Function<unknown>>(function_: T): Promise<void>;
50
+ }
@@ -0,0 +1,16 @@
1
+ import { Connection } from "../connection/connection.js";
2
+ import { Transport } from "../transport/transport.js";
3
+ import { DC } from "../transport/transport_provider.js";
4
+ export declare abstract class ClientAbstract {
5
+ protected transportProvider: import("../transport/transport_provider.js").TransportProvider;
6
+ protected connection: Connection;
7
+ protected transport: Transport;
8
+ private _dcId;
9
+ protected connected: boolean;
10
+ constructor(transportProvider?: import("../transport/transport_provider.js").TransportProvider);
11
+ get dcId(): number;
12
+ setDc(dc: DC): void;
13
+ connect(): Promise<void>;
14
+ reconnect(dc?: DC): Promise<void>;
15
+ disconnect(): Promise<void>;
16
+ }
@@ -0,0 +1,9 @@
1
+ import { Function } from "../tl/3_functions.js";
2
+ import { ClientAbstract } from "./client_abstract.js";
3
+ export declare class ClientPlain extends ClientAbstract {
4
+ invoke<T extends Function<unknown>>(function_: T): Promise<T["__R"]>;
5
+ createAuthKey(): Promise<{
6
+ authKey: Uint8Array;
7
+ salt: bigint;
8
+ }>;
9
+ }
@@ -7,6 +7,7 @@ const _0_bigint_js_1 = require("../utilities/0_bigint.js");
7
7
  const _0_buffer_js_1 = require("../utilities/0_buffer.js");
8
8
  const _0_hash_js_1 = require("../utilities/0_hash.js");
9
9
  const _1_auth_js_1 = require("../utilities/1_auth.js");
10
+ const _1_tl_object_js_1 = require("../tl/1_tl_object.js");
10
11
  const _1_message_js_1 = require("../utilities/1_message.js");
11
12
  const _2_types_js_1 = require("../tl/2_types.js");
12
13
  const _3_functions_js_1 = require("../tl/3_functions.js");
@@ -14,7 +15,7 @@ const _3_tl_reader_js_1 = require("../tl/3_tl_reader.js");
14
15
  const client_abstract_js_1 = require("./client_abstract.js");
15
16
  class ClientPlain extends client_abstract_js_1.ClientAbstract {
16
17
  async invoke(function_) {
17
- await this.transport.send((0, _1_message_js_1.packUnencryptedMessage)(function_.serialize()));
18
+ await this.transport.send((0, _1_message_js_1.packUnencryptedMessage)(function_[_1_tl_object_js_1.serialize]()));
18
19
  const buffer = await this.transport.receive();
19
20
  if (buffer.length == 4) {
20
21
  const int = (0, _0_bigint_js_1.bigIntFromBuffer)(buffer, true, true);
@@ -63,7 +64,7 @@ class ClientPlain extends client_abstract_js_1.ClientAbstract {
63
64
  newNonce,
64
65
  nonce,
65
66
  serverNonce,
66
- }).serialize(), publicKey);
67
+ })[_1_tl_object_js_1.serialize](), publicKey);
67
68
  const dhParams = await this.invoke(new _3_functions_js_1.ReqDHParams({
68
69
  nonce,
69
70
  serverNonce,
@@ -91,7 +92,7 @@ class ClientPlain extends client_abstract_js_1.ClientAbstract {
91
92
  serverNonce,
92
93
  retryId: 0n,
93
94
  gB: (0, _0_buffer_js_1.bufferFromBigInt)(gB, 256, false, false),
94
- }).serialize();
95
+ })[_1_tl_object_js_1.serialize]();
95
96
  let dataWithHash = (0, _0_buffer_js_1.concat)(await (0, _0_hash_js_1.sha1)(data), data);
96
97
  while (dataWithHash.length % 16 != 0) {
97
98
  dataWithHash = (0, _0_buffer_js_1.concat)(dataWithHash, new Uint8Array(1));
@@ -0,0 +1,7 @@
1
+ import { MaybePromise } from "../types.js";
2
+ export declare abstract class Connection {
3
+ abstract open(): MaybePromise<void>;
4
+ abstract read(p: Uint8Array): MaybePromise<void>;
5
+ abstract write(p: Uint8Array): MaybePromise<void>;
6
+ abstract close(): MaybePromise<void>;
7
+ }
@@ -0,0 +1,13 @@
1
+ import { Connection } from "./connection.js";
2
+ export declare class ConnectionWebSocket implements Connection {
3
+ private webSocket;
4
+ private rMutex;
5
+ private wMutex;
6
+ private buffer;
7
+ private nextResolve;
8
+ constructor(url: string | URL);
9
+ open(): Promise<void>;
10
+ read(p: Uint8Array): Promise<void>;
11
+ write(p: Uint8Array): Promise<void>;
12
+ close(): void;
13
+ }
@@ -38,7 +38,9 @@ class ConnectionWebSocket {
38
38
  this.webSocket.onmessage = async (e) => {
39
39
  // deno-lint-ignore no-explicit-any
40
40
  const data = e.data instanceof Blob ? new Uint8Array(await e.data.arrayBuffer()) : new Uint8Array(e.data);
41
- this.buffer.push(...Array.from(data));
41
+ for (const byte of data) {
42
+ this.buffer.push(byte);
43
+ }
42
44
  if (this.nextResolve != null && this.buffer.length >= this.nextResolve[0]) {
43
45
  this.nextResolve[1]();
44
46
  this.nextResolve = null;
@@ -0,0 +1,12 @@
1
+ import { DC } from "./transport/transport_provider.js";
2
+ export declare const ackThreshold = 10;
3
+ export declare const publicKeys: Map<bigint, [bigint, bigint]>;
4
+ export declare const VECTOR_CONSTRUCTOR = 481674261;
5
+ export declare const DEFAULT_INITIAL_DC: DC;
6
+ export declare const LAYER = 158;
7
+ export declare const DEFAULT_APP_VERSION = "MTKruto Unstable <v1.0.0";
8
+ export declare const DEFAULT_DEVICE_MODEL = "Krutaya Device";
9
+ export declare const DEFAULT_LANG_CODE = "en";
10
+ export declare const DEFAULT_LANG_PACK = "";
11
+ export declare const DEFAULT_SYSTEM_LANG_CODE = "en";
12
+ export declare const DEFAULT_SYSTEM_VERSION = "1.0";
@@ -0,0 +1,270 @@
1
+ /** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */
2
+ interface Rgb {
3
+ r: number;
4
+ g: number;
5
+ b: number;
6
+ }
7
+ /**
8
+ * Set changing text color to enabled or disabled
9
+ * @param value
10
+ */
11
+ export declare function setColorEnabled(value: boolean): void;
12
+ /** Get whether text color change is enabled or disabled. */
13
+ export declare function getColorEnabled(): boolean;
14
+ /**
15
+ * Reset the text modified
16
+ * @param str text to reset
17
+ */
18
+ export declare function reset(str: string): string;
19
+ /**
20
+ * Make the text bold.
21
+ * @param str text to make bold
22
+ */
23
+ export declare function bold(str: string): string;
24
+ /**
25
+ * The text emits only a small amount of light.
26
+ * @param str text to dim
27
+ */
28
+ export declare function dim(str: string): string;
29
+ /**
30
+ * Make the text italic.
31
+ * @param str text to make italic
32
+ */
33
+ export declare function italic(str: string): string;
34
+ /**
35
+ * Make the text underline.
36
+ * @param str text to underline
37
+ */
38
+ export declare function underline(str: string): string;
39
+ /**
40
+ * Invert background color and text color.
41
+ * @param str text to invert its color
42
+ */
43
+ export declare function inverse(str: string): string;
44
+ /**
45
+ * Make the text hidden.
46
+ * @param str text to hide
47
+ */
48
+ export declare function hidden(str: string): string;
49
+ /**
50
+ * Put horizontal line through the center of the text.
51
+ * @param str text to strike through
52
+ */
53
+ export declare function strikethrough(str: string): string;
54
+ /**
55
+ * Set text color to black.
56
+ * @param str text to make black
57
+ */
58
+ export declare function black(str: string): string;
59
+ /**
60
+ * Set text color to red.
61
+ * @param str text to make red
62
+ */
63
+ export declare function red(str: string): string;
64
+ /**
65
+ * Set text color to green.
66
+ * @param str text to make green
67
+ */
68
+ export declare function green(str: string): string;
69
+ /**
70
+ * Set text color to yellow.
71
+ * @param str text to make yellow
72
+ */
73
+ export declare function yellow(str: string): string;
74
+ /**
75
+ * Set text color to blue.
76
+ * @param str text to make blue
77
+ */
78
+ export declare function blue(str: string): string;
79
+ /**
80
+ * Set text color to magenta.
81
+ * @param str text to make magenta
82
+ */
83
+ export declare function magenta(str: string): string;
84
+ /**
85
+ * Set text color to cyan.
86
+ * @param str text to make cyan
87
+ */
88
+ export declare function cyan(str: string): string;
89
+ /**
90
+ * Set text color to white.
91
+ * @param str text to make white
92
+ */
93
+ export declare function white(str: string): string;
94
+ /**
95
+ * Set text color to gray.
96
+ * @param str text to make gray
97
+ */
98
+ export declare function gray(str: string): string;
99
+ /**
100
+ * Set text color to bright black.
101
+ * @param str text to make bright-black
102
+ */
103
+ export declare function brightBlack(str: string): string;
104
+ /**
105
+ * Set text color to bright red.
106
+ * @param str text to make bright-red
107
+ */
108
+ export declare function brightRed(str: string): string;
109
+ /**
110
+ * Set text color to bright green.
111
+ * @param str text to make bright-green
112
+ */
113
+ export declare function brightGreen(str: string): string;
114
+ /**
115
+ * Set text color to bright yellow.
116
+ * @param str text to make bright-yellow
117
+ */
118
+ export declare function brightYellow(str: string): string;
119
+ /**
120
+ * Set text color to bright blue.
121
+ * @param str text to make bright-blue
122
+ */
123
+ export declare function brightBlue(str: string): string;
124
+ /**
125
+ * Set text color to bright magenta.
126
+ * @param str text to make bright-magenta
127
+ */
128
+ export declare function brightMagenta(str: string): string;
129
+ /**
130
+ * Set text color to bright cyan.
131
+ * @param str text to make bright-cyan
132
+ */
133
+ export declare function brightCyan(str: string): string;
134
+ /**
135
+ * Set text color to bright white.
136
+ * @param str text to make bright-white
137
+ */
138
+ export declare function brightWhite(str: string): string;
139
+ /**
140
+ * Set background color to black.
141
+ * @param str text to make its background black
142
+ */
143
+ export declare function bgBlack(str: string): string;
144
+ /**
145
+ * Set background color to red.
146
+ * @param str text to make its background red
147
+ */
148
+ export declare function bgRed(str: string): string;
149
+ /**
150
+ * Set background color to green.
151
+ * @param str text to make its background green
152
+ */
153
+ export declare function bgGreen(str: string): string;
154
+ /**
155
+ * Set background color to yellow.
156
+ * @param str text to make its background yellow
157
+ */
158
+ export declare function bgYellow(str: string): string;
159
+ /**
160
+ * Set background color to blue.
161
+ * @param str text to make its background blue
162
+ */
163
+ export declare function bgBlue(str: string): string;
164
+ /**
165
+ * Set background color to magenta.
166
+ * @param str text to make its background magenta
167
+ */
168
+ export declare function bgMagenta(str: string): string;
169
+ /**
170
+ * Set background color to cyan.
171
+ * @param str text to make its background cyan
172
+ */
173
+ export declare function bgCyan(str: string): string;
174
+ /**
175
+ * Set background color to white.
176
+ * @param str text to make its background white
177
+ */
178
+ export declare function bgWhite(str: string): string;
179
+ /**
180
+ * Set background color to bright black.
181
+ * @param str text to make its background bright-black
182
+ */
183
+ export declare function bgBrightBlack(str: string): string;
184
+ /**
185
+ * Set background color to bright red.
186
+ * @param str text to make its background bright-red
187
+ */
188
+ export declare function bgBrightRed(str: string): string;
189
+ /**
190
+ * Set background color to bright green.
191
+ * @param str text to make its background bright-green
192
+ */
193
+ export declare function bgBrightGreen(str: string): string;
194
+ /**
195
+ * Set background color to bright yellow.
196
+ * @param str text to make its background bright-yellow
197
+ */
198
+ export declare function bgBrightYellow(str: string): string;
199
+ /**
200
+ * Set background color to bright blue.
201
+ * @param str text to make its background bright-blue
202
+ */
203
+ export declare function bgBrightBlue(str: string): string;
204
+ /**
205
+ * Set background color to bright magenta.
206
+ * @param str text to make its background bright-magenta
207
+ */
208
+ export declare function bgBrightMagenta(str: string): string;
209
+ /**
210
+ * Set background color to bright cyan.
211
+ * @param str text to make its background bright-cyan
212
+ */
213
+ export declare function bgBrightCyan(str: string): string;
214
+ /**
215
+ * Set background color to bright white.
216
+ * @param str text to make its background bright-white
217
+ */
218
+ export declare function bgBrightWhite(str: string): string;
219
+ /**
220
+ * Set text color using paletted 8bit colors.
221
+ * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
222
+ * @param str text color to apply paletted 8bit colors to
223
+ * @param color code
224
+ */
225
+ export declare function rgb8(str: string, color: number): string;
226
+ /**
227
+ * Set background color using paletted 8bit colors.
228
+ * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
229
+ * @param str text color to apply paletted 8bit background colors to
230
+ * @param color code
231
+ */
232
+ export declare function bgRgb8(str: string, color: number): string;
233
+ /**
234
+ * Set text color using 24bit rgb.
235
+ * `color` can be a number in range `0x000000` to `0xffffff` or
236
+ * an `Rgb`.
237
+ *
238
+ * To produce the color magenta:
239
+ *
240
+ * ```ts
241
+ * import { rgb24 } from "https://deno.land/std@$STD_VERSION/fmt/colors.ts";
242
+ * rgb24("foo", 0xff00ff);
243
+ * rgb24("foo", {r: 255, g: 0, b: 255});
244
+ * ```
245
+ * @param str text color to apply 24bit rgb to
246
+ * @param color code
247
+ */
248
+ export declare function rgb24(str: string, color: number | Rgb): string;
249
+ /**
250
+ * Set background color using 24bit rgb.
251
+ * `color` can be a number in range `0x000000` to `0xffffff` or
252
+ * an `Rgb`.
253
+ *
254
+ * To produce the color magenta:
255
+ *
256
+ * ```ts
257
+ * import { bgRgb24 } from "https://deno.land/std@$STD_VERSION/fmt/colors.ts";
258
+ * bgRgb24("foo", 0xff00ff);
259
+ * bgRgb24("foo", {r: 255, g: 0, b: 255});
260
+ * ```
261
+ * @param str text color to apply 24bit rgb to
262
+ * @param color code
263
+ */
264
+ export declare function bgRgb24(str: string, color: number | Rgb): string;
265
+ /**
266
+ * Remove ANSI escape codes from the string.
267
+ * @param string to remove ANSI escape codes from
268
+ */
269
+ export declare function stripColor(string: string): string;
270
+ export {};