@neelegirly/baileys 2.2.16

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 (206) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -0
  3. package/WAProto/WAProto.proto +5007 -0
  4. package/WAProto/index.d.ts +57712 -0
  5. package/WAProto/index.js +178969 -0
  6. package/lib/Defaults/baileys-version.json +1 -0
  7. package/lib/Defaults/index.d.ts +68 -0
  8. package/lib/Defaults/index.js +155 -0
  9. package/lib/Defaults/phonenumber-mcc.json +223 -0
  10. package/lib/Signal/WASignalGroup/GroupProtocol.js +1909 -0
  11. package/lib/Signal/WASignalGroup/ciphertext_message.js +16 -0
  12. package/lib/Signal/WASignalGroup/generate-proto.sh +1 -0
  13. package/lib/Signal/WASignalGroup/group.proto +42 -0
  14. package/lib/Signal/WASignalGroup/group_cipher.js +120 -0
  15. package/lib/Signal/WASignalGroup/group_session_builder.js +46 -0
  16. package/lib/Signal/WASignalGroup/index.js +6 -0
  17. package/lib/Signal/WASignalGroup/keyhelper.js +22 -0
  18. package/lib/Signal/WASignalGroup/protobufs.js +3 -0
  19. package/lib/Signal/WASignalGroup/queue_job.js +69 -0
  20. package/lib/Signal/WASignalGroup/readme.md +6 -0
  21. package/lib/Signal/WASignalGroup/sender_chain_key.js +50 -0
  22. package/lib/Signal/WASignalGroup/sender_key_distribution_message.js +78 -0
  23. package/lib/Signal/WASignalGroup/sender_key_message.js +92 -0
  24. package/lib/Signal/WASignalGroup/sender_key_name.js +70 -0
  25. package/lib/Signal/WASignalGroup/sender_key_record.js +56 -0
  26. package/lib/Signal/WASignalGroup/sender_key_state.js +129 -0
  27. package/lib/Signal/WASignalGroup/sender_message_key.js +39 -0
  28. package/lib/Signal/libsignal.d.ts +4 -0
  29. package/lib/Signal/libsignal.js +427 -0
  30. package/lib/Socket/Client/abstract-socket-client.d.ts +15 -0
  31. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  32. package/lib/Socket/Client/index.d.ts +2 -0
  33. package/lib/Socket/Client/index.js +22 -0
  34. package/lib/Socket/Client/mobile-socket-client.d.ts +12 -0
  35. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  36. package/lib/Socket/Client/types.d.ts +16 -0
  37. package/lib/Socket/Client/types.js +18 -0
  38. package/lib/Socket/Client/websocket.d.ts +13 -0
  39. package/lib/Socket/Client/websocket.js +62 -0
  40. package/lib/Socket/business.d.ts +187 -0
  41. package/lib/Socket/business.js +268 -0
  42. package/lib/Socket/chats.d.ts +98 -0
  43. package/lib/Socket/chats.js +1133 -0
  44. package/lib/Socket/communities.d.ts +223 -0
  45. package/lib/Socket/communities.js +433 -0
  46. package/lib/Socket/groups.d.ts +131 -0
  47. package/lib/Socket/groups.js +352 -0
  48. package/lib/Socket/index.d.ts +191 -0
  49. package/lib/Socket/index.js +23 -0
  50. package/lib/Socket/messages-recv.d.ts +177 -0
  51. package/lib/Socket/messages-recv.js +1826 -0
  52. package/lib/Socket/messages-send.d.ts +168 -0
  53. package/lib/Socket/messages-send.js +1537 -0
  54. package/lib/Socket/mex.d.ts +2 -0
  55. package/lib/Socket/mex.js +47 -0
  56. package/lib/Socket/newsletter.d.ts +147 -0
  57. package/lib/Socket/newsletter.js +286 -0
  58. package/lib/Socket/registration.d.ts +266 -0
  59. package/lib/Socket/registration.js +166 -0
  60. package/lib/Socket/socket.d.ts +45 -0
  61. package/lib/Socket/socket.js +928 -0
  62. package/lib/Socket/usync.d.ts +37 -0
  63. package/lib/Socket/usync.js +83 -0
  64. package/lib/Store/index.d.ts +4 -0
  65. package/lib/Store/index.js +24 -0
  66. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  67. package/lib/Store/make-cache-manager-store.js +90 -0
  68. package/lib/Store/make-in-memory-store.d.ts +123 -0
  69. package/lib/Store/make-in-memory-store.js +429 -0
  70. package/lib/Store/make-ordered-dictionary.d.ts +12 -0
  71. package/lib/Store/make-ordered-dictionary.js +86 -0
  72. package/lib/Store/object-repository.d.ts +10 -0
  73. package/lib/Store/object-repository.js +31 -0
  74. package/lib/Types/Auth.d.ts +120 -0
  75. package/lib/Types/Auth.js +3 -0
  76. package/lib/Types/Bussines.d.ts +20 -0
  77. package/lib/Types/Bussines.js +2 -0
  78. package/lib/Types/Call.d.ts +14 -0
  79. package/lib/Types/Call.js +3 -0
  80. package/lib/Types/Chat.d.ts +141 -0
  81. package/lib/Types/Chat.js +9 -0
  82. package/lib/Types/Contact.d.ts +20 -0
  83. package/lib/Types/Contact.js +3 -0
  84. package/lib/Types/Events.d.ts +237 -0
  85. package/lib/Types/Events.js +3 -0
  86. package/lib/Types/GroupMetadata.d.ts +66 -0
  87. package/lib/Types/GroupMetadata.js +3 -0
  88. package/lib/Types/Label.d.ts +48 -0
  89. package/lib/Types/Label.js +31 -0
  90. package/lib/Types/LabelAssociation.d.ts +35 -0
  91. package/lib/Types/LabelAssociation.js +13 -0
  92. package/lib/Types/Message.d.ts +473 -0
  93. package/lib/Types/Message.js +13 -0
  94. package/lib/Types/MexUpdates.d.ts +9 -0
  95. package/lib/Types/MexUpdates.js +18 -0
  96. package/lib/Types/Newsletter.d.ts +109 -0
  97. package/lib/Types/Newsletter.js +40 -0
  98. package/lib/Types/Product.d.ts +92 -0
  99. package/lib/Types/Product.js +3 -0
  100. package/lib/Types/Signal.d.ts +68 -0
  101. package/lib/Types/Signal.js +3 -0
  102. package/lib/Types/Socket.d.ts +122 -0
  103. package/lib/Types/Socket.js +3 -0
  104. package/lib/Types/State.d.ts +41 -0
  105. package/lib/Types/State.js +14 -0
  106. package/lib/Types/USync.d.ts +26 -0
  107. package/lib/Types/USync.js +3 -0
  108. package/lib/Types/index.d.ts +80 -0
  109. package/lib/Types/index.js +48 -0
  110. package/lib/Utils/auth-utils.d.ts +21 -0
  111. package/lib/Utils/auth-utils.js +205 -0
  112. package/lib/Utils/baileys-event-stream.d.ts +18 -0
  113. package/lib/Utils/baileys-event-stream.js +70 -0
  114. package/lib/Utils/branding.d.ts +24 -0
  115. package/lib/Utils/branding.js +209 -0
  116. package/lib/Utils/business.d.ts +29 -0
  117. package/lib/Utils/business.js +255 -0
  118. package/lib/Utils/chat-utils.d.ts +82 -0
  119. package/lib/Utils/chat-utils.js +798 -0
  120. package/lib/Utils/check-npm-version.d.ts +18 -0
  121. package/lib/Utils/check-npm-version.js +130 -0
  122. package/lib/Utils/crypto.d.ts +56 -0
  123. package/lib/Utils/crypto.js +179 -0
  124. package/lib/Utils/decode-wa-message.d.ts +41 -0
  125. package/lib/Utils/decode-wa-message.js +288 -0
  126. package/lib/Utils/event-buffer.d.ts +39 -0
  127. package/lib/Utils/event-buffer.js +565 -0
  128. package/lib/Utils/generics.d.ts +129 -0
  129. package/lib/Utils/generics.js +630 -0
  130. package/lib/Utils/history.d.ts +23 -0
  131. package/lib/Utils/history.js +110 -0
  132. package/lib/Utils/index.d.ts +22 -0
  133. package/lib/Utils/index.js +42 -0
  134. package/lib/Utils/link-preview.d.ts +23 -0
  135. package/lib/Utils/link-preview.js +120 -0
  136. package/lib/Utils/logger.d.ts +13 -0
  137. package/lib/Utils/logger.js +7 -0
  138. package/lib/Utils/lt-hash.d.ts +14 -0
  139. package/lib/Utils/lt-hash.js +58 -0
  140. package/lib/Utils/make-mutex.d.ts +9 -0
  141. package/lib/Utils/make-mutex.js +49 -0
  142. package/lib/Utils/message-retry-manager.d.ts +84 -0
  143. package/lib/Utils/message-retry-manager.js +179 -0
  144. package/lib/Utils/messages-media.d.ts +129 -0
  145. package/lib/Utils/messages-media.js +806 -0
  146. package/lib/Utils/messages.d.ts +103 -0
  147. package/lib/Utils/messages.js +1579 -0
  148. package/lib/Utils/noise-handler.d.ts +20 -0
  149. package/lib/Utils/noise-handler.js +155 -0
  150. package/lib/Utils/process-message.d.ts +49 -0
  151. package/lib/Utils/process-message.js +443 -0
  152. package/lib/Utils/signal.d.ts +42 -0
  153. package/lib/Utils/signal.js +168 -0
  154. package/lib/Utils/use-mongo-file-auth-state.d.ts +6 -0
  155. package/lib/Utils/use-mongo-file-auth-state.js +84 -0
  156. package/lib/Utils/use-multi-file-auth-state.d.ts +18 -0
  157. package/lib/Utils/use-multi-file-auth-state.js +249 -0
  158. package/lib/Utils/use-single-file-auth-state.d.ts +13 -0
  159. package/lib/Utils/use-single-file-auth-state.js +80 -0
  160. package/lib/Utils/validate-connection.d.ts +13 -0
  161. package/lib/Utils/validate-connection.js +218 -0
  162. package/lib/WABinary/constants.d.ts +30 -0
  163. package/lib/WABinary/constants.js +1316 -0
  164. package/lib/WABinary/decode.d.ts +9 -0
  165. package/lib/WABinary/decode.js +288 -0
  166. package/lib/WABinary/encode.d.ts +3 -0
  167. package/lib/WABinary/encode.js +265 -0
  168. package/lib/WABinary/generic-utils.d.ts +28 -0
  169. package/lib/WABinary/generic-utils.js +142 -0
  170. package/lib/WABinary/index.d.ts +5 -0
  171. package/lib/WABinary/index.js +25 -0
  172. package/lib/WABinary/jid-utils.d.ts +59 -0
  173. package/lib/WABinary/jid-utils.js +105 -0
  174. package/lib/WABinary/types.d.ts +22 -0
  175. package/lib/WABinary/types.js +3 -0
  176. package/lib/WAM/BinaryInfo.d.ts +16 -0
  177. package/lib/WAM/BinaryInfo.js +17 -0
  178. package/lib/WAM/constants.d.ts +47 -0
  179. package/lib/WAM/constants.js +15371 -0
  180. package/lib/WAM/encode.d.ts +3 -0
  181. package/lib/WAM/encode.js +165 -0
  182. package/lib/WAM/index.d.ts +3 -0
  183. package/lib/WAM/index.js +23 -0
  184. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +28 -0
  185. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +69 -0
  186. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  187. package/lib/WAUSync/Protocols/USyncContactProtocol.js +36 -0
  188. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +26 -0
  189. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +62 -0
  190. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +14 -0
  191. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +35 -0
  192. package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +9 -0
  193. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  194. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +14 -0
  195. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +46 -0
  196. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  197. package/lib/WAUSync/Protocols/index.js +26 -0
  198. package/lib/WAUSync/USyncQuery.d.ts +31 -0
  199. package/lib/WAUSync/USyncQuery.js +82 -0
  200. package/lib/WAUSync/USyncUser.d.ts +12 -0
  201. package/lib/WAUSync/USyncUser.js +30 -0
  202. package/lib/WAUSync/index.d.ts +3 -0
  203. package/lib/WAUSync/index.js +23 -0
  204. package/lib/index.d.ts +13 -0
  205. package/lib/index.js +33 -0
  206. package/package.json +120 -0
