@pontalabs/baileys 1.0.5 → 1.0.6
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.
- package/LICENSE +1 -1
- package/README.md +267 -839
- package/WAProto/GenerateStatics.sh +3 -4
- package/WAProto/WAProto.proto +1215 -511
- package/WAProto/fix-imports.js +85 -0
- package/WAProto/index.d.ts +14017 -55
- package/WAProto/index.js +97689 -29
- package/engine-requirements.js +10 -0
- package/lib/Defaults/index.d.ts +72 -74
- package/lib/Defaults/index.d.ts.map +1 -0
- package/lib/Defaults/index.js +94 -108
- package/lib/Defaults/index.js.map +1 -0
- package/lib/Signal/Group/ciphertext-message.d.ts +8 -7
- package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
- package/lib/Signal/Group/ciphertext-message.js +9 -16
- package/lib/Signal/Group/ciphertext-message.js.map +1 -0
- package/lib/Signal/Group/group-session-builder.d.ts +11 -13
- package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
- package/lib/Signal/Group/group-session-builder.js +19 -61
- package/lib/Signal/Group/group-session-builder.js.map +1 -0
- package/lib/Signal/Group/group_cipher.d.ts +14 -16
- package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
- package/lib/Signal/Group/group_cipher.js +41 -70
- package/lib/Signal/Group/group_cipher.js.map +1 -0
- package/lib/Signal/Group/index.d.ts +12 -11
- package/lib/Signal/Group/index.d.ts.map +1 -0
- package/lib/Signal/Group/index.js +12 -61
- package/lib/Signal/Group/index.js.map +1 -0
- package/lib/Signal/Group/keyhelper.d.ts +9 -14
- package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
- package/lib/Signal/Group/keyhelper.js +10 -58
- package/lib/Signal/Group/keyhelper.js.map +1 -0
- package/lib/Signal/Group/sender-chain-key.d.ts +13 -13
- package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
- package/lib/Signal/Group/sender-chain-key.js +13 -34
- package/lib/Signal/Group/sender-chain-key.js.map +1 -0
- package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -16
- package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-distribution-message.js +28 -36
- package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
- package/lib/Signal/Group/sender-key-message.d.ts +18 -18
- package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-message.js +38 -45
- package/lib/Signal/Group/sender-key-message.js.map +1 -0
- package/lib/Signal/Group/sender-key-name.d.ts +14 -15
- package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-name.js +20 -31
- package/lib/Signal/Group/sender-key-name.js.map +1 -0
- package/lib/Signal/Group/sender-key-record.d.ts +24 -25
- package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-record.js +18 -35
- package/lib/Signal/Group/sender-key-record.js.map +1 -0
- package/lib/Signal/Group/sender-key-state.d.ts +29 -34
- package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-state.js +37 -100
- package/lib/Signal/Group/sender-key-state.js.map +1 -0
- package/lib/Signal/Group/sender-message-key.d.ts +11 -10
- package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
- package/lib/Signal/Group/sender-message-key.js +15 -22
- package/lib/Signal/Group/sender-message-key.js.map +1 -0
- package/lib/Signal/libsignal.d.ts +5 -8
- package/lib/Signal/libsignal.d.ts.map +1 -0
- package/lib/Signal/libsignal.js +288 -142
- package/lib/Signal/libsignal.js.map +1 -0
- package/lib/Signal/lid-mapping.d.ts +23 -28
- package/lib/Signal/lid-mapping.d.ts.map +1 -0
- package/lib/Signal/lid-mapping.js +277 -184
- package/lib/Signal/lid-mapping.js.map +1 -0
- package/lib/Socket/Client/index.d.ts +3 -2
- package/lib/Socket/Client/index.d.ts.map +1 -0
- package/lib/Socket/Client/index.js +3 -22
- package/lib/Socket/Client/index.js.map +1 -0
- package/lib/Socket/Client/types.d.ts +15 -15
- package/lib/Socket/Client/types.d.ts.map +1 -0
- package/lib/Socket/Client/types.js +8 -15
- package/lib/Socket/Client/types.js.map +1 -0
- package/lib/Socket/Client/websocket.d.ts +12 -12
- package/lib/Socket/Client/websocket.d.ts.map +1 -0
- package/lib/Socket/Client/websocket.js +29 -37
- package/lib/Socket/Client/websocket.js.map +1 -0
- package/lib/Socket/business.d.ts +208 -178
- package/lib/Socket/business.d.ts.map +1 -0
- package/lib/Socket/business.js +91 -127
- package/lib/Socket/business.js.map +1 -0
- package/lib/Socket/chats.d.ts +120 -93
- package/lib/Socket/chats.d.ts.map +1 -0
- package/lib/Socket/chats.js +727 -652
- package/lib/Socket/chats.js.map +1 -0
- package/lib/Socket/communities.d.ts +273 -0
- package/lib/Socket/communities.d.ts.map +1 -0
- package/lib/Socket/communities.js +431 -0
- package/lib/Socket/communities.js.map +1 -0
- package/lib/Socket/dugong.js +261 -0
- package/lib/Socket/dugong.js.bak +204 -0
- package/lib/Socket/groups.d.ts +143 -111
- package/lib/Socket/groups.d.ts.map +1 -0
- package/lib/Socket/groups.js +165 -177
- package/lib/Socket/groups.js.map +1 -0
- package/lib/Socket/index.d.ts +252 -183
- package/lib/Socket/index.d.ts.map +1 -0
- package/lib/Socket/index.js +38 -18
- package/lib/Socket/index.js.bak +44 -0
- package/lib/Socket/index.js.map +1 -0
- package/lib/Socket/messages-recv.d.ts +196 -167
- package/lib/Socket/messages-recv.d.ts.map +1 -0
- package/lib/Socket/messages-recv.js +1443 -1563
- package/lib/Socket/messages-recv.js.map +1 -0
- package/lib/Socket/messages-send.d.ts +192 -158
- package/lib/Socket/messages-send.d.ts.map +1 -0
- package/lib/Socket/messages-send.js +1102 -1208
- package/lib/Socket/messages-send.js.bak +1400 -0
- package/lib/Socket/messages-send.js.map +1 -0
- package/lib/Socket/mex.d.ts +3 -0
- package/lib/Socket/mex.d.ts.map +1 -0
- package/lib/Socket/mex.js +42 -0
- package/lib/Socket/mex.js.map +1 -0
- package/lib/Socket/newsletter.d.ts +163 -138
- package/lib/Socket/newsletter.d.ts.map +1 -0
- package/lib/Socket/newsletter.js +153 -249
- package/lib/Socket/newsletter.js.map +1 -0
- package/lib/Socket/socket.d.ts +50 -36
- package/lib/Socket/socket.d.ts.map +1 -0
- package/lib/Socket/socket.js +749 -820
- package/lib/Socket/socket.js.map +1 -0
- package/lib/Store/index.d.ts +4 -4
- package/lib/Store/index.d.ts.map +1 -0
- package/lib/Store/index.js +4 -24
- package/lib/Store/index.js.map +1 -0
- package/lib/Store/make-in-memory-store.d.ts +44 -104
- package/lib/Store/make-in-memory-store.d.ts.map +1 -0
- package/lib/Store/make-in-memory-store.js +199 -213
- package/lib/Store/make-in-memory-store.js.map +1 -0
- package/lib/Store/make-ordered-dictionary.d.ts +13 -12
- package/lib/Store/make-ordered-dictionary.d.ts.map +1 -0
- package/lib/Store/make-ordered-dictionary.js +38 -45
- package/lib/Store/make-ordered-dictionary.js.map +1 -0
- package/lib/Store/object-repository.d.ts +11 -10
- package/lib/Store/object-repository.d.ts.map +1 -0
- package/lib/Store/object-repository.js +9 -16
- package/lib/Store/object-repository.js.map +1 -0
- package/lib/Types/Auth.d.ts +93 -97
- package/lib/Types/Auth.d.ts.map +1 -0
- package/lib/Types/Auth.js +2 -3
- package/lib/Types/Auth.js.map +1 -0
- package/lib/Types/Bussines.d.ts +25 -0
- package/lib/Types/Bussines.d.ts.map +1 -0
- package/lib/Types/Bussines.js +2 -3
- package/lib/Types/Bussines.js.map +1 -0
- package/lib/Types/Call.d.ts +14 -13
- package/lib/Types/Call.d.ts.map +1 -0
- package/lib/Types/Call.js +2 -3
- package/lib/Types/Call.js.map +1 -0
- package/lib/Types/Chat.d.ts +78 -97
- package/lib/Types/Chat.d.ts.map +1 -0
- package/lib/Types/Chat.js +8 -9
- package/lib/Types/Chat.js.map +1 -0
- package/lib/Types/Contact.d.ts +12 -9
- package/lib/Types/Contact.d.ts.map +1 -0
- package/lib/Types/Contact.js +2 -3
- package/lib/Types/Contact.js.map +1 -0
- package/lib/Types/Events.d.ts +206 -176
- package/lib/Types/Events.d.ts.map +1 -0
- package/lib/Types/Events.js +2 -3
- package/lib/Types/Events.js.map +1 -0
- package/lib/Types/GroupMetadata.d.ts +53 -48
- package/lib/Types/GroupMetadata.d.ts.map +1 -0
- package/lib/Types/GroupMetadata.js +2 -3
- package/lib/Types/GroupMetadata.js.map +1 -0
- package/lib/Types/Label.d.ts +13 -14
- package/lib/Types/Label.d.ts.map +1 -0
- package/lib/Types/Label.js +24 -30
- package/lib/Types/Label.js.map +1 -0
- package/lib/Types/LabelAssociation.d.ts +15 -20
- package/lib/Types/LabelAssociation.d.ts.map +1 -0
- package/lib/Types/LabelAssociation.js +6 -12
- package/lib/Types/LabelAssociation.js.map +1 -0
- package/lib/Types/Message.d.ts +248 -412
- package/lib/Types/Message.d.ts.map +1 -0
- package/lib/Types/Message.js +17 -19
- package/lib/Types/Message.js.map +1 -0
- package/lib/Types/Mex.d.ts +141 -0
- package/lib/Types/Mex.d.ts.map +1 -0
- package/lib/Types/Mex.js +37 -0
- package/lib/Types/Mex.js.map +1 -0
- package/lib/Types/Product.d.ts +58 -71
- package/lib/Types/Product.d.ts.map +1 -0
- package/lib/Types/Product.js +2 -3
- package/lib/Types/Product.js.map +1 -0
- package/lib/Types/RichType.d.ts +3 -0
- package/lib/Types/RichType.d.ts.map +1 -0
- package/lib/Types/RichType.js +23 -0
- package/lib/Types/RichType.js.bak +23 -0
- package/lib/Types/RichType.js.map +1 -0
- package/lib/Types/Signal.d.ts +71 -82
- package/lib/Types/Signal.d.ts.map +1 -0
- package/lib/Types/Signal.js +2 -3
- package/lib/Types/Signal.js.map +1 -0
- package/lib/Types/Socket.d.ts +76 -81
- package/lib/Types/Socket.d.ts.map +1 -0
- package/lib/Types/Socket.js +3 -3
- package/lib/Types/Socket.js.map +1 -0
- package/lib/Types/State.d.ts +75 -19
- package/lib/Types/State.d.ts.map +1 -0
- package/lib/Types/State.js +56 -14
- package/lib/Types/State.js.map +1 -0
- package/lib/Types/USync.d.ts +8 -8
- package/lib/Types/USync.d.ts.map +1 -0
- package/lib/Types/USync.js +2 -3
- package/lib/Types/USync.js.map +1 -0
- package/lib/Types/index.d.ts +47 -62
- package/lib/Types/index.d.ts.map +1 -0
- package/lib/Types/index.js +26 -50
- package/lib/Types/index.js.map +1 -0
- package/lib/Utils/auth-utils.d.ts +13 -10
- package/lib/Utils/auth-utils.d.ts.map +1 -0
- package/lib/Utils/auth-utils.js +213 -472
- package/lib/Utils/auth-utils.js.map +1 -0
- package/lib/Utils/browser-utils.d.ts +4 -0
- package/lib/Utils/browser-utils.d.ts.map +1 -0
- package/lib/Utils/browser-utils.js +28 -0
- package/lib/Utils/browser-utils.js.map +1 -0
- package/lib/Utils/business.d.ts +14 -20
- package/lib/Utils/business.d.ts.map +1 -0
- package/lib/Utils/business.js +110 -134
- package/lib/Utils/business.js.map +1 -0
- package/lib/Utils/chat-utils.d.ts +88 -70
- package/lib/Utils/chat-utils.d.ts.map +1 -0
- package/lib/Utils/chat-utils.js +466 -403
- package/lib/Utils/chat-utils.js.map +1 -0
- package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
- package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
- package/lib/Utils/companion-reg-client-utils.js +35 -0
- package/lib/Utils/companion-reg-client-utils.js.map +1 -0
- package/lib/Utils/crypto.d.ts +27 -46
- package/lib/Utils/crypto.d.ts.map +1 -0
- package/lib/Utils/crypto.js +117 -188
- package/lib/Utils/crypto.js.map +1 -0
- package/lib/Utils/decode-wa-message.d.ts +58 -45
- package/lib/Utils/decode-wa-message.d.ts.map +1 -0
- package/lib/Utils/decode-wa-message.js +213 -303
- package/lib/Utils/decode-wa-message.js.map +1 -0
- package/lib/Utils/event-buffer.d.ts +14 -17
- package/lib/Utils/event-buffer.d.ts.map +1 -0
- package/lib/Utils/event-buffer.js +321 -296
- package/lib/Utils/event-buffer.js.map +1 -0
- package/lib/Utils/generics.d.ts +66 -92
- package/lib/Utils/generics.d.ts.map +1 -0
- package/lib/Utils/generics.js +270 -436
- package/lib/Utils/generics.js.map +1 -0
- package/lib/Utils/history.d.ts +24 -23
- package/lib/Utils/history.d.ts.map +1 -0
- package/lib/Utils/history.js +106 -76
- package/lib/Utils/history.js.map +1 -0
- package/lib/Utils/identity-change-handler.d.ts +44 -0
- package/lib/Utils/identity-change-handler.d.ts.map +1 -0
- package/lib/Utils/identity-change-handler.js +50 -0
- package/lib/Utils/identity-change-handler.js.map +1 -0
- package/lib/Utils/index.d.ts +24 -21
- package/lib/Utils/index.d.ts.map +1 -0
- package/lib/Utils/index.js +24 -41
- package/lib/Utils/index.js.map +1 -0
- package/lib/Utils/link-preview.d.ts +12 -14
- package/lib/Utils/link-preview.d.ts.map +1 -0
- package/lib/Utils/link-preview.js +40 -75
- package/lib/Utils/link-preview.js.map +1 -0
- package/lib/Utils/logger.d.ts +10 -11
- package/lib/Utils/logger.d.ts.map +1 -0
- package/lib/Utils/logger.js +3 -7
- package/lib/Utils/logger.js.map +1 -0
- package/lib/Utils/lt-hash.d.ts +8 -14
- package/lib/Utils/lt-hash.d.ts.map +1 -0
- package/lib/Utils/lt-hash.js +3 -53
- package/lib/Utils/lt-hash.js.map +1 -0
- package/lib/Utils/make-mutex.d.ts +7 -7
- package/lib/Utils/make-mutex.d.ts.map +1 -0
- package/lib/Utils/make-mutex.js +28 -44
- package/lib/Utils/make-mutex.js.map +1 -0
- package/lib/Utils/message-retry-manager.d.ts +115 -88
- package/lib/Utils/message-retry-manager.d.ts.map +1 -0
- package/lib/Utils/message-retry-manager.js +265 -160
- package/lib/Utils/message-retry-manager.js.map +1 -0
- package/lib/Utils/messages-media.d.ts +105 -107
- package/lib/Utils/messages-media.d.ts.map +1 -0
- package/lib/Utils/messages-media.js +548 -619
- package/lib/Utils/messages-media.js.bak +786 -0
- package/lib/Utils/messages-media.js.map +1 -0
- package/lib/Utils/messages.d.ts +52 -66
- package/lib/Utils/messages.d.ts.map +1 -0
- package/lib/Utils/messages.js +1730 -1558
- package/lib/Utils/messages.js.backup +1768 -0
- package/lib/Utils/messages.js.bak +1809 -0
- package/lib/Utils/messages.js.bak2 +893 -0
- package/lib/Utils/messages.js.bak3 +1183 -0
- package/lib/Utils/messages.js.map +1 -0
- package/lib/Utils/noise-handler.d.ts +18 -18
- package/lib/Utils/noise-handler.d.ts.map +1 -0
- package/lib/Utils/noise-handler.js +176 -130
- package/lib/Utils/noise-handler.js.map +1 -0
- package/lib/Utils/offline-node-processor.d.ts +17 -0
- package/lib/Utils/offline-node-processor.d.ts.map +1 -0
- package/lib/Utils/offline-node-processor.js +40 -0
- package/lib/Utils/offline-node-processor.js.map +1 -0
- package/lib/Utils/pre-key-manager.d.ts +28 -0
- package/lib/Utils/pre-key-manager.d.ts.map +1 -0
- package/lib/Utils/pre-key-manager.js +106 -0
- package/lib/Utils/pre-key-manager.js.map +1 -0
- package/lib/Utils/process-message.d.ts +43 -32
- package/lib/Utils/process-message.d.ts.map +1 -0
- package/lib/Utils/process-message.js +484 -282
- package/lib/Utils/process-message.js.map +1 -0
- package/lib/Utils/reporting-utils.d.ts +11 -0
- package/lib/Utils/reporting-utils.d.ts.map +1 -0
- package/lib/Utils/reporting-utils.js +258 -0
- package/lib/Utils/reporting-utils.js.map +1 -0
- package/lib/Utils/rich-message-utils.d.ts +49 -0
- package/lib/Utils/rich-message-utils.d.ts.map +1 -0
- package/lib/Utils/rich-message-utils.js +1220 -724
- package/lib/Utils/rich-message-utils.js.backup +706 -0
- package/lib/Utils/rich-message-utils.js.bak +246 -0
- package/lib/Utils/rich-message-utils.js.map +1 -0
- package/lib/Utils/rich-message-utils.js.original +1332 -0
- package/lib/Utils/signal.d.ts +37 -32
- package/lib/Utils/signal.d.ts.map +1 -0
- package/lib/Utils/signal.js +140 -105
- package/lib/Utils/signal.js.map +1 -0
- package/lib/Utils/stanza-ack.d.ts +11 -0
- package/lib/Utils/stanza-ack.d.ts.map +1 -0
- package/lib/Utils/stanza-ack.js +38 -0
- package/lib/Utils/stanza-ack.js.map +1 -0
- package/lib/Utils/sync-action-utils.d.ts +19 -0
- package/lib/Utils/sync-action-utils.d.ts.map +1 -0
- package/lib/Utils/sync-action-utils.js +49 -0
- package/lib/Utils/sync-action-utils.js.map +1 -0
- package/lib/Utils/tc-token-utils.d.ts +37 -0
- package/lib/Utils/tc-token-utils.d.ts.map +1 -0
- package/lib/Utils/tc-token-utils.js +163 -0
- package/lib/Utils/tc-token-utils.js.map +1 -0
- package/lib/Utils/use-multi-file-auth-state.d.ts +5 -5
- package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
- package/lib/Utils/use-multi-file-auth-state.js +70 -120
- package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
- package/lib/Utils/use-single-file-auth-state.d.ts +11 -13
- package/lib/Utils/use-single-file-auth-state.d.ts.map +1 -0
- package/lib/Utils/use-single-file-auth-state.js +92 -66
- package/lib/Utils/use-single-file-auth-state.js.map +1 -0
- package/lib/Utils/use-sqlite-auth-state.d.ts +11 -0
- package/lib/Utils/use-sqlite-auth-state.d.ts.map +1 -0
- package/lib/Utils/use-sqlite-auth-state.js +109 -0
- package/lib/Utils/use-sqlite-auth-state.js.map +1 -0
- package/lib/Utils/validate-connection.d.ts +11 -13
- package/lib/Utils/validate-connection.d.ts.map +1 -0
- package/lib/Utils/validate-connection.js +128 -113
- package/lib/Utils/validate-connection.js.map +1 -0
- package/lib/WABinary/constants.d.ts +25 -27
- package/lib/WABinary/constants.d.ts.map +1 -0
- package/lib/WABinary/constants.js +1451 -1292
- package/lib/WABinary/constants.js.bak +1373 -0
- package/lib/WABinary/constants.js.map +1 -0
- package/lib/WABinary/decode.d.ts +7 -9
- package/lib/WABinary/decode.d.ts.map +1 -0
- package/lib/WABinary/decode.js +163 -189
- package/lib/WABinary/decode.js.map +1 -0
- package/lib/WABinary/encode.d.ts +3 -3
- package/lib/WABinary/encode.d.ts.map +1 -0
- package/lib/WABinary/encode.js +110 -155
- package/lib/WABinary/encode.js.map +1 -0
- package/lib/WABinary/generic-utils.d.ts +14 -27
- package/lib/WABinary/generic-utils.d.ts.map +1 -0
- package/lib/WABinary/generic-utils.js +177 -105
- package/lib/WABinary/generic-utils.js.map +1 -0
- package/lib/WABinary/index.d.ts +6 -5
- package/lib/WABinary/index.d.ts.map +1 -0
- package/lib/WABinary/index.js +6 -25
- package/lib/WABinary/index.js.map +1 -0
- package/lib/WABinary/jid-utils.d.ts +41 -51
- package/lib/WABinary/jid-utils.d.ts.map +1 -0
- package/lib/WABinary/jid-utils.js +83 -120
- package/lib/WABinary/jid-utils.js.map +1 -0
- package/lib/WABinary/types.d.ts +10 -13
- package/lib/WABinary/types.d.ts.map +1 -0
- package/lib/WABinary/types.js +2 -3
- package/lib/WABinary/types.js.map +1 -0
- package/lib/WAM/BinaryInfo.d.ts +8 -15
- package/lib/WAM/BinaryInfo.d.ts.map +1 -0
- package/lib/WAM/BinaryInfo.js +7 -14
- package/lib/WAM/BinaryInfo.js.map +1 -0
- package/lib/WAM/constants.d.ts +30 -37
- package/lib/WAM/constants.d.ts.map +1 -0
- package/lib/WAM/constants.js +19193 -11711
- package/lib/WAM/constants.js.map +1 -0
- package/lib/WAM/encode.d.ts +3 -3
- package/lib/WAM/encode.d.ts.map +1 -0
- package/lib/WAM/encode.js +95 -109
- package/lib/WAM/encode.js.map +1 -0
- package/lib/WAM/index.d.ts +4 -3
- package/lib/WAM/index.d.ts.map +1 -0
- package/lib/WAM/index.js +4 -23
- package/lib/WAM/index.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -9
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +37 -21
- package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +19 -22
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +18 -26
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +11 -12
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +12 -20
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +11 -12
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +16 -24
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/index.d.ts +6 -6
- package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/index.js +6 -26
- package/lib/WAUSync/Protocols/index.js.map +1 -0
- package/lib/WAUSync/USyncQuery.d.ts +27 -28
- package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
- package/lib/WAUSync/USyncQuery.js +68 -62
- package/lib/WAUSync/USyncQuery.js.map +1 -0
- package/lib/WAUSync/USyncUser.d.ts +15 -10
- package/lib/WAUSync/USyncUser.d.ts.map +1 -0
- package/lib/WAUSync/USyncUser.js +20 -19
- package/lib/WAUSync/USyncUser.js.map +1 -0
- package/lib/WAUSync/index.d.ts +4 -3
- package/lib/WAUSync/index.d.ts.map +1 -0
- package/lib/WAUSync/index.js +4 -23
- package/lib/WAUSync/index.js.map +1 -0
- package/lib/index.d.ts +11 -12
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -39
- package/lib/index.js.map +1 -0
- package/package.json +86 -42
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
8
|
-
|
|
9
|
-
const events_1 = __importDefault(require("events"))
|
|
10
|
-
const Types_1 = require("../Types")
|
|
11
|
-
const generics_1 = require("./generics")
|
|
12
|
-
const messages_1 = require("./messages")
|
|
13
|
-
const process_message_1 = require("./process-message")
|
|
14
|
-
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
import { WAMessageStatus } from '../Types/index.js';
|
|
3
|
+
import { trimUndefined } from './generics.js';
|
|
4
|
+
import { updateMessageWithReaction, updateMessageWithReceipt } from './messages.js';
|
|
5
|
+
import { isRealMessage, shouldIncrementChatUnread } from './process-message.js';
|
|
15
6
|
const BUFFERABLE_EVENT = [
|
|
16
7
|
'messaging-history.set',
|
|
17
8
|
'chats.upsert',
|
|
@@ -22,155 +13,185 @@ const BUFFERABLE_EVENT = [
|
|
|
22
13
|
'messages.upsert',
|
|
23
14
|
'messages.update',
|
|
24
15
|
'messages.delete',
|
|
25
|
-
//'messages.poll',
|
|
26
16
|
'messages.reaction',
|
|
27
17
|
'message-receipt.update',
|
|
28
|
-
'groups.update'
|
|
29
|
-
]
|
|
30
|
-
|
|
31
|
-
const BUFFERABLE_EVENT_SET = new Set(BUFFERABLE_EVENT)
|
|
32
|
-
|
|
18
|
+
'groups.update'
|
|
19
|
+
];
|
|
20
|
+
const BUFFERABLE_EVENT_SET = new Set(BUFFERABLE_EVENT);
|
|
33
21
|
/**
|
|
34
22
|
* The event buffer logically consolidates different events into a single event
|
|
35
23
|
* making the data processing more efficient.
|
|
36
24
|
*/
|
|
37
|
-
const makeEventBuffer = (logger) => {
|
|
38
|
-
const ev = new
|
|
39
|
-
const historyCache = new Set()
|
|
40
|
-
let data = makeBufferData()
|
|
41
|
-
let isBuffering = false
|
|
42
|
-
let bufferTimeout = null
|
|
43
|
-
let flushPendingTimeout = null
|
|
44
|
-
let bufferCount = 0
|
|
45
|
-
const MAX_HISTORY_CACHE_SIZE = 10000 // Limit the history cache size to prevent memory bloat
|
|
46
|
-
const BUFFER_TIMEOUT_MS = 30000 // 30 seconds
|
|
47
|
-
|
|
25
|
+
export const makeEventBuffer = (logger) => {
|
|
26
|
+
const ev = new EventEmitter();
|
|
27
|
+
const historyCache = new Set();
|
|
28
|
+
let data = makeBufferData();
|
|
29
|
+
let isBuffering = false;
|
|
30
|
+
let bufferTimeout = null;
|
|
31
|
+
let flushPendingTimeout = null; // Add a specific timer for the debounced flush to prevent leak
|
|
32
|
+
let bufferCount = 0;
|
|
33
|
+
const MAX_HISTORY_CACHE_SIZE = 10000; // Limit the history cache size to prevent memory bloat
|
|
34
|
+
const BUFFER_TIMEOUT_MS = 30000; // 30 seconds
|
|
48
35
|
// take the generic event and fire it as a baileys event
|
|
49
36
|
ev.on('event', (map) => {
|
|
50
37
|
for (const event in map) {
|
|
51
|
-
ev.emit(event, map[event])
|
|
38
|
+
ev.emit(event, map[event]);
|
|
52
39
|
}
|
|
53
|
-
})
|
|
40
|
+
});
|
|
54
41
|
function buffer() {
|
|
55
42
|
if (!isBuffering) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// Auto-flush after a timeout to prevent infinite buffering
|
|
43
|
+
logger.debug('Event buffer activated');
|
|
44
|
+
isBuffering = true;
|
|
45
|
+
bufferCount = 0;
|
|
61
46
|
if (bufferTimeout) {
|
|
62
|
-
clearTimeout(bufferTimeout)
|
|
47
|
+
clearTimeout(bufferTimeout);
|
|
63
48
|
}
|
|
64
|
-
|
|
65
49
|
bufferTimeout = setTimeout(() => {
|
|
66
50
|
if (isBuffering) {
|
|
67
|
-
logger.warn('Buffer timeout reached, auto-flushing')
|
|
68
|
-
flush()
|
|
51
|
+
logger.warn('Buffer timeout reached, auto-flushing');
|
|
52
|
+
flush();
|
|
69
53
|
}
|
|
70
|
-
}, BUFFER_TIMEOUT_MS)
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
bufferCount++
|
|
54
|
+
}, BUFFER_TIMEOUT_MS);
|
|
74
55
|
}
|
|
56
|
+
// Always increment count when requested
|
|
57
|
+
bufferCount++;
|
|
75
58
|
}
|
|
76
59
|
function flush() {
|
|
77
60
|
if (!isBuffering) {
|
|
78
|
-
return false
|
|
61
|
+
return false;
|
|
79
62
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
// Clear timeouts
|
|
63
|
+
logger.debug({ bufferCount }, 'Flushing event buffer');
|
|
64
|
+
isBuffering = false;
|
|
65
|
+
bufferCount = 0;
|
|
66
|
+
// Clear timeout
|
|
86
67
|
if (bufferTimeout) {
|
|
87
|
-
clearTimeout(bufferTimeout)
|
|
88
|
-
bufferTimeout = null
|
|
68
|
+
clearTimeout(bufferTimeout);
|
|
69
|
+
bufferTimeout = null;
|
|
89
70
|
}
|
|
90
71
|
if (flushPendingTimeout) {
|
|
91
|
-
clearTimeout(flushPendingTimeout)
|
|
92
|
-
flushPendingTimeout = null
|
|
72
|
+
clearTimeout(flushPendingTimeout);
|
|
73
|
+
flushPendingTimeout = null;
|
|
93
74
|
}
|
|
94
|
-
|
|
95
75
|
// Clear history cache if it exceeds the max size
|
|
96
76
|
if (historyCache.size > MAX_HISTORY_CACHE_SIZE) {
|
|
97
|
-
logger.debug({ cacheSize: historyCache.size }, 'Clearing history cache')
|
|
98
|
-
historyCache.clear()
|
|
77
|
+
logger.debug({ cacheSize: historyCache.size }, 'Clearing history cache');
|
|
78
|
+
historyCache.clear();
|
|
99
79
|
}
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
let conditionalChatUpdatesLeft = 0
|
|
80
|
+
const newData = makeBufferData();
|
|
81
|
+
const chatUpdates = Object.values(data.chatUpdates);
|
|
82
|
+
let conditionalChatUpdatesLeft = 0;
|
|
104
83
|
for (const update of chatUpdates) {
|
|
105
84
|
if (update.conditional) {
|
|
106
|
-
conditionalChatUpdatesLeft += 1
|
|
107
|
-
newData.chatUpdates[update.id] = update
|
|
108
|
-
delete data.chatUpdates[update.id]
|
|
85
|
+
conditionalChatUpdatesLeft += 1;
|
|
86
|
+
newData.chatUpdates[update.id] = update;
|
|
87
|
+
delete data.chatUpdates[update.id];
|
|
109
88
|
}
|
|
110
89
|
}
|
|
111
|
-
const consolidatedData = consolidateEvents(data)
|
|
90
|
+
const consolidatedData = consolidateEvents(data);
|
|
112
91
|
if (Object.keys(consolidatedData).length) {
|
|
113
|
-
ev.emit('event', consolidatedData)
|
|
92
|
+
ev.emit('event', consolidatedData);
|
|
114
93
|
}
|
|
115
|
-
data = newData
|
|
116
|
-
logger.trace({ conditionalChatUpdatesLeft }, 'released buffered events')
|
|
117
|
-
return true
|
|
94
|
+
data = newData;
|
|
95
|
+
logger.trace({ conditionalChatUpdatesLeft }, 'released buffered events');
|
|
96
|
+
return true;
|
|
118
97
|
}
|
|
119
98
|
return {
|
|
120
99
|
process(handler) {
|
|
121
|
-
const listener = (map) => {
|
|
122
|
-
handler(map)
|
|
123
|
-
}
|
|
124
|
-
ev.on('event', listener)
|
|
100
|
+
const listener = async (map) => {
|
|
101
|
+
await handler(map);
|
|
102
|
+
};
|
|
103
|
+
ev.on('event', listener);
|
|
125
104
|
return () => {
|
|
126
|
-
ev.off('event', listener)
|
|
127
|
-
}
|
|
105
|
+
ev.off('event', listener);
|
|
106
|
+
};
|
|
128
107
|
},
|
|
129
108
|
emit(event, evData) {
|
|
109
|
+
// Check if this is a messages.upsert with a different type than what's buffered
|
|
110
|
+
// If so, flush the buffered messages first to avoid type overshadowing
|
|
111
|
+
if (event === 'messages.upsert') {
|
|
112
|
+
const { type } = evData;
|
|
113
|
+
const existingUpserts = Object.values(data.messageUpserts);
|
|
114
|
+
if (existingUpserts.length > 0) {
|
|
115
|
+
const bufferedType = existingUpserts[0].type;
|
|
116
|
+
if (bufferedType !== type) {
|
|
117
|
+
logger.debug({ bufferedType, newType: type }, 'messages.upsert type mismatch, emitting buffered messages');
|
|
118
|
+
// Emit the buffered messages with their correct type
|
|
119
|
+
ev.emit('event', {
|
|
120
|
+
'messages.upsert': {
|
|
121
|
+
messages: existingUpserts.map(m => m.message),
|
|
122
|
+
type: bufferedType
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
// Clear the message upserts from the buffer
|
|
126
|
+
data.messageUpserts = {};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
130
|
if (isBuffering && BUFFERABLE_EVENT_SET.has(event)) {
|
|
131
|
-
append(data, historyCache, event, evData, logger)
|
|
132
|
-
return true
|
|
131
|
+
append(data, historyCache, event, evData, logger);
|
|
132
|
+
return true;
|
|
133
133
|
}
|
|
134
|
-
return ev.emit('event', { [event]: evData })
|
|
134
|
+
return ev.emit('event', { [event]: evData });
|
|
135
135
|
},
|
|
136
136
|
isBuffering() {
|
|
137
|
-
return isBuffering
|
|
137
|
+
return isBuffering;
|
|
138
138
|
},
|
|
139
139
|
buffer,
|
|
140
140
|
flush,
|
|
141
141
|
createBufferedFunction(work) {
|
|
142
142
|
return async (...args) => {
|
|
143
|
-
buffer()
|
|
143
|
+
buffer();
|
|
144
144
|
try {
|
|
145
|
-
const result = await work(...args)
|
|
146
|
-
|
|
145
|
+
const result = await work(...args);
|
|
146
|
+
// If this is the only buffer, flush after a small delay
|
|
147
|
+
if (bufferCount === 1) {
|
|
148
|
+
setTimeout(() => {
|
|
149
|
+
if (isBuffering && bufferCount === 1) {
|
|
150
|
+
flush();
|
|
151
|
+
}
|
|
152
|
+
}, 100); // Small delay to allow nested buffers
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
147
155
|
}
|
|
148
156
|
catch (error) {
|
|
149
|
-
throw error
|
|
157
|
+
throw error;
|
|
150
158
|
}
|
|
151
159
|
finally {
|
|
152
|
-
bufferCount = Math.max(0, bufferCount - 1)
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
// Only schedule ONE flush timer at a time to prevent timer storms
|
|
160
|
+
bufferCount = Math.max(0, bufferCount - 1);
|
|
161
|
+
if (bufferCount === 0) {
|
|
162
|
+
// Only schedule ONE timeout, not 10,000
|
|
156
163
|
if (!flushPendingTimeout) {
|
|
157
|
-
flushPendingTimeout = setTimeout(
|
|
158
|
-
flushPendingTimeout = null
|
|
159
|
-
if (isBuffering && bufferCount === 0) {
|
|
160
|
-
flush()
|
|
161
|
-
}
|
|
162
|
-
}, 100)
|
|
164
|
+
flushPendingTimeout = setTimeout(flush, 100);
|
|
163
165
|
}
|
|
164
166
|
}
|
|
165
167
|
}
|
|
166
|
-
}
|
|
168
|
+
};
|
|
167
169
|
},
|
|
168
170
|
on: (...args) => ev.on(...args),
|
|
169
171
|
off: (...args) => ev.off(...args),
|
|
170
172
|
removeAllListeners: (...args) => ev.removeAllListeners(...args),
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
173
|
+
destroy() {
|
|
174
|
+
// Clear buffer timeout
|
|
175
|
+
if (bufferTimeout) {
|
|
176
|
+
clearTimeout(bufferTimeout);
|
|
177
|
+
bufferTimeout = null;
|
|
178
|
+
}
|
|
179
|
+
if (flushPendingTimeout) {
|
|
180
|
+
clearTimeout(flushPendingTimeout);
|
|
181
|
+
flushPendingTimeout = null;
|
|
182
|
+
}
|
|
183
|
+
// Clear history cache
|
|
184
|
+
historyCache.clear();
|
|
185
|
+
// Reset buffer data
|
|
186
|
+
data = makeBufferData();
|
|
187
|
+
isBuffering = false;
|
|
188
|
+
bufferCount = 0;
|
|
189
|
+
// Remove all listeners
|
|
190
|
+
ev.removeAllListeners();
|
|
191
|
+
logger.debug('Event buffer destroyed');
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
};
|
|
174
195
|
const makeBufferData = () => {
|
|
175
196
|
return {
|
|
176
197
|
historySets: {
|
|
@@ -187,411 +208,415 @@ const makeBufferData = () => {
|
|
|
187
208
|
contactUpdates: {},
|
|
188
209
|
messageUpserts: {},
|
|
189
210
|
messageUpdates: {},
|
|
190
|
-
//messagePollings: {},
|
|
191
211
|
messageReactions: {},
|
|
192
212
|
messageDeletes: {},
|
|
193
213
|
messageReceipts: {},
|
|
194
214
|
groupUpdates: {}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
function append(data, historyCache, event,
|
|
218
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
219
|
+
eventData, logger) {
|
|
200
220
|
switch (event) {
|
|
201
221
|
case 'messaging-history.set':
|
|
202
222
|
for (const chat of eventData.chats) {
|
|
203
|
-
const
|
|
223
|
+
const id = chat.id || '';
|
|
224
|
+
const existingChat = data.historySets.chats[id];
|
|
204
225
|
if (existingChat) {
|
|
205
|
-
existingChat.endOfHistoryTransferType = chat.endOfHistoryTransferType
|
|
226
|
+
existingChat.endOfHistoryTransferType = chat.endOfHistoryTransferType;
|
|
206
227
|
}
|
|
207
|
-
if (!existingChat && !historyCache.has(
|
|
208
|
-
data.historySets.chats[
|
|
209
|
-
historyCache.add(
|
|
210
|
-
absorbingChatUpdate(chat)
|
|
228
|
+
if (!existingChat && !historyCache.has(id)) {
|
|
229
|
+
data.historySets.chats[id] = chat;
|
|
230
|
+
historyCache.add(id);
|
|
231
|
+
absorbingChatUpdate(chat);
|
|
211
232
|
}
|
|
212
233
|
}
|
|
213
234
|
for (const contact of eventData.contacts) {
|
|
214
|
-
const existingContact = data.historySets.contacts[contact.id]
|
|
235
|
+
const existingContact = data.historySets.contacts[contact.id];
|
|
215
236
|
if (existingContact) {
|
|
216
|
-
Object.assign(existingContact,
|
|
237
|
+
Object.assign(existingContact, trimUndefined(contact));
|
|
217
238
|
}
|
|
218
239
|
else {
|
|
219
|
-
const historyContactId = `c:${contact.id}
|
|
220
|
-
const hasAnyName = contact.notify || contact.name || contact.verifiedName
|
|
240
|
+
const historyContactId = `c:${contact.id}`;
|
|
241
|
+
const hasAnyName = contact.notify || contact.name || contact.verifiedName;
|
|
221
242
|
if (!historyCache.has(historyContactId) || hasAnyName) {
|
|
222
|
-
data.historySets.contacts[contact.id] = contact
|
|
223
|
-
historyCache.add(historyContactId)
|
|
243
|
+
data.historySets.contacts[contact.id] = contact;
|
|
244
|
+
historyCache.add(historyContactId);
|
|
224
245
|
}
|
|
225
246
|
}
|
|
226
247
|
}
|
|
227
248
|
for (const message of eventData.messages) {
|
|
228
|
-
const key = stringifyMessageKey(message.key)
|
|
229
|
-
const existingMsg = data.historySets.messages[key]
|
|
249
|
+
const key = stringifyMessageKey(message.key);
|
|
250
|
+
const existingMsg = data.historySets.messages[key];
|
|
230
251
|
if (!existingMsg && !historyCache.has(key)) {
|
|
231
|
-
data.historySets.messages[key] = message
|
|
232
|
-
historyCache.add(key)
|
|
252
|
+
data.historySets.messages[key] = message;
|
|
253
|
+
historyCache.add(key);
|
|
233
254
|
}
|
|
234
255
|
}
|
|
235
|
-
data.historySets.empty = false
|
|
236
|
-
data.historySets.syncType = eventData.syncType
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
256
|
+
data.historySets.empty = false;
|
|
257
|
+
data.historySets.syncType = eventData.syncType;
|
|
258
|
+
if (eventData.pastParticipants?.length) {
|
|
259
|
+
const merged = new Map();
|
|
260
|
+
const sigOf = (p) => `${p.userJid || ''}:${p.leaveTs || ''}:${p.leaveReason || ''}`;
|
|
261
|
+
const ingest = (entry) => {
|
|
262
|
+
const key = entry.groupJid ?? JSON.stringify(entry);
|
|
263
|
+
const existing = merged.get(key);
|
|
264
|
+
if (!existing) {
|
|
265
|
+
merged.set(key, { ...entry, pastParticipants: [...(entry.pastParticipants || [])] });
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const seen = new Set((existing.pastParticipants || []).map(sigOf));
|
|
269
|
+
for (const p of entry.pastParticipants || []) {
|
|
270
|
+
const sig = sigOf(p);
|
|
271
|
+
if (!seen.has(sig)) {
|
|
272
|
+
existing.pastParticipants.push(p);
|
|
273
|
+
seen.add(sig);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
for (const entry of data.historySets.pastParticipants || [])
|
|
278
|
+
ingest(entry);
|
|
279
|
+
for (const entry of eventData.pastParticipants)
|
|
280
|
+
ingest(entry);
|
|
281
|
+
data.historySets.pastParticipants = [...merged.values()];
|
|
282
|
+
}
|
|
283
|
+
data.historySets.progress = eventData.progress;
|
|
284
|
+
data.historySets.chunkOrder = eventData.chunkOrder;
|
|
285
|
+
data.historySets.peerDataRequestSessionId = eventData.peerDataRequestSessionId;
|
|
286
|
+
data.historySets.isLatest = eventData.isLatest || data.historySets.isLatest;
|
|
287
|
+
break;
|
|
241
288
|
case 'chats.upsert':
|
|
242
289
|
for (const chat of eventData) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
290
|
+
const id = chat.id || '';
|
|
291
|
+
let upsert = data.chatUpserts[id];
|
|
292
|
+
if (id && !upsert) {
|
|
293
|
+
upsert = data.historySets.chats[id];
|
|
246
294
|
if (upsert) {
|
|
247
|
-
logger.debug({ chatId:
|
|
295
|
+
logger.debug({ chatId: id }, 'absorbed chat upsert in chat set');
|
|
248
296
|
}
|
|
249
297
|
}
|
|
250
298
|
if (upsert) {
|
|
251
|
-
upsert = concatChats(upsert, chat)
|
|
299
|
+
upsert = concatChats(upsert, chat);
|
|
252
300
|
}
|
|
253
301
|
else {
|
|
254
|
-
upsert = chat
|
|
255
|
-
data.chatUpserts[
|
|
302
|
+
upsert = chat;
|
|
303
|
+
data.chatUpserts[id] = upsert;
|
|
256
304
|
}
|
|
257
|
-
absorbingChatUpdate(upsert)
|
|
258
|
-
if (data.chatDeletes.has(
|
|
259
|
-
data.chatDeletes.delete(
|
|
305
|
+
absorbingChatUpdate(upsert);
|
|
306
|
+
if (data.chatDeletes.has(id)) {
|
|
307
|
+
data.chatDeletes.delete(id);
|
|
260
308
|
}
|
|
261
309
|
}
|
|
262
|
-
break
|
|
310
|
+
break;
|
|
263
311
|
case 'chats.update':
|
|
264
312
|
for (const update of eventData) {
|
|
265
|
-
const chatId = update.id
|
|
266
|
-
const conditionMatches = update.conditional ? update.conditional(data) : true
|
|
313
|
+
const chatId = update.id;
|
|
314
|
+
const conditionMatches = update.conditional ? update.conditional(data) : true;
|
|
267
315
|
if (conditionMatches) {
|
|
268
|
-
delete update.conditional
|
|
316
|
+
delete update.conditional;
|
|
269
317
|
// if there is an existing upsert, merge the update into it
|
|
270
|
-
const upsert = data.historySets.chats[chatId] || data.chatUpserts[chatId]
|
|
318
|
+
const upsert = data.historySets.chats[chatId] || data.chatUpserts[chatId];
|
|
271
319
|
if (upsert) {
|
|
272
|
-
concatChats(upsert, update)
|
|
320
|
+
concatChats(upsert, update);
|
|
273
321
|
}
|
|
274
322
|
else {
|
|
275
323
|
// merge the update into the existing update
|
|
276
|
-
const chatUpdate = data.chatUpdates[chatId] || {}
|
|
277
|
-
data.chatUpdates[chatId] = concatChats(chatUpdate, update)
|
|
324
|
+
const chatUpdate = data.chatUpdates[chatId] || {};
|
|
325
|
+
data.chatUpdates[chatId] = concatChats(chatUpdate, update);
|
|
278
326
|
}
|
|
279
327
|
}
|
|
280
328
|
else if (conditionMatches === undefined) {
|
|
281
329
|
// condition yet to be fulfilled
|
|
282
|
-
data.chatUpdates[chatId] = update
|
|
330
|
+
data.chatUpdates[chatId] = update;
|
|
283
331
|
}
|
|
284
332
|
// otherwise -- condition not met, update is invalid
|
|
285
333
|
// if the chat has been updated
|
|
286
334
|
// ignore any existing chat delete
|
|
287
335
|
if (data.chatDeletes.has(chatId)) {
|
|
288
|
-
data.chatDeletes.delete(chatId)
|
|
336
|
+
data.chatDeletes.delete(chatId);
|
|
289
337
|
}
|
|
290
338
|
}
|
|
291
|
-
break
|
|
339
|
+
break;
|
|
292
340
|
case 'chats.delete':
|
|
293
341
|
for (const chatId of eventData) {
|
|
294
342
|
if (!data.chatDeletes.has(chatId)) {
|
|
295
|
-
data.chatDeletes.add(chatId)
|
|
343
|
+
data.chatDeletes.add(chatId);
|
|
296
344
|
}
|
|
297
345
|
// remove any prior updates & upserts
|
|
298
346
|
if (data.chatUpdates[chatId]) {
|
|
299
|
-
delete data.chatUpdates[chatId]
|
|
347
|
+
delete data.chatUpdates[chatId];
|
|
300
348
|
}
|
|
301
349
|
if (data.chatUpserts[chatId]) {
|
|
302
|
-
delete data.chatUpserts[chatId]
|
|
350
|
+
delete data.chatUpserts[chatId];
|
|
303
351
|
}
|
|
304
352
|
if (data.historySets.chats[chatId]) {
|
|
305
|
-
delete data.historySets.chats[chatId]
|
|
353
|
+
delete data.historySets.chats[chatId];
|
|
306
354
|
}
|
|
307
355
|
}
|
|
308
|
-
break
|
|
356
|
+
break;
|
|
309
357
|
case 'contacts.upsert':
|
|
310
358
|
for (const contact of eventData) {
|
|
311
|
-
let upsert = data.contactUpserts[contact.id]
|
|
359
|
+
let upsert = data.contactUpserts[contact.id];
|
|
312
360
|
if (!upsert) {
|
|
313
|
-
upsert = data.historySets.contacts[contact.id]
|
|
361
|
+
upsert = data.historySets.contacts[contact.id];
|
|
314
362
|
if (upsert) {
|
|
315
|
-
logger.debug({ contactId: contact.id }, 'absorbed contact upsert in contact set')
|
|
363
|
+
logger.debug({ contactId: contact.id }, 'absorbed contact upsert in contact set');
|
|
316
364
|
}
|
|
317
365
|
}
|
|
318
366
|
if (upsert) {
|
|
319
|
-
upsert = Object.assign(upsert,
|
|
367
|
+
upsert = Object.assign(upsert, trimUndefined(contact));
|
|
320
368
|
}
|
|
321
369
|
else {
|
|
322
|
-
upsert = contact
|
|
323
|
-
data.contactUpserts[contact.id] = upsert
|
|
370
|
+
upsert = contact;
|
|
371
|
+
data.contactUpserts[contact.id] = upsert;
|
|
324
372
|
}
|
|
325
373
|
if (data.contactUpdates[contact.id]) {
|
|
326
|
-
upsert = Object.assign(data.contactUpdates[contact.id],
|
|
327
|
-
delete data.contactUpdates[contact.id]
|
|
374
|
+
upsert = Object.assign(data.contactUpdates[contact.id], trimUndefined(contact));
|
|
375
|
+
delete data.contactUpdates[contact.id];
|
|
328
376
|
}
|
|
329
377
|
}
|
|
330
|
-
break
|
|
378
|
+
break;
|
|
331
379
|
case 'contacts.update':
|
|
332
|
-
const contactUpdates = eventData
|
|
380
|
+
const contactUpdates = eventData;
|
|
333
381
|
for (const update of contactUpdates) {
|
|
334
|
-
const id = update.id
|
|
382
|
+
const id = update.id;
|
|
335
383
|
// merge into prior upsert
|
|
336
|
-
const upsert = data.historySets.contacts[id] || data.contactUpserts[id]
|
|
384
|
+
const upsert = data.historySets.contacts[id] || data.contactUpserts[id];
|
|
337
385
|
if (upsert) {
|
|
338
|
-
Object.assign(upsert, update)
|
|
386
|
+
Object.assign(upsert, update);
|
|
339
387
|
}
|
|
340
388
|
else {
|
|
341
389
|
// merge into prior update
|
|
342
|
-
const contactUpdate = data.contactUpdates[id] || {}
|
|
343
|
-
data.contactUpdates[id] = Object.assign(contactUpdate, update)
|
|
390
|
+
const contactUpdate = data.contactUpdates[id] || {};
|
|
391
|
+
data.contactUpdates[id] = Object.assign(contactUpdate, update);
|
|
344
392
|
}
|
|
345
393
|
}
|
|
346
|
-
break
|
|
394
|
+
break;
|
|
347
395
|
case 'messages.upsert':
|
|
348
|
-
const { messages, type } = eventData
|
|
396
|
+
const { messages, type } = eventData;
|
|
349
397
|
for (const message of messages) {
|
|
350
|
-
const key = stringifyMessageKey(message.key)
|
|
351
|
-
let existing =
|
|
398
|
+
const key = stringifyMessageKey(message.key);
|
|
399
|
+
let existing = data.messageUpserts[key]?.message;
|
|
352
400
|
if (!existing) {
|
|
353
|
-
existing = data.historySets.messages[key]
|
|
401
|
+
existing = data.historySets.messages[key];
|
|
354
402
|
if (existing) {
|
|
355
|
-
logger.debug({ messageId: key }, 'absorbed message upsert in message set')
|
|
403
|
+
logger.debug({ messageId: key }, 'absorbed message upsert in message set');
|
|
356
404
|
}
|
|
357
405
|
}
|
|
358
406
|
if (existing) {
|
|
359
|
-
message.messageTimestamp = existing.messageTimestamp
|
|
407
|
+
message.messageTimestamp = existing.messageTimestamp;
|
|
360
408
|
}
|
|
361
409
|
if (data.messageUpdates[key]) {
|
|
362
|
-
logger.debug('absorbed prior message update in message upsert')
|
|
363
|
-
Object.assign(message, data.messageUpdates[key].update)
|
|
364
|
-
delete data.messageUpdates[key]
|
|
410
|
+
logger.debug('absorbed prior message update in message upsert');
|
|
411
|
+
Object.assign(message, data.messageUpdates[key].update);
|
|
412
|
+
delete data.messageUpdates[key];
|
|
365
413
|
}
|
|
366
414
|
if (data.historySets.messages[key]) {
|
|
367
|
-
data.historySets.messages[key] = message
|
|
415
|
+
data.historySets.messages[key] = message;
|
|
368
416
|
}
|
|
369
417
|
else {
|
|
370
418
|
data.messageUpserts[key] = {
|
|
371
419
|
message,
|
|
372
|
-
type: type === 'notify' ||
|
|
373
|
-
|
|
374
|
-
: type
|
|
375
|
-
}
|
|
420
|
+
type: type === 'notify' || data.messageUpserts[key]?.type === 'notify' ? 'notify' : type
|
|
421
|
+
};
|
|
376
422
|
}
|
|
377
423
|
}
|
|
378
|
-
break
|
|
424
|
+
break;
|
|
379
425
|
case 'messages.update':
|
|
380
|
-
const msgUpdates = eventData
|
|
426
|
+
const msgUpdates = eventData;
|
|
381
427
|
for (const { key, update } of msgUpdates) {
|
|
382
|
-
const keyStr = stringifyMessageKey(key)
|
|
383
|
-
const existing = data.historySets.messages[keyStr] ||
|
|
428
|
+
const keyStr = stringifyMessageKey(key);
|
|
429
|
+
const existing = data.historySets.messages[keyStr] || data.messageUpserts[keyStr]?.message;
|
|
384
430
|
if (existing) {
|
|
385
|
-
Object.assign(existing, update)
|
|
431
|
+
Object.assign(existing, update);
|
|
386
432
|
// if the message was received & read by us
|
|
387
433
|
// the chat counter must have been incremented
|
|
388
434
|
// so we need to decrement it
|
|
389
|
-
if (update.status ===
|
|
390
|
-
decrementChatReadCounterIfMsgDidUnread(existing)
|
|
435
|
+
if (update.status === WAMessageStatus.READ && !key.fromMe) {
|
|
436
|
+
decrementChatReadCounterIfMsgDidUnread(existing);
|
|
391
437
|
}
|
|
392
438
|
}
|
|
393
439
|
else {
|
|
394
|
-
const msgUpdate = data.messageUpdates[keyStr] || { key, update: {} }
|
|
395
|
-
Object.assign(msgUpdate.update, update)
|
|
396
|
-
data.messageUpdates[keyStr] = msgUpdate
|
|
440
|
+
const msgUpdate = data.messageUpdates[keyStr] || { key, update: {} };
|
|
441
|
+
Object.assign(msgUpdate.update, update);
|
|
442
|
+
data.messageUpdates[keyStr] = msgUpdate;
|
|
397
443
|
}
|
|
398
444
|
}
|
|
399
|
-
break
|
|
445
|
+
break;
|
|
400
446
|
case 'messages.delete':
|
|
401
|
-
const deleteData = eventData
|
|
447
|
+
const deleteData = eventData;
|
|
402
448
|
if ('keys' in deleteData) {
|
|
403
|
-
const { keys } = deleteData
|
|
449
|
+
const { keys } = deleteData;
|
|
404
450
|
for (const key of keys) {
|
|
405
|
-
const keyStr = stringifyMessageKey(key)
|
|
451
|
+
const keyStr = stringifyMessageKey(key);
|
|
406
452
|
if (!data.messageDeletes[keyStr]) {
|
|
407
|
-
data.messageDeletes[keyStr] = key
|
|
453
|
+
data.messageDeletes[keyStr] = key;
|
|
408
454
|
}
|
|
409
455
|
if (data.messageUpserts[keyStr]) {
|
|
410
|
-
delete data.messageUpserts[keyStr]
|
|
456
|
+
delete data.messageUpserts[keyStr];
|
|
411
457
|
}
|
|
412
458
|
if (data.messageUpdates[keyStr]) {
|
|
413
|
-
delete data.messageUpdates[keyStr]
|
|
459
|
+
delete data.messageUpdates[keyStr];
|
|
414
460
|
}
|
|
415
461
|
}
|
|
416
462
|
}
|
|
417
463
|
else {
|
|
418
464
|
// TODO: add support
|
|
419
465
|
}
|
|
420
|
-
break
|
|
421
|
-
// case 'messages.poll':
|
|
422
|
-
// const pollUpdates = eventData
|
|
423
|
-
// for(const { vote, pollUpdateMessageKey } of pollUpdates) {
|
|
424
|
-
// const keyStr = stringifyMessageKey(pollUpdateMessageKey)
|
|
425
|
-
// const existing = data.messagePollings[keyStr]
|
|
426
|
-
// if(existing) {
|
|
427
|
-
// messages_1.updateMessageWithPollUpdate(existing.message, pollUpdates)
|
|
428
|
-
// } else {
|
|
429
|
-
// data.messagePollings[keyStr] = data.messagePollings[keyStr]
|
|
430
|
-
// || { pollUpdateMessageKey, pollUpdates: [] }
|
|
431
|
-
// messages_1.updateMessageWithPollUpdate(data.messagePollings[keyStr], vote)
|
|
432
|
-
// }
|
|
433
|
-
// }
|
|
434
|
-
// break
|
|
466
|
+
break;
|
|
435
467
|
case 'messages.reaction':
|
|
436
|
-
const reactions = eventData
|
|
468
|
+
const reactions = eventData;
|
|
437
469
|
for (const { key, reaction } of reactions) {
|
|
438
|
-
const keyStr = stringifyMessageKey(key)
|
|
439
|
-
const existing = data.messageUpserts[keyStr]
|
|
470
|
+
const keyStr = stringifyMessageKey(key);
|
|
471
|
+
const existing = data.messageUpserts[keyStr];
|
|
440
472
|
if (existing) {
|
|
441
|
-
|
|
473
|
+
updateMessageWithReaction(existing.message, reaction);
|
|
442
474
|
}
|
|
443
475
|
else {
|
|
444
|
-
data.messageReactions[keyStr] = data.messageReactions[keyStr]
|
|
445
|
-
|
|
446
|
-
messages_1.updateMessageWithReaction(data.messageReactions[keyStr], reaction)
|
|
476
|
+
data.messageReactions[keyStr] = data.messageReactions[keyStr] || { key, reactions: [] };
|
|
477
|
+
updateMessageWithReaction(data.messageReactions[keyStr], reaction);
|
|
447
478
|
}
|
|
448
479
|
}
|
|
449
|
-
break
|
|
480
|
+
break;
|
|
450
481
|
case 'message-receipt.update':
|
|
451
|
-
const receipts = eventData
|
|
482
|
+
const receipts = eventData;
|
|
452
483
|
for (const { key, receipt } of receipts) {
|
|
453
|
-
const keyStr = stringifyMessageKey(key)
|
|
454
|
-
const existing = data.messageUpserts[keyStr]
|
|
484
|
+
const keyStr = stringifyMessageKey(key);
|
|
485
|
+
const existing = data.messageUpserts[keyStr];
|
|
455
486
|
if (existing) {
|
|
456
|
-
|
|
487
|
+
updateMessageWithReceipt(existing.message, receipt);
|
|
457
488
|
}
|
|
458
489
|
else {
|
|
459
|
-
data.messageReceipts[keyStr] = data.messageReceipts[keyStr]
|
|
460
|
-
|
|
461
|
-
messages_1.updateMessageWithReceipt(data.messageReceipts[keyStr], receipt)
|
|
490
|
+
data.messageReceipts[keyStr] = data.messageReceipts[keyStr] || { key, userReceipt: [] };
|
|
491
|
+
updateMessageWithReceipt(data.messageReceipts[keyStr], receipt);
|
|
462
492
|
}
|
|
463
493
|
}
|
|
464
|
-
break
|
|
494
|
+
break;
|
|
465
495
|
case 'groups.update':
|
|
466
|
-
const groupUpdates = eventData
|
|
496
|
+
const groupUpdates = eventData;
|
|
467
497
|
for (const update of groupUpdates) {
|
|
468
|
-
const id = update.id
|
|
469
|
-
const groupUpdate = data.groupUpdates[id] || {}
|
|
498
|
+
const id = update.id;
|
|
499
|
+
const groupUpdate = data.groupUpdates[id] || {};
|
|
470
500
|
if (!data.groupUpdates[id]) {
|
|
471
|
-
data.groupUpdates[id] = Object.assign(groupUpdate, update)
|
|
501
|
+
data.groupUpdates[id] = Object.assign(groupUpdate, update);
|
|
472
502
|
}
|
|
473
503
|
}
|
|
474
|
-
break
|
|
504
|
+
break;
|
|
475
505
|
default:
|
|
476
|
-
throw new Error(`"${event}" cannot be buffered`)
|
|
506
|
+
throw new Error(`"${event}" cannot be buffered`);
|
|
477
507
|
}
|
|
478
508
|
function absorbingChatUpdate(existing) {
|
|
479
|
-
const chatId = existing.id
|
|
480
|
-
const update = data.chatUpdates[chatId]
|
|
509
|
+
const chatId = existing.id || '';
|
|
510
|
+
const update = data.chatUpdates[chatId];
|
|
481
511
|
if (update) {
|
|
482
|
-
const conditionMatches = update.conditional ? update.conditional(data) : true
|
|
512
|
+
const conditionMatches = update.conditional ? update.conditional(data) : true;
|
|
483
513
|
if (conditionMatches) {
|
|
484
|
-
delete update.conditional
|
|
485
|
-
logger.debug({ chatId }, 'absorbed chat update in existing chat')
|
|
486
|
-
Object.assign(existing, concatChats(update, existing))
|
|
487
|
-
delete data.chatUpdates[chatId]
|
|
514
|
+
delete update.conditional;
|
|
515
|
+
logger.debug({ chatId }, 'absorbed chat update in existing chat');
|
|
516
|
+
Object.assign(existing, concatChats(update, existing));
|
|
517
|
+
delete data.chatUpdates[chatId];
|
|
488
518
|
}
|
|
489
519
|
else if (conditionMatches === false) {
|
|
490
|
-
logger.debug({ chatId }, 'chat update condition fail, removing')
|
|
491
|
-
delete data.chatUpdates[chatId]
|
|
520
|
+
logger.debug({ chatId }, 'chat update condition fail, removing');
|
|
521
|
+
delete data.chatUpdates[chatId];
|
|
492
522
|
}
|
|
493
523
|
}
|
|
494
524
|
}
|
|
495
525
|
function decrementChatReadCounterIfMsgDidUnread(message) {
|
|
496
526
|
// decrement chat unread counter
|
|
497
527
|
// if the message has already been marked read by us
|
|
498
|
-
const chatId = message.key.remoteJid
|
|
499
|
-
const chat = data.chatUpdates[chatId] || data.chatUpserts[chatId]
|
|
500
|
-
if (
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
logger.debug({ chatId: chat.id }, 'decrementing chat counter')
|
|
505
|
-
chat.unreadCount -= 1
|
|
528
|
+
const chatId = message.key.remoteJid;
|
|
529
|
+
const chat = data.chatUpdates[chatId] || data.chatUpserts[chatId];
|
|
530
|
+
if (isRealMessage(message) &&
|
|
531
|
+
shouldIncrementChatUnread(message) &&
|
|
532
|
+
typeof chat?.unreadCount === 'number' &&
|
|
533
|
+
chat.unreadCount > 0) {
|
|
534
|
+
logger.debug({ chatId: chat.id }, 'decrementing chat counter');
|
|
535
|
+
chat.unreadCount -= 1;
|
|
506
536
|
if (chat.unreadCount === 0) {
|
|
507
|
-
delete chat.unreadCount
|
|
537
|
+
delete chat.unreadCount;
|
|
508
538
|
}
|
|
509
539
|
}
|
|
510
540
|
}
|
|
511
541
|
}
|
|
512
542
|
function consolidateEvents(data) {
|
|
513
|
-
const map = {}
|
|
543
|
+
const map = {};
|
|
514
544
|
if (!data.historySets.empty) {
|
|
515
545
|
map['messaging-history.set'] = {
|
|
516
546
|
chats: Object.values(data.historySets.chats),
|
|
517
547
|
messages: Object.values(data.historySets.messages),
|
|
518
548
|
contacts: Object.values(data.historySets.contacts),
|
|
549
|
+
pastParticipants: data.historySets.pastParticipants,
|
|
519
550
|
syncType: data.historySets.syncType,
|
|
520
551
|
progress: data.historySets.progress,
|
|
521
552
|
isLatest: data.historySets.isLatest,
|
|
553
|
+
chunkOrder: data.historySets.chunkOrder,
|
|
522
554
|
peerDataRequestSessionId: data.historySets.peerDataRequestSessionId
|
|
523
|
-
}
|
|
555
|
+
};
|
|
524
556
|
}
|
|
525
|
-
const chatUpsertList = Object.values(data.chatUpserts)
|
|
557
|
+
const chatUpsertList = Object.values(data.chatUpserts);
|
|
526
558
|
if (chatUpsertList.length) {
|
|
527
|
-
map['chats.upsert'] = chatUpsertList
|
|
559
|
+
map['chats.upsert'] = chatUpsertList;
|
|
528
560
|
}
|
|
529
|
-
const chatUpdateList = Object.values(data.chatUpdates)
|
|
561
|
+
const chatUpdateList = Object.values(data.chatUpdates);
|
|
530
562
|
if (chatUpdateList.length) {
|
|
531
|
-
map['chats.update'] = chatUpdateList
|
|
563
|
+
map['chats.update'] = chatUpdateList;
|
|
532
564
|
}
|
|
533
|
-
const chatDeleteList = Array.from(data.chatDeletes)
|
|
565
|
+
const chatDeleteList = Array.from(data.chatDeletes);
|
|
534
566
|
if (chatDeleteList.length) {
|
|
535
|
-
map['chats.delete'] = chatDeleteList
|
|
567
|
+
map['chats.delete'] = chatDeleteList;
|
|
536
568
|
}
|
|
537
|
-
const messageUpsertList = Object.values(data.messageUpserts)
|
|
569
|
+
const messageUpsertList = Object.values(data.messageUpserts);
|
|
538
570
|
if (messageUpsertList.length) {
|
|
539
|
-
const type = messageUpsertList[0].type
|
|
571
|
+
const type = messageUpsertList[0].type;
|
|
540
572
|
map['messages.upsert'] = {
|
|
541
573
|
messages: messageUpsertList.map(m => m.message),
|
|
542
574
|
type
|
|
543
|
-
}
|
|
575
|
+
};
|
|
544
576
|
}
|
|
545
|
-
const messageUpdateList = Object.values(data.messageUpdates)
|
|
577
|
+
const messageUpdateList = Object.values(data.messageUpdates);
|
|
546
578
|
if (messageUpdateList.length) {
|
|
547
|
-
map['messages.update'] = messageUpdateList
|
|
579
|
+
map['messages.update'] = messageUpdateList;
|
|
548
580
|
}
|
|
549
|
-
const messageDeleteList = Object.values(data.messageDeletes)
|
|
581
|
+
const messageDeleteList = Object.values(data.messageDeletes);
|
|
550
582
|
if (messageDeleteList.length) {
|
|
551
|
-
map['messages.delete'] = { keys: messageDeleteList }
|
|
583
|
+
map['messages.delete'] = { keys: messageDeleteList };
|
|
552
584
|
}
|
|
553
|
-
|
|
554
|
-
// if(messagePollingList.length) {
|
|
555
|
-
// map['messages.poll'] = messagePollingList
|
|
556
|
-
// }
|
|
557
|
-
const messageReactionList = Object.values(data.messageReactions).flatMap(({ key, reactions }) => reactions.flatMap(reaction => ({ key, reaction })))
|
|
585
|
+
const messageReactionList = Object.values(data.messageReactions).flatMap(({ key, reactions }) => reactions.flatMap(reaction => ({ key, reaction })));
|
|
558
586
|
if (messageReactionList.length) {
|
|
559
|
-
map['messages.reaction'] = messageReactionList
|
|
587
|
+
map['messages.reaction'] = messageReactionList;
|
|
560
588
|
}
|
|
561
|
-
const messageReceiptList = Object.values(data.messageReceipts).flatMap(({ key, userReceipt }) => userReceipt.flatMap(receipt => ({ key, receipt })))
|
|
589
|
+
const messageReceiptList = Object.values(data.messageReceipts).flatMap(({ key, userReceipt }) => userReceipt.flatMap(receipt => ({ key, receipt })));
|
|
562
590
|
if (messageReceiptList.length) {
|
|
563
|
-
map['message-receipt.update'] = messageReceiptList
|
|
591
|
+
map['message-receipt.update'] = messageReceiptList;
|
|
564
592
|
}
|
|
565
|
-
const contactUpsertList = Object.values(data.contactUpserts)
|
|
593
|
+
const contactUpsertList = Object.values(data.contactUpserts);
|
|
566
594
|
if (contactUpsertList.length) {
|
|
567
|
-
map['contacts.upsert'] = contactUpsertList
|
|
595
|
+
map['contacts.upsert'] = contactUpsertList;
|
|
568
596
|
}
|
|
569
|
-
const contactUpdateList = Object.values(data.contactUpdates)
|
|
597
|
+
const contactUpdateList = Object.values(data.contactUpdates);
|
|
570
598
|
if (contactUpdateList.length) {
|
|
571
|
-
map['contacts.update'] = contactUpdateList
|
|
599
|
+
map['contacts.update'] = contactUpdateList;
|
|
572
600
|
}
|
|
573
|
-
const groupUpdateList = Object.values(data.groupUpdates)
|
|
601
|
+
const groupUpdateList = Object.values(data.groupUpdates);
|
|
574
602
|
if (groupUpdateList.length) {
|
|
575
|
-
map['groups.update'] = groupUpdateList
|
|
603
|
+
map['groups.update'] = groupUpdateList;
|
|
576
604
|
}
|
|
577
|
-
return map
|
|
605
|
+
return map;
|
|
578
606
|
}
|
|
579
607
|
function concatChats(a, b) {
|
|
580
608
|
if (b.unreadCount === null && // neutralize unread counter
|
|
581
609
|
a.unreadCount < 0) {
|
|
582
|
-
a.unreadCount = undefined
|
|
583
|
-
b.unreadCount = undefined
|
|
610
|
+
a.unreadCount = undefined;
|
|
611
|
+
b.unreadCount = undefined;
|
|
584
612
|
}
|
|
585
613
|
if (typeof a.unreadCount === 'number' && typeof b.unreadCount === 'number') {
|
|
586
|
-
b = { ...b }
|
|
614
|
+
b = { ...b };
|
|
587
615
|
if (b.unreadCount >= 0) {
|
|
588
|
-
b.unreadCount = Math.max(b.unreadCount, 0) + Math.max(a.unreadCount, 0)
|
|
616
|
+
b.unreadCount = Math.max(b.unreadCount, 0) + Math.max(a.unreadCount, 0);
|
|
589
617
|
}
|
|
590
618
|
}
|
|
591
|
-
return Object.assign(a, b)
|
|
592
|
-
}
|
|
593
|
-
const stringifyMessageKey = (key) => `${key.remoteJid},${key.id},${key.fromMe ? '1' : '0'}`
|
|
594
|
-
|
|
595
|
-
module.exports = {
|
|
596
|
-
makeEventBuffer
|
|
619
|
+
return Object.assign(a, b);
|
|
597
620
|
}
|
|
621
|
+
const stringifyMessageKey = (key) => `${key.remoteJid},${key.id},${key.fromMe ? '1' : '0'}`;
|
|
622
|
+
//# sourceMappingURL=event-buffer.js.map
|