@mtcute/core 0.16.0 → 0.16.3

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 (110) hide show
  1. package/README.md +2 -3
  2. package/cjs/highlevel/client.d.ts +30 -2
  3. package/cjs/highlevel/client.js.map +1 -1
  4. package/cjs/highlevel/methods/auth/run.d.ts +1 -0
  5. package/cjs/highlevel/methods/auth/run.js +1 -0
  6. package/cjs/highlevel/methods/auth/run.js.map +1 -1
  7. package/cjs/highlevel/methods/chats/delete-user-history.d.ts +5 -0
  8. package/cjs/highlevel/methods/chats/delete-user-history.js +4 -2
  9. package/cjs/highlevel/methods/chats/delete-user-history.js.map +1 -1
  10. package/cjs/highlevel/methods/files/normalize-input-media.js +1 -1
  11. package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
  12. package/cjs/highlevel/methods/forums/delete-forum-topic-history.d.ts +7 -1
  13. package/cjs/highlevel/methods/forums/delete-forum-topic-history.js +5 -2
  14. package/cjs/highlevel/methods/forums/delete-forum-topic-history.js.map +1 -1
  15. package/cjs/highlevel/methods/messages/delete-messages.d.ts +5 -0
  16. package/cjs/highlevel/methods/messages/delete-messages.js +4 -2
  17. package/cjs/highlevel/methods/messages/delete-messages.js.map +1 -1
  18. package/cjs/highlevel/methods/messages/read-history.d.ts +5 -0
  19. package/cjs/highlevel/methods/messages/read-history.js +11 -7
  20. package/cjs/highlevel/methods/messages/read-history.js.map +1 -1
  21. package/cjs/highlevel/methods/messages/read-reactions.d.ts +7 -1
  22. package/cjs/highlevel/methods/messages/read-reactions.js +5 -2
  23. package/cjs/highlevel/methods/messages/read-reactions.js.map +1 -1
  24. package/cjs/highlevel/methods/messages/send-common.d.ts +2 -2
  25. package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
  26. package/cjs/highlevel/methods/messages/send-text.js +3 -3
  27. package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
  28. package/cjs/highlevel/methods/messages/unpin-all-messages.d.ts +5 -0
  29. package/cjs/highlevel/methods/messages/unpin-all-messages.js +8 -6
  30. package/cjs/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  31. package/cjs/highlevel/types/media/video.d.ts +1 -0
  32. package/cjs/highlevel/types/media/video.js +3 -0
  33. package/cjs/highlevel/types/media/video.js.map +1 -1
  34. package/cjs/highlevel/types/messages/message-action.d.ts +15 -1
  35. package/cjs/highlevel/types/messages/message-action.js +9 -0
  36. package/cjs/highlevel/types/messages/message-action.js.map +1 -1
  37. package/cjs/highlevel/types/peers/user.d.ts +4 -0
  38. package/cjs/highlevel/types/peers/user.js +8 -0
  39. package/cjs/highlevel/types/peers/user.js.map +1 -1
  40. package/cjs/highlevel/types/stories/interactive/index.d.ts +3 -2
  41. package/cjs/highlevel/types/stories/interactive/index.js +5 -1
  42. package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
  43. package/cjs/highlevel/types/stories/interactive/weather.d.ts +15 -0
  44. package/cjs/highlevel/types/stories/interactive/weather.js +30 -0
  45. package/cjs/highlevel/types/stories/interactive/weather.js.map +1 -0
  46. package/cjs/highlevel/updates/types.d.ts +2 -0
  47. package/cjs/highlevel/updates/types.js.map +1 -1
  48. package/cjs/highlevel/worker/invoker.js +1 -1
  49. package/cjs/highlevel/worker/invoker.js.map +1 -1
  50. package/cjs/highlevel/worker/protocol.d.ts +1 -1
  51. package/cjs/highlevel/worker/protocol.js +9 -6
  52. package/cjs/highlevel/worker/protocol.js.map +1 -1
  53. package/cjs/highlevel/worker/worker.js +6 -3
  54. package/cjs/highlevel/worker/worker.js.map +1 -1
  55. package/cjs/network/network-manager.js +1 -1
  56. package/esm/highlevel/client.d.ts +30 -2
  57. package/esm/highlevel/client.js.map +1 -1
  58. package/esm/highlevel/methods/auth/run.d.ts +1 -0
  59. package/esm/highlevel/methods/auth/run.js +1 -0
  60. package/esm/highlevel/methods/auth/run.js.map +1 -1
  61. package/esm/highlevel/methods/chats/delete-user-history.d.ts +5 -0
  62. package/esm/highlevel/methods/chats/delete-user-history.js +4 -2
  63. package/esm/highlevel/methods/chats/delete-user-history.js.map +1 -1
  64. package/esm/highlevel/methods/files/normalize-input-media.js +1 -1
  65. package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
  66. package/esm/highlevel/methods/forums/delete-forum-topic-history.d.ts +7 -1
  67. package/esm/highlevel/methods/forums/delete-forum-topic-history.js +5 -2
  68. package/esm/highlevel/methods/forums/delete-forum-topic-history.js.map +1 -1
  69. package/esm/highlevel/methods/messages/delete-messages.d.ts +5 -0
  70. package/esm/highlevel/methods/messages/delete-messages.js +4 -2
  71. package/esm/highlevel/methods/messages/delete-messages.js.map +1 -1
  72. package/esm/highlevel/methods/messages/read-history.d.ts +5 -0
  73. package/esm/highlevel/methods/messages/read-history.js +11 -7
  74. package/esm/highlevel/methods/messages/read-history.js.map +1 -1
  75. package/esm/highlevel/methods/messages/read-reactions.d.ts +7 -1
  76. package/esm/highlevel/methods/messages/read-reactions.js +5 -2
  77. package/esm/highlevel/methods/messages/read-reactions.js.map +1 -1
  78. package/esm/highlevel/methods/messages/send-common.d.ts +2 -2
  79. package/esm/highlevel/methods/messages/send-common.js.map +1 -1
  80. package/esm/highlevel/methods/messages/send-text.js +3 -3
  81. package/esm/highlevel/methods/messages/send-text.js.map +1 -1
  82. package/esm/highlevel/methods/messages/unpin-all-messages.d.ts +5 -0
  83. package/esm/highlevel/methods/messages/unpin-all-messages.js +8 -6
  84. package/esm/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  85. package/esm/highlevel/types/media/video.d.ts +1 -0
  86. package/esm/highlevel/types/media/video.js +3 -0
  87. package/esm/highlevel/types/media/video.js.map +1 -1
  88. package/esm/highlevel/types/messages/message-action.d.ts +15 -1
  89. package/esm/highlevel/types/messages/message-action.js +9 -0
  90. package/esm/highlevel/types/messages/message-action.js.map +1 -1
  91. package/esm/highlevel/types/peers/user.d.ts +4 -0
  92. package/esm/highlevel/types/peers/user.js +8 -0
  93. package/esm/highlevel/types/peers/user.js.map +1 -1
  94. package/esm/highlevel/types/stories/interactive/index.d.ts +3 -2
  95. package/esm/highlevel/types/stories/interactive/index.js +4 -1
  96. package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
  97. package/esm/highlevel/types/stories/interactive/weather.d.ts +15 -0
  98. package/esm/highlevel/types/stories/interactive/weather.js +27 -0
  99. package/esm/highlevel/types/stories/interactive/weather.js.map +1 -0
  100. package/esm/highlevel/updates/types.d.ts +2 -0
  101. package/esm/highlevel/updates/types.js.map +1 -1
  102. package/esm/highlevel/worker/invoker.js +2 -2
  103. package/esm/highlevel/worker/invoker.js.map +1 -1
  104. package/esm/highlevel/worker/protocol.d.ts +1 -1
  105. package/esm/highlevel/worker/protocol.js +9 -6
  106. package/esm/highlevel/worker/protocol.js.map +1 -1
  107. package/esm/highlevel/worker/worker.js +7 -4
  108. package/esm/highlevel/worker/worker.js.map +1 -1
  109. package/esm/network/network-manager.js +1 -1
  110. package/package.json +2 -2
