@mtkruto/node 0.1.100 → 0.1.102

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 (197) hide show
  1. package/esm/0_deps.d.ts +3 -3
  2. package/esm/0_deps.js +3 -3
  3. package/esm/4_constants.d.ts +1 -1
  4. package/esm/4_constants.js +1 -1
  5. package/esm/client/0_message.js +3 -9
  6. package/esm/client/3_types.d.ts +2 -0
  7. package/esm/client/4_client.d.ts +55 -4
  8. package/esm/client/4_client.js +260 -72
  9. package/esm/connection/1_connection_web_socket.js +5 -2
  10. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_diff.js +10 -3
  11. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_false.js +1 -0
  12. package/esm/deps/deno.land/std@0.204.0/encoding/_util.d.ts +1 -0
  13. package/esm/deps/deno.land/std@0.204.0/encoding/_util.js +26 -0
  14. package/esm/deps/deno.land/std@0.204.0/encoding/base64.d.ts +23 -0
  15. package/{script/deps/deno.land/std@0.201.0 → esm/deps/deno.land/std@0.204.0}/encoding/base64.js +23 -18
  16. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/fmt/colors.js +1 -1
  17. package/esm/deps/deno.land/x/{tgcrypto@0.3.2 → tgcrypto@0.3.3}/mod.js +10 -4
  18. package/esm/deps/deno.land/x/tgcrypto@0.3.3/tgcrypto.js +324 -0
  19. package/esm/tl/6_message.d.ts +1 -0
  20. package/esm/tl/6_message.js +1 -2
  21. package/esm/tl/6_message_test.d.ts +1 -0
  22. package/esm/transport/0_obfuscation.js +3 -3
  23. package/esm/transport/0_transport.d.ts +2 -2
  24. package/esm/transport/0_transport.js +2 -8
  25. package/esm/transport/1_transport_abridged.js +9 -7
  26. package/esm/transport/1_transport_intermediate.js +7 -3
  27. package/esm/types/3_message.d.ts +4 -0
  28. package/esm/types/3_message.js +4 -1
  29. package/esm/utilities/0_bigint.d.ts +1 -0
  30. package/esm/utilities/0_bigint.js +2 -0
  31. package/esm/utilities/0_crypto.d.ts +1 -1
  32. package/esm/utilities/0_crypto.js +1 -3
  33. package/esm/utilities/0_queue.js +1 -1
  34. package/package.json +1 -1
  35. package/script/0_deps.d.ts +3 -3
  36. package/script/0_deps.js +3 -3
  37. package/script/4_constants.d.ts +1 -1
  38. package/script/4_constants.js +1 -1
  39. package/script/client/0_message.js +2 -8
  40. package/script/client/3_types.d.ts +2 -0
  41. package/script/client/4_client.d.ts +55 -4
  42. package/script/client/4_client.js +260 -71
  43. package/script/connection/1_connection_web_socket.js +5 -2
  44. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_diff.js +10 -3
  45. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_false.js +1 -0
  46. package/script/deps/deno.land/std@0.204.0/encoding/_util.d.ts +1 -0
  47. package/script/deps/deno.land/std@0.204.0/encoding/_util.js +30 -0
  48. package/script/deps/deno.land/std@0.204.0/encoding/base64.d.ts +23 -0
  49. package/{esm/deps/deno.land/std@0.201.0 → script/deps/deno.land/std@0.204.0}/encoding/base64.js +28 -13
  50. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/fmt/colors.js +1 -1
  51. package/script/deps/deno.land/x/{tgcrypto@0.3.2 → tgcrypto@0.3.3}/mod.js +10 -4
  52. package/script/deps/deno.land/x/tgcrypto@0.3.3/tgcrypto.js +326 -0
  53. package/script/tl/6_message.d.ts +1 -0
  54. package/script/tl/6_message.js +2 -2
  55. package/script/tl/6_message_test.d.ts +1 -0
  56. package/script/transport/0_obfuscation.js +3 -3
  57. package/script/transport/0_transport.d.ts +2 -2
  58. package/script/transport/0_transport.js +2 -8
  59. package/script/transport/1_transport_abridged.js +9 -7
  60. package/script/transport/1_transport_intermediate.js +7 -3
  61. package/script/types/3_message.d.ts +4 -0
  62. package/script/types/3_message.js +4 -1
  63. package/script/utilities/0_bigint.d.ts +1 -0
  64. package/script/utilities/0_bigint.js +2 -0
  65. package/script/utilities/0_crypto.d.ts +1 -1
  66. package/script/utilities/0_crypto.js +1 -3
  67. package/script/utilities/0_queue.js +1 -1
  68. package/esm/deps/deno.land/std@0.201.0/encoding/base64.d.ts +0 -11
  69. package/esm/deps/deno.land/x/tgcrypto@0.3.2/tgcrypto.js +0 -308
  70. package/script/deps/deno.land/std@0.201.0/encoding/base64.d.ts +0 -11
  71. package/script/deps/deno.land/x/tgcrypto@0.3.2/tgcrypto.js +0 -310
  72. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_constants.d.ts +0 -0
  73. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_constants.js +0 -0
  74. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_diff.d.ts +0 -0
  75. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_format.d.ts +0 -0
  76. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_format.js +0 -0
  77. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert.d.ts +0 -0
  78. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert.js +0 -0
  79. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_almost_equals.d.ts +0 -0
  80. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_almost_equals.js +0 -0
  81. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_array_includes.d.ts +0 -0
  82. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_array_includes.js +0 -0
  83. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_equals.d.ts +0 -0
  84. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_equals.js +0 -0
  85. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_exists.d.ts +0 -0
  86. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_exists.js +0 -0
  87. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_false.d.ts +1 -1
  88. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater.d.ts +0 -0
  89. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater.js +0 -0
  90. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater_or_equal.d.ts +0 -0
  91. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater_or_equal.js +0 -0
  92. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_instance_of.d.ts +0 -0
  93. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_instance_of.js +0 -0
  94. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_is_error.d.ts +0 -0
  95. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_is_error.js +0 -0
  96. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less.d.ts +0 -0
  97. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less.js +0 -0
  98. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less_or_equal.d.ts +0 -0
  99. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less_or_equal.js +0 -0
  100. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_match.d.ts +0 -0
  101. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_match.js +0 -0
  102. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_equals.d.ts +0 -0
  103. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_equals.js +0 -0
  104. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_instance_of.d.ts +0 -0
  105. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_instance_of.js +0 -0
  106. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_match.d.ts +0 -0
  107. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_match.js +0 -0
  108. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_strict_equals.d.ts +0 -0
  109. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_strict_equals.js +0 -0
  110. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_object_match.d.ts +0 -0
  111. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_object_match.js +0 -0
  112. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_rejects.d.ts +0 -0
  113. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_rejects.js +0 -0
  114. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_strict_equals.d.ts +0 -0
  115. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_strict_equals.js +0 -0
  116. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_string_includes.d.ts +0 -0
  117. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_string_includes.js +0 -0
  118. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_throws.d.ts +0 -0
  119. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_throws.js +0 -0
  120. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assertion_error.d.ts +0 -0
  121. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assertion_error.js +0 -0
  122. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/equal.d.ts +0 -0
  123. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/equal.js +0 -0
  124. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/fail.d.ts +0 -0
  125. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/fail.js +0 -0
  126. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/mod.d.ts +0 -0
  127. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/mod.js +0 -0
  128. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unimplemented.d.ts +0 -0
  129. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unimplemented.js +0 -0
  130. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unreachable.d.ts +0 -0
  131. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unreachable.js +0 -0
  132. package/esm/deps/deno.land/{std@0.201.0 → std@0.204.0}/fmt/colors.d.ts +0 -0
  133. package/esm/deps/deno.land/x/{tgcrypto@0.3.2 → tgcrypto@0.3.3}/mod.d.ts +0 -0
  134. package/esm/deps/deno.land/x/{tgcrypto@0.3.2 → tgcrypto@0.3.3}/tgcrypto.d.ts +0 -0
  135. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_constants.d.ts +0 -0
  136. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_constants.js +0 -0
  137. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_diff.d.ts +0 -0
  138. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_format.d.ts +0 -0
  139. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/_format.js +0 -0
  140. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert.d.ts +0 -0
  141. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert.js +0 -0
  142. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_almost_equals.d.ts +0 -0
  143. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_almost_equals.js +0 -0
  144. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_array_includes.d.ts +0 -0
  145. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_array_includes.js +0 -0
  146. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_equals.d.ts +0 -0
  147. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_equals.js +0 -0
  148. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_exists.d.ts +0 -0
  149. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_exists.js +0 -0
  150. package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_false.d.ts +1 -1
  151. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater.d.ts +0 -0
  152. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater.js +0 -0
  153. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater_or_equal.d.ts +0 -0
  154. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_greater_or_equal.js +0 -0
  155. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_instance_of.d.ts +0 -0
  156. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_instance_of.js +0 -0
  157. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_is_error.d.ts +0 -0
  158. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_is_error.js +0 -0
  159. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less.d.ts +0 -0
  160. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less.js +0 -0
  161. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less_or_equal.d.ts +0 -0
  162. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_less_or_equal.js +0 -0
  163. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_match.d.ts +0 -0
  164. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_match.js +0 -0
  165. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_equals.d.ts +0 -0
  166. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_equals.js +0 -0
  167. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_instance_of.d.ts +0 -0
  168. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_instance_of.js +0 -0
  169. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_match.d.ts +0 -0
  170. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_match.js +0 -0
  171. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_strict_equals.d.ts +0 -0
  172. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_not_strict_equals.js +0 -0
  173. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_object_match.d.ts +0 -0
  174. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_object_match.js +0 -0
  175. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_rejects.d.ts +0 -0
  176. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_rejects.js +0 -0
  177. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_strict_equals.d.ts +0 -0
  178. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_strict_equals.js +0 -0
  179. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_string_includes.d.ts +0 -0
  180. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_string_includes.js +0 -0
  181. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_throws.d.ts +0 -0
  182. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assert_throws.js +0 -0
  183. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assertion_error.d.ts +0 -0
  184. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/assertion_error.js +0 -0
  185. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/equal.d.ts +0 -0
  186. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/equal.js +0 -0
  187. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/fail.d.ts +0 -0
  188. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/fail.js +0 -0
  189. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/mod.d.ts +0 -0
  190. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/mod.js +0 -0
  191. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unimplemented.d.ts +0 -0
  192. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unimplemented.js +0 -0
  193. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unreachable.d.ts +0 -0
  194. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/assert/unreachable.js +0 -0
  195. /package/script/deps/deno.land/{std@0.201.0 → std@0.204.0}/fmt/colors.d.ts +0 -0
  196. /package/script/deps/deno.land/x/{tgcrypto@0.3.2 → tgcrypto@0.3.3}/mod.d.ts +0 -0
  197. /package/script/deps/deno.land/x/{tgcrypto@0.3.2 → tgcrypto@0.3.3}/tgcrypto.d.ts +0 -0
