@mtcute/core 0.30.3 → 0.32.0

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 (313) hide show
  1. package/client.cjs +85 -0
  2. package/client.js +85 -0
  3. package/highlevel/client.d.cts +411 -116
  4. package/highlevel/client.d.ts +411 -116
  5. package/highlevel/methods/auth/sign-in-qr.cjs +2 -0
  6. package/highlevel/methods/auth/sign-in-qr.js +2 -0
  7. package/highlevel/methods/auth/sign-in-qr.test.d.cts +1 -0
  8. package/highlevel/methods/auth/sign-in-qr.test.d.ts +1 -0
  9. package/highlevel/methods/chats/build-peers-index.cjs +45 -0
  10. package/highlevel/methods/chats/build-peers-index.d.cts +13 -0
  11. package/highlevel/methods/chats/build-peers-index.d.ts +13 -0
  12. package/highlevel/methods/chats/build-peers-index.js +40 -0
  13. package/highlevel/methods/chats/join-chat.cjs +1 -1
  14. package/highlevel/methods/chats/join-chat.d.cts +2 -1
  15. package/highlevel/methods/chats/join-chat.d.ts +2 -1
  16. package/highlevel/methods/chats/join-chat.js +1 -1
  17. package/highlevel/methods/chats/transfer-chat-ownership.cjs +6 -17
  18. package/highlevel/methods/chats/transfer-chat-ownership.js +6 -17
  19. package/highlevel/methods/communities/ban-community-participant.cjs +30 -0
  20. package/highlevel/methods/communities/ban-community-participant.d.cts +20 -0
  21. package/highlevel/methods/communities/ban-community-participant.d.ts +20 -0
  22. package/highlevel/methods/communities/ban-community-participant.js +25 -0
  23. package/highlevel/methods/communities/create-community.cjs +29 -0
  24. package/highlevel/methods/communities/create-community.d.cts +22 -0
  25. package/highlevel/methods/communities/create-community.d.ts +22 -0
  26. package/highlevel/methods/communities/create-community.js +24 -0
  27. package/highlevel/methods/communities/get-community-link-requests.cjs +27 -0
  28. package/highlevel/methods/communities/get-community-link-requests.d.cts +17 -0
  29. package/highlevel/methods/communities/get-community-link-requests.d.ts +17 -0
  30. package/highlevel/methods/communities/get-community-link-requests.js +22 -0
  31. package/highlevel/methods/communities/get-community-participant-chats.cjs +24 -0
  32. package/highlevel/methods/communities/get-community-participant-chats.d.cts +17 -0
  33. package/highlevel/methods/communities/get-community-participant-chats.d.ts +17 -0
  34. package/highlevel/methods/communities/get-community-participant-chats.js +19 -0
  35. package/highlevel/methods/communities/get-joined-communities.cjs +21 -0
  36. package/highlevel/methods/communities/get-joined-communities.d.cts +6 -0
  37. package/highlevel/methods/communities/get-joined-communities.d.ts +6 -0
  38. package/highlevel/methods/communities/get-joined-communities.js +16 -0
  39. package/highlevel/methods/communities/hide-community-link-request.cjs +30 -0
  40. package/highlevel/methods/communities/hide-community-link-request.d.cts +22 -0
  41. package/highlevel/methods/communities/hide-community-link-request.d.ts +22 -0
  42. package/highlevel/methods/communities/hide-community-link-request.js +25 -0
  43. package/highlevel/methods/communities/link-community-peer.cjs +32 -0
  44. package/highlevel/methods/communities/link-community-peer.d.cts +22 -0
  45. package/highlevel/methods/communities/link-community-peer.d.ts +22 -0
  46. package/highlevel/methods/communities/link-community-peer.js +27 -0
  47. package/highlevel/methods/communities/toggle-community-collapsed.cjs +18 -0
  48. package/highlevel/methods/communities/toggle-community-collapsed.d.cts +16 -0
  49. package/highlevel/methods/communities/toggle-community-collapsed.d.ts +16 -0
  50. package/highlevel/methods/communities/toggle-community-collapsed.js +13 -0
  51. package/highlevel/methods/ephemeral/delete-all-welcome-messages.cjs +17 -0
  52. package/highlevel/methods/ephemeral/delete-all-welcome-messages.d.cts +8 -0
  53. package/highlevel/methods/ephemeral/delete-all-welcome-messages.d.ts +8 -0
  54. package/highlevel/methods/ephemeral/delete-all-welcome-messages.js +12 -0
  55. package/highlevel/methods/ephemeral/delete-ephemeral-message.cjs +20 -0
  56. package/highlevel/methods/ephemeral/delete-ephemeral-message.d.cts +13 -0
  57. package/highlevel/methods/ephemeral/delete-ephemeral-message.d.ts +13 -0
  58. package/highlevel/methods/ephemeral/delete-ephemeral-message.js +15 -0
  59. package/highlevel/methods/ephemeral/delete-welcome-message.cjs +18 -0
  60. package/highlevel/methods/ephemeral/delete-welcome-message.d.cts +9 -0
  61. package/highlevel/methods/ephemeral/delete-welcome-message.d.ts +9 -0
  62. package/highlevel/methods/ephemeral/delete-welcome-message.js +13 -0
  63. package/highlevel/methods/ephemeral/edit-ephemeral-message.cjs +41 -0
  64. package/highlevel/methods/ephemeral/edit-ephemeral-message.d.cts +39 -0
  65. package/highlevel/methods/ephemeral/edit-ephemeral-message.d.ts +39 -0
  66. package/highlevel/methods/ephemeral/edit-ephemeral-message.js +36 -0
  67. package/highlevel/methods/ephemeral/find-in-update.cjs +27 -0
  68. package/highlevel/methods/ephemeral/find-in-update.d.cts +8 -0
  69. package/highlevel/methods/ephemeral/find-in-update.d.ts +8 -0
  70. package/highlevel/methods/ephemeral/find-in-update.js +22 -0
  71. package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.cjs +31 -0
  72. package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.d.cts +29 -0
  73. package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.d.ts +29 -0
  74. package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.js +26 -0
  75. package/highlevel/methods/ephemeral/get-welcome-messages.cjs +29 -0
  76. package/highlevel/methods/ephemeral/get-welcome-messages.d.cts +8 -0
  77. package/highlevel/methods/ephemeral/get-welcome-messages.d.ts +8 -0
  78. package/highlevel/methods/ephemeral/get-welcome-messages.js +24 -0
  79. package/highlevel/methods/ephemeral/send-ephemeral-message.cjs +48 -0
  80. package/highlevel/methods/ephemeral/send-ephemeral-message.d.cts +47 -0
  81. package/highlevel/methods/ephemeral/send-ephemeral-message.d.ts +47 -0
  82. package/highlevel/methods/ephemeral/send-ephemeral-message.js +43 -0
  83. package/highlevel/methods/files/download-iterable.cjs +7 -2
  84. package/highlevel/methods/files/download-iterable.js +7 -2
  85. package/highlevel/methods/files/download-iterable.test.d.cts +1 -0
  86. package/highlevel/methods/files/download-iterable.test.d.ts +1 -0
  87. package/highlevel/methods/files/download-stream.cjs +5 -6
  88. package/highlevel/methods/files/download-stream.js +5 -6
  89. package/highlevel/methods/files/normalize-input-media.cjs +25 -4
  90. package/highlevel/methods/files/normalize-input-media.js +25 -4
  91. package/highlevel/methods/forums/create-forum-topic.d.cts +7 -0
  92. package/highlevel/methods/forums/create-forum-topic.d.ts +7 -0
  93. package/highlevel/methods/forums/delete-forum-topic-history.d.cts +1 -1
  94. package/highlevel/methods/forums/delete-forum-topic-history.d.ts +1 -1
  95. package/highlevel/methods/forums/edit-forum-topic.cjs +2 -2
  96. package/highlevel/methods/forums/edit-forum-topic.d.cts +2 -2
  97. package/highlevel/methods/forums/edit-forum-topic.d.ts +2 -2
  98. package/highlevel/methods/forums/edit-forum-topic.js +2 -2
  99. package/highlevel/methods/forums/get-forum-topics-by-id.cjs +5 -1
  100. package/highlevel/methods/forums/get-forum-topics-by-id.d.cts +9 -1
  101. package/highlevel/methods/forums/get-forum-topics-by-id.d.ts +9 -1
  102. package/highlevel/methods/forums/get-forum-topics-by-id.js +5 -1
  103. package/highlevel/methods/forums/get-forum-topics-by-id.test.d.cts +1 -0
  104. package/highlevel/methods/forums/get-forum-topics-by-id.test.d.ts +1 -0
  105. package/highlevel/methods/forums/get-forum-topics.cjs +1 -1
  106. package/highlevel/methods/forums/get-forum-topics.js +1 -1
  107. package/highlevel/methods/forums/toggle-forum-topic-closed.cjs +1 -1
  108. package/highlevel/methods/forums/toggle-forum-topic-closed.d.cts +1 -1
  109. package/highlevel/methods/forums/toggle-forum-topic-closed.d.ts +1 -1
  110. package/highlevel/methods/forums/toggle-forum-topic-closed.js +1 -1
  111. package/highlevel/methods/forums/toggle-forum-topic-pinned.d.cts +1 -1
  112. package/highlevel/methods/forums/toggle-forum-topic-pinned.d.ts +1 -1
  113. package/highlevel/methods/forums/toggle-general-topic-hidden.cjs +3 -3
  114. package/highlevel/methods/forums/toggle-general-topic-hidden.js +4 -4
  115. package/highlevel/methods/gifts/buy-resale-gift.cjs +5 -2
  116. package/highlevel/methods/gifts/buy-resale-gift.d.cts +11 -1
  117. package/highlevel/methods/gifts/buy-resale-gift.d.ts +11 -1
  118. package/highlevel/methods/gifts/buy-resale-gift.js +5 -2
  119. package/highlevel/methods/messages/forward-messages.cjs +1 -0
  120. package/highlevel/methods/messages/forward-messages.d.cts +2 -0
  121. package/highlevel/methods/messages/forward-messages.d.ts +2 -0
  122. package/highlevel/methods/messages/forward-messages.js +1 -0
  123. package/highlevel/methods/messages/normalize-rich-message.cjs +3 -0
  124. package/highlevel/methods/messages/normalize-rich-message.js +3 -0
  125. package/highlevel/methods/messages/send-common.d.cts +7 -1
  126. package/highlevel/methods/messages/send-common.d.ts +7 -1
  127. package/highlevel/methods/messages/send-text.cjs +70 -35
  128. package/highlevel/methods/messages/send-text.js +70 -35
  129. package/highlevel/methods/messages/send-typing.d.cts +3 -3
  130. package/highlevel/methods/messages/send-typing.d.ts +3 -3
  131. package/highlevel/methods/messages/set-typing.cjs +1 -1
  132. package/highlevel/methods/messages/set-typing.d.cts +2 -2
  133. package/highlevel/methods/messages/set-typing.d.ts +2 -2
  134. package/highlevel/methods/messages/set-typing.js +1 -1
  135. package/highlevel/methods/users/resolve-peer.cjs +11 -1
  136. package/highlevel/methods/users/resolve-peer.js +11 -1
  137. package/highlevel/methods.d.cts +19 -0
  138. package/highlevel/methods.d.ts +19 -0
  139. package/highlevel/storage/service/peers.cjs +25 -0
  140. package/highlevel/storage/service/peers.js +25 -0
  141. package/highlevel/storage/service/peers.test.d.cts +1 -0
  142. package/highlevel/storage/service/peers.test.d.ts +1 -0
  143. package/highlevel/types/bots/keyboards/builder.cjs +5 -5
  144. package/highlevel/types/bots/keyboards/builder.d.cts +8 -9
  145. package/highlevel/types/bots/keyboards/builder.d.ts +8 -9
  146. package/highlevel/types/bots/keyboards/builder.js +5 -5
  147. package/highlevel/types/bots/keyboards/factories.cjs +51 -103
  148. package/highlevel/types/bots/keyboards/factories.d.cts +58 -89
  149. package/highlevel/types/bots/keyboards/factories.d.ts +58 -89
  150. package/highlevel/types/bots/keyboards/factories.js +51 -103
  151. package/highlevel/types/bots/keyboards/index.d.cts +3 -3
  152. package/highlevel/types/bots/keyboards/index.d.ts +3 -3
  153. package/highlevel/types/bots/keyboards/normalize.cjs +131 -0
  154. package/highlevel/types/bots/keyboards/normalize.d.cts +10 -0
  155. package/highlevel/types/bots/keyboards/normalize.d.ts +10 -0
  156. package/highlevel/types/bots/keyboards/normalize.js +126 -0
  157. package/highlevel/types/bots/keyboards/types.d.cts +160 -4
  158. package/highlevel/types/bots/keyboards/types.d.ts +160 -4
  159. package/highlevel/types/conversation.cjs +8 -0
  160. package/highlevel/types/conversation.d.cts +1 -0
  161. package/highlevel/types/conversation.d.ts +1 -0
  162. package/highlevel/types/conversation.js +10 -2
  163. package/highlevel/types/conversation.test.d.cts +1 -0
  164. package/highlevel/types/conversation.test.d.ts +1 -0
  165. package/highlevel/types/messages/dialog.cjs +8 -1
  166. package/highlevel/types/messages/dialog.d.cts +3 -0
  167. package/highlevel/types/messages/dialog.d.ts +3 -0
  168. package/highlevel/types/messages/dialog.js +8 -1
  169. package/highlevel/types/messages/dialog.test.d.cts +1 -0
  170. package/highlevel/types/messages/dialog.test.d.ts +1 -0
  171. package/highlevel/types/messages/ephemeral-message.cjs +135 -0
  172. package/highlevel/types/messages/ephemeral-message.d.cts +75 -0
  173. package/highlevel/types/messages/ephemeral-message.d.ts +75 -0
  174. package/highlevel/types/messages/ephemeral-message.js +130 -0
  175. package/highlevel/types/messages/index.d.cts +1 -0
  176. package/highlevel/types/messages/index.d.ts +1 -0
  177. package/highlevel/types/messages/message-action.cjs +14 -1
  178. package/highlevel/types/messages/message-action.d.cts +18 -1
  179. package/highlevel/types/messages/message-action.d.ts +18 -1
  180. package/highlevel/types/messages/message-action.js +14 -1
  181. package/highlevel/types/messages/message.cjs +7 -2
  182. package/highlevel/types/messages/message.d.cts +2 -2
  183. package/highlevel/types/messages/message.d.ts +2 -2
  184. package/highlevel/types/messages/message.js +8 -3
  185. package/highlevel/types/messages/replied-message.cjs +5 -1
  186. package/highlevel/types/messages/replied-message.d.cts +5 -1
  187. package/highlevel/types/messages/replied-message.d.ts +5 -1
  188. package/highlevel/types/messages/replied-message.js +5 -1
  189. package/highlevel/types/messages/rich/inner.cjs +37 -0
  190. package/highlevel/types/messages/rich/inner.d.cts +19 -0
  191. package/highlevel/types/messages/rich/inner.d.ts +19 -0
  192. package/highlevel/types/messages/rich/inner.js +37 -0
  193. package/highlevel/types/peers/chat.cjs +23 -3
  194. package/highlevel/types/peers/chat.d.cts +8 -3
  195. package/highlevel/types/peers/chat.d.ts +8 -3
  196. package/highlevel/types/peers/chat.js +24 -4
  197. package/highlevel/types/peers/community-peer.cjs +60 -0
  198. package/highlevel/types/peers/community-peer.d.cts +37 -0
  199. package/highlevel/types/peers/community-peer.d.ts +37 -0
  200. package/highlevel/types/peers/community-peer.js +55 -0
  201. package/highlevel/types/peers/full-chat.cjs +24 -5
  202. package/highlevel/types/peers/full-chat.d.cts +7 -0
  203. package/highlevel/types/peers/full-chat.d.ts +7 -0
  204. package/highlevel/types/peers/full-chat.js +24 -5
  205. package/highlevel/types/peers/index.d.cts +1 -0
  206. package/highlevel/types/peers/index.d.ts +1 -0
  207. package/highlevel/types/peers/peer.cjs +2 -0
  208. package/highlevel/types/peers/peer.js +2 -0
  209. package/highlevel/types/peers/typing-status.d.cts +4 -1
  210. package/highlevel/types/peers/typing-status.d.ts +4 -1
  211. package/highlevel/types/peers/user.cjs +6 -0
  212. package/highlevel/types/peers/user.d.cts +2 -0
  213. package/highlevel/types/peers/user.d.ts +2 -0
  214. package/highlevel/types/peers/user.js +6 -0
  215. package/highlevel/types/updates/delete-ephemeral-messages-update.cjs +27 -0
  216. package/highlevel/types/updates/delete-ephemeral-messages-update.d.cts +15 -0
  217. package/highlevel/types/updates/delete-ephemeral-messages-update.d.ts +15 -0
  218. package/highlevel/types/updates/delete-ephemeral-messages-update.js +22 -0
  219. package/highlevel/types/updates/ephemeral-callback-query.cjs +69 -0
  220. package/highlevel/types/updates/ephemeral-callback-query.d.cts +44 -0
  221. package/highlevel/types/updates/ephemeral-callback-query.d.ts +44 -0
  222. package/highlevel/types/updates/ephemeral-callback-query.js +64 -0
  223. package/highlevel/types/updates/index.d.cts +16 -2
  224. package/highlevel/types/updates/index.d.ts +16 -2
  225. package/highlevel/types/updates/parse-update.cjs +12 -1
  226. package/highlevel/types/updates/parse-update.js +12 -1
  227. package/highlevel/types/updates/user-typing-update.cjs +18 -0
  228. package/highlevel/types/updates/user-typing-update.d.cts +9 -0
  229. package/highlevel/types/updates/user-typing-update.d.ts +9 -0
  230. package/highlevel/types/updates/user-typing-update.js +18 -0
  231. package/highlevel/updates/manager.cjs +71 -41
  232. package/highlevel/updates/manager.d.cts +1 -0
  233. package/highlevel/updates/manager.d.ts +1 -0
  234. package/highlevel/updates/manager.js +71 -41
  235. package/highlevel/updates/manager.test.d.cts +1 -0
  236. package/highlevel/updates/manager.test.d.ts +1 -0
  237. package/highlevel/utils/stream-utils.cjs +8 -4
  238. package/highlevel/utils/stream-utils.js +8 -4
  239. package/highlevel/utils/stream-utils.test.d.cts +1 -0
  240. package/highlevel/utils/stream-utils.test.d.ts +1 -0
  241. package/highlevel/utils/walk-page-blocks.cjs +9 -0
  242. package/highlevel/utils/walk-page-blocks.js +9 -0
  243. package/index.cjs +10 -0
  244. package/index.js +11 -1
  245. package/methods.cjs +33 -0
  246. package/methods.js +33 -0
  247. package/network/client.cjs +4 -3
  248. package/network/client.d.cts +1 -0
  249. package/network/client.d.ts +1 -0
  250. package/network/client.js +4 -3
  251. package/network/middlewares/flood-waiter.cjs +2 -2
  252. package/network/middlewares/flood-waiter.js +2 -2
  253. package/network/middlewares/internal-errors.cjs +1 -1
  254. package/network/middlewares/internal-errors.js +1 -1
  255. package/network/middlewares/media-throttle.cjs +1 -1
  256. package/network/middlewares/media-throttle.js +1 -1
  257. package/network/mtproto-session.cjs +9 -2
  258. package/network/mtproto-session.d.cts +3 -1
  259. package/network/mtproto-session.d.ts +3 -1
  260. package/network/mtproto-session.js +9 -2
  261. package/network/mtproxy/index.cjs +4 -3
  262. package/network/mtproxy/index.d.cts +2 -2
  263. package/network/mtproxy/index.d.ts +2 -2
  264. package/network/mtproxy/index.js +4 -3
  265. package/network/network-manager.cjs +44 -16
  266. package/network/network-manager.d.cts +10 -3
  267. package/network/network-manager.d.ts +10 -3
  268. package/network/network-manager.js +45 -17
  269. package/network/network-manager.test.d.cts +1 -0
  270. package/network/network-manager.test.d.ts +1 -0
  271. package/network/persistent-connection.cjs +10 -2
  272. package/network/persistent-connection.js +10 -2
  273. package/network/session-connection.cjs +15 -6
  274. package/network/session-connection.js +15 -6
  275. package/network/session-connection.test.d.cts +1 -0
  276. package/network/session-connection.test.d.ts +1 -0
  277. package/network/transports/abstract.cjs +16 -0
  278. package/network/transports/abstract.d.cts +8 -2
  279. package/network/transports/abstract.d.ts +8 -2
  280. package/network/transports/abstract.js +17 -1
  281. package/network/transports/obfuscated.cjs +3 -1
  282. package/network/transports/obfuscated.js +3 -1
  283. package/package.json +6 -6
  284. package/tl/api-schema.json +1 -1
  285. package/tl/binary/reader.cjs +221 -103
  286. package/tl/binary/reader.js +221 -103
  287. package/tl/binary/writer.cjs +693 -277
  288. package/tl/binary/writer.js +693 -277
  289. package/tl/compat/reader.cjs +93 -0
  290. package/tl/compat/reader.js +93 -0
  291. package/tl/index.d.cts +12529 -4762
  292. package/tl/index.d.ts +12529 -4762
  293. package/tl/inner-tl.cjs +90 -24
  294. package/tl/inner-tl.js +90 -24
  295. package/tl/raw-errors.json +1 -1
  296. package/tl/rpc-error.test.d.cts +1 -0
  297. package/tl/rpc-error.test.d.ts +1 -0
  298. package/utils/abort-signal.cjs +1 -12
  299. package/utils/abort-signal.js +1 -12
  300. package/utils/abort-signal.test.d.cts +1 -0
  301. package/utils/abort-signal.test.d.ts +1 -0
  302. package/utils/binary/compat.cjs +189 -29
  303. package/utils/binary/compat.js +189 -29
  304. package/utils/early-timer.cjs +3 -11
  305. package/utils/early-timer.js +3 -11
  306. package/utils/early-timer.test.d.cts +1 -0
  307. package/utils/early-timer.test.d.ts +1 -0
  308. package/utils/function-utils.cjs +9 -4
  309. package/utils/function-utils.js +9 -4
  310. package/utils/links/bots.cjs +10 -2
  311. package/utils/links/bots.js +10 -2
  312. package/utils/peer-utils.cjs +8 -0
  313. package/utils/peer-utils.js +8 -0
