@d0v3riz/baileys 6.7.19 → 6.7.21
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/README.md +1263 -4
- package/WAProto/GenerateStatics.sh +3 -0
- package/WAProto/WAProto.proto +4633 -0
- package/WAProto/fix-imports.js +29 -0
- package/WAProto/index.d.ts +3212 -122
- package/WAProto/index.js +13516 -4182
- package/lib/Defaults/baileys-version.json +1 -1
- package/lib/Defaults/index.d.ts +4 -3
- package/lib/Defaults/index.d.ts.map +1 -0
- package/lib/Defaults/index.js +50 -54
- package/lib/Defaults/index.js.map +1 -0
- package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
- package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
- package/lib/Signal/Group/ciphertext-message.js +12 -0
- package/lib/Signal/Group/ciphertext-message.js.map +1 -0
- package/lib/Signal/Group/group-session-builder.d.ts +15 -0
- package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
- package/lib/Signal/Group/group-session-builder.js +30 -0
- package/lib/Signal/Group/group-session-builder.js.map +1 -0
- package/lib/Signal/Group/group_cipher.d.ts +18 -0
- package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
- package/lib/Signal/Group/group_cipher.js +94 -0
- package/lib/Signal/Group/group_cipher.js.map +1 -0
- package/lib/Signal/Group/index.d.ts +12 -0
- package/lib/Signal/Group/index.d.ts.map +1 -0
- package/lib/Signal/Group/index.js +12 -0
- package/lib/Signal/Group/index.js.map +1 -0
- package/lib/Signal/Group/keyhelper.d.ts +11 -0
- package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
- package/lib/Signal/Group/keyhelper.js +19 -0
- package/lib/Signal/Group/keyhelper.js.map +1 -0
- package/lib/Signal/Group/queue-job.d.ts +3 -0
- package/lib/Signal/Group/queue-job.d.ts.map +1 -0
- package/lib/Signal/Group/queue-job.js +57 -0
- package/lib/Signal/Group/queue-job.js.map +1 -0
- package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
- package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
- package/lib/Signal/Group/sender-chain-key.js +32 -0
- package/lib/Signal/Group/sender-chain-key.js.map +1 -0
- package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
- package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
- package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
- package/lib/Signal/Group/sender-key-message.d.ts +19 -0
- package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-message.js +67 -0
- package/lib/Signal/Group/sender-key-message.js.map +1 -0
- package/lib/Signal/Group/sender-key-name.d.ts +18 -0
- package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-name.js +48 -0
- package/lib/Signal/Group/sender-key-name.js.map +1 -0
- package/lib/Signal/Group/sender-key-record.d.ts +31 -0
- package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-record.js +50 -0
- package/lib/Signal/Group/sender-key-record.js.map +1 -0
- package/lib/Signal/Group/sender-key-state.d.ts +39 -0
- package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
- package/lib/Signal/Group/sender-key-state.js +96 -0
- package/lib/Signal/Group/sender-key-state.js.map +1 -0
- package/lib/Signal/Group/sender-message-key.d.ts +12 -0
- package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
- package/{WASignalGroup/sender_message_key.js → lib/Signal/Group/sender-message-key.js} +27 -39
- package/lib/Signal/Group/sender-message-key.js.map +1 -0
- package/lib/Signal/libsignal.d.ts +3 -2
- package/lib/Signal/libsignal.d.ts.map +1 -0
- package/lib/Signal/libsignal.js +41 -61
- package/lib/Signal/libsignal.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 -18
- package/lib/Socket/Client/index.js.map +1 -0
- package/lib/Socket/Client/types.d.ts +2 -1
- package/lib/Socket/Client/types.d.ts.map +1 -0
- package/lib/Socket/Client/types.js +4 -6
- package/lib/Socket/Client/types.js.map +1 -0
- package/lib/Socket/Client/websocket.d.ts +2 -1
- package/lib/Socket/Client/websocket.d.ts.map +1 -0
- package/lib/Socket/Client/websocket.js +15 -27
- package/lib/Socket/Client/websocket.js.map +1 -0
- package/lib/Socket/business.d.ts +92 -62
- package/lib/Socket/business.d.ts.map +1 -0
- package/lib/Socket/business.js +37 -42
- package/lib/Socket/business.js.map +1 -0
- package/lib/Socket/chats.d.ts +31 -24
- package/lib/Socket/chats.d.ts.map +1 -0
- package/lib/Socket/chats.js +251 -198
- package/lib/Socket/chats.js.map +1 -0
- package/lib/Socket/communities.d.ts +219 -0
- package/lib/Socket/communities.d.ts.map +1 -0
- package/lib/Socket/communities.js +351 -0
- package/lib/Socket/communities.js.map +1 -0
- package/lib/Socket/groups.d.ts +47 -39
- package/lib/Socket/groups.d.ts.map +1 -0
- package/lib/Socket/groups.js +91 -82
- package/lib/Socket/groups.js.map +1 -0
- package/lib/Socket/index.d.ts +128 -68
- package/lib/Socket/index.d.ts.map +1 -0
- package/lib/Socket/index.js +16 -9
- package/lib/Socket/index.js.map +1 -0
- package/lib/Socket/messages-recv.d.ts +79 -49
- package/lib/Socket/messages-recv.d.ts.map +1 -0
- package/lib/Socket/messages-recv.js +364 -200
- package/lib/Socket/messages-recv.js.map +1 -0
- package/lib/Socket/messages-send.d.ts +76 -46
- package/lib/Socket/messages-send.d.ts.map +1 -0
- package/lib/Socket/messages-send.js +144 -120
- 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 +143 -0
- package/lib/Socket/newsletter.d.ts.map +1 -0
- package/lib/Socket/newsletter.js +179 -0
- package/lib/Socket/newsletter.js.map +1 -0
- package/lib/Socket/socket.d.ts +15 -14
- package/lib/Socket/socket.d.ts.map +1 -0
- package/lib/Socket/socket.js +153 -141
- package/lib/Socket/socket.js.map +1 -0
- package/lib/Socket/usync.d.ts +17 -16
- package/lib/Socket/usync.d.ts.map +1 -0
- package/lib/Socket/usync.js +19 -26
- package/lib/Socket/usync.js.map +1 -0
- package/lib/Types/Auth.d.ts +5 -4
- package/lib/Types/Auth.d.ts.map +1 -0
- package/lib/Types/Auth.js +2 -2
- package/lib/Types/Auth.js.map +1 -0
- package/lib/Types/Call.d.ts +1 -0
- package/lib/Types/Call.d.ts.map +1 -0
- package/lib/Types/Call.js +2 -2
- package/lib/Types/Call.js.map +1 -0
- package/lib/Types/Chat.d.ts +14 -8
- package/lib/Types/Chat.d.ts.map +1 -0
- package/lib/Types/Chat.js +8 -4
- package/lib/Types/Chat.js.map +1 -0
- package/lib/Types/Contact.d.ts +5 -0
- package/lib/Types/Contact.d.ts.map +1 -0
- package/lib/Types/Contact.js +2 -2
- package/lib/Types/Contact.js.map +1 -0
- package/lib/Types/Events.d.ts +38 -11
- package/lib/Types/Events.d.ts.map +1 -0
- package/lib/Types/Events.js +2 -2
- package/lib/Types/Events.js.map +1 -0
- package/lib/Types/GroupMetadata.d.ts +10 -4
- package/lib/Types/GroupMetadata.d.ts.map +1 -0
- package/lib/Types/GroupMetadata.js +2 -2
- package/lib/Types/GroupMetadata.js.map +1 -0
- package/lib/Types/Label.d.ts +1 -0
- package/lib/Types/Label.d.ts.map +1 -0
- package/lib/Types/Label.js +3 -5
- package/lib/Types/Label.js.map +1 -0
- package/lib/Types/LabelAssociation.d.ts +1 -0
- package/lib/Types/LabelAssociation.d.ts.map +1 -0
- package/lib/Types/LabelAssociation.js +3 -5
- package/lib/Types/LabelAssociation.js.map +1 -0
- package/lib/Types/Message.d.ts +21 -9
- package/lib/Types/Message.d.ts.map +1 -0
- package/lib/Types/Message.js +7 -7
- package/lib/Types/Message.js.map +1 -0
- package/lib/Types/Newsletter.d.ts +135 -0
- package/lib/Types/Newsletter.d.ts.map +1 -0
- package/lib/Types/Newsletter.js +31 -0
- package/lib/Types/Newsletter.js.map +1 -0
- package/lib/Types/Product.d.ts +2 -1
- package/lib/Types/Product.d.ts.map +1 -0
- package/lib/Types/Product.js +2 -2
- package/lib/Types/Product.js.map +1 -0
- package/lib/Types/Signal.d.ts +2 -1
- package/lib/Types/Signal.d.ts.map +1 -0
- package/lib/Types/Signal.js +2 -2
- package/lib/Types/Signal.js.map +1 -0
- package/lib/Types/Socket.d.ts +11 -10
- package/lib/Types/Socket.d.ts.map +1 -0
- package/lib/Types/Socket.js +3 -2
- package/lib/Types/Socket.js.map +1 -0
- package/lib/Types/State.d.ts +14 -2
- package/lib/Types/State.d.ts.map +1 -0
- package/lib/Types/State.js +13 -2
- package/lib/Types/State.js.map +1 -0
- package/lib/Types/USync.d.ts +3 -2
- package/lib/Types/USync.d.ts.map +1 -0
- package/lib/Types/USync.js +2 -2
- package/lib/Types/USync.js.map +1 -0
- package/lib/Types/index.d.ts +15 -13
- package/lib/Types/index.d.ts.map +1 -0
- package/lib/Types/index.js +15 -30
- package/lib/Types/index.js.map +1 -0
- package/lib/Utils/auth-utils.d.ts +3 -2
- package/lib/Utils/auth-utils.d.ts.map +1 -0
- package/lib/Utils/auth-utils.js +30 -40
- package/lib/Utils/auth-utils.js.map +1 -0
- package/lib/Utils/baileys-event-stream.d.ts +2 -1
- package/lib/Utils/baileys-event-stream.d.ts.map +1 -0
- package/lib/Utils/baileys-event-stream.js +15 -22
- package/lib/Utils/baileys-event-stream.js.map +1 -0
- package/lib/Utils/business.d.ts +3 -2
- package/lib/Utils/business.d.ts.map +1 -0
- package/lib/Utils/business.js +64 -75
- package/lib/Utils/business.js.map +1 -0
- package/lib/Utils/chat-utils.d.ts +12 -11
- package/lib/Utils/chat-utils.d.ts.map +1 -0
- package/lib/Utils/chat-utils.js +195 -194
- package/lib/Utils/chat-utils.js.map +1 -0
- package/lib/Utils/crypto.d.ts +2 -1
- package/lib/Utils/crypto.d.ts.map +1 -0
- package/lib/Utils/crypto.js +40 -95
- package/lib/Utils/crypto.js.map +1 -0
- package/lib/Utils/decode-wa-message.d.ts +7 -7
- package/lib/Utils/decode-wa-message.d.ts.map +1 -0
- package/lib/Utils/decode-wa-message.js +43 -41
- package/lib/Utils/decode-wa-message.js.map +1 -0
- package/lib/Utils/event-buffer.d.ts +6 -6
- package/lib/Utils/event-buffer.d.ts.map +1 -0
- package/lib/Utils/event-buffer.js +42 -59
- package/lib/Utils/event-buffer.js.map +1 -0
- package/lib/Utils/generics.d.ts +11 -9
- package/lib/Utils/generics.d.ts.map +1 -0
- package/lib/Utils/generics.js +105 -130
- package/lib/Utils/generics.js.map +1 -0
- package/lib/Utils/history.d.ts +4 -3
- package/lib/Utils/history.d.ts.map +1 -0
- package/lib/Utils/history.js +37 -46
- package/lib/Utils/history.js.map +1 -0
- package/lib/Utils/index.d.ts +18 -17
- package/lib/Utils/index.d.ts.map +1 -0
- package/lib/Utils/index.js +18 -33
- package/lib/Utils/index.js.map +1 -0
- package/lib/Utils/link-preview.d.ts +4 -3
- package/lib/Utils/link-preview.d.ts.map +1 -0
- package/lib/Utils/link-preview.js +14 -55
- package/lib/Utils/link-preview.js.map +1 -0
- package/lib/Utils/logger.d.ts +8 -6
- 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 +9 -8
- package/lib/Utils/lt-hash.d.ts.map +1 -0
- package/lib/Utils/lt-hash.js +23 -26
- package/lib/Utils/lt-hash.js.map +1 -0
- package/lib/Utils/make-mutex.d.ts +1 -0
- package/lib/Utils/make-mutex.d.ts.map +1 -0
- package/lib/Utils/make-mutex.js +6 -10
- package/lib/Utils/make-mutex.js.map +1 -0
- package/lib/Utils/messages-media.d.ts +20 -11
- package/lib/Utils/messages-media.d.ts.map +1 -0
- package/lib/Utils/messages-media.js +215 -253
- package/lib/Utils/messages-media.js.map +1 -0
- package/lib/Utils/messages.d.ts +9 -8
- package/lib/Utils/messages.d.ts.map +1 -0
- package/lib/Utils/messages.js +259 -228
- package/lib/Utils/messages.js.map +1 -0
- package/lib/Utils/noise-handler.d.ts +5 -4
- package/lib/Utils/noise-handler.d.ts.map +1 -0
- package/lib/Utils/noise-handler.js +22 -26
- package/lib/Utils/noise-handler.js.map +1 -0
- package/lib/Utils/process-message.d.ts +6 -5
- package/lib/Utils/process-message.d.ts.map +1 -0
- package/lib/Utils/process-message.js +109 -123
- package/lib/Utils/process-message.js.map +1 -0
- package/lib/Utils/signal.d.ts +5 -4
- package/lib/Utils/signal.d.ts.map +1 -0
- package/lib/Utils/signal.js +52 -55
- package/lib/Utils/signal.js.map +1 -0
- package/lib/Utils/use-multi-file-auth-state.d.ts +2 -1
- package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
- package/lib/Utils/use-multi-file-auth-state.js +23 -27
- package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
- package/lib/Utils/validate-connection.d.ts +4 -3
- package/lib/Utils/validate-connection.d.ts.map +1 -0
- package/lib/Utils/validate-connection.js +64 -75
- package/lib/Utils/validate-connection.js.map +1 -0
- package/lib/WABinary/constants.d.ts +5 -4
- package/lib/WABinary/constants.d.ts.map +1 -0
- package/lib/WABinary/constants.js +1280 -19
- package/lib/WABinary/constants.js.map +1 -0
- package/lib/WABinary/decode.d.ts +2 -1
- package/lib/WABinary/decode.d.ts.map +1 -0
- package/lib/WABinary/decode.js +15 -52
- package/lib/WABinary/decode.js.map +1 -0
- package/lib/WABinary/encode.d.ts +2 -1
- package/lib/WABinary/encode.d.ts.map +1 -0
- package/lib/WABinary/encode.js +7 -43
- package/lib/WABinary/encode.js.map +1 -0
- package/lib/WABinary/generic-utils.d.ts +4 -3
- package/lib/WABinary/generic-utils.d.ts.map +1 -0
- package/lib/WABinary/generic-utils.js +31 -39
- 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 -21
- package/lib/WABinary/index.js.map +1 -0
- package/lib/WABinary/jid-utils.d.ts +1 -0
- package/lib/WABinary/jid-utils.d.ts.map +1 -0
- package/lib/WABinary/jid-utils.js +21 -38
- package/lib/WABinary/jid-utils.js.map +1 -0
- package/lib/WABinary/types.d.ts +2 -1
- package/lib/WABinary/types.d.ts.map +1 -0
- package/lib/WABinary/types.js +2 -2
- package/lib/WABinary/types.js.map +1 -0
- package/lib/WAM/BinaryInfo.d.ts +2 -1
- package/lib/WAM/BinaryInfo.d.ts.map +1 -0
- package/lib/WAM/BinaryInfo.js +2 -5
- package/lib/WAM/BinaryInfo.js.map +1 -0
- package/lib/WAM/constants.d.ts +1 -0
- package/lib/WAM/constants.d.ts.map +1 -0
- package/lib/WAM/constants.js +2257 -2366
- package/lib/WAM/constants.js.map +1 -0
- package/lib/WAM/encode.d.ts +2 -1
- package/lib/WAM/encode.d.ts.map +1 -0
- package/lib/WAM/encode.js +15 -19
- 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 -19
- package/lib/WAM/index.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +4 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +8 -11
- package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +3 -2
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +3 -2
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +3 -2
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +4 -3
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +3 -2
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +3 -6
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/index.d.ts +5 -4
- package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/index.js +5 -20
- package/lib/WAUSync/Protocols/index.js.map +1 -0
- package/lib/WAUSync/USyncQuery.d.ts +4 -3
- package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
- package/lib/WAUSync/USyncQuery.js +34 -32
- package/lib/WAUSync/USyncQuery.js.map +1 -0
- package/lib/WAUSync/USyncUser.d.ts +6 -5
- package/lib/WAUSync/USyncUser.d.ts.map +1 -0
- package/lib/WAUSync/USyncUser.js +2 -5
- 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 -19
- package/lib/WAUSync/index.js.map +1 -0
- package/lib/index.d.ts +9 -8
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +11 -30
- package/lib/index.js.map +1 -0
- package/package.json +36 -31
- package/WASignalGroup/GroupProtocol.js +0 -1697
- package/WASignalGroup/ciphertext_message.js +0 -16
- package/WASignalGroup/group_cipher.js +0 -120
- package/WASignalGroup/group_session_builder.js +0 -46
- package/WASignalGroup/index.js +0 -5
- package/WASignalGroup/keyhelper.js +0 -21
- package/WASignalGroup/protobufs.js +0 -3
- package/WASignalGroup/queue_job.js +0 -69
- package/WASignalGroup/sender_chain_key.js +0 -50
- package/WASignalGroup/sender_key_distribution_message.js +0 -78
- package/WASignalGroup/sender_key_message.js +0 -92
- package/WASignalGroup/sender_key_name.js +0 -70
- package/WASignalGroup/sender_key_record.js +0 -56
- package/WASignalGroup/sender_key_state.js +0 -129
|
@@ -1,45 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const userDevicesCache = config.userDevicesCache || new node_cache_1.default({
|
|
21
|
-
stdTTL: Defaults_1.DEFAULT_CACHE_TTLS.USER_DEVICES, // 5 minutes
|
|
22
|
-
useClones: false
|
|
23
|
-
});
|
|
1
|
+
import NodeCache from '@cacheable/node-cache';
|
|
2
|
+
import { Boom } from '@hapi/boom';
|
|
3
|
+
import { proto } from '../../WAProto/index.js';
|
|
4
|
+
import { DEFAULT_CACHE_TTLS, WA_DEFAULT_EPHEMERAL } from '../Defaults/index.js';
|
|
5
|
+
import { aggregateMessageKeysNotFromMe, assertMediaContent, bindWaitForEvent, decryptMediaRetryData, encodeNewsletterMessage, encodeSignedDeviceIdentity, encodeWAMessage, encryptMediaRetryRequest, extractDeviceJids, generateMessageIDV2, generateWAMessage, getStatusCodeForMediaRetry, getUrlFromDirectPath, getWAUploadToServer, normalizeMessageContent, parseAndInjectE2ESessions, unixTimestampSeconds } from '../Utils/index.js';
|
|
6
|
+
import { getUrlInfo } from '../Utils/link-preview.js';
|
|
7
|
+
import { areJidsSameUser, getBinaryNodeChild, getBinaryNodeChildren, isJidGroup, isJidUser, jidDecode, jidEncode, jidNormalizedUser, S_WHATSAPP_NET } from '../WABinary/index.js';
|
|
8
|
+
import { USyncQuery, USyncUser } from '../WAUSync/index.js';
|
|
9
|
+
import { makeGroupsSocket } from './groups.js';
|
|
10
|
+
import { makeNewsletterSocket } from './newsletter.js';
|
|
11
|
+
export const makeMessagesSocket = (config) => {
|
|
12
|
+
const { logger, linkPreviewImageThumbnailWidth, generateHighQualityLinkPreview, options: axiosOptions, patchMessageBeforeSending, cachedGroupMetadata } = config;
|
|
13
|
+
const sock = makeNewsletterSocket(makeGroupsSocket(config));
|
|
14
|
+
const { ev, authState, processingMutex, signalRepository, upsertMessage, query, fetchPrivacySettings, sendNode, groupMetadata, groupToggleEphemeral } = sock;
|
|
15
|
+
const userDevicesCache = config.userDevicesCache ||
|
|
16
|
+
new NodeCache({
|
|
17
|
+
stdTTL: DEFAULT_CACHE_TTLS.USER_DEVICES, // 5 minutes
|
|
18
|
+
useClones: false
|
|
19
|
+
});
|
|
24
20
|
let mediaConn;
|
|
25
21
|
const refreshMediaConn = async (forceGet = false) => {
|
|
26
22
|
const media = await mediaConn;
|
|
27
|
-
if (!media || forceGet ||
|
|
23
|
+
if (!media || forceGet || new Date().getTime() - media.fetchDate.getTime() > media.ttl * 1000) {
|
|
28
24
|
mediaConn = (async () => {
|
|
29
25
|
const result = await query({
|
|
30
26
|
tag: 'iq',
|
|
31
27
|
attrs: {
|
|
32
28
|
type: 'set',
|
|
33
29
|
xmlns: 'w:m',
|
|
34
|
-
to:
|
|
30
|
+
to: S_WHATSAPP_NET
|
|
35
31
|
},
|
|
36
32
|
content: [{ tag: 'media_conn', attrs: {} }]
|
|
37
33
|
});
|
|
38
|
-
const mediaConnNode =
|
|
34
|
+
const mediaConnNode = getBinaryNodeChild(result, 'media_conn');
|
|
39
35
|
const node = {
|
|
40
|
-
hosts:
|
|
36
|
+
hosts: getBinaryNodeChildren(mediaConnNode, 'host').map(({ attrs }) => ({
|
|
41
37
|
hostname: attrs.hostname,
|
|
42
|
-
maxContentLengthBytes: +attrs.maxContentLengthBytes
|
|
38
|
+
maxContentLengthBytes: +attrs.maxContentLengthBytes
|
|
43
39
|
})),
|
|
44
40
|
auth: mediaConnNode.attrs.auth,
|
|
45
41
|
ttl: +mediaConnNode.attrs.ttl,
|
|
@@ -56,17 +52,20 @@ const makeMessagesSocket = (config) => {
|
|
|
56
52
|
* used for receipts of phone call, read, delivery etc.
|
|
57
53
|
* */
|
|
58
54
|
const sendReceipt = async (jid, participant, messageIds, type) => {
|
|
55
|
+
if (!messageIds || messageIds.length === 0) {
|
|
56
|
+
throw new Boom('missing ids in receipt');
|
|
57
|
+
}
|
|
59
58
|
const node = {
|
|
60
59
|
tag: 'receipt',
|
|
61
60
|
attrs: {
|
|
62
|
-
id: messageIds[0]
|
|
63
|
-
}
|
|
61
|
+
id: messageIds[0]
|
|
62
|
+
}
|
|
64
63
|
};
|
|
65
64
|
const isReadReceipt = type === 'read' || type === 'read-self';
|
|
66
65
|
if (isReadReceipt) {
|
|
67
|
-
node.attrs.t =
|
|
66
|
+
node.attrs.t = unixTimestampSeconds().toString();
|
|
68
67
|
}
|
|
69
|
-
if (type === 'sender' &&
|
|
68
|
+
if (type === 'sender' && isJidUser(jid)) {
|
|
70
69
|
node.attrs.recipient = jid;
|
|
71
70
|
node.attrs.to = participant;
|
|
72
71
|
}
|
|
@@ -97,7 +96,7 @@ const makeMessagesSocket = (config) => {
|
|
|
97
96
|
};
|
|
98
97
|
/** Correctly bulk send receipts to multiple chats, participants */
|
|
99
98
|
const sendReceipts = async (keys, type) => {
|
|
100
|
-
const recps =
|
|
99
|
+
const recps = aggregateMessageKeysNotFromMe(keys);
|
|
101
100
|
for (const { jid, participant, messageIds } of recps) {
|
|
102
101
|
await sendReceipt(jid, participant, messageIds, type);
|
|
103
102
|
}
|
|
@@ -111,7 +110,6 @@ const makeMessagesSocket = (config) => {
|
|
|
111
110
|
};
|
|
112
111
|
/** Fetch all the devices we've to send a message to */
|
|
113
112
|
const getUSyncDevices = async (jids, useCache, ignoreZeroDevices) => {
|
|
114
|
-
var _a;
|
|
115
113
|
const deviceResults = [];
|
|
116
114
|
if (!useCache) {
|
|
117
115
|
logger.debug('not using cache for devices');
|
|
@@ -119,8 +117,8 @@ const makeMessagesSocket = (config) => {
|
|
|
119
117
|
const toFetch = [];
|
|
120
118
|
jids = Array.from(new Set(jids));
|
|
121
119
|
for (let jid of jids) {
|
|
122
|
-
const user =
|
|
123
|
-
jid =
|
|
120
|
+
const user = jidDecode(jid)?.user;
|
|
121
|
+
jid = jidNormalizedUser(jid);
|
|
124
122
|
if (useCache) {
|
|
125
123
|
const devices = userDevicesCache.get(user);
|
|
126
124
|
if (devices) {
|
|
@@ -138,19 +136,17 @@ const makeMessagesSocket = (config) => {
|
|
|
138
136
|
if (!toFetch.length) {
|
|
139
137
|
return deviceResults;
|
|
140
138
|
}
|
|
141
|
-
const query = new
|
|
142
|
-
.withContext('message')
|
|
143
|
-
.withDeviceProtocol();
|
|
139
|
+
const query = new USyncQuery().withContext('message').withDeviceProtocol();
|
|
144
140
|
for (const jid of toFetch) {
|
|
145
|
-
query.withUser(new
|
|
141
|
+
query.withUser(new USyncUser().withId(jid));
|
|
146
142
|
}
|
|
147
143
|
const result = await sock.executeUSyncQuery(query);
|
|
148
144
|
if (result) {
|
|
149
|
-
const extracted =
|
|
145
|
+
const extracted = extractDeviceJids(result?.list, authState.creds.me.id, ignoreZeroDevices);
|
|
150
146
|
const deviceMap = {};
|
|
151
147
|
for (const item of extracted) {
|
|
152
148
|
deviceMap[item.user] = deviceMap[item.user] || [];
|
|
153
|
-
deviceMap[item.user]
|
|
149
|
+
deviceMap[item.user]?.push(item);
|
|
154
150
|
deviceResults.push(item);
|
|
155
151
|
}
|
|
156
152
|
for (const key in deviceMap) {
|
|
@@ -166,12 +162,10 @@ const makeMessagesSocket = (config) => {
|
|
|
166
162
|
jidsRequiringFetch = jids;
|
|
167
163
|
}
|
|
168
164
|
else {
|
|
169
|
-
const addrs = jids.map(jid => (
|
|
170
|
-
.jidToSignalProtocolAddress(jid)));
|
|
165
|
+
const addrs = jids.map(jid => signalRepository.jidToSignalProtocolAddress(jid));
|
|
171
166
|
const sessions = await authState.keys.get('session', addrs);
|
|
172
167
|
for (const jid of jids) {
|
|
173
|
-
const signalId = signalRepository
|
|
174
|
-
.jidToSignalProtocolAddress(jid);
|
|
168
|
+
const signalId = signalRepository.jidToSignalProtocolAddress(jid);
|
|
175
169
|
if (!sessions[signalId]) {
|
|
176
170
|
jidsRequiringFetch.push(jid);
|
|
177
171
|
}
|
|
@@ -184,7 +178,7 @@ const makeMessagesSocket = (config) => {
|
|
|
184
178
|
attrs: {
|
|
185
179
|
xmlns: 'encrypt',
|
|
186
180
|
type: 'get',
|
|
187
|
-
to:
|
|
181
|
+
to: S_WHATSAPP_NET
|
|
188
182
|
},
|
|
189
183
|
content: [
|
|
190
184
|
{
|
|
@@ -192,35 +186,33 @@ const makeMessagesSocket = (config) => {
|
|
|
192
186
|
attrs: {},
|
|
193
187
|
content: jidsRequiringFetch.map(jid => ({
|
|
194
188
|
tag: 'user',
|
|
195
|
-
attrs: { jid }
|
|
189
|
+
attrs: { jid }
|
|
196
190
|
}))
|
|
197
191
|
}
|
|
198
192
|
]
|
|
199
193
|
});
|
|
200
|
-
await
|
|
194
|
+
await parseAndInjectE2ESessions(result, signalRepository);
|
|
201
195
|
didFetchNewSession = true;
|
|
202
196
|
}
|
|
203
197
|
return didFetchNewSession;
|
|
204
198
|
};
|
|
205
199
|
const sendPeerDataOperationMessage = async (pdoMessage) => {
|
|
206
|
-
var _a;
|
|
207
200
|
//TODO: for later, abstract the logic to send a Peer Message instead of just PDO - useful for App State Key Resync with phone
|
|
208
|
-
if (!
|
|
209
|
-
throw new
|
|
201
|
+
if (!authState.creds.me?.id) {
|
|
202
|
+
throw new Boom('Not authenticated');
|
|
210
203
|
}
|
|
211
204
|
const protocolMessage = {
|
|
212
205
|
protocolMessage: {
|
|
213
206
|
peerDataOperationRequestMessage: pdoMessage,
|
|
214
|
-
type:
|
|
207
|
+
type: proto.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_MESSAGE
|
|
215
208
|
}
|
|
216
209
|
};
|
|
217
|
-
const meJid =
|
|
210
|
+
const meJid = jidNormalizedUser(authState.creds.me.id);
|
|
218
211
|
const msgId = await relayMessage(meJid, protocolMessage, {
|
|
219
212
|
additionalAttributes: {
|
|
220
213
|
category: 'peer',
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
},
|
|
214
|
+
push_priority: 'high_force'
|
|
215
|
+
}
|
|
224
216
|
});
|
|
225
217
|
return msgId;
|
|
226
218
|
};
|
|
@@ -235,50 +227,52 @@ const makeMessagesSocket = (config) => {
|
|
|
235
227
|
if (!jid) {
|
|
236
228
|
return {};
|
|
237
229
|
}
|
|
238
|
-
const bytes =
|
|
239
|
-
const { type, ciphertext } = await signalRepository
|
|
240
|
-
.encryptMessage({ jid, data: bytes });
|
|
230
|
+
const bytes = encodeWAMessage(patchedMessage);
|
|
231
|
+
const { type, ciphertext } = await signalRepository.encryptMessage({ jid, data: bytes });
|
|
241
232
|
if (type === 'pkmsg') {
|
|
242
233
|
shouldIncludeDeviceIdentity = true;
|
|
243
234
|
}
|
|
244
235
|
const node = {
|
|
245
236
|
tag: 'to',
|
|
246
237
|
attrs: { jid },
|
|
247
|
-
content: [
|
|
238
|
+
content: [
|
|
239
|
+
{
|
|
248
240
|
tag: 'enc',
|
|
249
241
|
attrs: {
|
|
250
242
|
v: '2',
|
|
251
243
|
type,
|
|
252
|
-
...extraAttrs || {}
|
|
244
|
+
...(extraAttrs || {})
|
|
253
245
|
},
|
|
254
246
|
content: ciphertext
|
|
255
|
-
}
|
|
247
|
+
}
|
|
248
|
+
]
|
|
256
249
|
};
|
|
257
250
|
return node;
|
|
258
251
|
}));
|
|
259
252
|
return { nodes, shouldIncludeDeviceIdentity };
|
|
260
253
|
};
|
|
261
254
|
const relayMessage = async (jid, message, { messageId: msgId, participant, additionalAttributes, additionalNodes, useUserDevicesCache, useCachedGroupMetadata, statusJidList }) => {
|
|
262
|
-
var _a;
|
|
263
255
|
const meId = authState.creds.me.id;
|
|
264
256
|
let shouldIncludeDeviceIdentity = false;
|
|
265
|
-
const { user, server } =
|
|
257
|
+
const { user, server } = jidDecode(jid);
|
|
266
258
|
const statusJid = 'status@broadcast';
|
|
267
259
|
const isGroup = server === 'g.us';
|
|
268
260
|
const isStatus = jid === statusJid;
|
|
269
261
|
const isLid = server === 'lid';
|
|
270
|
-
|
|
262
|
+
const isNewsletter = server === 'newsletter';
|
|
263
|
+
msgId = msgId || generateMessageIDV2(sock.user?.id);
|
|
271
264
|
useUserDevicesCache = useUserDevicesCache !== false;
|
|
272
265
|
useCachedGroupMetadata = useCachedGroupMetadata !== false && !isStatus;
|
|
273
266
|
const participants = [];
|
|
274
|
-
const destinationJid =
|
|
267
|
+
const destinationJid = !isStatus ? jidEncode(user, isLid ? 'lid' : isGroup ? 'g.us' : 's.whatsapp.net') : statusJid;
|
|
275
268
|
const binaryNodeContent = [];
|
|
276
269
|
const devices = [];
|
|
277
270
|
const meMsg = {
|
|
278
271
|
deviceSentMessage: {
|
|
279
272
|
destinationJid,
|
|
280
273
|
message
|
|
281
|
-
}
|
|
274
|
+
},
|
|
275
|
+
messageContextInfo: message.messageContextInfo
|
|
282
276
|
};
|
|
283
277
|
const extraAttrs = {};
|
|
284
278
|
if (participant) {
|
|
@@ -286,25 +280,47 @@ const makeMessagesSocket = (config) => {
|
|
|
286
280
|
// only send to the specific device that asked for a retry
|
|
287
281
|
// otherwise the message is sent out to every device that should be a recipient
|
|
288
282
|
if (!isGroup && !isStatus) {
|
|
289
|
-
additionalAttributes = { ...additionalAttributes,
|
|
283
|
+
additionalAttributes = { ...additionalAttributes, device_fanout: 'false' };
|
|
290
284
|
}
|
|
291
|
-
const { user, device } =
|
|
285
|
+
const { user, device } = jidDecode(participant.jid);
|
|
292
286
|
devices.push({ user, device });
|
|
293
287
|
}
|
|
294
288
|
await authState.keys.transaction(async () => {
|
|
295
|
-
var _a, _b, _c, _d, _e;
|
|
296
289
|
const mediaType = getMediaType(message);
|
|
297
290
|
if (mediaType) {
|
|
298
291
|
extraAttrs['mediatype'] = mediaType;
|
|
299
292
|
}
|
|
300
|
-
if (
|
|
293
|
+
if (isNewsletter) {
|
|
294
|
+
// Patch message if needed, then encode as plaintext
|
|
295
|
+
const patched = patchMessageBeforeSending ? await patchMessageBeforeSending(message, []) : message;
|
|
296
|
+
const bytes = encodeNewsletterMessage(patched);
|
|
297
|
+
binaryNodeContent.push({
|
|
298
|
+
tag: 'plaintext',
|
|
299
|
+
attrs: {},
|
|
300
|
+
content: bytes
|
|
301
|
+
});
|
|
302
|
+
const stanza = {
|
|
303
|
+
tag: 'message',
|
|
304
|
+
attrs: {
|
|
305
|
+
to: jid,
|
|
306
|
+
id: msgId,
|
|
307
|
+
type: getMessageType(message),
|
|
308
|
+
...(additionalAttributes || {})
|
|
309
|
+
},
|
|
310
|
+
content: binaryNodeContent
|
|
311
|
+
};
|
|
312
|
+
logger.debug({ msgId }, `sending newsletter message to ${jid}`);
|
|
313
|
+
await sendNode(stanza);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
if (normalizeMessageContent(message)?.pinInChatMessage) {
|
|
301
317
|
extraAttrs['decrypt-fail'] = 'hide';
|
|
302
318
|
}
|
|
303
319
|
if (isGroup || isStatus) {
|
|
304
320
|
const [groupData, senderKeyMap] = await Promise.all([
|
|
305
321
|
(async () => {
|
|
306
322
|
let groupData = useCachedGroupMetadata && cachedGroupMetadata ? await cachedGroupMetadata(jid) : undefined;
|
|
307
|
-
if (groupData && Array.isArray(groupData
|
|
323
|
+
if (groupData && Array.isArray(groupData?.participants)) {
|
|
308
324
|
logger.trace({ jid, participants: groupData.participants.length }, 'using cached group metadata');
|
|
309
325
|
}
|
|
310
326
|
else if (!isStatus) {
|
|
@@ -321,14 +337,14 @@ const makeMessagesSocket = (config) => {
|
|
|
321
337
|
})()
|
|
322
338
|
]);
|
|
323
339
|
if (!participant) {
|
|
324
|
-
const participantsList =
|
|
340
|
+
const participantsList = groupData && !isStatus ? groupData.participants.map(p => p.id) : [];
|
|
325
341
|
if (isStatus && statusJidList) {
|
|
326
342
|
participantsList.push(...statusJidList);
|
|
327
343
|
}
|
|
328
344
|
if (!isStatus) {
|
|
329
345
|
additionalAttributes = {
|
|
330
346
|
...additionalAttributes,
|
|
331
|
-
addressing_mode:
|
|
347
|
+
addressing_mode: groupData?.addressingMode || 'pn'
|
|
332
348
|
};
|
|
333
349
|
}
|
|
334
350
|
const additionalDevices = await getUSyncDevices(participantsList, !!useUserDevicesCache, false);
|
|
@@ -336,18 +352,18 @@ const makeMessagesSocket = (config) => {
|
|
|
336
352
|
}
|
|
337
353
|
const patched = await patchMessageBeforeSending(message);
|
|
338
354
|
if (Array.isArray(patched)) {
|
|
339
|
-
throw new
|
|
355
|
+
throw new Boom('Per-jid patching is not supported in groups');
|
|
340
356
|
}
|
|
341
|
-
const bytes =
|
|
357
|
+
const bytes = encodeWAMessage(patched);
|
|
342
358
|
const { ciphertext, senderKeyDistributionMessage } = await signalRepository.encryptGroupMessage({
|
|
343
359
|
group: destinationJid,
|
|
344
360
|
data: bytes,
|
|
345
|
-
meId
|
|
361
|
+
meId
|
|
346
362
|
});
|
|
347
363
|
const senderKeyJids = [];
|
|
348
364
|
// ensure a connection is established with every device
|
|
349
365
|
for (const { user, device } of devices) {
|
|
350
|
-
const jid =
|
|
366
|
+
const jid = jidEncode(user, groupData?.addressingMode === 'lid' ? 'lid' : 's.whatsapp.net', device);
|
|
351
367
|
if (!senderKeyMap[jid] || !!participant) {
|
|
352
368
|
senderKeyJids.push(jid);
|
|
353
369
|
// store that this person has had the sender keys sent to them
|
|
@@ -377,13 +393,13 @@ const makeMessagesSocket = (config) => {
|
|
|
377
393
|
await authState.keys.set({ 'sender-key-memory': { [jid]: senderKeyMap } });
|
|
378
394
|
}
|
|
379
395
|
else {
|
|
380
|
-
const { user: meUser } =
|
|
396
|
+
const { user: meUser } = jidDecode(meId);
|
|
381
397
|
if (!participant) {
|
|
382
398
|
devices.push({ user });
|
|
383
399
|
if (user !== meUser) {
|
|
384
400
|
devices.push({ user: meUser });
|
|
385
401
|
}
|
|
386
|
-
if (
|
|
402
|
+
if (additionalAttributes?.['category'] !== 'peer') {
|
|
387
403
|
const additionalDevices = await getUSyncDevices([meId, jid], !!useUserDevicesCache, true);
|
|
388
404
|
devices.push(...additionalDevices);
|
|
389
405
|
}
|
|
@@ -393,7 +409,7 @@ const makeMessagesSocket = (config) => {
|
|
|
393
409
|
const otherJids = [];
|
|
394
410
|
for (const { user, device } of devices) {
|
|
395
411
|
const isMe = user === meUser;
|
|
396
|
-
const jid =
|
|
412
|
+
const jid = jidEncode(isMe && isLid ? authState.creds?.me?.lid.split(':')[0] || user : user, isLid ? 'lid' : 's.whatsapp.net', device);
|
|
397
413
|
if (isMe) {
|
|
398
414
|
meJids.push(jid);
|
|
399
415
|
}
|
|
@@ -412,8 +428,8 @@ const makeMessagesSocket = (config) => {
|
|
|
412
428
|
shouldIncludeDeviceIdentity = shouldIncludeDeviceIdentity || s1 || s2;
|
|
413
429
|
}
|
|
414
430
|
if (participants.length) {
|
|
415
|
-
if (
|
|
416
|
-
const peerNode =
|
|
431
|
+
if (additionalAttributes?.['category'] === 'peer') {
|
|
432
|
+
const peerNode = participants[0]?.content?.[0];
|
|
417
433
|
if (peerNode) {
|
|
418
434
|
binaryNodeContent.push(peerNode); // push only enc
|
|
419
435
|
}
|
|
@@ -439,11 +455,11 @@ const makeMessagesSocket = (config) => {
|
|
|
439
455
|
// ensure the message is only sent to that person
|
|
440
456
|
// if a retry receipt is sent to everyone -- it'll fail decryption for everyone else who received the msg
|
|
441
457
|
if (participant) {
|
|
442
|
-
if (
|
|
458
|
+
if (isJidGroup(destinationJid)) {
|
|
443
459
|
stanza.attrs.to = destinationJid;
|
|
444
460
|
stanza.attrs.participant = participant.jid;
|
|
445
461
|
}
|
|
446
|
-
else if (
|
|
462
|
+
else if (areJidsSameUser(participant.jid, meId)) {
|
|
447
463
|
stanza.attrs.to = participant.jid;
|
|
448
464
|
stanza.attrs.recipient = destinationJid;
|
|
449
465
|
}
|
|
@@ -455,14 +471,16 @@ const makeMessagesSocket = (config) => {
|
|
|
455
471
|
stanza.attrs.to = destinationJid;
|
|
456
472
|
}
|
|
457
473
|
if (shouldIncludeDeviceIdentity) {
|
|
474
|
+
;
|
|
458
475
|
stanza.content.push({
|
|
459
476
|
tag: 'device-identity',
|
|
460
477
|
attrs: {},
|
|
461
|
-
content:
|
|
478
|
+
content: encodeSignedDeviceIdentity(authState.creds.account, true)
|
|
462
479
|
});
|
|
463
480
|
logger.debug({ jid }, 'adding device identity');
|
|
464
481
|
}
|
|
465
482
|
if (additionalNodes && additionalNodes.length > 0) {
|
|
483
|
+
;
|
|
466
484
|
stanza.content.push(...additionalNodes);
|
|
467
485
|
}
|
|
468
486
|
logger.debug({ msgId }, `sending message to ${participants.length} devices`);
|
|
@@ -524,11 +542,11 @@ const makeMessagesSocket = (config) => {
|
|
|
524
542
|
}
|
|
525
543
|
};
|
|
526
544
|
const getPrivacyTokens = async (jids) => {
|
|
527
|
-
const t =
|
|
545
|
+
const t = unixTimestampSeconds().toString();
|
|
528
546
|
const result = await query({
|
|
529
547
|
tag: 'iq',
|
|
530
548
|
attrs: {
|
|
531
|
-
to:
|
|
549
|
+
to: S_WHATSAPP_NET,
|
|
532
550
|
type: 'set',
|
|
533
551
|
xmlns: 'privacy'
|
|
534
552
|
},
|
|
@@ -539,7 +557,7 @@ const makeMessagesSocket = (config) => {
|
|
|
539
557
|
content: jids.map(jid => ({
|
|
540
558
|
tag: 'token',
|
|
541
559
|
attrs: {
|
|
542
|
-
jid:
|
|
560
|
+
jid: jidNormalizedUser(jid),
|
|
543
561
|
t,
|
|
544
562
|
type: 'trusted_contact'
|
|
545
563
|
}
|
|
@@ -549,8 +567,8 @@ const makeMessagesSocket = (config) => {
|
|
|
549
567
|
});
|
|
550
568
|
return result;
|
|
551
569
|
};
|
|
552
|
-
const waUploadToServer =
|
|
553
|
-
const waitForMsgMediaUpdate =
|
|
570
|
+
const waUploadToServer = getWAUploadToServer(config, refreshMediaConn);
|
|
571
|
+
const waitForMsgMediaUpdate = bindWaitForEvent(ev, 'messages.media-update');
|
|
554
572
|
return {
|
|
555
573
|
...sock,
|
|
556
574
|
getPrivacyTokens,
|
|
@@ -566,10 +584,10 @@ const makeMessagesSocket = (config) => {
|
|
|
566
584
|
createParticipantNodes,
|
|
567
585
|
getUSyncDevices,
|
|
568
586
|
updateMediaMessage: async (message) => {
|
|
569
|
-
const content =
|
|
587
|
+
const content = assertMediaContent(message.message);
|
|
570
588
|
const mediaKey = content.mediaKey;
|
|
571
589
|
const meId = authState.creds.me.id;
|
|
572
|
-
const node = await
|
|
590
|
+
const node = await encryptMediaRetryRequest(message.key, mediaKey, meId);
|
|
573
591
|
let error = undefined;
|
|
574
592
|
await Promise.all([
|
|
575
593
|
sendNode(node),
|
|
@@ -581,13 +599,16 @@ const makeMessagesSocket = (config) => {
|
|
|
581
599
|
}
|
|
582
600
|
else {
|
|
583
601
|
try {
|
|
584
|
-
const media = await
|
|
585
|
-
if (media.result !==
|
|
586
|
-
const resultStr =
|
|
587
|
-
throw new
|
|
602
|
+
const media = await decryptMediaRetryData(result.media, mediaKey, result.key.id);
|
|
603
|
+
if (media.result !== proto.MediaRetryNotification.ResultType.SUCCESS) {
|
|
604
|
+
const resultStr = proto.MediaRetryNotification.ResultType[media.result];
|
|
605
|
+
throw new Boom(`Media re-upload failed by device (${resultStr})`, {
|
|
606
|
+
data: media,
|
|
607
|
+
statusCode: getStatusCodeForMediaRetry(media.result) || 404
|
|
608
|
+
});
|
|
588
609
|
}
|
|
589
610
|
content.directPath = media.directPath;
|
|
590
|
-
content.url =
|
|
611
|
+
content.url = getUrlFromDirectPath(content.directPath);
|
|
591
612
|
logger.debug({ directPath: media.directPath, key: result.key }, 'media update successful');
|
|
592
613
|
}
|
|
593
614
|
catch (err) {
|
|
@@ -601,46 +622,43 @@ const makeMessagesSocket = (config) => {
|
|
|
601
622
|
if (error) {
|
|
602
623
|
throw error;
|
|
603
624
|
}
|
|
604
|
-
ev.emit('messages.update', [
|
|
605
|
-
{ key: message.key, update: { message: message.message } }
|
|
606
|
-
]);
|
|
625
|
+
ev.emit('messages.update', [{ key: message.key, update: { message: message.message } }]);
|
|
607
626
|
return message;
|
|
608
627
|
},
|
|
609
628
|
sendMessage: async (jid, content, options = {}) => {
|
|
610
|
-
var _a, _b, _c;
|
|
611
629
|
const userJid = authState.creds.me.id;
|
|
612
630
|
if (typeof content === 'object' &&
|
|
613
631
|
'disappearingMessagesInChat' in content &&
|
|
614
632
|
typeof content['disappearingMessagesInChat'] !== 'undefined' &&
|
|
615
|
-
|
|
633
|
+
isJidGroup(jid)) {
|
|
616
634
|
const { disappearingMessagesInChat } = content;
|
|
617
|
-
const value = typeof disappearingMessagesInChat === 'boolean'
|
|
618
|
-
|
|
619
|
-
|
|
635
|
+
const value = typeof disappearingMessagesInChat === 'boolean'
|
|
636
|
+
? disappearingMessagesInChat
|
|
637
|
+
? WA_DEFAULT_EPHEMERAL
|
|
638
|
+
: 0
|
|
639
|
+
: disappearingMessagesInChat;
|
|
620
640
|
await groupToggleEphemeral(jid, value);
|
|
621
641
|
}
|
|
622
642
|
else {
|
|
623
|
-
const fullMsg = await
|
|
643
|
+
const fullMsg = await generateWAMessage(jid, content, {
|
|
624
644
|
logger,
|
|
625
645
|
userJid,
|
|
626
|
-
getUrlInfo: text =>
|
|
646
|
+
getUrlInfo: text => getUrlInfo(text, {
|
|
627
647
|
thumbnailWidth: linkPreviewImageThumbnailWidth,
|
|
628
648
|
fetchOpts: {
|
|
629
649
|
timeout: 3000,
|
|
630
|
-
...axiosOptions || {}
|
|
650
|
+
...(axiosOptions || {})
|
|
631
651
|
},
|
|
632
652
|
logger,
|
|
633
|
-
uploadImage: generateHighQualityLinkPreview
|
|
634
|
-
? waUploadToServer
|
|
635
|
-
: undefined
|
|
653
|
+
uploadImage: generateHighQualityLinkPreview ? waUploadToServer : undefined
|
|
636
654
|
}),
|
|
637
655
|
//TODO: CACHE
|
|
638
656
|
getProfilePicUrl: sock.profilePictureUrl,
|
|
639
657
|
upload: waUploadToServer,
|
|
640
658
|
mediaCache: config.mediaCache,
|
|
641
659
|
options: config.options,
|
|
642
|
-
messageId:
|
|
643
|
-
...options
|
|
660
|
+
messageId: generateMessageIDV2(sock.user?.id),
|
|
661
|
+
...options
|
|
644
662
|
});
|
|
645
663
|
const isDeleteMsg = 'delete' in content && !!content.delete;
|
|
646
664
|
const isEditMsg = 'edit' in content && !!content.edit;
|
|
@@ -651,7 +669,7 @@ const makeMessagesSocket = (config) => {
|
|
|
651
669
|
// required for delete
|
|
652
670
|
if (isDeleteMsg) {
|
|
653
671
|
// if the chat is a group, and I am not the author, then delete the message as an admin
|
|
654
|
-
if (
|
|
672
|
+
if (isJidGroup(content.delete?.remoteJid) && !content.delete?.fromMe) {
|
|
655
673
|
additionalAttributes.edit = '8';
|
|
656
674
|
}
|
|
657
675
|
else {
|
|
@@ -669,16 +687,22 @@ const makeMessagesSocket = (config) => {
|
|
|
669
687
|
tag: 'meta',
|
|
670
688
|
attrs: {
|
|
671
689
|
polltype: 'creation'
|
|
672
|
-
}
|
|
690
|
+
}
|
|
673
691
|
});
|
|
674
692
|
}
|
|
675
693
|
if ('cachedGroupMetadata' in options) {
|
|
676
694
|
console.warn('cachedGroupMetadata in sendMessage are deprecated, now cachedGroupMetadata is part of the socket config.');
|
|
677
695
|
}
|
|
678
|
-
await relayMessage(jid, fullMsg.message, {
|
|
696
|
+
await relayMessage(jid, fullMsg.message, {
|
|
697
|
+
messageId: fullMsg.key.id,
|
|
698
|
+
useCachedGroupMetadata: options.useCachedGroupMetadata,
|
|
699
|
+
additionalAttributes,
|
|
700
|
+
statusJidList: options.statusJidList,
|
|
701
|
+
additionalNodes
|
|
702
|
+
});
|
|
679
703
|
if (config.emitOwnEvents) {
|
|
680
704
|
process.nextTick(() => {
|
|
681
|
-
processingMutex.mutex(() =>
|
|
705
|
+
processingMutex.mutex(() => upsertMessage(fullMsg, 'append'));
|
|
682
706
|
});
|
|
683
707
|
}
|
|
684
708
|
return fullMsg;
|
|
@@ -686,4 +710,4 @@ const makeMessagesSocket = (config) => {
|
|
|
686
710
|
}
|
|
687
711
|
};
|
|
688
712
|
};
|
|
689
|
-
|
|
713
|
+
//# sourceMappingURL=messages-send.js.map
|