@@ -7,7 +7,7 @@ export type WorkerInboundMessage = {
7
7
  id: number;
8
8
  target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config';
9
9
  method: string;
10
- args: unknown[];
10
+ args: SerializedResult<unknown[]>;
11
11
  void: boolean;
12
12
  withAbort: boolean;
13
13
  } | {
@@ -17,23 +17,26 @@ function serializeResult(result) {
17
17
  }
18
18
  if (result && typeof result === 'object') {
19
19
  // replace Long instances with a special object
20
+ const newResult = {};
20
21
  for (const [key, value] of Object.entries(result)) {
21
22
  if (long_1.default.isLong(value)) {
22
23
  // eslint-disable-next-line
23
- ;
24
- result[key] = {
24
+ newResult[key] = {
25
25
  __type: 'long',
26
26
  low: value.low,
27
27
  high: value.high,
28
28
  unsigned: value.unsigned,
29
29
  };
30
30
  }
31
- else {
31
+ else if (typeof value === 'object') {
32
32
  // eslint-disable-next-line
33
- ;
34
- result[key] = serializeResult(value);
33
+ newResult[key] = serializeResult(value);
34
+ }
35
+ else {
36
+ newResult[key] = value;
35
37
  }
36
38
  }
39
+ return newResult;
37
40
  }
38
41
  return result;
39
42
  }
@@ -56,7 +59,7 @@ function deserializeResult(result) {
56
59
  ;
57
60
  result[key] = long_1.default.fromValue(value);
58
61
  }
59
- else {
62
+ else if (typeof value === 'object') {
60
63
  // eslint-disable-next-line
61
64
  ;
62
65
  result[key] = deserializeResult(value);
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/protocol.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AA+DvB,SAAgB,eAAe,CAAI,MAAS;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAmC,CAAA;IACxE,CAAC;IAED,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,MAAwC,CAAA;IACnD,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvC,+CAA+C;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,cAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,2BAA2B;gBAC3B,CAAC;gBAAC,MAAc,CAAC,GAAG,CAAC,GAAG;oBACpB,MAAM,EAAE,MAAM;oBACd,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBAC3B,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,2BAA2B;gBAC3B,CAAC;gBAAC,MAAc,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;YAClD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAwC,CAAA;AACnD,CAAC;AAhCD,0CAgCC;AAED,SAAgB,iBAAiB,CAAI,MAA2B;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAiB,CAAA;IACxD,CAAC;IAED,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,iEAAiE;YACjE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7C,CAAC;QAED,OAAO,MAAsB,CAAA;IACjC,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAgC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5F,2BAA2B;gBAC3B,CAAC;gBAAC,MAAc,CAAC,GAAG,CAAC,GAAG,cAAI,CAAC,SAAS,CAAC,KAAwB,CAAC,CAAA;YACpE,CAAC;iBAAM,CAAC;gBACJ,2BAA2B;gBAC3B,CAAC;gBAAC,MAAc,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAkC,CAAC,CAAA;YACjF,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAsB,CAAA;AACjC,CAAC;AA3BD,8CA2BC","sourcesContent":["import Long from 'long'\nimport type { Worker as NodeWorker } from 'node:worker_threads'\n\nimport { tl } from '@mtcute/tl'\n\nimport { ConnectionState } from '../client.types.js'\nimport { SerializedError } from './errors.js'\n\nexport type WorkerInboundMessage =\n | {\n type: 'invoke'\n id: number\n target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config'\n method: string\n args: unknown[]\n void: boolean\n withAbort: boolean\n }\n | {\n type: 'abort'\n id: number\n }\n\nexport type WorkerOutboundMessage =\n | { type: 'server_update'; update: SerializedResult<tl.TypeUpdates> }\n | {\n type: 'update'\n update: SerializedResult<tl.TypeUpdate>\n users: SerializedResult<Map<number, tl.TypeUser>>\n chats: SerializedResult<Map<number, tl.TypeChat>>\n hasMin: boolean\n }\n | { type: 'error'; error: unknown }\n | { type: 'stop' }\n | { type: 'conn_state'; state: ConnectionState }\n | {\n type: 'log'\n color: number\n level: number\n tag: string\n fmt: string\n args: unknown[]\n }\n | {\n type: 'result'\n id: number\n result?: SerializedResult<unknown>\n error?: SerializedError\n }\n\nexport type SomeWorker = NodeWorker | Worker | SharedWorker\n\nexport type SendFn = (message: WorkerInboundMessage) => void\nexport type ClientMessageHandler = (message: WorkerOutboundMessage) => void\n\nexport type RespondFn = (message: WorkerOutboundMessage) => void\nexport type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type WorkerCustomMethods = Record<string, (...args: any[]) => Promise<any>>\n\nexport type SerializedResult<T> = { __serialized__: T }\n\nexport function serializeResult<T>(result: T): SerializedResult<T> {\n if (Array.isArray(result)) {\n return result.map(serializeResult) as unknown as SerializedResult<T>\n }\n\n if (result instanceof Map) {\n for (const [key, value] of result.entries()) {\n result.set(key, serializeResult(value))\n }\n\n return result as unknown as SerializedResult<T>\n }\n\n if (result && typeof result === 'object') {\n // replace Long instances with a special object\n for (const [key, value] of Object.entries(result)) {\n if (Long.isLong(value)) {\n // eslint-disable-next-line\n ;(result as any)[key] = {\n __type: 'long',\n low: value.low,\n high: value.high,\n unsigned: value.unsigned,\n }\n } else {\n // eslint-disable-next-line\n ;(result as any)[key] = serializeResult(value)\n }\n }\n }\n\n return result as unknown as SerializedResult<T>\n}\n\nexport function deserializeResult<T>(result: SerializedResult<T>): T {\n if (Array.isArray(result)) {\n return result.map(deserializeResult) as unknown as T\n }\n\n if (result instanceof Map) {\n for (const [key, value] of result.entries()) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n result.set(key, deserializeResult(value))\n }\n\n return result as unknown as T\n }\n\n if (result && typeof result === 'object') {\n for (const [key, value] of Object.entries(result)) {\n if (value && typeof value === 'object' && (value as Record<string, string>).__type === 'long') {\n // eslint-disable-next-line\n ;(result as any)[key] = Long.fromValue(value as unknown as Long)\n } else {\n // eslint-disable-next-line\n ;(result as any)[key] = deserializeResult(value as SerializedResult<unknown>)\n }\n }\n }\n\n return result as unknown as T\n}\n"]}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/protocol.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AA+DvB,SAAgB,eAAe,CAAI,MAAS;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAmC,CAAA;IACxE,CAAC;IAED,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,MAAwC,CAAA;IACnD,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvC,+CAA+C;QAC/C,MAAM,SAAS,GAA4B,EAAE,CAAA;QAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,cAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,2BAA2B;gBAC3B,SAAS,CAAC,GAAG,CAAC,GAAG;oBACb,MAAM,EAAE,MAAM;oBACd,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBAC3B,CAAA;YACL,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnC,2BAA2B;gBAC3B,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YAC1B,CAAC;QACL,CAAC;QAED,OAAO,SAA2C,CAAA;IACtD,CAAC;IAED,OAAO,MAAwC,CAAA;AACnD,CAAC;AAtCD,0CAsCC;AAED,SAAgB,iBAAiB,CAAI,MAA2B;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAiB,CAAA;IACxD,CAAC;IAED,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,iEAAiE;YACjE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7C,CAAC;QAED,OAAO,MAAsB,CAAA;IACjC,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAgC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5F,2BAA2B;gBAC3B,CAAC;gBAAC,MAAc,CAAC,GAAG,CAAC,GAAG,cAAI,CAAC,SAAS,CAAC,KAAwB,CAAC,CAAA;YACpE,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnC,2BAA2B;gBAC3B,CAAC;gBAAC,MAAc,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAkC,CAAC,CAAA;YACjF,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAsB,CAAA;AACjC,CAAC;AA3BD,8CA2BC","sourcesContent":["import Long from 'long'\nimport type { Worker as NodeWorker } from 'node:worker_threads'\n\nimport { tl } from '@mtcute/tl'\n\nimport { ConnectionState } from '../client.types.js'\nimport { SerializedError } from './errors.js'\n\nexport type WorkerInboundMessage =\n | {\n type: 'invoke'\n id: number\n target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config'\n method: string\n args: SerializedResult<unknown[]>\n void: boolean\n withAbort: boolean\n }\n | {\n type: 'abort'\n id: number\n }\n\nexport type WorkerOutboundMessage =\n | { type: 'server_update'; update: SerializedResult<tl.TypeUpdates> }\n | {\n type: 'update'\n update: SerializedResult<tl.TypeUpdate>\n users: SerializedResult<Map<number, tl.TypeUser>>\n chats: SerializedResult<Map<number, tl.TypeChat>>\n hasMin: boolean\n }\n | { type: 'error'; error: unknown }\n | { type: 'stop' }\n | { type: 'conn_state'; state: ConnectionState }\n | {\n type: 'log'\n color: number\n level: number\n tag: string\n fmt: string\n args: unknown[]\n }\n | {\n type: 'result'\n id: number\n result?: SerializedResult<unknown>\n error?: SerializedError\n }\n\nexport type SomeWorker = NodeWorker | Worker | SharedWorker\n\nexport type SendFn = (message: WorkerInboundMessage) => void\nexport type ClientMessageHandler = (message: WorkerOutboundMessage) => void\n\nexport type RespondFn = (message: WorkerOutboundMessage) => void\nexport type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type WorkerCustomMethods = Record<string, (...args: any[]) => Promise<any>>\n\nexport type SerializedResult<T> = { __serialized__: T }\n\nexport function serializeResult<T>(result: T): SerializedResult<T> {\n if (Array.isArray(result)) {\n return result.map(serializeResult) as unknown as SerializedResult<T>\n }\n\n if (result instanceof Map) {\n for (const [key, value] of result.entries()) {\n result.set(key, serializeResult(value))\n }\n\n return result as unknown as SerializedResult<T>\n }\n\n if (result && typeof result === 'object') {\n // replace Long instances with a special object\n const newResult: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(result)) {\n if (Long.isLong(value)) {\n // eslint-disable-next-line\n newResult[key] = {\n __type: 'long',\n low: value.low,\n high: value.high,\n unsigned: value.unsigned,\n }\n } else if (typeof value === 'object') {\n // eslint-disable-next-line\n newResult[key] = serializeResult(value)\n } else {\n newResult[key] = value\n }\n }\n\n return newResult as unknown as SerializedResult<T>\n }\n\n return result as unknown as SerializedResult<T>\n}\n\nexport function deserializeResult<T>(result: SerializedResult<T>): T {\n if (Array.isArray(result)) {\n return result.map(deserializeResult) as unknown as T\n }\n\n if (result instanceof Map) {\n for (const [key, value] of result.entries()) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n result.set(key, deserializeResult(value))\n }\n\n return result as unknown as T\n }\n\n if (result && typeof result === 'object') {\n for (const [key, value] of Object.entries(result)) {\n if (value && typeof value === 'object' && (value as Record<string, string>).__type === 'long') {\n // eslint-disable-next-line\n ;(result as any)[key] = Long.fromValue(value as unknown as Long)\n } else if (typeof value === 'object') {\n // eslint-disable-next-line\n ;(result as any)[key] = deserializeResult(value as SerializedResult<unknown>)\n }\n }\n }\n\n return result as unknown as T\n}\n"]}
@@ -100,18 +100,21 @@ class TelegramWorker {
100
100
  });
101
101
  return;
102
102
  }
103
- let args = msg.args;
103
+ let args;
104
104
  if (msg.target === 'client' && msg.method === 'call' && msg.withAbort) {
105
105
  const abort = new AbortController();
106
106
  this.pendingAborts.set(msg.id, abort);
107
107
  args = [
108
- args[0],
108
+ (0, protocol_js_1.deserializeResult)(msg.args[0]),
109
109
  {
110
- ...args[1],
110
+ ...msg.args[1],
111
111
  abortSignal: abort.signal,
112
112
  },
113
113
  ];
114
114
  }
115
+ else {
116
+ args = (0, protocol_js_1.deserializeResult)(msg.args);
117
+ }
115
118
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call
116
119
  Promise.resolve(method.apply(target, args))
117
120
  .then((res) => {
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTelegramClient } from '../base.js'\nimport { serializeError } from './errors.js'\nimport {\n RespondFn,\n serializeResult,\n WorkerCustomMethods,\n WorkerInboundMessage,\n WorkerMessageHandler,\n} from './protocol.js'\n\nexport interface TelegramWorkerOptions<T extends WorkerCustomMethods> {\n client: BaseTelegramClient\n customMethods?: T\n}\n\nexport abstract class TelegramWorker<T extends WorkerCustomMethods> {\n readonly client: BaseTelegramClient\n readonly broadcast: RespondFn\n\n abstract registerWorker(handler: WorkerMessageHandler): RespondFn\n\n readonly pendingAborts = new Map<number, AbortController>()\n\n constructor(readonly params: TelegramWorkerOptions<T>) {\n this.broadcast = this.registerWorker((message, respond) => {\n switch (message.type) {\n case 'invoke':\n this.onInvoke(message, respond)\n break\n case 'abort': {\n const abort = this.pendingAborts.get(message.id)\n\n if (abort) {\n abort.abort()\n this.pendingAborts.delete(message.id)\n }\n }\n }\n })\n\n const client = params.client\n this.client = client\n\n client.log.mgr.handler = (color, level, tag, fmt, args) =>\n this.broadcast({\n type: 'log',\n color,\n level,\n tag,\n fmt,\n args,\n })\n client.onError((err) =>\n this.broadcast({\n type: 'error',\n error: err,\n }),\n )\n client.onConnectionState((state) =>\n this.broadcast({\n type: 'conn_state',\n state,\n }),\n )\n client.stopSignal.addEventListener('abort', () => this.broadcast({ type: 'stop' }))\n\n if (client.updates) {\n client.onUpdate((update, peers) =>\n this.broadcast({\n type: 'update',\n update: serializeResult(update),\n users: serializeResult(peers.users),\n chats: serializeResult(peers.chats),\n hasMin: peers.hasMin,\n }),\n )\n } else {\n client.onServerUpdate((update) =>\n this.broadcast({\n type: 'server_update',\n update: serializeResult(update),\n }),\n )\n }\n }\n\n private onInvoke(msg: Extract<WorkerInboundMessage, { type: 'invoke' }>, respond: RespondFn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let target: any\n\n switch (msg.target) {\n case 'custom':\n target = this.params.customMethods\n break\n case 'client':\n target = this.client\n break\n case 'storage':\n target = this.client.storage\n break\n case 'storage-self':\n target = this.client.storage.self\n break\n case 'storage-peers':\n target = this.client.storage.peers\n break\n case 'app-config':\n target = this.client.appConfig\n break\n\n default: {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Unknown target ${msg.target}`),\n })\n\n return\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const method = target[msg.method]\n\n if (!method) {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Method ${msg.method} not found on ${msg.target}`),\n })\n\n return\n }\n\n let args = msg.args\n\n if (msg.target === 'client' && msg.method === 'call' && msg.withAbort) {\n const abort = new AbortController()\n this.pendingAborts.set(msg.id, abort)\n\n args = [\n args[0],\n {\n ...(args[1] as object),\n abortSignal: abort.signal,\n },\n ]\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n Promise.resolve(method.apply(target, args))\n .then((res) => {\n if (msg.withAbort) {\n this.pendingAborts.delete(msg.id)\n }\n\n if (msg.void) return\n\n respond({\n type: 'result',\n id: msg.id,\n result: serializeResult(res),\n })\n })\n .catch((err) => {\n if (msg.withAbort) {\n this.pendingAborts.delete(msg.id)\n }\n\n respond({\n type: 'result',\n id: msg.id,\n error: serializeError(err),\n })\n })\n }\n}\n"]}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/worker.ts"],"names":[],"mappings":";;;AACA,2CAA4C;AAC5C,+CAQsB;AAOtB,MAAsB,cAAc;IAQX;IAPZ,MAAM,CAAoB;IAC1B,SAAS,CAAW;IAIpB,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAA;IAE3D,YAAqB,MAAgC;QAAhC,WAAM,GAAN,MAAM,CAA0B;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACtD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,QAAQ;oBACT,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;oBAC/B,MAAK;gBACT,KAAK,OAAO,CAAC,CAAC,CAAC;oBACX,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBAEhD,IAAI,KAAK,EAAE,CAAC;wBACR,KAAK,CAAC,KAAK,EAAE,CAAA;wBACb,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBACzC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CACtD,IAAI,CAAC,SAAS,CAAC;YACX,IAAI,EAAE,KAAK;YACX,KAAK;YACL,KAAK;YACL,GAAG;YACH,GAAG;YACH,IAAI;SACP,CAAC,CAAA;QACN,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACnB,IAAI,CAAC,SAAS,CAAC;YACX,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG;SACb,CAAC,CACL,CAAA;QACD,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/B,IAAI,CAAC,SAAS,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,KAAK;SACR,CAAC,CACL,CAAA;QACD,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAEnF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAC9B,IAAI,CAAC,SAAS,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,IAAA,6BAAe,EAAC,MAAM,CAAC;gBAC/B,KAAK,EAAE,IAAA,6BAAe,EAAC,KAAK,CAAC,KAAK,CAAC;gBACnC,KAAK,EAAE,IAAA,6BAAe,EAAC,KAAK,CAAC,KAAK,CAAC;gBACnC,MAAM,EAAE,KAAK,CAAC,MAAM;aACvB,CAAC,CACL,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7B,IAAI,CAAC,SAAS,CAAC;gBACX,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,IAAA,6BAAe,EAAC,MAAM,CAAC;aAClC,CAAC,CACL,CAAA;QACL,CAAC;IACL,CAAC;IAEO,QAAQ,CAAC,GAAsD,EAAE,OAAkB;QACvF,8DAA8D;QAC9D,IAAI,MAAW,CAAA;QAEf,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACT,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAA;gBAClC,MAAK;YACT,KAAK,QAAQ;gBACT,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gBACpB,MAAK;YACT,KAAK,SAAS;gBACV,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;gBAC5B,MAAK;YACT,KAAK,cAAc;gBACf,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAA;gBACjC,MAAK;YACT,KAAK,eAAe;gBAChB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAA;gBAClC,MAAK;YACT,KAAK,YAAY;gBACb,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;gBAC9B,MAAK;YAET,OAAO,CAAC,CAAC,CAAC;gBACN,OAAO,CAAC;oBACJ,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,KAAK,EAAE,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,MAAM,EAAE,CAAC;iBACnD,CAAC,CAAA;gBAEF,OAAM;YACV,CAAC;QACL,CAAC;QAED,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC;gBACJ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC;aACtE,CAAC,CAAA;YAEF,OAAM;QACV,CAAC;QAED,IAAI,IAAe,CAAA;QAEnB,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;YACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAErC,IAAI,GAAG;gBACH,IAAA,+BAAiB,EAAE,GAAG,CAAC,IAA6B,CAAC,CAAC,CAA8B,CAAC;gBACrF;oBACI,GAAK,GAAG,CAAC,IAA6B,CAAC,CAAC,CAAY;oBACpD,WAAW,EAAE,KAAK,CAAC,MAAM;iBAC5B;aACJ,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,IAAA,+BAAiB,EAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC;QAED,6DAA6D;QAC7D,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;aACtC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACV,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACrC,CAAC;YAED,IAAI,GAAG,CAAC,IAAI;gBAAE,OAAM;YAEpB,OAAO,CAAC;gBACJ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,EAAE,IAAA,6BAAe,EAAC,GAAG,CAAC;aAC/B,CAAC,CAAA;QACN,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,CAAC;gBACJ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,KAAK,EAAE,IAAA,0BAAc,EAAC,GAAG,CAAC;aAC7B,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACV,CAAC;CACJ;AAnKD,wCAmKC","sourcesContent":["import { BaseTelegramClient } from '../base.js'\nimport { serializeError } from './errors.js'\nimport {\n deserializeResult,\n RespondFn,\n SerializedResult,\n serializeResult,\n WorkerCustomMethods,\n WorkerInboundMessage,\n WorkerMessageHandler,\n} from './protocol.js'\n\nexport interface TelegramWorkerOptions<T extends WorkerCustomMethods> {\n client: BaseTelegramClient\n customMethods?: T\n}\n\nexport abstract class TelegramWorker<T extends WorkerCustomMethods> {\n readonly client: BaseTelegramClient\n readonly broadcast: RespondFn\n\n abstract registerWorker(handler: WorkerMessageHandler): RespondFn\n\n readonly pendingAborts = new Map<number, AbortController>()\n\n constructor(readonly params: TelegramWorkerOptions<T>) {\n this.broadcast = this.registerWorker((message, respond) => {\n switch (message.type) {\n case 'invoke':\n this.onInvoke(message, respond)\n break\n case 'abort': {\n const abort = this.pendingAborts.get(message.id)\n\n if (abort) {\n abort.abort()\n this.pendingAborts.delete(message.id)\n }\n }\n }\n })\n\n const client = params.client\n this.client = client\n\n client.log.mgr.handler = (color, level, tag, fmt, args) =>\n this.broadcast({\n type: 'log',\n color,\n level,\n tag,\n fmt,\n args,\n })\n client.onError((err) =>\n this.broadcast({\n type: 'error',\n error: err,\n }),\n )\n client.onConnectionState((state) =>\n this.broadcast({\n type: 'conn_state',\n state,\n }),\n )\n client.stopSignal.addEventListener('abort', () => this.broadcast({ type: 'stop' }))\n\n if (client.updates) {\n client.onUpdate((update, peers) =>\n this.broadcast({\n type: 'update',\n update: serializeResult(update),\n users: serializeResult(peers.users),\n chats: serializeResult(peers.chats),\n hasMin: peers.hasMin,\n }),\n )\n } else {\n client.onServerUpdate((update) =>\n this.broadcast({\n type: 'server_update',\n update: serializeResult(update),\n }),\n )\n }\n }\n\n private onInvoke(msg: Extract<WorkerInboundMessage, { type: 'invoke' }>, respond: RespondFn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let target: any\n\n switch (msg.target) {\n case 'custom':\n target = this.params.customMethods\n break\n case 'client':\n target = this.client\n break\n case 'storage':\n target = this.client.storage\n break\n case 'storage-self':\n target = this.client.storage.self\n break\n case 'storage-peers':\n target = this.client.storage.peers\n break\n case 'app-config':\n target = this.client.appConfig\n break\n\n default: {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Unknown target ${msg.target}`),\n })\n\n return\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const method = target[msg.method]\n\n if (!method) {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Method ${msg.method} not found on ${msg.target}`),\n })\n\n return\n }\n\n let args: unknown[]\n\n if (msg.target === 'client' && msg.method === 'call' && msg.withAbort) {\n const abort = new AbortController()\n this.pendingAborts.set(msg.id, abort)\n\n args = [\n deserializeResult((msg.args as unknown as unknown[])[0] as SerializedResult<unknown>),\n {\n ...((msg.args as unknown as unknown[])[1] as object),\n abortSignal: abort.signal,\n },\n ]\n } else {\n args = deserializeResult(msg.args)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n Promise.resolve(method.apply(target, args))\n .then((res) => {\n if (msg.withAbort) {\n this.pendingAborts.delete(msg.id)\n }\n\n if (msg.void) return\n\n respond({\n type: 'result',\n id: msg.id,\n result: serializeResult(res),\n })\n })\n .catch((err) => {\n if (msg.withAbort) {\n this.pendingAborts.delete(msg.id)\n }\n\n respond({\n type: 'result',\n id: msg.id,\n error: serializeError(err),\n })\n })\n }\n}\n"]}
@@ -259,7 +259,7 @@ class NetworkManager {
259
259
  _: 'initConnection',
260
260
  deviceModel,
261
261
  systemVersion: '1.0',
262
- appVersion: '0.16.0',
262
+ appVersion: '0.16.3',
263
263
  systemLangCode: 'en',
264
264
  langPack: '', // "langPacks are for official apps only"
265
265
  langCode: 'en',
@@ -357,6 +357,7 @@ export interface TelegramClient extends ITelegramClient {
357
357
  *
358
358
  * @param params Parameters to be passed to {@link start}
359
359
  * @param then Function to be called after {@link start} returns
360
+ * @deprecated This method provides no real value over {@link start}, please use it instead
360
361
  */
361
362
  run(params: Parameters<typeof start>[1], then?: (user: User) => void | Promise<void>): void;
362
363
  /**
@@ -1128,6 +1129,11 @@ export interface TelegramClient extends ITelegramClient {
1128
1129
  chatId: InputPeerLike;
1129
1130
  /** User/channel ID whose messages to delete */
1130
1131
  participantId: InputPeerLike;
1132
+ /**
1133
+ * Whether to dispatch the updates that will be generated by this call.
1134
+ * Doesn't follow `disableNoDispatch`
1135
+ */
1136
+ shouldDispatch?: true;
1131
1137
  }): Promise<void>;
1132
1138
  /**
1133
1139
  * Edit supergroup/channel admin rights of a user.
@@ -2172,7 +2178,13 @@ export interface TelegramClient extends ITelegramClient {
2172
2178
  * @param chat Chat or user ID, username, phone number, `"me"` or `"self"`
2173
2179
  * @param topicId ID of the topic (i.e. its top message ID)
2174
2180
  */
2175
- deleteForumTopicHistory(chat: InputPeerLike, topicId: number | ForumTopic): Promise<void>;
2181
+ deleteForumTopicHistory(chat: InputPeerLike, topicId: number | ForumTopic, params?: {
2182
+ /**
2183
+ * Whether to dispatch updates that will be generated by this call.
2184
+ * Doesn't follow `disableNoDispatch`
2185
+ */
2186
+ shouldDispatch?: true;
2187
+ }): Promise<void>;
2176
2188
  /**
2177
2189
  * Modify a topic in a forum
2178
2190
  *
@@ -3149,6 +3161,11 @@ export interface TelegramClient extends ITelegramClient {
3149
3161
  * Whether to also clear all mentions in the chat
3150
3162
  */
3151
3163
  clearMentions?: boolean;
3164
+ /**
3165
+ * Whether to dispatch updates that will be generated by this call.
3166
+ * Doesn't follow `disableNoDispatch`
3167
+ */
3168
+ shouldDispatch?: true;
3152
3169
  }): Promise<void>;
