@mtcute/core 0.13.2 → 0.14.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 (151) hide show
  1. package/cjs/highlevel/base.d.ts +1 -0
  2. package/cjs/highlevel/base.js +3 -0
  3. package/cjs/highlevel/base.js.map +1 -1
  4. package/cjs/highlevel/client.d.ts +17 -5
  5. package/cjs/highlevel/client.js +3 -0
  6. package/cjs/highlevel/client.js.map +1 -1
  7. package/cjs/highlevel/client.types.d.ts +1 -0
  8. package/cjs/highlevel/client.types.js.map +1 -1
  9. package/cjs/highlevel/methods/_init.js +3 -0
  10. package/cjs/highlevel/methods/_init.js.map +1 -1
  11. package/cjs/highlevel/methods/auth/log-out.d.ts +8 -1
  12. package/cjs/highlevel/methods/auth/log-out.js +4 -2
  13. package/cjs/highlevel/methods/auth/log-out.js.map +1 -1
  14. package/cjs/highlevel/methods/auth/send-code.d.ts +5 -0
  15. package/cjs/highlevel/methods/auth/send-code.js +5 -1
  16. package/cjs/highlevel/methods/auth/send-code.js.map +1 -1
  17. package/cjs/highlevel/methods/auth/start.d.ts +5 -0
  18. package/cjs/highlevel/methods/auth/start.js +81 -53
  19. package/cjs/highlevel/methods/auth/start.js.map +1 -1
  20. package/cjs/highlevel/methods/chats/delete-history.d.ts +2 -4
  21. package/cjs/highlevel/methods/chats/delete-history.js.map +1 -1
  22. package/cjs/highlevel/methods/chats/kick-chat-member.js +1 -1
  23. package/cjs/highlevel/methods/chats/kick-chat-member.js.map +1 -1
  24. package/cjs/highlevel/methods/chats/open-chat.d.ts +4 -3
  25. package/cjs/highlevel/methods/chats/open-chat.js +4 -3
  26. package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
  27. package/cjs/highlevel/methods/messages/find-in-update.js +4 -2
  28. package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
  29. package/cjs/highlevel/methods.d.ts +1 -0
  30. package/cjs/highlevel/methods.js.map +1 -1
  31. package/cjs/highlevel/types/stories/interactive/index.d.ts +3 -2
  32. package/cjs/highlevel/types/stories/interactive/index.js +5 -1
  33. package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
  34. package/cjs/highlevel/types/stories/interactive/input.d.ts +1 -0
  35. package/cjs/highlevel/types/stories/interactive/input.js +7 -0
  36. package/cjs/highlevel/types/stories/interactive/input.js.map +1 -1
  37. package/cjs/highlevel/types/stories/interactive/url.d.ts +11 -0
  38. package/cjs/highlevel/types/stories/interactive/url.js +20 -0
  39. package/cjs/highlevel/types/stories/interactive/url.js.map +1 -0
  40. package/cjs/highlevel/types/updates/callback-query.d.ts +16 -2
  41. package/cjs/highlevel/types/updates/callback-query.js +31 -1
  42. package/cjs/highlevel/types/updates/callback-query.js.map +1 -1
  43. package/cjs/highlevel/types/updates/index.d.ts +5 -2
  44. package/cjs/highlevel/types/updates/index.js +2 -1
  45. package/cjs/highlevel/types/updates/index.js.map +1 -1
  46. package/cjs/highlevel/types/updates/parse-update.js +2 -0
  47. package/cjs/highlevel/types/updates/parse-update.js.map +1 -1
  48. package/cjs/highlevel/updates/manager.d.ts +1 -0
  49. package/cjs/highlevel/updates/manager.js +38 -10
  50. package/cjs/highlevel/updates/manager.js.map +1 -1
  51. package/cjs/highlevel/updates/types.d.ts +36 -1
  52. package/cjs/highlevel/updates/types.js.map +1 -1
  53. package/cjs/highlevel/worker/port.d.ts +2 -0
  54. package/cjs/highlevel/worker/port.js +5 -0
  55. package/cjs/highlevel/worker/port.js.map +1 -1
  56. package/cjs/highlevel/worker/protocol.d.ts +2 -0
  57. package/cjs/highlevel/worker/protocol.js.map +1 -1
  58. package/cjs/highlevel/worker/worker.js +1 -0
  59. package/cjs/highlevel/worker/worker.js.map +1 -1
  60. package/cjs/network/client.d.ts +2 -0
  61. package/cjs/network/client.js +9 -1
  62. package/cjs/network/client.js.map +1 -1
  63. package/cjs/network/mtproto-session.js +2 -0
  64. package/cjs/network/mtproto-session.js.map +1 -1
  65. package/cjs/network/network-manager.d.ts +9 -2
  66. package/cjs/network/network-manager.js +27 -13
  67. package/cjs/network/network-manager.js.map +1 -1
  68. package/cjs/network/session-connection.js +12 -3
  69. package/cjs/network/session-connection.js.map +1 -1
  70. package/cjs/storage/sqlite/repository/peers.d.ts +2 -0
  71. package/cjs/storage/sqlite/repository/peers.js +14 -0
  72. package/cjs/storage/sqlite/repository/peers.js.map +1 -1
  73. package/cjs/utils/misc-utils.d.ts +1 -0
  74. package/cjs/utils/misc-utils.js +17 -1
  75. package/cjs/utils/misc-utils.js.map +1 -1
  76. package/esm/highlevel/base.d.ts +1 -0
  77. package/esm/highlevel/base.js +3 -0
  78. package/esm/highlevel/base.js.map +1 -1
  79. package/esm/highlevel/client.d.ts +17 -5
  80. package/esm/highlevel/client.js +3 -0
  81. package/esm/highlevel/client.js.map +1 -1
  82. package/esm/highlevel/client.types.d.ts +1 -0
  83. package/esm/highlevel/client.types.js.map +1 -1
  84. package/esm/highlevel/methods/_init.js +3 -0
  85. package/esm/highlevel/methods/_init.js.map +1 -1
  86. package/esm/highlevel/methods/auth/log-out.d.ts +8 -1
  87. package/esm/highlevel/methods/auth/log-out.js +4 -2
  88. package/esm/highlevel/methods/auth/log-out.js.map +1 -1
  89. package/esm/highlevel/methods/auth/send-code.d.ts +5 -0
  90. package/esm/highlevel/methods/auth/send-code.js +5 -1
  91. package/esm/highlevel/methods/auth/send-code.js.map +1 -1
  92. package/esm/highlevel/methods/auth/start.d.ts +5 -0
  93. package/esm/highlevel/methods/auth/start.js +82 -54
  94. package/esm/highlevel/methods/auth/start.js.map +1 -1
  95. package/esm/highlevel/methods/chats/delete-history.d.ts +2 -4
  96. package/esm/highlevel/methods/chats/delete-history.js.map +1 -1
  97. package/esm/highlevel/methods/chats/kick-chat-member.js +2 -2
  98. package/esm/highlevel/methods/chats/kick-chat-member.js.map +1 -1
  99. package/esm/highlevel/methods/chats/open-chat.d.ts +4 -3
  100. package/esm/highlevel/methods/chats/open-chat.js +4 -3
  101. package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
  102. package/esm/highlevel/methods/messages/find-in-update.js +4 -2
  103. package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
  104. package/esm/highlevel/methods.d.ts +1 -0
  105. package/esm/highlevel/methods.js.map +1 -1
  106. package/esm/highlevel/types/stories/interactive/index.d.ts +3 -2
  107. package/esm/highlevel/types/stories/interactive/index.js +4 -1
  108. package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
  109. package/esm/highlevel/types/stories/interactive/input.d.ts +1 -0
  110. package/esm/highlevel/types/stories/interactive/input.js +7 -0
  111. package/esm/highlevel/types/stories/interactive/input.js.map +1 -1
  112. package/esm/highlevel/types/stories/interactive/url.d.ts +11 -0
  113. package/esm/highlevel/types/stories/interactive/url.js +16 -0
  114. package/esm/highlevel/types/stories/interactive/url.js.map +1 -0
  115. package/esm/highlevel/types/updates/callback-query.d.ts +16 -2
  116. package/esm/highlevel/types/updates/callback-query.js +30 -0
  117. package/esm/highlevel/types/updates/callback-query.js.map +1 -1
  118. package/esm/highlevel/types/updates/index.d.ts +5 -2
  119. package/esm/highlevel/types/updates/index.js +2 -2
  120. package/esm/highlevel/types/updates/index.js.map +1 -1
  121. package/esm/highlevel/types/updates/parse-update.js +3 -1
  122. package/esm/highlevel/types/updates/parse-update.js.map +1 -1
  123. package/esm/highlevel/updates/manager.d.ts +1 -0
  124. package/esm/highlevel/updates/manager.js +38 -10
  125. package/esm/highlevel/updates/manager.js.map +1 -1
  126. package/esm/highlevel/updates/types.d.ts +36 -1
  127. package/esm/highlevel/updates/types.js.map +1 -1
  128. package/esm/highlevel/worker/port.d.ts +2 -0
  129. package/esm/highlevel/worker/port.js +5 -0
  130. package/esm/highlevel/worker/port.js.map +1 -1
  131. package/esm/highlevel/worker/protocol.d.ts +2 -0
  132. package/esm/highlevel/worker/protocol.js.map +1 -1
  133. package/esm/highlevel/worker/worker.js +1 -0
  134. package/esm/highlevel/worker/worker.js.map +1 -1
  135. package/esm/network/client.d.ts +2 -0
  136. package/esm/network/client.js +9 -1
  137. package/esm/network/client.js.map +1 -1
  138. package/esm/network/mtproto-session.js +2 -0
  139. package/esm/network/mtproto-session.js.map +1 -1
  140. package/esm/network/network-manager.d.ts +9 -2
  141. package/esm/network/network-manager.js +28 -14
  142. package/esm/network/network-manager.js.map +1 -1
  143. package/esm/network/session-connection.js +12 -3
  144. package/esm/network/session-connection.js.map +1 -1
  145. package/esm/storage/sqlite/repository/peers.d.ts +2 -0
  146. package/esm/storage/sqlite/repository/peers.js +14 -0
  147. package/esm/storage/sqlite/repository/peers.js.map +1 -1
  148. package/esm/utils/misc-utils.d.ts +1 -0
  149. package/esm/utils/misc-utils.js +15 -0
  150. package/esm/utils/misc-utils.js.map +1 -1
  151. package/package.json +4 -4