@@ -0,0 +1,36 @@
1
+ import { MtArgumentError } from "../../../types/errors.js";
2
+ import { _normalizeInputMedia } from "../files/normalize-input-media.js";
3
+ import { _normalizeInputRichMessage } from "../messages/normalize-rich-message.js";
4
+ import { _normalizeInputText } from "../misc/normalize-text.js";
5
+ import { resolvePeer, resolveUser } from "../users/resolve-peer.js";
6
+ import { _findEphemeralMessageInUpdate } from "./find-in-update.js";
7
+ import { _convertToTl } from "../../types/bots/keyboards/factories.js";
8
+ async function editEphemeralMessage(client, params) {
9
+ const { chatId, receiverId, messageId, text, media, richMessage, replyMarkup, shouldDispatch, uploadCache } = params;
10
+ let message;
11
+ let entities;
12
+ if (text !== void 0) {
13
+ [message, entities] = await _normalizeInputText(client, text);
14
+ }
15
+ const peer = chatId !== null ? await resolvePeer(client, chatId) : void 0;
16
+ if (richMessage && !peer) {
17
+ throw new MtArgumentError("richMessage requires chatId to be passed");
18
+ }
19
+ const res = await client.call({
20
+ _: "ephemeral.editMessage",
21
+ peer,
22
+ receiverId: await resolveUser(client, receiverId),
23
+ id: messageId,
24
+ message,
25
+ entities,
26
+ media: media ? await _normalizeInputMedia(client, media, { uploadPeer: peer }) : void 0,
27
+ richMessage: richMessage ? await _normalizeInputRichMessage(client, peer, richMessage, { uploadCache }) : void 0,
28
+ replyMarkup: _convertToTl(replyMarkup),
29
+ welcome: params.welcome,
30
+ invertMedia: params.invertMedia
31
+ });
32
+ return _findEphemeralMessageInUpdate(client, res, true, !shouldDispatch);
33
+ }
34
+ export {
35
+ editEphemeralMessage
36
+ };
@@ -0,0 +1,27 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const errors = require("../../../types/errors.cjs");
9
+ const utils = require("../../updates/utils.cjs");
10
+ const ephemeralMessage = require("../../types/messages/ephemeral-message.cjs");
11
+ const peersIndex = require("../../types/peers/peers-index.cjs");
12
+ function _findEphemeralMessageInUpdate(client, res, isEdit = false, noDispatch = true) {
13
+ utils.assertIsUpdatesGroup("_findEphemeralMessageInUpdate", res);
14
+ client.handleClientUpdate(res, noDispatch);
15
+ for (const u of res.updates) {
16
+ if (u._ !== "updateNewEphemeralMessage" && u._ !== "updateEditEphemeralMessage") continue;
17
+ if (isEdit !== (u._ === "updateEditEphemeralMessage")) continue;
18
+ const peers = peersIndex.PeersIndex.from(res);
19
+ return new ephemeralMessage.EphemeralMessage(u.message, peers);
20
+ }
21
+ throw new errors.MtTypeAssertionError(
22
+ "_findEphemeralMessageInUpdate (@ .updates[*])",
23
+ "updateNewEphemeralMessage | updateEditEphemeralMessage",
24
+ "none"
25
+ );
26
+ }
27
+ exports._findEphemeralMessageInUpdate = _findEphemeralMessageInUpdate;
@@ -0,0 +1,8 @@
1
+ import { tl } from '../../../tl/index.js';
2
+ import { ITelegramClient } from '../../client.types.js';
3
+ import { EphemeralMessage } from '../../types/index.js';
4
+ /**
5
+ * @internal
6
+ * @noemit
7
+ */
8
+ export declare function _findEphemeralMessageInUpdate(client: ITelegramClient, res: tl.TypeUpdates, isEdit?: boolean, noDispatch?: boolean): EphemeralMessage;
@@ -0,0 +1,8 @@
1
+ import { tl } from '../../../tl/index.js';
2
+ import { ITelegramClient } from '../../client.types.js';
3
+ import { EphemeralMessage } from '../../types/index.js';
4
+ /**
5
+ * @internal
6
+ * @noemit
7
+ */
8
+ export declare function _findEphemeralMessageInUpdate(client: ITelegramClient, res: tl.TypeUpdates, isEdit?: boolean, noDispatch?: boolean): EphemeralMessage;
@@ -0,0 +1,22 @@
1
+ import { MtTypeAssertionError } from "../../../types/errors.js";
2
+ import { assertIsUpdatesGroup } from "../../updates/utils.js";
3
+ import { EphemeralMessage as EphemeralMessage$2 } from "../../types/messages/ephemeral-message.js";
4
+ import { PeersIndex } from "../../types/peers/peers-index.js";
5
+ function _findEphemeralMessageInUpdate(client, res, isEdit = false, noDispatch = true) {
6
+ assertIsUpdatesGroup("_findEphemeralMessageInUpdate", res);
7
+ client.handleClientUpdate(res, noDispatch);
8
+ for (const u of res.updates) {
9
+ if (u._ !== "updateNewEphemeralMessage" && u._ !== "updateEditEphemeralMessage") continue;
10
+ if (isEdit !== (u._ === "updateEditEphemeralMessage")) continue;
11
+ const peers = PeersIndex.from(res);
12
+ return new EphemeralMessage$2(u.message, peers);
13
+ }
14
+ throw new MtTypeAssertionError(
15
+ "_findEphemeralMessageInUpdate (@ .updates[*])",
16
+ "updateNewEphemeralMessage | updateEditEphemeralMessage",
17
+ "none"
18
+ );
19
+ }
20
+ export {
21
+ _findEphemeralMessageInUpdate
22
+ };
@@ -0,0 +1,31 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const utils = require("@fuman/utils");
9
+ const resolvePeer = require("../users/resolve-peer.cjs");
10
+ async function getEphemeralCallbackAnswer(client, params) {
11
+ const { chatId, messageId, data, timeout = 1e4, fireAndForget } = params;
12
+ const promise = client.call(
13
+ {
14
+ _: "ephemeral.getCallbackAnswer",
15
+ peer: await resolvePeer.resolvePeer(client, chatId),
16
+ id: messageId,
17
+ data: typeof data === "string" ? utils.utf8.encoder.encode(data) : data
18
+ },
19
+ { timeout, throw503: true }
20
+ );
21
+ if (fireAndForget) {
22
+ promise.catch(() => {
23
+ });
24
+ return {
25
+ _: "messages.botCallbackAnswer",
26
+ cacheTime: 0
27
+ };
28
+ }
29
+ return promise;
30
+ }
31
+ exports.getEphemeralCallbackAnswer = getEphemeralCallbackAnswer;
@@ -0,0 +1,29 @@
1
+ import { tl } from '../../../tl/index.js';
2
+ import { ITelegramClient } from '../../client.types.js';
3
+ import { InputPeerLike } from '../../types/index.js';
4
+ /**
5
+ * Request a callback answer from a bot for an ephemeral message,
6
+ * i.e. click an inline button that contains data.
7
+ */
8
+ export declare function getEphemeralCallbackAnswer(client: ITelegramClient, params: {
9
+ /** Chat where the ephemeral message was sent */
10
+ chatId: InputPeerLike;
11
+ /** ID of the ephemeral message containing the button */
12
+ messageId: number;
13
+ /** Data contained in the button */
14
+ data?: string | Uint8Array;
15
+ /**
16
+ * Timeout for the query in ms.
17
+ *
18
+ * @default `10000` (10 sec)
19
+ */
20
+ timeout?: number;
21
+ /**
22
+ * Whether to "fire and forget" this request,
23
+ * in which case the promise will resolve as soon
24
+ * as the request is sent with an empty response.
25
+ *
26
+ * **Note**: any errors will be silently ignored.
27
+ */
28
+ fireAndForget?: boolean;
29
+ }): Promise<tl.messages.TypeBotCallbackAnswer>;
@@ -0,0 +1,29 @@
1
+ import { tl } from '../../../tl/index.js';
2
+ import { ITelegramClient } from '../../client.types.js';
3
+ import { InputPeerLike } from '../../types/index.js';
4
+ /**
5
+ * Request a callback answer from a bot for an ephemeral message,
6
+ * i.e. click an inline button that contains data.
7
+ */
8
+ export declare function getEphemeralCallbackAnswer(client: ITelegramClient, params: {
9
+ /** Chat where the ephemeral message was sent */
10
+ chatId: InputPeerLike;
11
+ /** ID of the ephemeral message containing the button */
12
+ messageId: number;
13
+ /** Data contained in the button */
14
+ data?: string | Uint8Array;
15
+ /**
16
+ * Timeout for the query in ms.
17
+ *
18
+ * @default `10000` (10 sec)
19
+ */
20
+ timeout?: number;
21
+ /**
22
+ * Whether to "fire and forget" this request,
23
+ * in which case the promise will resolve as soon
24
+ * as the request is sent with an empty response.
25
+ *
26
+ * **Note**: any errors will be silently ignored.
27
+ */
28
+ fireAndForget?: boolean;
29
+ }): Promise<tl.messages.TypeBotCallbackAnswer>;
@@ -0,0 +1,26 @@
1
+ import { utf8 } from "@fuman/utils";
2
+ import { resolvePeer } from "../users/resolve-peer.js";
3
+ async function getEphemeralCallbackAnswer(client, params) {
4
+ const { chatId, messageId, data, timeout = 1e4, fireAndForget } = params;
5
+ const promise = client.call(
6
+ {
7
+ _: "ephemeral.getCallbackAnswer",
8
+ peer: await resolvePeer(client, chatId),
9
+ id: messageId,
10
+ data: typeof data === "string" ? utf8.encoder.encode(data) : data
11
+ },
12
+ { timeout, throw503: true }
13
+ );
14
+ if (fireAndForget) {
15
+ promise.catch(() => {
16
+ });
17
+ return {
18
+ _: "messages.botCallbackAnswer",
19
+ cacheTime: 0
20
+ };
21
+ }
22
+ return promise;
23
+ }
24
+ export {
25
+ getEphemeralCallbackAnswer
26
+ };
@@ -0,0 +1,29 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const Long = require("long");
9
+ const typeAssertions = require("../../../utils/type-assertions.cjs");
10
+ const buildPeersIndex = require("../chats/build-peers-index.cjs");
11
+ const resolvePeer = require("../users/resolve-peer.cjs");
12
+ const ephemeralMessage = require("../../types/messages/ephemeral-message.cjs");
13
+ async function getWelcomeMessages(client, chatId) {
14
+ const peer = await resolvePeer.resolvePeer(client, chatId);
15
+ const res = await client.call({
16
+ _: "ephemeral.getWelcomeMessages",
17
+ peer,
18
+ hash: Long.ZERO
19
+ });
20
+ typeAssertions.assertTypeIsNot("getWelcomeMessages", res, "ephemeral.welcomeMessagesNotModified");
21
+ const peersToFetch = [peer];
22
+ for (const msg of res.messages) {
23
+ peersToFetch.push(msg.fromId);
24
+ if (msg.peerId) peersToFetch.push(msg.peerId);
25
+ }
26
+ const peers = await buildPeersIndex._buildPeersIndex(client, "getWelcomeMessages", peersToFetch);
27
+ return res.messages.map((it) => new ephemeralMessage.EphemeralMessage(it, peers));
28
+ }
29
+ exports.getWelcomeMessages = getWelcomeMessages;
@@ -0,0 +1,8 @@
1
+ import { ITelegramClient } from '../../client.types.js';
2
+ import { InputPeerLike, EphemeralMessage } from '../../types/index.js';
3
+ /**
4
+ * Get the welcome messages configured for a chat
5
+ *
6
+ * @param chatId Chat to get the welcome messages for
7
+ */
8
+ export declare function getWelcomeMessages(client: ITelegramClient, chatId: InputPeerLike): Promise<EphemeralMessage[]>;
@@ -0,0 +1,8 @@
1
+ import { ITelegramClient } from '../../client.types.js';
2
+ import { InputPeerLike, EphemeralMessage } from '../../types/index.js';
3
+ /**
4
+ * Get the welcome messages configured for a chat
5
+ *
6
+ * @param chatId Chat to get the welcome messages for
7
+ */
8
+ export declare function getWelcomeMessages(client: ITelegramClient, chatId: InputPeerLike): Promise<EphemeralMessage[]>;
@@ -0,0 +1,24 @@
1
+ import Long from "long";
2
+ import { assertTypeIsNot } from "../../../utils/type-assertions.js";
3
+ import { _buildPeersIndex } from "../chats/build-peers-index.js";
4
+ import { resolvePeer } from "../users/resolve-peer.js";
5
+ import { EphemeralMessage as EphemeralMessage$2 } from "../../types/messages/ephemeral-message.js";
6
+ async function getWelcomeMessages(client, chatId) {
7
+ const peer = await resolvePeer(client, chatId);
8
+ const res = await client.call({
9
+ _: "ephemeral.getWelcomeMessages",
10
+ peer,
11
+ hash: Long.ZERO
12
+ });
13
+ assertTypeIsNot("getWelcomeMessages", res, "ephemeral.welcomeMessagesNotModified");
14
+ const peersToFetch = [peer];
15
+ for (const msg of res.messages) {
16
+ peersToFetch.push(msg.fromId);
17
+ if (msg.peerId) peersToFetch.push(msg.peerId);
18
+ }
19
+ const peers = await _buildPeersIndex(client, "getWelcomeMessages", peersToFetch);
20
+ return res.messages.map((it) => new EphemeralMessage$2(it, peers));
21
+ }
22
+ export {
23
+ getWelcomeMessages
24
+ };
@@ -0,0 +1,48 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const errors = require("../../../types/errors.cjs");
9
+ const longUtils = require("../../../utils/long-utils.cjs");
10
+ const normalizeInputMedia = require("../files/normalize-input-media.cjs");
11
+ const normalizeRichMessage = require("../messages/normalize-rich-message.cjs");
12
+ const normalizeText = require("../misc/normalize-text.cjs");
13
+ const resolvePeer = require("../users/resolve-peer.cjs");
14
+ const findInUpdate = require("./find-in-update.cjs");
15
+ const factories = require("../../types/bots/keyboards/factories.cjs");
16
+ async function sendEphemeralMessage(client, chatId, receiverId, text, params) {
17
+ const { media, richMessage, replyTo, replyToEphemeral, queryId, shouldDispatch, uploadCache } = params ?? {};
18
+ const [message, entities] = await normalizeText._normalizeInputText(client, text);
19
+ const peer = chatId !== null ? await resolvePeer.resolvePeer(client, chatId) : void 0;
20
+ if (richMessage && !peer) {
21
+ throw new errors.MtArgumentError("richMessage requires chatId to be passed");
22
+ }
23
+ let replyToTl;
24
+ if (replyTo !== void 0) {
25
+ replyToTl = { _: "inputReplyToMessage", replyToMsgId: replyTo };
26
+ } else if (replyToEphemeral !== void 0) {
27
+ replyToTl = { _: "inputReplyToEphemeralMessage", id: replyToEphemeral };
28
+ }
29
+ const res = await client.call({
30
+ _: "ephemeral.sendMessage",
31
+ peer,
32
+ receiverId: await resolvePeer.resolveUser(client, receiverId),
33
+ queryId,
34
+ message,
35
+ entities,
36
+ media: media ? await normalizeInputMedia._normalizeInputMedia(client, media, { uploadPeer: peer }) : void 0,
37
+ richMessage: richMessage ? await normalizeRichMessage._normalizeInputRichMessage(client, peer, richMessage, { uploadCache }) : void 0,
38
+ replyMarkup: factories._convertToTl(params?.replyMarkup),
39
+ randomId: longUtils.randomLong(),
40
+ replyTo: replyToTl,
41
+ welcome: params?.welcome,
42
+ anchor: params?.anchor,
43
+ invertMedia: params?.invertMedia,
44
+ noforwards: params?.forbidForwards
45
+ });
46
+ return findInUpdate._findEphemeralMessageInUpdate(client, res, false, !shouldDispatch);
47
+ }
48
+ exports.sendEphemeralMessage = sendEphemeralMessage;
@@ -0,0 +1,47 @@
1
+ import { tl } from '../../../tl/index.js';
2
+ import { ITelegramClient } from '../../client.types.js';
3
+ import { ReplyMarkup } from '../../types/bots/keyboards/index.js';
4
+ import { EphemeralMessage, InputMediaLike, InputPeerLike, InputText } from '../../types/index.js';
5
+ import { InputRichMessage, RichMediaUploadCache } from '../../types/messages/rich/types.js';
6
+ /**
7
+ * Send an ephemeral message — a message that is only visible
8
+ * to a single user in a chat and is not persisted in the chat history.
9
+ *
10
+ * @param chatId ID of the chat to send the message to (`null` for guest chats, where `queryId` is used instead)
11
+ * @param receiverId ID of the user the message should be visible to
12
+ * @param text Text of the message
13
+ */
14
+ export declare function sendEphemeralMessage(client: ITelegramClient, chatId: InputPeerLike | null, receiverId: InputPeerLike, text: InputText, params?: {
15
+ /** Media to be attached to the message */
16
+ media?: InputMediaLike;
17
+ /** Rich message content to be sent instead of the plain text */
18
+ richMessage?: InputRichMessage;
19
+ /** Message to reply to */
20
+ replyTo?: number;
21
+ /** Ephemeral message to reply to */
22
+ replyToEphemeral?: number;
23
+ /** Reply markup to be attached to the message */
24
+ replyMarkup?: ReplyMarkup;
25
+ /** For guest chat bots, ID of the query that this message is sent in response to */
26
+ queryId?: tl.Long;
27
+ /** Whether to send this message as a welcome message template for the chat */
28
+ welcome?: boolean;
29
+ /** Whether to anchor this message to the message it replies to */
30
+ anchor?: boolean;
31
+ /**
32
+ * Whether to invert the media position.
33
+ *
34
+ * Currently only supported for web previews and makes the
35
+ * client render the preview above the caption and not below.
36
+ */
37
+ invertMedia?: boolean;
38
+ /** Whether to forbid forwarding this message */
39
+ forbidForwards?: boolean;
40
+ /** Cache for the uploaded rich message media, see {@link createRichStreamingDraft} */
41
+ uploadCache?: RichMediaUploadCache;
42
+ /**
43
+ * Whether to dispatch the returned updates
44
+ * to the client's update handler.
45
+ */
46
+ shouldDispatch?: true;
47
+ }): Promise<EphemeralMessage>;
@@ -0,0 +1,47 @@
1
+ import { tl } from '../../../tl/index.js';
2
+ import { ITelegramClient } from '../../client.types.js';
3
+ import { ReplyMarkup } from '../../types/bots/keyboards/index.js';
4
+ import { EphemeralMessage, InputMediaLike, InputPeerLike, InputText } from '../../types/index.js';
5
+ import { InputRichMessage, RichMediaUploadCache } from '../../types/messages/rich/types.js';
6
+ /**
7
+ * Send an ephemeral message — a message that is only visible
8
+ * to a single user in a chat and is not persisted in the chat history.
9
+ *
10
+ * @param chatId ID of the chat to send the message to (`null` for guest chats, where `queryId` is used instead)
11
+ * @param receiverId ID of the user the message should be visible to
12
+ * @param text Text of the message
13
+ */
14
+ export declare function sendEphemeralMessage(client: ITelegramClient, chatId: InputPeerLike | null, receiverId: InputPeerLike, text: InputText, params?: {
15
+ /** Media to be attached to the message */
16
+ media?: InputMediaLike;
17
+ /** Rich message content to be sent instead of the plain text */
18
+ richMessage?: InputRichMessage;
19
+ /** Message to reply to */
20
+ replyTo?: number;
21
+ /** Ephemeral message to reply to */
22
+ replyToEphemeral?: number;
23
+ /** Reply markup to be attached to the message */
24
+ replyMarkup?: ReplyMarkup;
25
+ /** For guest chat bots, ID of the query that this message is sent in response to */
26
+ queryId?: tl.Long;
27
+ /** Whether to send this message as a welcome message template for the chat */
28
+ welcome?: boolean;
29
+ /** Whether to anchor this message to the message it replies to */
30
+ anchor?: boolean;
31
+ /**
32
+ * Whether to invert the media position.
33
+ *
34
+ * Currently only supported for web previews and makes the
35
+ * client render the preview above the caption and not below.
36
+ */
37
+ invertMedia?: boolean;
38
+ /** Whether to forbid forwarding this message */
39
+ forbidForwards?: boolean;
40
+ /** Cache for the uploaded rich message media, see {@link createRichStreamingDraft} */
41
+ uploadCache?: RichMediaUploadCache;
42
+ /**
43
+ * Whether to dispatch the returned updates
44
+ * to the client's update handler.
45
+ */
46
+ shouldDispatch?: true;
47
+ }): Promise<EphemeralMessage>;
@@ -0,0 +1,43 @@
1
+ import { MtArgumentError } from "../../../types/errors.js";
2
+ import { randomLong } from "../../../utils/long-utils.js";
3
+ import { _normalizeInputMedia } from "../files/normalize-input-media.js";
4
+ import { _normalizeInputRichMessage } from "../messages/normalize-rich-message.js";
5
+ import { _normalizeInputText } from "../misc/normalize-text.js";
6
+ import { resolvePeer, resolveUser } from "../users/resolve-peer.js";
7
+ import { _findEphemeralMessageInUpdate } from "./find-in-update.js";
8
+ import { _convertToTl } from "../../types/bots/keyboards/factories.js";
9
+ async function sendEphemeralMessage(client, chatId, receiverId, text, params) {
10
+ const { media, richMessage, replyTo, replyToEphemeral, queryId, shouldDispatch, uploadCache } = params ?? {};
11
+ const [message, entities] = await _normalizeInputText(client, text);
12
+ const peer = chatId !== null ? await resolvePeer(client, chatId) : void 0;
13
+ if (richMessage && !peer) {
14
+ throw new MtArgumentError("richMessage requires chatId to be passed");
15
+ }
16
+ let replyToTl;
17
+ if (replyTo !== void 0) {
18
+ replyToTl = { _: "inputReplyToMessage", replyToMsgId: replyTo };
19
+ } else if (replyToEphemeral !== void 0) {
20
+ replyToTl = { _: "inputReplyToEphemeralMessage", id: replyToEphemeral };
21
+ }
22
+ const res = await client.call({
23
+ _: "ephemeral.sendMessage",
24
+ peer,
25
+ receiverId: await resolveUser(client, receiverId),
26
+ queryId,
27
+ message,
28
+ entities,
29
+ media: media ? await _normalizeInputMedia(client, media, { uploadPeer: peer }) : void 0,
30
+ richMessage: richMessage ? await _normalizeInputRichMessage(client, peer, richMessage, { uploadCache }) : void 0,
31
+ replyMarkup: _convertToTl(params?.replyMarkup),
32
+ randomId: randomLong(),
33
+ replyTo: replyToTl,
34
+ welcome: params?.welcome,
35
+ anchor: params?.anchor,
36
+ invertMedia: params?.invertMedia,
37
+ noforwards: params?.forbidForwards
38
+ });
39
+ return _findEphemeralMessageInUpdate(client, res, false, !shouldDispatch);
40
+ }
41
+ export {
42
+ sendEphemeralMessage
43
+ };
@@ -230,12 +230,13 @@ async function* downloadAsIterable(client, input, params) {
230
230
  }).then(() => {
231
231
  client.log.debug("download workers finished");
232
232
  });
