@mtkruto/node 0.0.6

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 (167) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +1 -0
  3. package/esm/_dnt.shims.js +68 -0
  4. package/esm/client/client.js +169 -0
  5. package/esm/client/client_abstract.js +51 -0
  6. package/esm/client/client_plain.js +112 -0
  7. package/esm/connection/connection.js +2 -0
  8. package/esm/connection/connection_web_socket.js +90 -0
  9. package/esm/constants.js +60 -0
  10. package/esm/deps/deno.land/std@0.186.0/fmt/colors.js +474 -0
  11. package/esm/deps/deno.land/std@0.186.0/testing/_diff.js +311 -0
  12. package/esm/deps/deno.land/std@0.186.0/testing/_format.js +23 -0
  13. package/esm/deps/deno.land/std@0.186.0/testing/asserts.js +633 -0
  14. package/esm/deps/deno.land/x/crc32@v0.2.0/mod.js +105 -0
  15. package/esm/deps/deno.land/x/tgcrypto@0.1.1/mod.js +68 -0
  16. package/esm/deps/deno.land/x/tgcrypto@0.1.1/tgcrypto.js +1127 -0
  17. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.js +239 -0
  18. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/utils/uint8.js +10 -0
  19. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/deflate.js +139 -0
  20. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/inflate.js +176 -0
  21. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/mod.js +2 -0
  22. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/adler32.js +19 -0
  23. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/crc32.js +25 -0
  24. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/deflate.js +1941 -0
  25. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/gzheader.js +85 -0
  26. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inffast.js +321 -0
  27. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inflate.js +1658 -0
  28. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inftrees.js +355 -0
  29. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/messages.js +11 -0
  30. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/status.js +42 -0
  31. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/trees.js +1107 -0
  32. package/esm/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/zstream.js +86 -0
  33. package/esm/deps.js +4 -0
  34. package/esm/mod.js +4 -0
  35. package/esm/package.json +3 -0
  36. package/esm/tl/0_tl_raw_reader.js +62 -0
  37. package/esm/tl/0_tl_raw_writer.js +60 -0
  38. package/esm/tl/1_tl_object.js +149 -0
  39. package/esm/tl/2_types.js +48220 -0
  40. package/esm/tl/3_functions.js +19856 -0
  41. package/esm/tl/3_tl_object_deserializer.js +72 -0
  42. package/esm/tl/3_tl_reader.js +16 -0
  43. package/esm/tl/3_tl_writer.js +7 -0
  44. package/esm/tl/4_rpc_result.js +27 -0
  45. package/esm/tl/5_message.js +54 -0
  46. package/esm/tl/6_message_container.js +35 -0
  47. package/esm/transport/transport.js +32 -0
  48. package/esm/transport/transport_intermediate.js +56 -0
  49. package/esm/transport/transport_provider.js +23 -0
  50. package/esm/types.js +1 -0
  51. package/esm/utilities/0_bigint.js +37 -0
  52. package/esm/utilities/0_buffer.js +33 -0
  53. package/esm/utilities/0_crypto.js +35 -0
  54. package/esm/utilities/0_hash.js +7 -0
  55. package/esm/utilities/1_auth.js +29 -0
  56. package/esm/utilities/1_message.js +94 -0
  57. package/esm/utilities/1_obfuscation.js +33 -0
  58. package/package.json +40 -0
  59. package/script/_dnt.shims.js +77 -0
  60. package/script/client/client.js +173 -0
  61. package/script/client/client_abstract.js +55 -0
  62. package/script/client/client_plain.js +116 -0
  63. package/script/connection/connection.js +6 -0
  64. package/script/connection/connection_web_socket.js +117 -0
  65. package/script/constants.js +63 -0
  66. package/script/deps/deno.land/std@0.186.0/fmt/colors.js +548 -0
  67. package/script/deps/deno.land/std@0.186.0/testing/_diff.js +317 -0
  68. package/script/deps/deno.land/std@0.186.0/testing/_format.js +50 -0
  69. package/script/deps/deno.land/std@0.186.0/testing/asserts.js +659 -0
  70. package/script/deps/deno.land/x/crc32@v0.2.0/mod.js +113 -0
  71. package/script/deps/deno.land/x/tgcrypto@0.1.1/mod.js +82 -0
  72. package/script/deps/deno.land/x/tgcrypto@0.1.1/tgcrypto.js +1152 -0
  73. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.js +271 -0
  74. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/utils/uint8.js +14 -0
  75. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/deflate.js +172 -0
  76. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/inflate.js +208 -0
  77. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/mod.js +18 -0
  78. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/adler32.js +22 -0
  79. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/crc32.js +30 -0
  80. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/deflate.js +1976 -0
  81. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/gzheader.js +88 -0
  82. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inffast.js +324 -0
  83. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inflate.js +1674 -0
  84. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inftrees.js +358 -0
  85. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/messages.js +14 -0
  86. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/status.js +44 -0
  87. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/trees.js +1115 -0
  88. package/script/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/zstream.js +89 -0
  89. package/script/deps.js +30 -0
  90. package/script/mod.js +32 -0
  91. package/script/package.json +3 -0
  92. package/script/tl/0_tl_raw_reader.js +66 -0
  93. package/script/tl/0_tl_raw_writer.js +64 -0
  94. package/script/tl/1_tl_object.js +156 -0
  95. package/script/tl/2_types.js +49824 -0
  96. package/script/tl/3_functions.js +20413 -0
  97. package/script/tl/3_tl_object_deserializer.js +76 -0
  98. package/script/tl/3_tl_reader.js +20 -0
  99. package/script/tl/3_tl_writer.js +11 -0
  100. package/script/tl/4_rpc_result.js +31 -0
  101. package/script/tl/5_message.js +58 -0
  102. package/script/tl/6_message_container.js +39 -0
  103. package/script/transport/transport.js +36 -0
  104. package/script/transport/transport_intermediate.js +60 -0
  105. package/script/transport/transport_provider.js +27 -0
  106. package/script/types.js +2 -0
  107. package/script/utilities/0_bigint.js +67 -0
  108. package/script/utilities/0_buffer.js +38 -0
  109. package/script/utilities/0_crypto.js +39 -0
  110. package/script/utilities/0_hash.js +35 -0
  111. package/script/utilities/1_auth.js +56 -0
  112. package/script/utilities/1_message.js +102 -0
  113. package/script/utilities/1_obfuscation.js +60 -0
  114. package/types/_dnt.shims.d.ts +10 -0
  115. package/types/client/client.d.ts +19 -0
  116. package/types/client/client_abstract.d.ts +20 -0
  117. package/types/client/client_plain.d.ts +10 -0
  118. package/types/connection/connection.d.ts +7 -0
  119. package/types/connection/connection_web_socket.d.ts +13 -0
  120. package/types/constants.d.ts +2 -0
  121. package/types/deps/deno.land/std@0.186.0/fmt/colors.d.ts +270 -0
  122. package/types/deps/deno.land/std@0.186.0/testing/_diff.d.ts +26 -0
  123. package/types/deps/deno.land/std@0.186.0/testing/_format.d.ts +1 -0
  124. package/types/deps/deno.land/std@0.186.0/testing/asserts.d.ts +284 -0
  125. package/types/deps/deno.land/x/crc32@v0.2.0/mod.d.ts +15 -0
  126. package/types/deps/deno.land/x/tgcrypto@0.1.1/mod.d.ts +47 -0
  127. package/types/deps/deno.land/x/tgcrypto@0.1.1/tgcrypto.d.ts +2 -0
  128. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.d.ts +16 -0
  129. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/utils/uint8.d.ts +1 -0
  130. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/deflate.d.ts +29 -0
  131. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/inflate.d.ts +23 -0
  132. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/mod.d.ts +2 -0
  133. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/adler32.d.ts +1 -0
  134. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/crc32.d.ts +2 -0
  135. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/deflate.d.ts +78 -0
  136. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/gzheader.d.ts +12 -0
  137. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inffast.d.ts +1 -0
  138. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inflate.d.ts +47 -0
  139. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/inftrees.d.ts +1 -0
  140. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/messages.d.ts +12 -0
  141. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/status.d.ts +30 -0
  142. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/trees.d.ts +5 -0
  143. package/types/deps/raw.githubusercontent.com/MTKruto/compress/master/zlib/zlib/zstream.d.ts +14 -0
  144. package/types/deps.d.ts +4 -0
  145. package/types/mod.d.ts +4 -0
  146. package/types/tl/0_tl_raw_reader.d.ts +13 -0
  147. package/types/tl/0_tl_raw_writer.d.ts +13 -0
  148. package/types/tl/1_tl_object.d.ts +36 -0
  149. package/types/tl/2_types.d.ts +14815 -0
  150. package/types/tl/3_functions.d.ts +6122 -0
  151. package/types/tl/3_tl_object_deserializer.d.ts +3 -0
  152. package/types/tl/3_tl_reader.d.ts +4 -0
  153. package/types/tl/3_tl_writer.d.ts +5 -0
  154. package/types/tl/4_rpc_result.d.ts +8 -0
  155. package/types/tl/5_message.d.ts +11 -0
  156. package/types/tl/6_message_container.d.ts +9 -0
  157. package/types/transport/transport.d.ts +15 -0
  158. package/types/transport/transport_intermediate.d.ts +11 -0
  159. package/types/transport/transport_provider.d.ts +12 -0
  160. package/types/types.d.ts +1 -0
  161. package/types/utilities/0_bigint.d.ts +4 -0
  162. package/types/utilities/0_buffer.d.ts +2 -0
  163. package/types/utilities/0_crypto.d.ts +8 -0
  164. package/types/utilities/0_hash.d.ts +2 -0
  165. package/types/utilities/1_auth.d.ts +1 -0
  166. package/types/utilities/1_message.d.ts +10 -0
  167. package/types/utilities/1_obfuscation.d.ts +6 -0
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserialize = void 0;
4
+ const deps_js_1 = require("../deps.js");
5
+ const _1_tl_object_js_1 = require("./1_tl_object.js");
6
+ const _2_types_js_1 = require("./2_types.js");
7
+ function deserializeSingleParam(reader, type, ntype) {
8
+ if ((0, _1_tl_object_js_1.isTLObjectConstructor)(type)) {
9
+ const cid = reader.readInt32(false);
10
+ const constructor = _2_types_js_1.map.get(cid);
11
+ if (!constructor) {
12
+ throw new Error(`Constructor with ID ${cid} not found`);
13
+ }
14
+ return deserialize(reader, constructor[_1_tl_object_js_1.paramDesc], constructor);
15
+ }
16
+ if (type == Uint8Array) {
17
+ return reader.readBytes();
18
+ }
19
+ else {
20
+ switch (type) {
21
+ case "bigint":
22
+ if (ntype == "int128") {
23
+ return reader.readInt128();
24
+ }
25
+ else if (ntype === "int256") {
26
+ return reader.readInt256();
27
+ }
28
+ else {
29
+ return reader.readInt64();
30
+ }
31
+ case "boolean":
32
+ return reader.readInt32(false) == 0x997275B5;
33
+ case "number":
34
+ return reader.readInt32();
35
+ case "string":
36
+ return reader.readString();
37
+ case "true":
38
+ return true;
39
+ default:
40
+ throw new Error(`Unexpected type ${type}`);
41
+ }
42
+ }
43
+ }
44
+ function deserialize(reader, paramDesc, constructor) {
45
+ const params = {};
46
+ const flagFields = {};
47
+ for (const [name, type, ntype] of paramDesc) {
48
+ if ((0, _1_tl_object_js_1.isOptionalParam)(ntype)) {
49
+ const { flagField, bitIndex } = (0, _1_tl_object_js_1.analyzeOptionalParam)(ntype);
50
+ const bits = flagFields[flagField];
51
+ if ((bits & (1 << bitIndex)) == 0) {
52
+ continue;
53
+ }
54
+ }
55
+ if (type == _1_tl_object_js_1.flags && ntype == "#") {
56
+ flagFields[name] = reader.readInt32();
57
+ continue;
58
+ }
59
+ if (type instanceof Array) {
60
+ (0, deps_js_1.assertEquals)(reader.readInt32(false), 0x1CB5C415);
61
+ const count = reader.readInt32();
62
+ const items = new Array();
63
+ for (let i = 0; i < count; i++) {
64
+ items.push(deserializeSingleParam(reader, type[0], ntype));
65
+ }
66
+ params[name] = items;
67
+ continue;
68
+ }
69
+ const value = deserializeSingleParam(reader, type, ntype);
70
+ if (value) {
71
+ params[name] = value;
72
+ }
73
+ }
74
+ return new constructor(params);
75
+ }
76
+ exports.deserialize = deserialize;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TLReader = void 0;
4
+ const _0_tl_raw_reader_js_1 = require("./0_tl_raw_reader.js");
5
+ const _1_tl_object_js_1 = require("./1_tl_object.js");
6
+ const _2_types_js_1 = require("./2_types.js");
7
+ const _3_tl_object_deserializer_js_1 = require("./3_tl_object_deserializer.js");
8
+ class TLReader extends _0_tl_raw_reader_js_1.TLRawReader {
9
+ readObject(id) {
10
+ if (!id) {
11
+ id = this.readInt32(false);
12
+ }
13
+ const constructor = _2_types_js_1.map.get(id);
14
+ if (constructor) {
15
+ return (0, _3_tl_object_deserializer_js_1.deserialize)(this, constructor[_1_tl_object_js_1.paramDesc], constructor);
16
+ }
17
+ throw new Error(`Unknown constructor ${id.toString(16)}`);
18
+ }
19
+ }
20
+ exports.TLReader = TLReader;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TLWriter = void 0;
4
+ const _0_tl_raw_writer_js_1 = require("./0_tl_raw_writer.js");
5
+ class TLWriter extends _0_tl_raw_writer_js_1.TLRawWriter {
6
+ writeObject(object) {
7
+ this.write(object.serialize());
8
+ return this;
9
+ }
10
+ }
11
+ exports.TLWriter = TLWriter;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RPCResult = void 0;
4
+ const _1_tl_object_js_1 = require("./1_tl_object.js");
5
+ const _3_tl_reader_js_1 = require("./3_tl_reader.js");
6
+ class RPCResult {
7
+ static get [_1_tl_object_js_1.id]() {
8
+ return 0xF35C6D01;
9
+ }
10
+ constructor(messageId, result) {
11
+ Object.defineProperty(this, "messageId", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: messageId
16
+ });
17
+ Object.defineProperty(this, "result", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: result
22
+ });
23
+ }
24
+ static deserialize(buffer) {
25
+ const reader = new _3_tl_reader_js_1.TLReader(buffer);
26
+ const messageId = reader.readInt64();
27
+ const result = reader.readObject();
28
+ return new RPCResult(messageId, result);
29
+ }
30
+ }
31
+ exports.RPCResult = RPCResult;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Message = void 0;
4
+ const _1_tl_object_js_1 = require("./1_tl_object.js");
5
+ const _3_tl_reader_js_1 = require("./3_tl_reader.js");
6
+ const _3_tl_writer_js_1 = require("./3_tl_writer.js");
7
+ const _4_rpc_result_js_1 = require("./4_rpc_result.js");
8
+ class Message {
9
+ constructor(id, seqNo, body) {
10
+ Object.defineProperty(this, "id", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: id
15
+ });
16
+ Object.defineProperty(this, "seqNo", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: seqNo
21
+ });
22
+ Object.defineProperty(this, "body", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: body
27
+ });
28
+ }
29
+ serialize() {
30
+ if (this.body instanceof _4_rpc_result_js_1.RPCResult) {
31
+ throw new Error("Not applicable");
32
+ }
33
+ return new _3_tl_writer_js_1.TLWriter()
34
+ .writeInt64(this.id)
35
+ .writeInt32(this.seqNo)
36
+ .writeInt32(this.body[_1_tl_object_js_1.length])
37
+ .writeObject(this.body)
38
+ .buffer;
39
+ }
40
+ static deserialize(reader) {
41
+ const id_ = reader.readInt64();
42
+ const seqNo = reader.readInt32();
43
+ const length = reader.readInt32();
44
+ reader = new _3_tl_reader_js_1.TLReader(reader.read(length));
45
+ const cid = reader.readInt32(false);
46
+ let body;
47
+ {
48
+ if (cid == _4_rpc_result_js_1.RPCResult[_1_tl_object_js_1.id]) {
49
+ body = _4_rpc_result_js_1.RPCResult.deserialize(reader.buffer);
50
+ }
51
+ else {
52
+ body = reader.readObject(cid);
53
+ }
54
+ }
55
+ return new Message(id_, seqNo, body);
56
+ }
57
+ }
58
+ exports.Message = Message;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageContainer = void 0;
4
+ const _1_tl_object_js_1 = require("./1_tl_object.js");
5
+ const _3_tl_reader_js_1 = require("./3_tl_reader.js");
6
+ const _3_tl_writer_js_1 = require("./3_tl_writer.js");
7
+ const _5_message_js_1 = require("./5_message.js");
8
+ class MessageContainer {
9
+ static get [_1_tl_object_js_1.id]() {
10
+ return 0x73F1F8DC;
11
+ }
12
+ constructor(messages) {
13
+ Object.defineProperty(this, "messages", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: messages
18
+ });
19
+ }
20
+ serialize() {
21
+ const writer = new _3_tl_writer_js_1.TLWriter();
22
+ writer.writeInt32(MessageContainer[_1_tl_object_js_1.id]);
23
+ writer.writeInt32(this.messages.length);
24
+ for (const message of this.messages) {
25
+ writer.write(message.serialize());
26
+ }
27
+ return writer.buffer;
28
+ }
29
+ static deserialize(buffer) {
30
+ const reader = new _3_tl_reader_js_1.TLReader(buffer);
31
+ const length = reader.readInt32();
32
+ const messages = new Array();
33
+ for (let i = 0; i < length; i++) {
34
+ messages.push(_5_message_js_1.Message.deserialize(reader));
35
+ }
36
+ return new MessageContainer(messages);
37
+ }
38
+ }
39
+ exports.MessageContainer = MessageContainer;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Transport = void 0;
4
+ class Transport {
5
+ constructor() {
6
+ Object.defineProperty(this, "initialized", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: false
11
+ });
12
+ Object.defineProperty(this, "obfuscationParameters", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: null
17
+ });
18
+ }
19
+ encrypt(buffer) {
20
+ if (this.obfuscationParameters) {
21
+ return this.obfuscationParameters.encryptionCTR.encrypt(buffer);
22
+ }
23
+ else {
24
+ return buffer;
25
+ }
26
+ }
27
+ decrypt(buffer) {
28
+ if (this.obfuscationParameters) {
29
+ return this.obfuscationParameters.decryptionCTR.decrypt(buffer);
30
+ }
31
+ else {
32
+ return buffer;
33
+ }
34
+ }
35
+ }
36
+ exports.Transport = Transport;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransportIntermediate = void 0;
4
+ const _0_buffer_js_1 = require("../utilities/0_buffer.js");
5
+ const _1_obfuscation_js_1 = require("../utilities/1_obfuscation.js");
6
+ const transport_js_1 = require("./transport.js");
7
+ class TransportIntermediate extends transport_js_1.Transport {
8
+ constructor(connection, obfuscated = false) {
9
+ super();
10
+ Object.defineProperty(this, "connection", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: connection
15
+ });
16
+ Object.defineProperty(this, "obfuscated", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: obfuscated
21
+ });
22
+ }
23
+ async initialize() {
24
+ if (!this.initialized) {
25
+ if (this.obfuscated) {
26
+ this.obfuscationParameters = await (0, _1_obfuscation_js_1.getObfuscationParameters)(0xEEEEEEEE, this.connection);
27
+ }
28
+ else {
29
+ await this.connection.write(new Uint8Array([0xEE, 0xEE, 0xEE, 0xEE]));
30
+ }
31
+ this.initialized = true;
32
+ }
33
+ else {
34
+ throw new Error("Transport already initialized");
35
+ }
36
+ }
37
+ async receive() {
38
+ let length;
39
+ {
40
+ const buffer = new Uint8Array(4);
41
+ await this.connection.read(buffer);
42
+ const dataView = new DataView(this.decrypt(buffer).buffer);
43
+ length = dataView.getUint32(0, true);
44
+ }
45
+ const buffer = new Uint8Array(length);
46
+ await this.connection.read(buffer);
47
+ return this.decrypt(buffer);
48
+ }
49
+ async send(buffer) {
50
+ if (!this.initialized) {
51
+ throw new Error("Transport not initialized");
52
+ }
53
+ const length = (0, _0_buffer_js_1.bufferFromBigInt)(buffer.length, 4);
54
+ await this.connection.write(this.encrypt((0, _0_buffer_js_1.concat)(length, buffer)));
55
+ }
56
+ deinitialize() {
57
+ this.initialized = false;
58
+ }
59
+ }
60
+ exports.TransportIntermediate = TransportIntermediate;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultTransportProvider = exports.defaultDc = void 0;
4
+ const connection_web_socket_js_1 = require("../connection/connection_web_socket.js");
5
+ const transport_intermediate_js_1 = require("./transport_intermediate.js");
6
+ exports.defaultDc = "2-test";
7
+ const dcToNameMap = {
8
+ "1": "pluto",
9
+ "1-test": "pluto",
10
+ "2": "venus",
11
+ "2-test": "venus",
12
+ "3": "aurora",
13
+ "3-test": "aurora",
14
+ "4": "vesta",
15
+ "5": "flora",
16
+ };
17
+ const defaultTransportProvider = (params) => {
18
+ return (cdn) => {
19
+ const { dc, wss = typeof location !== "undefined" && location.protocol == "http:" ? false : true } = params ?? { dc: exports.defaultDc };
20
+ const url = `${wss ? "wss" : "ws"}://${dcToNameMap[dc]}${cdn ? "-1" : ""}.telegram.org/apiws${dc.endsWith("-test") ? "apiws_test" : "apiws"}`;
21
+ const connection = new connection_web_socket_js_1.ConnectionWebSocket(url);
22
+ const transport = new transport_intermediate_js_1.TransportIntermediate(connection, true);
23
+ const dcId = Number(dc[0]) + (dc.endsWith("-test") ? 10000 : 0) * (cdn ? -1 : 1);
24
+ return { connection, transport, dcId };
25
+ };
26
+ };
27
+ exports.defaultTransportProvider = defaultTransportProvider;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,67 @@
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.getRandomBigInt = exports.bigIntFromBuffer = exports.mod = exports.modExp = void 0;
27
+ const dntShim = __importStar(require("../_dnt.shims.js"));
28
+ function modExp(a, b, n) {
29
+ a %= n;
30
+ let result = 1n;
31
+ let x = a;
32
+ while (b > 0n) {
33
+ const leastSignificantBit = b % 2n;
34
+ b /= 2n;
35
+ if (leastSignificantBit == 1n) {
36
+ result *= x;
37
+ result %= n;
38
+ }
39
+ x *= x;
40
+ x %= n;
41
+ }
42
+ return result;
43
+ }
44
+ exports.modExp = modExp;
45
+ function mod(n, m) {
46
+ return ((n % m) + m) % m;
47
+ }
48
+ exports.mod = mod;
49
+ function bigIntFromBuffer(buffer, little = true, signed = false) {
50
+ let randomBuffer = buffer;
51
+ const bytesLength = randomBuffer.length;
52
+ if (little) {
53
+ randomBuffer = randomBuffer.reverse();
54
+ }
55
+ let bigIntVar = BigInt("0x" + [...randomBuffer].map((v) => v.toString(16).padStart(2, "0")).join(""));
56
+ if (signed && Math.floor(bigIntVar.toString(2).length / 8) >= bytesLength) {
57
+ bigIntVar = bigIntVar - (2n ** (BigInt(bytesLength * 8)));
58
+ }
59
+ return bigIntVar;
60
+ }
61
+ exports.bigIntFromBuffer = bigIntFromBuffer;
62
+ function getRandomBigInt(byteLength, little, signed) {
63
+ const randomBytes = new Uint8Array(byteLength);
64
+ dntShim.crypto.getRandomValues(randomBytes);
65
+ return bigIntFromBuffer(randomBytes, little, signed);
66
+ }
67
+ exports.getRandomBigInt = getRandomBigInt;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bufferFromBigInt = exports.concat = void 0;
4
+ function concat(...buffers) {
5
+ return new Uint8Array(buffers.map((v) => Array.from(v)).flat());
6
+ }
7
+ exports.concat = concat;
8
+ const bufferFromHexString = (hexString) => Uint8Array.from(hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
9
+ function bufferFromBigInt(bigIntVar, bytesNumber, little = true, signed = false) {
10
+ bigIntVar = BigInt(typeof bigIntVar === "number" ? Math.ceil(bigIntVar) : bigIntVar);
11
+ const bitLength = bigIntVar.toString(2).length;
12
+ const bytes = Math.ceil(bitLength / 8);
13
+ if (bytesNumber < bytes) {
14
+ throw new Error("OverflowError: int too big to convert");
15
+ }
16
+ if (!signed && bigIntVar < 0n) {
17
+ throw new Error("Cannot convert to unsigned");
18
+ }
19
+ let below = false;
20
+ if (bigIntVar < 0n) {
21
+ below = true;
22
+ bigIntVar = bigIntVar < 0 ? bigIntVar * -1n : bigIntVar;
23
+ }
24
+ const hex = bigIntVar.toString(16).padStart(bytesNumber * 2, "0");
25
+ const buffer = bufferFromHexString(hex);
26
+ if (signed && below) {
27
+ buffer[buffer.length - 1] = 256 -
28
+ buffer[buffer.length - 1];
29
+ for (let i = 0; i < buffer.length - 1; i++) {
30
+ buffer[i] = 255 - buffer[i];
31
+ }
32
+ }
33
+ if (little) {
34
+ buffer.reverse();
35
+ }
36
+ return buffer;
37
+ }
38
+ exports.bufferFromBigInt = bufferFromBigInt;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CTR = void 0;
4
+ const deps_js_1 = require("../deps.js");
5
+ class CTR {
6
+ constructor(key, iv) {
7
+ Object.defineProperty(this, "key", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: key
12
+ });
13
+ Object.defineProperty(this, "iv", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: iv
18
+ });
19
+ Object.defineProperty(this, "state", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: new Uint8Array(1)
24
+ });
25
+ }
26
+ encrypt(data) {
27
+ const [encrypted, iv, state] = (0, deps_js_1.ctr256Encrypt)(data, this.key, this.iv, this.state);
28
+ this.iv = iv;
29
+ this.state = state;
30
+ return new Uint8Array(encrypted);
31
+ }
32
+ decrypt(data) {
33
+ const [decrypted, iv, state] = (0, deps_js_1.ctr256Decrypt)(data, this.key, this.iv, this.state);
34
+ this.iv = iv;
35
+ this.state = state;
36
+ return new Uint8Array(decrypted);
37
+ }
38
+ }
39
+ exports.CTR = CTR;
@@ -0,0 +1,35 @@
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.sha1 = exports.sha256 = void 0;
27
+ const dntShim = __importStar(require("../_dnt.shims.js"));
28
+ async function sha256(payload) {
29
+ return new Uint8Array(await dntShim.crypto.subtle.digest("SHA-256", payload));
30
+ }
31
+ exports.sha256 = sha256;
32
+ async function sha1(payload) {
33
+ return new Uint8Array(await dntShim.crypto.subtle.digest("SHA-1", payload));
34
+ }
35
+ exports.sha1 = sha1;
@@ -0,0 +1,56 @@
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.rsaPad = void 0;
27
+ const dntShim = __importStar(require("../_dnt.shims.js"));
28
+ const deps_js_1 = require("../deps.js");
29
+ const _0_bigint_js_1 = require("./0_bigint.js");
30
+ const _0_buffer_js_1 = require("./0_buffer.js");
31
+ const _0_hash_js_1 = require("./0_hash.js");
32
+ async function rsaPad(data, [serverKey, exponent]) {
33
+ (0, deps_js_1.assert)(data.length <= 144);
34
+ let keyAesEncryptedInt;
35
+ let tries = 0;
36
+ do {
37
+ if (++tries == 10) {
38
+ throw new Error("Out of tries");
39
+ }
40
+ const dataWithPadding = (0, _0_buffer_js_1.concat)(data, new Uint8Array(192 - data.length));
41
+ const dataPadReversed = new Uint8Array(dataWithPadding).reverse();
42
+ const tempKey = dntShim.crypto.getRandomValues(new Uint8Array(32));
43
+ const dataWithHash = (0, _0_buffer_js_1.concat)(dataPadReversed, await (0, _0_hash_js_1.sha256)((0, _0_buffer_js_1.concat)(tempKey, dataWithPadding)));
44
+ const aesEncrypted = (0, deps_js_1.ige256Encrypt)(dataWithHash, tempKey, new Uint8Array(32));
45
+ const aesEncryptedSha256 = await (0, _0_hash_js_1.sha256)(aesEncrypted);
46
+ const tempKeyXor = tempKey.map((v, i) => v ^ aesEncryptedSha256[i]);
47
+ const keyAesEncrypted = (0, _0_buffer_js_1.concat)(tempKeyXor, aesEncrypted);
48
+ (0, deps_js_1.assertEquals)(keyAesEncrypted.length, 256);
49
+ keyAesEncryptedInt = (0, _0_bigint_js_1.bigIntFromBuffer)(keyAesEncrypted, false, false);
50
+ } while (keyAesEncryptedInt >= serverKey);
51
+ const encryptedDataInt = (0, _0_bigint_js_1.modExp)(keyAesEncryptedInt, exponent, serverKey);
52
+ const encryptedData = (0, _0_buffer_js_1.bufferFromBigInt)(encryptedDataInt, 256, false, false);
53
+ (0, deps_js_1.assertEquals)(encryptedData.length, 256);
54
+ return encryptedData;
55
+ }
56
+ exports.rsaPad = rsaPad;