@@ -0,0 +1,288 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const boom_1 = require("@hapi/boom")
6
+ const WAProto_1 = require("../../WAProto")
7
+ const WABinary_1 = require("../WABinary")
8
+ const generics_1 = require("./generics")
9
+ const messages_1 = require("./messages")
10
+
11
+ const NO_MESSAGE_FOUND_ERROR_TEXT = 'Message absent from node'
12
+
13
+ const MISSING_KEYS_ERROR_TEXT = 'Key used already or never filled'
14
+
15
+ const NACK_REASONS = {
16
+ ParsingError: 487,
17
+ UnrecognizedStanza: 488,
18
+ UnrecognizedStanzaClass: 489,
19
+ UnrecognizedStanzaType: 490,
20
+ InvalidProtobuf: 491,
21
+ InvalidHostedCompanionStanza: 493,
22
+ MissingMessageSecret: 495,
23
+ SignalErrorOldCounter: 496,
24
+ MessageDeletedOnPeer: 499,
25
+ UnhandledError: 500,
26
+ UnsupportedAdminRevoke: 550,
27
+ UnsupportedLIDGroup: 551,
28
+ DBOperationFailed: 552
29
+ }
30
+
31
+ /**
32
+ * Decode the received node as a message.
33
+ * @note this will only parse the message, not decrypt it
34
+ */
35
+ function decodeMessageNode(stanza, meId, meLid) {
36
+ let msgType
37
+ let chatId
38
+ let author
39
+ const msgId = stanza.attrs.id
40
+ const from = stanza.attrs.from
41
+ let participant = stanza.attrs.participant
42
+ if (participant && participant.endsWith('@lid') && stanza.attrs.participant_pn) {
43
+ participant = stanza.attrs.participant_pn;
44
+ }
45
+ const recipient = stanza.attrs.recipient
46
+ const isMe = (jid) => WABinary_1.areJidsSameUser(jid, meId)
47
+ const isMeLid = (jid) => WABinary_1.areJidsSameUser(jid, meLid)
48
+ if (WABinary_1.isJidUser(from)) {
49
+ if (recipient) {
50
+ if (!isMe(from)) {
51
+ throw new boom_1.Boom('receipient present, but msg not from me', { data: stanza })
52
+ }
53
+ chatId = recipient
54
+ }
55
+ else {
56
+ chatId = from
57
+ }
58
+ msgType = 'chat'
59
+ author = from
60
+ }
61
+ else if (WABinary_1.isLidUser(from)) {
62
+ if (recipient) {
63
+ if (!isMeLid(from)) {
64
+ throw new boom_1.Boom('receipient present, but msg not from me', { data: stanza })
65
+ }
66
+ chatId = recipient
67
+ }
68
+ else {
69
+ chatId = from
70
+ }
71
+ msgType = 'chat'
72
+ author = from
73
+ }
74
+ else if (WABinary_1.isJidGroup(from)) {
75
+ if (!participant) {
76
+ throw new boom_1.Boom('No participant in group message')
77
+ }
78
+ msgType = 'group'
79
+ author = participant
80
+ chatId = from
81
+ }
82
+ else if (WABinary_1.isJidBroadcast(from)) {
83
+ if (!participant) {
84
+ throw new boom_1.Boom('No participant in group message')
85
+ }
86
+ const isParticipantMe = isMe(participant)
87
+ if (WABinary_1.isJidStatusBroadcast(from)) {
88
+ msgType = isParticipantMe ? 'direct_peer_status' : 'other_status'
89
+ }
90
+ else {
91
+ msgType = isParticipantMe ? 'peer_broadcast' : 'other_broadcast'
92
+ }
93
+ chatId = from
94
+ author = participant
95
+ }
96
+ else if (WABinary_1.isJidNewsletter(from)) {
97
+ msgType = 'newsletter'
98
+ chatId = from
99
+ author = from
100
+ }
101
+ else {
102
+ throw new boom_1.Boom('Unknown message type', { data: stanza })
103
+ }
104
+ const senderJid = stanza.attrs.participant || stanza.attrs.from;
105
+
106
+ const fromMe = WABinary_1.isJidNewsletter(stanza.attrs.from)
107
+ ? !!stanza.attrs?.is_sender
108
+ : WABinary_1.isLidUser(senderJid)
109
+ ? (0, WABinary_1.areJidsSameUser)(senderJid, meLid)
110
+ : (0, WABinary_1.areJidsSameUser)(senderJid, meId);
111
+
112
+ const pushname = stanza?.attrs?.notify
113
+ const key = {
114
+ remoteJid: chatId,
115
+ fromMe,
116
+ id: msgId,
117
+ ...(participant !== undefined && { participant: fromMe ? meId : participant }),
118
+ ...(stanza.attrs.participant_pn !== undefined && { participant_pn: fromMe ? meId : stanza.attrs.participant_pn }),
119
+ ...(stanza.attrs.participant_lid !== undefined && { participant_lid: fromMe ? meLid : stanza.attrs.participant_lid }),
120
+ }
121
+ const fullMessage = {
122
+ key,
123
+ messageTimestamp: +stanza.attrs.t,
124
+ pushName: pushname,
125
+ broadcast: WABinary_1.isJidBroadcast(from),
126
+ newsletter: WABinary_1.isJidNewsletter(from),
127
+ additionalAttributes: stanza.attrs
128
+ }
129
+ if (msgType === 'newsletter') {
130
+ fullMessage.newsletter_server_id = +stanza.attrs?.server_id
131
+ }
132
+ if (key.fromMe) {
133
+ fullMessage.status = WAProto_1.proto.WebMessageInfo.Status.SERVER_ACK
134
+ }
135
+ if (!key.fromMe) {
136
+ fullMessage.platform = messages_1.getDevice(key.id)
137
+ }
138
+ return {
139
+ fullMessage,
140
+ author,
141
+ sender: msgType === 'chat' ? author : chatId
142
+ }
143
+ }
144
+
145
+ const decryptMessageNode = (stanza, meId, meLid, repository, logger) => {
146
+ const { fullMessage, author, sender } = decodeMessageNode(stanza, meId, meLid)
147
+ return {
148
+ fullMessage,
149
+ category: stanza.attrs.category,
150
+ author,
151
+ async decrypt() {
152
+ const normalizeDecryptJid = (jid = '') => {
153
+ const value = String(jid || '').trim()
154
+ if (!value || !value.includes('@')) {
155
+ return ''
156
+ }
157
+ return WABinary_1.jidNormalizedUser(value)
158
+ }
159
+ let decryptables = 0
160
+ if (Array.isArray(stanza.content)) {
161
+ for (const { tag, attrs, content } of stanza.content) {
162
+ if (tag === 'verified_name' && content instanceof Uint8Array) {
163
+ const cert = WAProto_1.proto.VerifiedNameCertificate.decode(content)
164
+ const details = WAProto_1.proto.VerifiedNameCertificate.Details.decode(cert.details)
165
+ fullMessage.verifiedBizName = details.verifiedName
166
+ }
167
+ if (tag === 'multicast' && content instanceof Uint8Array) {
168
+ fullMessage.multicast = true
169
+ }
170
+ if (tag === 'meta' && content instanceof Uint8Array) {
171
+ fullMessage.metaInfo = {
172
+ targetID: attrs.target_id
173
+ }
174
+ if (attrs.target_sender_jid) {
175
+ fullMessage.metaInfo.targetSender = WABinary_1.jidNormalizedUser(attrs.target_sender_jid)
176
+ }
177
+ }
178
+ if (tag === 'bot' && content instanceof Uint8Array) {
179
+ if (attrs.edit) {
180
+ fullMessage.botInfo = {
181
+ editType: attrs.edit,
182
+ editTargetID: attrs.edit_target_id,
183
+ editSenderTimestampMS: attrs.sender_timestamp_ms
184
+ }
185
+ }
186
+ }
187
+ if (tag !== 'enc' && tag !== 'plaintext') {
188
+ continue
189
+ }
190
+ if (!(content instanceof Uint8Array)) {
191
+ continue
192
+ }
193
+ decryptables += 1
194
+ let msgBuffer
195
+ try {
196
+ const e2eType = tag === 'plaintext' ? 'plaintext' : attrs.type
197
+ switch (e2eType) {
198
+ case 'skmsg':
199
+ msgBuffer = await repository.decryptGroupMessage({
200
+ group: sender,
201
+ authorJid: author,
202
+ msg: content
203
+ })
204
+ break
205
+ case 'pkmsg':
206
+ case 'msg':
207
+ {
208
+ const primaryUser = WABinary_1.isJidUser(sender) ? sender : author
209
+ const pnCandidate = normalizeDecryptJid(
210
+ stanza.attrs.sender_pn ||
211
+ stanza.attrs.peer_recipient_pn ||
212
+ stanza.attrs.participant_pn ||
213
+ fullMessage.key?.participant_pn ||
214
+ ''
215
+ )
216
+ const decryptCandidates = Array.from(new Set([
217
+ normalizeDecryptJid(primaryUser),
218
+ pnCandidate
219
+ ].filter(Boolean)))
220
+ let lastDecryptError = null
221
+
222
+ for (const candidate of decryptCandidates) {
223
+ try {
224
+ msgBuffer = await repository.decryptMessage({
225
+ jid: candidate,
226
+ type: e2eType,
227
+ ciphertext: content
228
+ })
229
+ lastDecryptError = null
230
+ break
231
+ }
232
+ catch (error) {
233
+ lastDecryptError = error
234
+ }
235
+ }
236
+
237
+ if (lastDecryptError) {
238
+ throw lastDecryptError
239
+ }
240
+ }
241
+ break
242
+ case 'plaintext':
243
+ msgBuffer = content
244
+ break
245
+ default:
246
+ throw new Error(`Unknown e2e type: ${e2eType}`)
247
+ }
248
+ let msg = WAProto_1.proto.Message.decode(e2eType !== 'plaintext' ? generics_1.unpadRandomMax16(msgBuffer) : msgBuffer)
249
+ msg = msg.deviceSentMessage?.message || msg
250
+ if (msg.senderKeyDistributionMessage) {
251
+ //eslint-disable-next-line max-depth
252
+ try {
253
+ await repository.processSenderKeyDistributionMessage({
254
+ authorJid: author,
255
+ item: msg.senderKeyDistributionMessage
256
+ })
257
+ }
258
+ catch (err) {
259
+ logger.error({ key: fullMessage.key, err }, 'failed to decrypt message')
260
+ }
261
+ }
262
+ if (fullMessage.message) {
263
+ Object.assign(fullMessage.message, msg)
264
+ }
265
+ else {
266
+ fullMessage.message = msg
267
+ }
268
+ }
269
+ catch (err) {
270
+ logger.error({ key: fullMessage.key, err }, 'failed to decrypt message')
271
+ fullMessage.messageStubType = WAProto_1.proto.WebMessageInfo.StubType.CIPHERTEXT
272
+ fullMessage.messageStubParameters = [err.message]
273
+ }
274
+ }
275
+ }
276
+ // if nothing was found to decrypt
277
+ if (!decryptables) {
278
+ fullMessage.messageStubType = WAProto_1.proto.WebMessageInfo.StubType.CIPHERTEXT
279
+ fullMessage.messageStubParameters = [NO_MESSAGE_FOUND_ERROR_TEXT]
280
+ }
281
+ }
282
+ }
283
+ }
284
+
285
+ module.exports = {
286
+ decodeMessageNode,
287
+ decryptMessageNode
288
+ }
@@ -0,0 +1,39 @@
1
+ import { BaileysEventEmitter, BaileysEventMap } from '../Types'
2
+ import { ILogger } from './logger'
3
+
4
+ /**
5
+ * A map that contains a list of all events that have been triggered
6
+ *
7
+ * Note, this can contain different type of events
8
+ * this can make processing events extremely efficient -- since everything
9
+ * can be done in a single transaction
10
+ */
11
+ type BaileysEventData = Partial<BaileysEventMap>
12
+
13
+ type BaileysBufferableEventEmitter = BaileysEventEmitter & {
14
+ /** Use to process events in a batch */
15
+ process(handler: (events: BaileysEventData) => void | Promise<void>): (() => void)
16
+ /**
17
+ * starts buffering events, call flush() to release them
18
+ * */
19
+ buffer(): void
20
+ /** buffers all events till the promise completes */
21
+ createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): ((...args: A) => Promise<T>)
22
+ /**
23
+ * flushes all buffered events
24
+ * @param force if true, will flush all data regardless of any pending buffers
25
+ * @returns returns true if the flush actually happened, otherwise false
26
+ */
27
+ flush(force?: boolean): boolean
28
+ /** is there an ongoing buffer */
29
+ isBuffering(): boolean
30
+ }
31
+
32
+ /**
33
+ * The event buffer logically consolidates different events into a single event
34
+ * making the data processing more efficient.
35
+ * @param ev the baileys event emitter
36
+ */
37
+ export declare const makeEventBuffer: (logger: ILogger) => BaileysBufferableEventEmitter
38
+
39
+ export {}