233
- abortSignal$1?.addEventListener("abort", () => {
233
+ const onAbort = () => {
234
234
  client.log.debug("download aborted");
235
235
  error = abortSignal$1.reason;
236
236
  ended = true;
237
237
  nextChunkCv.notify();
238
- });
238
+ };
239
+ abortSignal$1?.addEventListener("abort", onAbort);
239
240
  let position = offset;
240
241
  try {
241
242
  while (position < limitBytes) {
@@ -255,6 +256,10 @@ async function* downloadAsIterable(client, input, params) {
255
256
  }
256
257
  } finally {
257
258
  if (stallTimer) utils.timers.clearTimeout(stallTimer);
259
+ abortSignal$1?.removeEventListener("abort", onAbort);
260
+ ended = true;
261
+ for (const idx in buffer) delete buffer[Number(idx)];
262
+ nextChunkCv.notify();
258
263
  }
259
264
  }
260
265
  exports._normalizeFileDownloadLocation = _normalizeFileDownloadLocation;
@@ -223,12 +223,13 @@ async function* downloadAsIterable(client, input, params) {
223
223
  }).then(() => {
224
224
  client.log.debug("download workers finished");
225
225
  });
226
- abortSignal?.addEventListener("abort", () => {
226
+ const onAbort = () => {
227
227
  client.log.debug("download aborted");
228
228
  error = abortSignal.reason;
229
229
  ended = true;
230
230
  nextChunkCv.notify();
231
- });
231
+ };
232
+ abortSignal?.addEventListener("abort", onAbort);
232
233
  let position = offset;