3153
3170
  /**
3154
3171
  * Mark all reactions in chat as read.
@@ -3157,7 +3174,13 @@ export interface TelegramClient extends ITelegramClient {
3157
3174
  *
3158
3175
  * @param chatId Chat ID
3159
3176
  */
3160
- readReactions(chatId: InputPeerLike): Promise<void>;
3177
+ readReactions(chatId: InputPeerLike, params?: {
3178
+ /**
3179
+ * Whether to dispatch updates that will be generated by this call.
3180
+ * Doesn't follow `disableNoDispatch`
3181
+ */
3182
+ shouldDispatch?: true;
3183
+ }): Promise<void>;
3161
3184
  /**
3162
3185
  * Search for messages globally from all of your chats
3163
3186
  *
@@ -3641,6 +3664,11 @@ export interface TelegramClient extends ITelegramClient {
3641
3664
  * For forums - unpin only messages from the given topic
3642
3665
  */
3643
3666
  topicId?: number;
3667
+ /**
3668
+ * Whether to dispatch updates that will be generated by this call.
3669
+ * Doesn't follow `disableNoDispatch`
3670
+ */
3671
+ shouldDispatch?: true;
3644
3672
  }): Promise<void>;
3645
3673
  /**
3646
3674
  * Unpin a message in a group, supergroup, channel or PM.