@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
package/lib/Signal/libsignal.js
CHANGED
|
@@ -1,101 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.makeLibSignalRepository = makeLibSignalRepository;
|
|
37
|
-
const libsignal = __importStar(require("libsignal"));
|
|
38
|
-
const { PreKeyWhisperMessage } = require("libsignal/src/protobufs");
|
|
39
|
-
const Utils_1 = require("../Utils");
|
|
40
|
-
const WABinary_1 = require("../WABinary");
|
|
41
|
-
const sender_key_name_1 = require("./Group/sender-key-name");
|
|
42
|
-
const sender_key_record_1 = require("./Group/sender-key-record");
|
|
43
|
-
const Group_1 = require("./Group");
|
|
44
|
-
const LIDMappingStore_1 = require("./lid-mapping")
|
|
45
|
-
|
|
46
|
-
// FIX: sebelumnya pontalabs gak punya deteksi perubahan identity key sama
|
|
47
|
-
// sekali. Kalau identity kontak berubah (kontak install ulang WA, atau kena
|
|
48
|
-
// resync multi-device pas ada linked device lain online), sesi lama tetap
|
|
49
|
-
// dipakai terus dan selalu gagal decrypt "Bad MAC" berulang-ulang sampai
|
|
50
|
-
// akhirnya kena threshold retry enableAutoSessionRecreation. Dengan deteksi
|
|
51
|
-
// ini, begitu identity berubah, sesi langsung direset SAAT ITU JUGA - gak
|
|
52
|
-
// perlu nunggu beberapa pesan gagal dulu.
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as libsignal from 'libsignal';
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
import { PreKeyWhisperMessage } from 'libsignal/src/protobufs.js';
|
|
5
|
+
import { LRUCache } from 'lru-cache';
|
|
6
|
+
import { generateSignalPubKey } from '../Utils/index.js';
|
|
7
|
+
import { isHostedLidUser, isHostedPnUser, isLidUser, isPnUser, jidDecode, transferDevice, WAJIDDomains } from '../WABinary/index.js';
|
|
8
|
+
import { SenderKeyName } from './Group/sender-key-name.js';
|
|
9
|
+
import { SenderKeyRecord } from './Group/sender-key-record.js';
|
|
10
|
+
import { GroupCipher, GroupSessionBuilder, SenderKeyDistributionMessage } from './Group/index.js';
|
|
11
|
+
import { LIDMappingStore } from './lid-mapping.js';
|
|
12
|
+
/** Extract identity key from PreKeyWhisperMessage for identity change detection */
|
|
53
13
|
function extractIdentityFromPkmsg(ciphertext) {
|
|
54
14
|
try {
|
|
55
15
|
if (!ciphertext || ciphertext.length < 2) {
|
|
56
16
|
return undefined;
|
|
57
17
|
}
|
|
18
|
+
// Version byte check (version 3)
|
|
58
19
|
const version = ciphertext[0];
|
|
59
20
|
if ((version & 0xf) !== 3) {
|
|
60
21
|
return undefined;
|
|
61
22
|
}
|
|
23
|
+
// Parse protobuf (skip version byte)
|
|
62
24
|
const preKeyProto = PreKeyWhisperMessage.decode(ciphertext.slice(1));
|
|
63
|
-
if (preKeyProto.identityKey
|
|
64
|
-
return
|
|
25
|
+
if (preKeyProto.identityKey?.length === 33) {
|
|
26
|
+
return new Uint8Array(preKeyProto.identityKey);
|
|
65
27
|
}
|
|
66
28
|
return undefined;
|
|
67
|
-
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
68
31
|
return undefined;
|
|
69
32
|
}
|
|
70
33
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
34
|
+
export function makeLibSignalRepository(auth, logger, pnToLIDFunc) {
|
|
35
|
+
const lidMapping = new LIDMappingStore(auth.keys, logger, pnToLIDFunc);
|
|
36
|
+
const storage = signalStorage(auth, lidMapping);
|
|
37
|
+
const parsedKeys = auth.keys;
|
|
38
|
+
const migratedSessionCache = new LRUCache({
|
|
39
|
+
ttl: 3 * 24 * 60 * 60 * 1000, // 7 days
|
|
40
|
+
ttlAutopurge: true,
|
|
41
|
+
updateAgeOnGet: true
|
|
42
|
+
});
|
|
43
|
+
const ensureSenderKeyAndCreateSkdm = async (group, meId) => {
|
|
44
|
+
const senderName = jidToSignalSenderKeyName(group, meId);
|
|
45
|
+
const senderNameStr = senderName.toString();
|
|
46
|
+
const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr]);
|
|
47
|
+
if (!senderKey) {
|
|
48
|
+
await storage.storeSenderKey(senderName, new SenderKeyRecord());
|
|
49
|
+
}
|
|
50
|
+
const skdm = await new GroupSessionBuilder(storage).create(senderName);
|
|
51
|
+
return { senderName, skdm };
|
|
52
|
+
};
|
|
53
|
+
const repository = {
|
|
77
54
|
decryptGroupMessage({ group, authorJid, msg }) {
|
|
78
55
|
const senderName = jidToSignalSenderKeyName(group, authorJid);
|
|
79
|
-
const cipher = new
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
// sender yang sama numpuk barengan.
|
|
83
|
-
return auth.keys.transaction(async () => {
|
|
56
|
+
const cipher = new GroupCipher(storage, senderName);
|
|
57
|
+
// Use transaction to ensure atomicity
|
|
58
|
+
return parsedKeys.transaction(async () => {
|
|
84
59
|
return cipher.decrypt(msg);
|
|
85
60
|
}, group);
|
|
86
61
|
},
|
|
87
62
|
async processSenderKeyDistributionMessage({ item, authorJid }) {
|
|
88
|
-
const builder = new
|
|
63
|
+
const builder = new GroupSessionBuilder(storage);
|
|
89
64
|
if (!item.groupId) {
|
|
90
65
|
throw new Error('Group ID is required for sender key distribution message');
|
|
91
66
|
}
|
|
92
67
|
const senderName = jidToSignalSenderKeyName(item.groupId, authorJid);
|
|
93
|
-
const senderMsg = new
|
|
68
|
+
const senderMsg = new SenderKeyDistributionMessage(null, null, null, null, item.axolotlSenderKeyDistributionMessage);
|
|
94
69
|
const senderNameStr = senderName.toString();
|
|
95
|
-
|
|
70
|
+
const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr]);
|
|
71
|
+
if (!senderKey) {
|
|
72
|
+
await storage.storeSenderKey(senderName, new SenderKeyRecord());
|
|
73
|
+
}
|
|
74
|
+
return parsedKeys.transaction(async () => {
|
|
96
75
|
const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr]);
|
|
97
76
|
if (!senderKey) {
|
|
98
|
-
await storage.storeSenderKey(senderName, new
|
|
77
|
+
await storage.storeSenderKey(senderName, new SenderKeyRecord());
|
|
99
78
|
}
|
|
100
79
|
await builder.process(senderName, senderMsg);
|
|
101
80
|
}, item.groupId);
|
|
@@ -103,80 +82,91 @@ function makeLibSignalRepository(auth, onWhatsAppFunc, logger) {
|
|
|
103
82
|
async decryptMessage({ jid, type, ciphertext }) {
|
|
104
83
|
const addr = jidToSignalProtocolAddress(jid);
|
|
105
84
|
const session = new libsignal.SessionCipher(storage, addr);
|
|
106
|
-
//
|
|
107
|
-
// identity key pengirim berubah dibanding yang tersimpan. Kalau iya,
|
|
108
|
-
// sesi lama otomatis direset supaya gak nyoba decrypt pakai sesi basi.
|
|
85
|
+
// Extract and save sender's identity key before decryption for identity change detection
|
|
109
86
|
if (type === 'pkmsg') {
|
|
110
87
|
const identityKey = extractIdentityFromPkmsg(ciphertext);
|
|
111
88
|
if (identityKey) {
|
|
112
89
|
const addrStr = addr.toString();
|
|
113
90
|
const identityChanged = await storage.saveIdentity(addrStr, identityKey);
|
|
114
91
|
if (identityChanged) {
|
|
115
|
-
logger
|
|
92
|
+
logger.info({ jid, addr: addrStr }, 'identity key changed or new contact, session will be re-established');
|
|
116
93
|
}
|
|
117
94
|
}
|
|
118
95
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
break;
|
|
129
|
-
default:
|
|
130
|
-
throw new Error(`Unknown message type: ${type}`);
|
|
131
|
-
}
|
|
132
|
-
return result;
|
|
133
|
-
}, jid);
|
|
134
|
-
} catch (error) {
|
|
135
|
-
const errText = String(error?.message || error || '')
|
|
136
|
-
if (/bad mac|no session|invalid message|duplicate message|cannot decrypt/i.test(errText)) {
|
|
137
|
-
await storage.removeSession(addr.toString()).catch(() => null)
|
|
138
|
-
logger?.warn?.({ jid, type, errText }, 'reset stale session after decrypt failure')
|
|
96
|
+
async function doDecrypt() {
|
|
97
|
+
let result;
|
|
98
|
+
switch (type) {
|
|
99
|
+
case 'pkmsg':
|
|
100
|
+
result = await session.decryptPreKeyWhisperMessage(ciphertext);
|
|
101
|
+
break;
|
|
102
|
+
case 'msg':
|
|
103
|
+
result = await session.decryptWhisperMessage(ciphertext);
|
|
104
|
+
break;
|
|
139
105
|
}
|
|
140
|
-
|
|
106
|
+
return result;
|
|
141
107
|
}
|
|
108
|
+
// If it's not a sync message, we need to ensure atomicity
|
|
109
|
+
// For regular messages, we use a transaction to ensure atomicity
|
|
110
|
+
return parsedKeys.transaction(async () => {
|
|
111
|
+
return await doDecrypt();
|
|
112
|
+
}, jid);
|
|
142
113
|
},
|
|
143
114
|
async encryptMessage({ jid, data }) {
|
|
144
115
|
const addr = jidToSignalProtocolAddress(jid);
|
|
145
116
|
const cipher = new libsignal.SessionCipher(storage, addr);
|
|
146
|
-
|
|
117
|
+
// Use transaction to ensure atomicity
|
|
118
|
+
return parsedKeys.transaction(async () => {
|
|
147
119
|
const { type: sigType, body } = await cipher.encrypt(data);
|
|
148
120
|
const type = sigType === 3 ? 'pkmsg' : 'msg';
|
|
149
121
|
return { type, ciphertext: Buffer.from(body, 'binary') };
|
|
150
122
|
}, jid);
|
|
151
123
|
},
|
|
152
124
|
async encryptGroupMessage({ group, meId, data }) {
|
|
153
|
-
return
|
|
154
|
-
const senderName =
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
const ciphertext = await session.encrypt(data);
|
|
164
|
-
return {
|
|
165
|
-
ciphertext,
|
|
166
|
-
senderKeyDistributionMessage: senderKeyDistributionMessage.serialize()
|
|
167
|
-
};
|
|
125
|
+
return parsedKeys.transaction(async () => {
|
|
126
|
+
const { senderName, skdm } = await ensureSenderKeyAndCreateSkdm(group, meId);
|
|
127
|
+
const ciphertext = await new GroupCipher(storage, senderName).encrypt(data);
|
|
128
|
+
return { ciphertext, senderKeyDistributionMessage: skdm.serialize() };
|
|
129
|
+
}, group);
|
|
130
|
+
},
|
|
131
|
+
async getSenderKeyDistributionMessage({ group, meId }) {
|
|
132
|
+
return parsedKeys.transaction(async () => {
|
|
133
|
+
const { skdm } = await ensureSenderKeyAndCreateSkdm(group, meId);
|
|
134
|
+
return skdm.serialize();
|
|
168
135
|
}, group);
|
|
169
136
|
},
|
|
137
|
+
async hasSenderKey({ group, meId }) {
|
|
138
|
+
const senderName = jidToSignalSenderKeyName(group, meId).toString();
|
|
139
|
+
const { [senderName]: key } = await auth.keys.get('sender-key', [senderName]);
|
|
140
|
+
return !!key;
|
|
141
|
+
},
|
|
142
|
+
async getSessionInfo(jid) {
|
|
143
|
+
const addr = jidToSignalProtocolAddress(jid).toString();
|
|
144
|
+
const session = (await storage.loadSession(addr));
|
|
145
|
+
if (!session) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
const open = session.getOpenSession?.();
|
|
149
|
+
const baseKey = open?.indexInfo?.baseKey;
|
|
150
|
+
const registrationId = open?.registrationId;
|
|
151
|
+
if (!baseKey || typeof registrationId !== 'number') {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
return { baseKey: new Uint8Array(baseKey), registrationId };
|
|
155
|
+
},
|
|
170
156
|
async injectE2ESession({ jid, session }) {
|
|
157
|
+
logger.trace({ jid }, 'injecting E2EE session');
|
|
171
158
|
const cipher = new libsignal.SessionBuilder(storage, jidToSignalProtocolAddress(jid));
|
|
172
|
-
|
|
159
|
+
return parsedKeys.transaction(async () => {
|
|
160
|
+
// libsignal runtime accepts an absent prekey (initOutgoing checks `device.preKey && ...`)
|
|
161
|
+
// but the bundled .d.ts marks it required.
|
|
162
|
+
await cipher.initOutgoing(session);
|
|
163
|
+
}, jid);
|
|
173
164
|
},
|
|
174
165
|
jidToSignalProtocolAddress(jid) {
|
|
175
166
|
return jidToSignalProtocolAddress(jid).toString();
|
|
176
167
|
},
|
|
177
|
-
//
|
|
178
|
-
|
|
179
|
-
// session recreation diam-diam selalu gagal (ketangkep try/catch, cuma log warning).
|
|
168
|
+
// Optimized direct access to LID mapping store
|
|
169
|
+
lidMapping,
|
|
180
170
|
async validateSession(jid) {
|
|
181
171
|
try {
|
|
182
172
|
const addr = jidToSignalProtocolAddress(jid);
|
|
@@ -184,60 +174,215 @@ function makeLibSignalRepository(auth, onWhatsAppFunc, logger) {
|
|
|
184
174
|
if (!session) {
|
|
185
175
|
return { exists: false, reason: 'no session' };
|
|
186
176
|
}
|
|
187
|
-
if (
|
|
177
|
+
if (!session.haveOpenSession()) {
|
|
188
178
|
return { exists: false, reason: 'no open session' };
|
|
189
179
|
}
|
|
190
180
|
return { exists: true };
|
|
191
|
-
}
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
192
183
|
return { exists: false, reason: 'validation error' };
|
|
193
184
|
}
|
|
185
|
+
},
|
|
186
|
+
async deleteSession(jids) {
|
|
187
|
+
if (!jids.length)
|
|
188
|
+
return;
|
|
189
|
+
// Convert JIDs to signal addresses and prepare for bulk deletion
|
|
190
|
+
const sessionUpdates = {};
|
|
191
|
+
jids.forEach(jid => {
|
|
192
|
+
const addr = jidToSignalProtocolAddress(jid);
|
|
193
|
+
sessionUpdates[addr.toString()] = null;
|
|
194
|
+
});
|
|
195
|
+
// Single transaction for all deletions
|
|
196
|
+
return parsedKeys.transaction(async () => {
|
|
197
|
+
await auth.keys.set({ session: sessionUpdates });
|
|
198
|
+
}, `delete-${jids.length}-sessions`);
|
|
199
|
+
},
|
|
200
|
+
close() {
|
|
201
|
+
migratedSessionCache.clear();
|
|
202
|
+
lidMapping.close();
|
|
203
|
+
},
|
|
204
|
+
async migrateSession(fromJid, toJid) {
|
|
205
|
+
// TODO: use usync to handle this entire mess
|
|
206
|
+
if (!fromJid || (!isLidUser(toJid) && !isHostedLidUser(toJid)))
|
|
207
|
+
return { migrated: 0, skipped: 0, total: 0 };
|
|
208
|
+
// Only support PN to LID migration
|
|
209
|
+
if (!isPnUser(fromJid) && !isHostedPnUser(fromJid)) {
|
|
210
|
+
return { migrated: 0, skipped: 0, total: 1 };
|
|
211
|
+
}
|
|
212
|
+
const { user } = jidDecode(fromJid);
|
|
213
|
+
logger.debug({ fromJid }, 'bulk device migration - loading all user devices');
|
|
214
|
+
// Get user's device list from storage
|
|
215
|
+
const { [user]: userDevices } = await parsedKeys.get('device-list', [user]);
|
|
216
|
+
if (!userDevices) {
|
|
217
|
+
return { migrated: 0, skipped: 0, total: 0 };
|
|
218
|
+
}
|
|
219
|
+
const { device: fromDevice } = jidDecode(fromJid);
|
|
220
|
+
const fromDeviceStr = fromDevice?.toString() || '0';
|
|
221
|
+
if (!userDevices.includes(fromDeviceStr)) {
|
|
222
|
+
userDevices.push(fromDeviceStr);
|
|
223
|
+
}
|
|
224
|
+
// Filter out cached devices before database fetch
|
|
225
|
+
const uncachedDevices = userDevices.filter(device => {
|
|
226
|
+
const deviceKey = `${user}.${device}`;
|
|
227
|
+
return !migratedSessionCache.has(deviceKey);
|
|
228
|
+
});
|
|
229
|
+
// Bulk check session existence only for uncached devices
|
|
230
|
+
const deviceSessionKeys = uncachedDevices.map(device => `${user}.${device}`);
|
|
231
|
+
const existingSessions = await parsedKeys.get('session', deviceSessionKeys);
|
|
232
|
+
// Step 3: Convert existing sessions to JIDs (only migrate sessions that exist)
|
|
233
|
+
const deviceJids = [];
|
|
234
|
+
for (const [sessionKey, sessionData] of Object.entries(existingSessions)) {
|
|
235
|
+
if (sessionData) {
|
|
236
|
+
// Session exists in storage
|
|
237
|
+
const deviceStr = sessionKey.split('.')[1];
|
|
238
|
+
if (!deviceStr)
|
|
239
|
+
continue;
|
|
240
|
+
const deviceNum = parseInt(deviceStr);
|
|
241
|
+
let jid = deviceNum === 0 ? `${user}@s.whatsapp.net` : `${user}:${deviceNum}@s.whatsapp.net`;
|
|
242
|
+
if (deviceNum === 99) {
|
|
243
|
+
jid = `${user}:99@hosted`;
|
|
244
|
+
}
|
|
245
|
+
deviceJids.push(jid);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
logger.debug({
|
|
249
|
+
fromJid,
|
|
250
|
+
totalDevices: userDevices.length,
|
|
251
|
+
devicesWithSessions: deviceJids.length,
|
|
252
|
+
devices: deviceJids
|
|
253
|
+
}, 'bulk device migration complete - all user devices processed');
|
|
254
|
+
// Single transaction for all migrations
|
|
255
|
+
return parsedKeys.transaction(async () => {
|
|
256
|
+
const migrationOps = deviceJids.map(jid => {
|
|
257
|
+
const lidWithDevice = transferDevice(jid, toJid);
|
|
258
|
+
const fromDecoded = jidDecode(jid);
|
|
259
|
+
const toDecoded = jidDecode(lidWithDevice);
|
|
260
|
+
return {
|
|
261
|
+
fromJid: jid,
|
|
262
|
+
toJid: lidWithDevice,
|
|
263
|
+
pnUser: fromDecoded.user,
|
|
264
|
+
lidUser: toDecoded.user,
|
|
265
|
+
deviceId: fromDecoded.device || 0,
|
|
266
|
+
fromAddr: jidToSignalProtocolAddress(jid),
|
|
267
|
+
toAddr: jidToSignalProtocolAddress(lidWithDevice)
|
|
268
|
+
};
|
|
269
|
+
});
|
|
270
|
+
const totalOps = migrationOps.length;
|
|
271
|
+
let migratedCount = 0;
|
|
272
|
+
// Bulk fetch PN sessions - already exist (verified during device discovery)
|
|
273
|
+
const pnAddrStrings = Array.from(new Set(migrationOps.map(op => op.fromAddr.toString())));
|
|
274
|
+
const pnSessions = await parsedKeys.get('session', pnAddrStrings);
|
|
275
|
+
// Prepare bulk session updates (PN → LID migration + deletion)
|
|
276
|
+
const sessionUpdates = {};
|
|
277
|
+
for (const op of migrationOps) {
|
|
278
|
+
const pnAddrStr = op.fromAddr.toString();
|
|
279
|
+
const lidAddrStr = op.toAddr.toString();
|
|
280
|
+
const pnSession = pnSessions[pnAddrStr];
|
|
281
|
+
if (pnSession) {
|
|
282
|
+
// Session exists (guaranteed from device discovery)
|
|
283
|
+
const fromSession = libsignal.SessionRecord.deserialize(pnSession);
|
|
284
|
+
if (fromSession.haveOpenSession()) {
|
|
285
|
+
// Queue for bulk update: copy to LID, delete from PN
|
|
286
|
+
sessionUpdates[lidAddrStr] = fromSession.serialize();
|
|
287
|
+
sessionUpdates[pnAddrStr] = null;
|
|
288
|
+
migratedCount++;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Single bulk session update for all migrations
|
|
293
|
+
if (Object.keys(sessionUpdates).length > 0) {
|
|
294
|
+
await parsedKeys.set({ session: sessionUpdates });
|
|
295
|
+
logger.debug({ migratedSessions: migratedCount }, 'bulk session migration complete');
|
|
296
|
+
// Cache device-level migrations
|
|
297
|
+
for (const op of migrationOps) {
|
|
298
|
+
if (sessionUpdates[op.toAddr.toString()]) {
|
|
299
|
+
const deviceKey = `${op.pnUser}.${op.deviceId}`;
|
|
300
|
+
migratedSessionCache.set(deviceKey, true);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
const skippedCount = totalOps - migratedCount;
|
|
305
|
+
return { migrated: migratedCount, skipped: skippedCount, total: totalOps };
|
|
306
|
+
}, `migrate-${deviceJids.length}-sessions-${jidDecode(toJid)?.user}`);
|
|
194
307
|
}
|
|
195
308
|
};
|
|
309
|
+
return repository;
|
|
196
310
|
}
|
|
197
311
|
const jidToSignalProtocolAddress = (jid) => {
|
|
198
|
-
const
|
|
199
|
-
|
|
312
|
+
const decoded = jidDecode(jid);
|
|
313
|
+
const { user, device, server, domainType } = decoded;
|
|
314
|
+
if (!user) {
|
|
315
|
+
throw new Error(`JID decoded but user is empty: "${jid}" -> user: "${user}", server: "${server}", device: ${device}`);
|
|
316
|
+
}
|
|
317
|
+
const signalUser = domainType !== WAJIDDomains.WHATSAPP ? `${user}_${domainType}` : user;
|
|
318
|
+
const finalDevice = device || 0;
|
|
319
|
+
if (device === 99 && decoded.server !== 'hosted' && decoded.server !== 'hosted.lid') {
|
|
320
|
+
throw new Error('Unexpected non-hosted device JID with device 99. This ID seems invalid. ID:' + jid);
|
|
321
|
+
}
|
|
322
|
+
return new libsignal.ProtocolAddress(signalUser, finalDevice);
|
|
200
323
|
};
|
|
201
324
|
const jidToSignalSenderKeyName = (group, user) => {
|
|
202
|
-
return new
|
|
325
|
+
return new SenderKeyName(group, jidToSignalProtocolAddress(user));
|
|
203
326
|
};
|
|
204
|
-
function signalStorage({ creds, keys }) {
|
|
327
|
+
function signalStorage({ creds, keys }, lidMapping) {
|
|
328
|
+
// Shared function to resolve PN signal address to LID if mapping exists
|
|
329
|
+
const resolveLIDSignalAddress = async (id) => {
|
|
330
|
+
if (id.includes('.')) {
|
|
331
|
+
const [deviceId, device] = id.split('.');
|
|
332
|
+
const [user, domainType_] = deviceId.split('_');
|
|
333
|
+
const domainType = parseInt(domainType_ || '0');
|
|
334
|
+
if (domainType === WAJIDDomains.LID || domainType === WAJIDDomains.HOSTED_LID)
|
|
335
|
+
return id;
|
|
336
|
+
const pnJid = `${user}${device !== '0' ? `:${device}` : ''}@${domainType === WAJIDDomains.HOSTED ? 'hosted' : 's.whatsapp.net'}`;
|
|
337
|
+
const lidForPN = await lidMapping.getLIDForPN(pnJid);
|
|
338
|
+
if (lidForPN) {
|
|
339
|
+
const lidAddr = jidToSignalProtocolAddress(lidForPN);
|
|
340
|
+
return lidAddr.toString();
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return id;
|
|
344
|
+
};
|
|
205
345
|
return {
|
|
206
346
|
loadSession: async (id) => {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
347
|
+
try {
|
|
348
|
+
const wireJid = await resolveLIDSignalAddress(id);
|
|
349
|
+
const { [wireJid]: sess } = await keys.get('session', [wireJid]);
|
|
350
|
+
if (sess) {
|
|
351
|
+
return libsignal.SessionRecord.deserialize(sess);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
catch (e) {
|
|
355
|
+
return null;
|
|
210
356
|
}
|
|
357
|
+
return null;
|
|
211
358
|
},
|
|
212
359
|
storeSession: async (id, session) => {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
removeSession: async (id) => {
|
|
216
|
-
await keys.set({ session: { [id]: null } });
|
|
360
|
+
const wireJid = await resolveLIDSignalAddress(id);
|
|
361
|
+
await keys.set({ session: { [wireJid]: session.serialize() } });
|
|
217
362
|
},
|
|
218
363
|
isTrustedIdentity: () => {
|
|
219
|
-
return true;
|
|
364
|
+
return true; // TOFU - Trust on First Use (same as WhatsApp Web)
|
|
220
365
|
},
|
|
221
366
|
loadIdentityKey: async (id) => {
|
|
222
|
-
const
|
|
367
|
+
const wireJid = await resolveLIDSignalAddress(id);
|
|
368
|
+
const { [wireJid]: key } = await keys.get('identity-key', [wireJid]);
|
|
223
369
|
return key || undefined;
|
|
224
370
|
},
|
|
225
371
|
saveIdentity: async (id, identityKey) => {
|
|
226
|
-
const
|
|
227
|
-
const
|
|
228
|
-
|
|
372
|
+
const wireJid = await resolveLIDSignalAddress(id);
|
|
373
|
+
const { [wireJid]: existingKey } = await keys.get('identity-key', [wireJid]);
|
|
374
|
+
const keysMatch = existingKey?.length === identityKey.length && existingKey.every((byte, i) => byte === identityKey[i]);
|
|
229
375
|
if (existingKey && !keysMatch) {
|
|
230
|
-
// Identity
|
|
231
|
-
// pkmsg yang lagi diproses) dan simpan identity key yang baru.
|
|
376
|
+
// Identity changed - clear session and update key
|
|
232
377
|
await keys.set({
|
|
233
|
-
session: { [
|
|
234
|
-
'identity-key': { [
|
|
378
|
+
session: { [wireJid]: null },
|
|
379
|
+
'identity-key': { [wireJid]: identityKey }
|
|
235
380
|
});
|
|
236
381
|
return true;
|
|
237
382
|
}
|
|
238
383
|
if (!existingKey) {
|
|
239
|
-
//
|
|
240
|
-
await keys.set({ 'identity-key': { [
|
|
384
|
+
// New contact - Trust on First Use (TOFU)
|
|
385
|
+
await keys.set({ 'identity-key': { [wireJid]: identityKey } });
|
|
241
386
|
return true;
|
|
242
387
|
}
|
|
243
388
|
return false;
|
|
@@ -264,9 +409,9 @@ function signalStorage({ creds, keys }) {
|
|
|
264
409
|
const keyId = senderKeyName.toString();
|
|
265
410
|
const { [keyId]: key } = await keys.get('sender-key', [keyId]);
|
|
266
411
|
if (key) {
|
|
267
|
-
return
|
|
412
|
+
return SenderKeyRecord.deserialize(key);
|
|
268
413
|
}
|
|
269
|
-
return new
|
|
414
|
+
return new SenderKeyRecord();
|
|
270
415
|
},
|
|
271
416
|
storeSenderKey: async (senderKeyName, key) => {
|
|
272
417
|
const keyId = senderKeyName.toString();
|
|
@@ -278,8 +423,9 @@ function signalStorage({ creds, keys }) {
|
|
|
278
423
|
const { signedIdentityKey } = creds;
|
|
279
424
|
return {
|
|
280
425
|
privKey: Buffer.from(signedIdentityKey.private),
|
|
281
|
-
pubKey: (
|
|
426
|
+
pubKey: Buffer.from(generateSignalPubKey(signedIdentityKey.public))
|
|
282
427
|
};
|
|
283
428
|
}
|
|
284
429
|
};
|
|
285
430
|
}
|
|
431
|
+
//# sourceMappingURL=libsignal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libsignal.js","sourceRoot":"","sources":["../../src/Signal/libsignal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
private readonly
|
|
6
|
-
private readonly
|
|
7
|
-
private
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Get PN for LID - USER LEVEL with device construction
|
|
26
|
-
*/
|
|
27
|
-
getPNForLID(lid: string): Promise<string | null>
|
|
28
|
-
}
|
|
1
|
+
import type { LIDMapping, SignalKeyStoreWithTransaction } from '../Types/index.js';
|
|
2
|
+
import type { ILogger } from '../Utils/logger.js';
|
|
3
|
+
export declare class LIDMappingStore {
|
|
4
|
+
private readonly mappingCache;
|
|
5
|
+
private readonly keys;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
private pnToLIDFunc?;
|
|
8
|
+
private readonly inflightLIDLookups;
|
|
9
|
+
private readonly inflightPNLookups;
|
|
10
|
+
constructor(keys: SignalKeyStoreWithTransaction, logger: ILogger, pnToLIDFunc?: (jids: string[]) => Promise<LIDMapping[] | undefined>);
|
|
11
|
+
storeLIDPNMappings(pairs: LIDMapping[]): Promise<void>;
|
|
12
|
+
getLIDForPN(pn: string): Promise<string | null>;
|
|
13
|
+
getLIDsForPNs(pns: string[]): Promise<LIDMapping[] | null>;
|
|
14
|
+
private _getLIDsForPNsImpl;
|
|
15
|
+
getPNForLID(lid: string): Promise<string | null>;
|
|
16
|
+
getPNsForLIDs(lids: string[]): Promise<LIDMapping[] | null>;
|
|
17
|
+
private _getPNsForLIDsImpl;
|
|
18
|
+
/**
|
|
19
|
+
* Close the cache and release resources
|
|
20
|
+
*/
|
|
21
|
+
close(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=lid-mapping.d.ts.map
|