233
234
  try {
234
235
  while (position < limitBytes) {
@@ -248,6 +249,10 @@ async function* downloadAsIterable(client, input, params) {
248
249
  }
249
250
  } finally {
250
251
  if (stallTimer) timers.clearTimeout(stallTimer);
252
+ abortSignal?.removeEventListener("abort", onAbort);
253
+ ended = true;
254
+ for (const idx in buffer) delete buffer[Number(idx)];
255
+ nextChunkCv.notify();
251
256
  }
252
257
  }
253
258
  export {
@@ -19,11 +19,9 @@ function downloadAsStream(client, location, params) {
19
19
  });
20
20
  }
21
21
  const cancel = new AbortController();
22
- if (params?.abortSignal) {
23
- params?.abortSignal.addEventListener("abort", () => {
24
- cancel.abort();
25
- });
26
- }
22
+ const onAbort = () => cancel.abort();
23
+ params?.abortSignal?.addEventListener("abort", onAbort);
24
+ const removeAbortListener = () => params?.abortSignal?.removeEventListener("abort", onAbort);
27
25
  const backpressureCv = new utils.ConditionVariable();
28
26
  return new ReadableStream({
29
27
  start(controller) {
@@ -38,13 +36,14 @@ function downloadAsStream(client, location, params) {
38
36
  controller.enqueue(chunk);
39
37
  }
40
38
  controller.close();
41
- })().catch((e) => controller.error(e));
39
+ })().catch((e) => controller.error(e)).finally(removeAbortListener);
42
40
  },