@@ -15,18 +15,12 @@ export class Transport {
15
15
  }
16
16
  encrypt(buffer) {
17
17
  if (this.obfuscationParameters) {
18
- return this.obfuscationParameters.encryptionCTR.call(buffer);
19
- }
20
- else {
21
- return buffer;
18
+ this.obfuscationParameters.encryptionCTR.call(buffer);
22
19
  }
23
20
  }
24
21
  decrypt(buffer) {
25
22
  if (this.obfuscationParameters) {
26
- return this.obfuscationParameters.decryptionCTR.call(buffer);
27
- }
28
- else {
29
- return buffer;
23
+ this.obfuscationParameters.decryptionCTR.call(buffer);
30
24
  }
31
25
  }
32
26
  }
@@ -34,24 +34,24 @@ export class TransportAbridged extends Transport {
34
34
  async receive() {
35
35
  let length;
36
36
  {
37
- let buffer = new Uint8Array(1);
37
+ const buffer = new Uint8Array(1);
38
38
  await this.connection.read(buffer);
39
- buffer = this.decrypt(buffer);
39
+ this.decrypt(buffer);
40
40
  if (buffer[0] < 0x7F) {
41
41
  length = buffer[0];
42
42
  }
43
43
  else {
44
- let buffer = new Uint8Array(3);
44
+ const buffer = new Uint8Array(3);
45
45
  await this.connection.read(buffer);
46
- buffer = this.decrypt(buffer);
46
+ this.decrypt(buffer);
47
47
  const dataView = new DataView(buffer.buffer);
48
48
  length = dataView.getUint16(0, true);
49
49
  }
50
50
  }
51
51
  length *= 4;
52
- let buffer = new Uint8Array(length);
52
+ const buffer = new Uint8Array(length);
53
53
  await this.connection.read(buffer);
54
- buffer = this.decrypt(buffer);
54
+ this.decrypt(buffer);
55
55
  return buffer;
56
56
  }
57
57
  async send(buffer) {
@@ -61,7 +61,9 @@ export class TransportAbridged extends Transport {
61
61
  const bufferLength = buffer.length / 4;
62
62
  const header = new Uint8Array([bufferLength >= 0x7F ? 0x7F : bufferLength]);
63
63
  const length = bufferLength >= 0x7F ? bufferFromBigInt(bufferLength, 3) : new Uint8Array();
64
- await this.connection.write(this.encrypt(concat(header, length, buffer)));
64
+ const data = concat(header, length, buffer);
65
+ this.encrypt(data);
66
+ await this.connection.write(data);
65
67
  }
66
68
  deinitialize() {
67
69
  this.initialized = false;
@@ -36,19 +36,23 @@ export class TransportIntermediate extends Transport {
36
36
  {
37
37
  const buffer = new Uint8Array(4);
38
38
  await this.connection.read(buffer);
39
- const dataView = new DataView(this.decrypt(buffer).buffer);
39
+ this.decrypt(buffer);
40
+ const dataView = new DataView(buffer.buffer);
40
41
  length = dataView.getUint32(0, true);
41
42
  }
42
43
  const buffer = new Uint8Array(length);
43
44
  await this.connection.read(buffer);
44
- return this.decrypt(buffer);
45
+ this.decrypt(buffer);
46
+ return buffer;
45
47
  }
46
48
  async send(buffer) {
47
49
  if (!this.initialized) {
48
50
  throw new Error("Transport not initialized");
49
51
  }
50
52
  const length = bufferFromBigInt(buffer.length, 4);
51
- await this.connection.write(this.encrypt(concat(length, buffer)));
53
+ const data = concat(length, buffer);
54
+ this.encrypt(data);
55
+ await this.connection.write(data);
52
56
  }
53
57
  deinitialize() {
54
58
  this.initialized = false;
@@ -126,6 +126,10 @@ export interface Message {
126
126
  supergroupCreated?: true;
127
127
  /** Service message: the channel has been created. This field can't be received in a message coming through updates, because bot can't be a member of a channel when it is created. It can only be found in reply_to_message if someone replies to a very first message in a channel. */
128
128
  channelCreated?: true;
129
+ /** Service message: auto-delete timer settings changed in the chat */
130
+ messageAutoDeleteTimerChanged?: {
131
+ messageAutoDeleteTime: number;
132
+ };
129
133
  /** The group has been migrated to a supergroup with the specified identifier */
130
134
  chatMigratedTo?: number;
131
135
  /** The supergroup has been migrated from a group with the specified identifier */
@@ -177,6 +177,9 @@ async function constructServiceMessage(message_, chat, getEntity, getMessage) {
177
177
  message.videoChatStarted = {};
178
178
  }
179
179
  }
180
+ else if (message_.action instanceof types.MessageActionSetMessagesTTL) {
181
+ message.messageAutoDeleteTimerChanged = { messageAutoDeleteTime: message_.action.period || 0 };
182
+ }
180
183
  return cleanObject(message);
181
184
  }
182
185
  export async function constructMessage(message_, getEntity, getMessage, getStickerSetName) {
@@ -368,7 +371,7 @@ export async function constructMessage(message_, getEntity, getMessage, getStick
368
371
  message.document = constructDocument(document, fileName, getFileId(FileType.Document), fileUniqueId);
369
372
  }
370
373
  else {
371
- UNREACHABLE();
374
+ message.document = constructDocument(document, new types.DocumentAttributeFilename({ fileName: "Unknown" }), getFileId(FileType.Document), fileUniqueId);
372
375
  }
373
376
  }
374
377
  }
@@ -1,5 +1,6 @@
1
1
  export declare function modExp(a: bigint, b: bigint, n: bigint): bigint;
2
2
  export declare function mod(n: bigint, m: bigint): bigint;
3
+ export declare function mod(n: number, m: number): number;
3
4
  export declare function bigIntFromBuffer(buffer: Uint8Array, little?: boolean, signed?: boolean): bigint;
4
5
  export declare function getRandomBigInt(byteLength: number, little?: boolean, signed?: boolean): bigint;
5
6
  export declare function getRandomId(): bigint;
@@ -16,6 +16,8 @@ export function modExp(a, b, n) {
16
16
  return result;
17
17
  }
18
18
  export function mod(n, m) {
19
+ // deno-lint-ignore ban-ts-comment
20
+ // @ts-ignore
19
21
  return ((n % m) + m) % m;
20
22
  }
21
23
  export function bigIntFromBuffer(buffer, little = true, signed = false) {
@@ -3,5 +3,5 @@ export declare class CTR {
3
3
  iv: Uint8Array;
4
4
  state: Uint8Array;
5
5
  constructor(key: Uint8Array, iv: Uint8Array);
6
- call(data: Uint8Array): Uint8Array;
6
+ call(data: Uint8Array): void;
7
7
  }
@@ -21,8 +21,6 @@ export class CTR {
21
21
  });
22
22
  }
23
23
  call(data) {
24
- const v = new Uint8Array(data); // TODO: don't copy
25
- ctr256(v, this.key, this.iv, this.state);
26
- return v;
24
+ ctr256(data, this.key, this.iv, this.state);
27
25
  }
28
26
  }