@@ -103,6 +103,8 @@ class UpdatesManager {
103
103
  log;
104
104
  _handler = () => { };
105
105
  _onCatchingUp = () => { };
106
+ // eslint-disable-next-line @typescript-eslint/ban-types
107
+ _channelPtsLimit;
106
108
  auth; // todo: do we need a local copy?
107
109
  keepAliveInterval;
108
110
  constructor(client, params = {}) {
@@ -119,6 +121,18 @@ class UpdatesManager {
119
121
  this.log = client.log.create('updates');
120
122
  this.catchUpOnStart = params.catchUp ?? false;
121
123
  this.noDispatchEnabled = !params.disableNoDispatch;
124
+ if (params.channelPtsLimit) {
125
+ if (typeof params.channelPtsLimit === 'function') {
126
+ this._channelPtsLimit = params.channelPtsLimit;
127
+ }
128
+ else {
129
+ const limit = params.channelPtsLimit;
130
+ this._channelPtsLimit = () => limit;
131
+ }
132
+ }
133
+ else {
134
+ this._channelPtsLimit = () => (this.auth?.isBot ? 100000 : 100);
135
+ }
122
136
  }
123
137
  setHandler(handler) {
124
138
  this._handler = handler;
@@ -338,6 +352,12 @@ class UpdatesManager {
338
352
  log.debug('loaded initial state: pts=%d, qts=%d, date=%d, seq=%d', this.pts, this.qts, this.date, this.seq);
339
353
  }
340
354
  catch (e) {
355
+ if (tl_1.tl.RpcError.is(e, 'AUTH_KEY_UNREGISTERED')) {
356
+ // we are logged out, stop updates loop
357
+ lock.release();
358
+ this.stopLoop();
359
+ return;
360
+ }
341
361
  if (this.client.isConnected) {
342
362
  log.error('failed to fetch updates state: %s', e);
343
363
  }
@@ -669,7 +689,7 @@ class UpdatesManager {
669
689
  const channel = (0, index_js_1.toInputChannel)(channelPeer);
670
690
  // to make TS happy
671
691
  let pts = _pts;
672
- let limit = this.auth?.isBot ? 100000 : 100;
692
+ let limit = this._channelPtsLimit(channelId);
673
693
  if (pts <= 0) {
674
694
  pts = 1;
675
695
  limit = 1;
@@ -684,8 +704,11 @@ class UpdatesManager {
684
704
  limit,
685
705
  filter: { _: 'channelMessagesFilterEmpty' },
686
706
  });
687
- if (diff.timeout)
688
- lastTimeout = diff.timeout;
707
+ if (diff.timeout) {
708
+ lastTimeout = this.params.overrideOpenChatTimeout ?
709
+ this.params.overrideOpenChatTimeout(diff) :
710
+ diff.timeout;
711
+ }
689
712
  if (diff._ === 'updates.channelDifferenceEmpty') {
690
713
  log.debug('getChannelDifference (cid = %d) returned channelDifferenceEmpty', channelId);
691
714
  break;
@@ -695,13 +718,18 @@ class UpdatesManager {
695
718
  if (diff.dialog._ === 'dialog') {
696
719
  pts = diff.dialog.pts;
697
720
  }
698
- log.warn('getChannelDifference (cid = %d) returned channelDifferenceTooLong. new pts: %d, recent msgs: %d', channelId, pts, diff.messages.length);
699
- diff.messages.forEach((message) => {
700
- log.debug('processing message %d (%s) from TooLong diff for channel %d', message.id, message._, channelId);
701
- if (message._ === 'messageEmpty')
702
- return;
703
- pendingUnorderedUpdates.pushBack((0, utils_js_2.toPendingUpdate)((0, utils_js_2.messageToUpdate)(message), peers, true));
704
- });
721
+ if (this.params.onChannelTooLong) {
722
+ this.params.onChannelTooLong(channelId, diff);
723
+ }
724
+ else {
725
+ log.warn('getChannelDifference (cid = %d) returned channelDifferenceTooLong. new pts: %d, recent msgs: %d', channelId, pts, diff.messages.length);
726
+ diff.messages.forEach((message) => {
727
+ log.debug('processing message %d (%s) from TooLong diff for channel %d', message.id, message._, channelId);
728
+ if (message._ === 'messageEmpty')
729
+ return;
730
+ pendingUnorderedUpdates.pushBack((0, utils_js_2.toPendingUpdate)((0, utils_js_2.messageToUpdate)(message), peers, true));
731
+ });
732
+ }
705
733
  break;
706
734
  }
707
735
  log.debug('getChannelDifference (cid = %d) returned %d messages, %d updates. new pts: %d, final: %b', channelId, diff.newMessages.length, diff.otherUpdates.length, diff.pts, diff.final);