43
41
  pull() {
44
42
  backpressureCv.notify();
45
43
  },
46
44
  cancel() {
47
45
  cancel.abort();
46
+ removeAbortListener();
48
47
  }
49
48
  }, {
50
49
  highWaterMark: params?.highWaterMark,
@@ -12,11 +12,9 @@ function downloadAsStream(client, location, params) {
12
12
  });
13
13
  }
14
14
  const cancel = new AbortController();
15
- if (params?.abortSignal) {
16
- params?.abortSignal.addEventListener("abort", () => {
17
- cancel.abort();
18
- });
19
- }
15
+ const onAbort = () => cancel.abort();
16
+ params?.abortSignal?.addEventListener("abort", onAbort);
17
+ const removeAbortListener = () => params?.abortSignal?.removeEventListener("abort", onAbort);
20
18
  const backpressureCv = new ConditionVariable();
21
19
  return new ReadableStream({
22
20
  start(controller) {
@@ -31,13 +29,14 @@ function downloadAsStream(client, location, params) {
31
29
  controller.enqueue(chunk);
32
30
  }
33
31
  controller.close();
34
- })().catch((e) => controller.error(e));
32
+ })().catch((e) => controller.error(e)).finally(removeAbortListener);
35
33
  },
36
34
  pull() {
37
35
  backpressureCv.notify();
38
36
  },
39
37
  cancel() {
40
38
  cancel.abort();
39
+ removeAbortListener();
41
40
  }
42
41
  }, {
43
42
  highWaterMark: params?.highWaterMark,