@@ -36,7 +36,7 @@ export class Queue {
36
36
  if (fn !== undefined) {
37
37
  fn()
38
38
  .catch((err) => {
39
- this.d("%o", err);
39
+ this.d("%o", "stack" in err ? err.stack : err);
40
40
  })
41
41
  .finally(() => {
42
42
  this.busy = false;
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.100",
5
+ "version": "0.1.102",
6
6
  "description": "MTKruto for Node.js",
7
7
  "author": "Roj <rojvv@icloud.com>",
8
8
  "license": "LGPL-3.0-or-later",
@@ -1,8 +1,8 @@
1
- export * from "./deps/deno.land/std@0.201.0/assert/mod.js";
2
- export { ctr256, factorize, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/deno.land/x/tgcrypto@0.3.2/mod.js";
1
+ export * from "./deps/deno.land/std@0.204.0/assert/mod.js";
2
+ export { ctr256, factorize, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/deno.land/x/tgcrypto@0.3.3/mod.js";
3
3
  export { gunzip, gzip } from "./deps/raw.githubusercontent.com/MTKruto/compress/main/gzip/gzip.js";
4
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.201.0/encoding/base64.js";
8
+ export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.204.0/encoding/base64.js";
package/script/0_deps.js CHANGED
@@ -15,8 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
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;
18
- __exportStar(require("./deps/deno.land/std@0.201.0/assert/mod.js"), exports);
19
- var mod_js_1 = require("./deps/deno.land/x/tgcrypto@0.3.2/mod.js");
18
+ __exportStar(require("./deps/deno.land/std@0.204.0/assert/mod.js"), exports);
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; } });
21
21
  Object.defineProperty(exports, "factorize", { enumerable: true, get: function () { return mod_js_1.factorize; } });
22
22
  Object.defineProperty(exports, "ige256Decrypt", { enumerable: true, get: function () { return mod_js_1.ige256Decrypt; } });
@@ -32,6 +32,6 @@ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () {
32
32
  const mod_js_3 = require("./deps/raw.githubusercontent.com/MTKruto/debug/main/mod.js");
33
33
  const debug = (v) => (0, mod_js_3.debug)(v);
34
34
  exports.debug = debug;
35
- var base64_js_1 = require("./deps/deno.land/std@0.201.0/encoding/base64.js");
35
+ var base64_js_1 = require("./deps/deno.land/std@0.204.0/encoding/base64.js");
36
36
  Object.defineProperty(exports, "base64Decode", { enumerable: true, get: function () { return base64_js_1.decode; } });
37
37
  Object.defineProperty(exports, "base64Encode", { enumerable: true, get: function () { return base64_js_1.encode; } });
@@ -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 = 161;
8
- export declare const APP_VERSION = "MTKruto 0.1.100";
8
+ export declare const APP_VERSION = "MTKruto 0.1.102";
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-test";
82
82
  exports.LAYER = 161;
83
- exports.APP_VERSION = "MTKruto 0.1.100";
83
+ exports.APP_VERSION = "MTKruto 0.1.102";
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];
@@ -43,14 +43,8 @@ async function encryptMessage(message, authKey, authKeyId, salt, sessionId) {
43
43
  payloadWriter.writeInt32(message.seqNo);
44
44
  payloadWriter.writeInt32(encoded.length);
45
45
  payloadWriter.write(encoded);
46
- payloadWriter.write(new Uint8Array(payloadWriter.buffer.length + 12 % 16 + 12));
47
- let payload = payloadWriter.buffer;
48
- while (true) {
49
- if (payload.length % 16 == 0 && (payload.length) % 4 == 0) {
50
- break;
51
- }
52
- payload = (0, _1_utilities_js_1.concat)(payload, new Uint8Array(1));
53
- }
46
+ payloadWriter.write(new Uint8Array((0, _1_utilities_js_1.mod)(-(payloadWriter.buffer.length + 12), 16) + 12));
47
+ const payload = payloadWriter.buffer;
54
48
  const messageKey = (await (0, _1_utilities_js_1.sha256)((0, _1_utilities_js_1.concat)(authKey.slice(88, 120), payload))).slice(8, 24);
55
49
  const a = await (0, _1_utilities_js_1.sha256)((0, _1_utilities_js_1.concat)(messageKey, authKey.slice(0, 36)));
56
50
  const b = await (0, _1_utilities_js_1.sha256)((0, _1_utilities_js_1.concat)(authKey.slice(40, 76), messageKey));
@@ -1,4 +1,5 @@
1
1
  import { MaybePromise } from "../1_utilities.js";
2
+ import { functions, types } from "../2_tl.js";
2
3
  import { CallbackQuery, ChatID, ForceReply, InlineKeyboardMarkup, InlineQuery, Message, MessageEntity, ReplyKeyboardMarkup, ReplyKeyboardRemove } from "../3_types.js";
3
4
  import { With } from "./0_utilities.js";
4
5
  import { ClientPlainParams } from "./2_client_plain.js";
@@ -36,6 +37,7 @@ export interface ClientParams extends ClientPlainParams {
36
37
  * Whether to automatically call `start` with no parameters in the first `invoke` call. Defaults to `true`.
37
38
  */
38
39
  autoStart?: boolean;
40
+ errorHandler?: (err: unknown, function_: types.Type | functions.Function<unknown>, n: number) => MaybePromise<boolean>;
39
41
  }
40
42
  export interface AnswerCallbackQueryParams {
41
43
  /** Text of the answer */
@@ -12,8 +12,9 @@ export declare const getStickerSetName: unique symbol;
12
12
  export declare const handleMigrationError: unique symbol;
13
13
  export declare const getMessageWithReply: unique symbol;
14
14
  export declare const restartAuth: unique symbol;
15
+ export declare class ConnectionError extends Error {
16
+ }
15
17
  export declare class Client extends ClientAbstract {
16
- readonly storage: Storage;
17
18
  readonly apiId: number | null;
18
19
  readonly apiHash: string | null;
19
20
  private auth;
@@ -22,6 +23,8 @@ export declare class Client extends ClientAbstract {
22
23
  private promises;
23
24
  private toAcknowledge;
24
25
  private updateState?;
26
+ private readonly errorHandler?;
27
+ readonly storage: Storage;
25
28
  readonly parseMode: ParseMode;
26
29
  readonly appVersion: string;
27
30
  readonly deviceModel: string;
@@ -38,7 +41,7 @@ export declare class Client extends ClientAbstract {
38
41
  * @param apiId App's API ID from [my.telegram.org](https://my.telegram.org/apps). Defaults to 0 (unset).
39
42
  * @param apiHash App's API hash from [my.telegram.org/apps](https://my.telegram.org/apps). Defaults to empty string (unset).
40
43
  */
41
- constructor(storage?: Storage, apiId?: number | null, apiHash?: string | null, params?: ClientParams);
44
+ constructor(storage: Storage | null, apiId?: number | null, apiHash?: string | null, params?: ClientParams);
42
45
  private propagateConnectionState;
43
46
  private lastPropagatedConnectionState;
44
47
  protected stateChangeHandler: (connected: boolean) => void;
@@ -91,6 +94,7 @@ export declare class Client extends ClientAbstract {
91
94
  start(params?: string | types.AuthExportedAuthorization | AuthorizeUserParams): Promise<void>;
92
95
  private receiveLoop;
93
96
  private pingLoop;
97
+ private pingLoopStarted;
94
98
  private autoStarted;
95
99
  private lastMsgId;
96
100
  /**
@@ -141,7 +145,7 @@ export declare class Client extends ClientAbstract {
141
145
  * @param messageId The ID of the message.
142
146
  * @param text The new text of the message.
143
147
  */
144
- editMessageText(chatId: ChatID, messageId: number, text: string, params?: EditMessageParams): Promise<void>;
148
+ editMessageText(chatId: ChatID, messageId: number, text: string, params?: EditMessageParams): Promise<With<Message, "text">>;
145
149
  private getMessagesInner;
146
150
  /**
147
151
  * Retrieve multiple messages.
@@ -164,7 +168,9 @@ export declare class Client extends ClientAbstract {
164
168
  *
165
169
  * @param fileId The identifier of the file to download.
166
170
  */
167
- download(fileId: string): Promise<AsyncGenerator<Uint8Array, void, unknown>>;
171
+ download(fileId: string, params?: {
172
+ chunkSize?: number;
173
+ }): Promise<AsyncGenerator<Uint8Array, void, unknown>>;
168
174
  [getStickerSetName](inputStickerSet: types.InputStickerSetID, hash?: number): Promise<string>;
169
175
  /**
170
176
  * Forward multiple messages.
@@ -212,6 +218,16 @@ export declare class Client extends ClientAbstract {
212
218
  * @param messageThreadId The thread to send the chat action to.
213
219
  */
214
220
  sendChatAction(chatId: ChatID, action_: ChatAction, messageThreadId?: number): Promise<void>;
221
+ /**
222
+ * Upload a file.
223
+ *
224
+ * @param contents The contents of the file.
225
+ */
226
+ upload(contents: Uint8Array, params?: {
227
+ fileName?: string;
228
+ chunkSize?: number;
229
+ signal?: AbortSignal | null;
230
+ }): Promise<types.InputFile | types.InputFileBig>;
215
231
  setMyCommands(commands: BotCommand[], params?: {
216
232
  languageCode?: string;
217
233
  scope?: BotCommandScope;
@@ -233,4 +249,39 @@ export declare class Client extends ClientAbstract {
233
249
  filter<D extends Update>(predicate: (update: Update) => update is D, handler: Handler<D>): void;
234
250
  filter(predicate: (update: Update) => MaybePromise<boolean>, handler: Handler): void;
235
251
  on<T extends keyof Update, F extends keyof NonNullable<Update[T]>>(filter: T extends FilterableUpdates ? T | [T, F, ...F[]] : T, handler: Handler<FilterUpdate<Update, T, F>>): void;
252
+ setMyInfo(info: Omit<ConstructorParameters<typeof functions["BotsSetBotInfo"]>[0], "bot">): Promise<void>;
253
+ /**
254
+ * Use this method to change the bot's description, which is shown in the chat with the bot if the chat is empty.
255
+ */
256
+ setMyDescription({ description, languageCode }: {
257
+ description?: string;
258
+ languageCode?: string;
259
+ }): Promise<void>;
260
+ /**
261
+ * Use this method to change the bot's name.
262
+ */
263
+ setMyName({ name, languageCode }: {
264
+ name?: string;
265
+ languageCode?: string;
266
+ }): Promise<void>;
267
+ /**
268
+ * Use this method to change the bot's short description, which is shown on the bot's profile page and is sent together with the link when users share the bot.
269
+ */
270
+ setMyShortDescription({ shortDescription: about, languageCode }: {
271
+ shortDescription?: string;
272
+ languageCode?: string;
273
+ }): Promise<void>;
274
+ private getMyInfo;
275
+ /**
276
+ * Use this method to get the current bot description for the given user language.
277
+ */
278
+ getMyDescription(languageCode?: string): Promise<string>;
279
+ /**
280
+ * Use this method to get the current bot name for the given user language.
281
+ */
282
+ getMyName(languageCode?: string): Promise<string>;
283
+ /**
284
+ * Use this method to get the current bot short description for the given user language.
285
+ */
286
+ getMyShortDescription(languageCode?: string): Promise<string>;
236
287
  }