zapo-js 0.1.1 → 0.2.0
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 +20 -4
- package/dist/appstate/WaAppStateCrypto.js +19 -26
- package/dist/appstate/WaAppStateSyncClient.js +293 -181
- package/dist/appstate/WaAppStateSyncResponseParser.js +16 -5
- package/dist/appstate/constants.js +4 -3
- package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
- package/dist/appstate/index.js +8 -6
- package/dist/appstate/utils.js +9 -34
- package/dist/auth/WaAuthClient.js +43 -61
- package/dist/auth/flow/WaAuthCredentialsFlow.js +22 -15
- package/dist/auth/index.js +1 -8
- package/dist/auth/pairing/WaPairingCodeCrypto.js +6 -4
- package/dist/auth/pairing/WaPairingFlow.js +34 -26
- package/dist/auth/pairing/WaQrFlow.js +37 -24
- package/dist/client/WaClient.js +275 -324
- package/dist/client/WaClientFactory.js +500 -133
- package/dist/client/connection/WaConnectionManager.js +301 -0
- package/dist/client/connection/WaKeyShareCoordinator.js +63 -0
- package/dist/client/connection/WaReceiptQueue.js +51 -0
- package/dist/client/coordinators/WaAppStateMutationCoordinator.js +471 -0
- package/dist/client/coordinators/WaBusinessCoordinator.js +241 -0
- package/dist/client/coordinators/WaGroupCoordinator.js +30 -16
- package/dist/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
- package/dist/client/coordinators/WaMessageDispatchCoordinator.js +439 -701
- package/dist/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
- package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
- package/dist/client/coordinators/WaProfileCoordinator.js +212 -0
- package/dist/client/coordinators/WaRetryCoordinator.js +242 -57
- package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
- package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +166 -0
- package/dist/client/dirty.js +74 -48
- package/dist/client/events/chat.js +4 -3
- package/dist/client/events/devices.js +72 -0
- package/dist/client/events/group.js +62 -47
- package/dist/client/events/identity.js +22 -0
- package/dist/client/events/privacy-token.js +39 -0
- package/dist/client/history-sync.js +94 -63
- package/dist/client/incoming.js +60 -27
- package/dist/client/mailbox.js +24 -23
- package/dist/client/messages.js +107 -31
- package/dist/client/messaging/fanout.js +199 -0
- package/dist/client/messaging/key-protocol.js +130 -0
- package/dist/client/messaging/participants.js +193 -0
- package/dist/client/persistence/WriteBehindPersistence.js +129 -0
- package/dist/client/tokens/cs-token.js +50 -0
- package/dist/client/tokens/tc-token.js +25 -0
- package/dist/crypto/core/hkdf.js +3 -8
- package/dist/crypto/core/index.js +2 -5
- package/dist/crypto/core/keys.js +6 -7
- package/dist/crypto/core/nonce.js +2 -0
- package/dist/crypto/core/primitives.js +12 -23
- package/dist/crypto/core/random.js +26 -23
- package/dist/crypto/curves/Ed25519.js +7 -8
- package/dist/crypto/curves/X25519.js +38 -22
- package/dist/crypto/index.js +1 -3
- package/dist/crypto/math/constants.js +13 -36
- package/dist/crypto/math/edwards.js +171 -44
- package/dist/crypto/math/fe.js +706 -0
- package/dist/crypto/math/mod.js +10 -3
- package/dist/esm/appstate/WaAppStateCrypto.js +7 -14
- package/dist/esm/appstate/WaAppStateSyncClient.js +284 -172
- package/dist/esm/appstate/WaAppStateSyncResponseParser.js +17 -6
- package/dist/esm/appstate/constants.js +3 -2
- package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
- package/dist/esm/appstate/index.js +2 -2
- package/dist/esm/appstate/utils.js +8 -30
- package/dist/esm/auth/WaAuthClient.js +43 -61
- package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +22 -15
- package/dist/esm/auth/index.js +0 -3
- package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +6 -4
- package/dist/esm/auth/pairing/WaPairingFlow.js +28 -20
- package/dist/esm/auth/pairing/WaQrFlow.js +37 -24
- package/dist/esm/client/WaClient.js +275 -324
- package/dist/esm/client/WaClientFactory.js +501 -134
- package/dist/esm/client/connection/WaConnectionManager.js +297 -0
- package/dist/esm/client/connection/WaKeyShareCoordinator.js +59 -0
- package/dist/esm/client/connection/WaReceiptQueue.js +47 -0
- package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +467 -0
- package/dist/esm/client/coordinators/WaBusinessCoordinator.js +238 -0
- package/dist/esm/client/coordinators/WaGroupCoordinator.js +23 -9
- package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
- package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +443 -705
- package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
- package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
- package/dist/esm/client/coordinators/WaProfileCoordinator.js +209 -0
- package/dist/esm/client/coordinators/WaRetryCoordinator.js +244 -59
- package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
- package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +162 -0
- package/dist/esm/client/dirty.js +69 -43
- package/dist/esm/client/events/chat.js +4 -3
- package/dist/esm/client/events/devices.js +68 -0
- package/dist/esm/client/events/group.js +53 -39
- package/dist/esm/client/events/identity.js +19 -0
- package/dist/esm/client/events/privacy-token.js +36 -0
- package/dist/esm/client/history-sync.js +91 -60
- package/dist/esm/client/incoming.js +61 -28
- package/dist/esm/client/mailbox.js +24 -23
- package/dist/esm/client/messages.js +108 -32
- package/dist/esm/client/messaging/fanout.js +196 -0
- package/dist/esm/client/messaging/key-protocol.js +127 -0
- package/dist/esm/client/messaging/participants.js +190 -0
- package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
- package/dist/esm/client/tokens/cs-token.js +46 -0
- package/dist/esm/client/tokens/tc-token.js +18 -0
- package/dist/esm/crypto/core/hkdf.js +3 -8
- package/dist/esm/crypto/core/index.js +2 -3
- package/dist/esm/crypto/core/keys.js +3 -4
- package/dist/esm/crypto/core/nonce.js +2 -0
- package/dist/esm/crypto/core/primitives.js +12 -22
- package/dist/esm/crypto/core/random.js +25 -23
- package/dist/esm/crypto/curves/Ed25519.js +4 -5
- package/dist/esm/crypto/curves/X25519.js +35 -19
- package/dist/esm/crypto/index.js +0 -1
- package/dist/esm/crypto/math/constants.js +12 -35
- package/dist/esm/crypto/math/edwards.js +174 -47
- package/dist/esm/crypto/math/fe.js +691 -0
- package/dist/esm/crypto/math/mod.js +10 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/infra/log/ConsoleLogger.js +18 -17
- package/dist/esm/infra/log/PinoLogger.js +15 -9
- package/dist/esm/infra/log/types.js +11 -1
- package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
- package/dist/esm/infra/perf/BoundedTaskQueue.js +16 -18
- package/dist/esm/infra/perf/PromiseDedup.js +20 -0
- package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
- package/dist/esm/infra/perf/StoreLock.js +77 -0
- package/dist/esm/media/WaMediaCrypto.js +96 -16
- package/dist/esm/media/WaMediaTransferClient.js +251 -91
- package/dist/esm/media/conn.js +10 -6
- package/dist/esm/media/constants.js +6 -2
- package/dist/esm/message/WaMessageClient.js +30 -32
- package/dist/esm/message/ack.js +6 -6
- package/dist/esm/message/addon-crypto.js +59 -0
- package/dist/esm/message/content.js +195 -9
- package/dist/esm/message/icdc.js +76 -0
- package/dist/esm/message/incoming.js +129 -122
- package/dist/esm/message/index.js +2 -0
- package/dist/esm/message/phash.js +3 -1
- package/dist/esm/message/reporting-token.js +425 -0
- package/dist/esm/message/use-case-secret.js +49 -0
- package/dist/esm/protocol/appstate.js +27 -0
- package/dist/esm/protocol/browser.js +10 -18
- package/dist/esm/protocol/constants.js +6 -3
- package/dist/esm/protocol/defaults.js +6 -0
- package/dist/esm/protocol/index.js +2 -11
- package/dist/esm/protocol/jid.js +133 -52
- package/dist/esm/protocol/media.js +3 -3
- package/dist/esm/protocol/message.js +61 -1
- package/dist/esm/protocol/nodes.js +4 -0
- package/dist/esm/protocol/notification.js +3 -1
- package/dist/esm/protocol/privacy-token.js +17 -0
- package/dist/esm/protocol/privacy.js +55 -0
- package/dist/esm/protocol/stream.js +26 -1
- package/dist/esm/protocol/usync.js +11 -0
- package/dist/esm/retry/codec.js +216 -0
- package/dist/esm/retry/constants.js +1 -1
- package/dist/esm/retry/index.js +3 -2
- package/dist/esm/retry/parse.js +88 -86
- package/dist/esm/retry/replay.js +54 -51
- package/dist/esm/retry/tracker.js +94 -0
- package/dist/esm/signal/api/SignalDeviceSyncApi.js +276 -92
- package/dist/esm/signal/api/SignalDigestSyncApi.js +17 -8
- package/dist/esm/signal/api/SignalIdentitySyncApi.js +67 -37
- package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +86 -67
- package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
- package/dist/esm/signal/api/SignalSessionSyncApi.js +36 -34
- package/dist/esm/signal/api/result-map.js +10 -0
- package/dist/esm/signal/constants.js +0 -4
- package/dist/esm/signal/crypto/WaAdvSignature.js +13 -9
- package/dist/esm/signal/{store/sqlite.js → encoding.js} +93 -60
- package/dist/esm/signal/group/SenderKeyChain.js +28 -23
- package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
- package/dist/esm/signal/group/SenderKeyManager.js +144 -115
- package/dist/esm/signal/index.js +2 -0
- package/dist/esm/signal/registration/keygen.js +6 -2
- package/dist/esm/signal/registration/utils.js +1 -0
- package/dist/esm/signal/session/SignalProtocol.js +164 -53
- package/dist/esm/signal/session/SignalRatchet.js +24 -15
- package/dist/esm/signal/session/SignalSession.js +14 -9
- package/dist/esm/signal/session/resolver.js +221 -0
- package/dist/esm/store/contracts/privacy-token.store.js +1 -0
- package/dist/esm/store/createStore.js +100 -188
- package/dist/esm/store/index.js +1 -10
- package/dist/esm/store/locks/appstate.lock.js +26 -0
- package/dist/esm/store/locks/auth.lock.js +15 -0
- package/dist/esm/store/locks/contact.lock.js +20 -0
- package/dist/esm/store/locks/device-list.lock.js +20 -0
- package/dist/esm/store/locks/message.lock.js +21 -0
- package/dist/esm/store/locks/participants.lock.js +20 -0
- package/dist/esm/store/locks/privacy-token.lock.js +18 -0
- package/dist/esm/store/locks/retry.lock.js +29 -0
- package/dist/esm/store/locks/sender-key.lock.js +52 -0
- package/dist/esm/store/locks/signal.lock.js +63 -0
- package/dist/esm/store/locks/thread.lock.js +21 -0
- package/dist/esm/store/noop.store.js +4 -7
- package/dist/esm/store/providers/memory/appstate.store.js +38 -16
- package/dist/esm/store/providers/memory/contact.store.js +5 -0
- package/dist/esm/store/providers/memory/device-list.store.js +12 -34
- package/dist/esm/store/providers/memory/message.store.js +11 -5
- package/dist/esm/store/providers/memory/participants.store.js +1 -8
- package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
- package/dist/esm/store/providers/memory/retry.store.js +77 -2
- package/dist/esm/store/providers/memory/sender-key.store.js +11 -8
- package/dist/esm/store/providers/memory/signal.store.js +47 -18
- package/dist/esm/store/providers/memory/thread.store.js +5 -0
- package/dist/esm/transport/WaComms.js +28 -24
- package/dist/esm/transport/WaWebSocket.js +115 -18
- package/dist/esm/transport/binary/constants.js +0 -30
- package/dist/esm/transport/binary/decoder.js +8 -8
- package/dist/esm/transport/binary/encoder.js +10 -9
- package/dist/esm/transport/binary/index.js +0 -1
- package/dist/esm/transport/index.js +1 -0
- package/dist/esm/transport/keepalive/WaKeepAlive.js +2 -8
- package/dist/esm/transport/node/WaNodeOrchestrator.js +25 -21
- package/dist/esm/transport/node/WaNodeTransport.js +0 -3
- package/dist/esm/transport/node/builders/{accountSync.js → account-sync.js} +16 -36
- package/dist/esm/transport/node/builders/business.js +129 -0
- package/dist/esm/transport/node/builders/global.js +370 -0
- package/dist/esm/transport/node/builders/index.js +7 -3
- package/dist/esm/transport/node/builders/message.js +63 -230
- package/dist/esm/transport/node/builders/pairing.js +2 -27
- package/dist/esm/transport/node/builders/privacy-token.js +41 -0
- package/dist/esm/transport/node/builders/privacy.js +48 -0
- package/dist/esm/transport/node/builders/profile.js +70 -0
- package/dist/esm/transport/node/builders/retry.js +10 -22
- package/dist/esm/transport/node/builders/usync.js +45 -0
- package/dist/esm/transport/node/helpers.js +125 -5
- package/dist/esm/transport/node/usync.js +5 -0
- package/dist/esm/transport/node/xml.js +35 -14
- package/dist/esm/transport/noise/WaClientPayload.js +10 -10
- package/dist/esm/transport/noise/WaFrameCodec.js +48 -33
- package/dist/esm/transport/noise/WaNoiseCert.js +4 -7
- package/dist/esm/transport/noise/WaNoiseSession.js +77 -29
- package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
- package/dist/esm/transport/proxy.js +27 -0
- package/dist/esm/transport/stream/parse.js +17 -48
- package/dist/esm/util/bytes.js +67 -45
- package/dist/esm/util/coercion.js +6 -14
- package/dist/esm/util/index.js +5 -0
- package/dist/esm/util/primitives.js +40 -14
- package/dist/index.js +7 -1
- package/dist/infra/log/ConsoleLogger.js +18 -17
- package/dist/infra/log/PinoLogger.js +15 -9
- package/dist/infra/log/types.js +12 -0
- package/dist/infra/perf/BackgroundQueue.js +482 -0
- package/dist/infra/perf/BoundedTaskQueue.js +16 -18
- package/dist/infra/perf/PromiseDedup.js +24 -0
- package/dist/infra/perf/SharedExclusiveGate.js +113 -0
- package/dist/infra/perf/StoreLock.js +81 -0
- package/dist/media/WaMediaCrypto.js +95 -15
- package/dist/media/WaMediaTransferClient.js +284 -91
- package/dist/media/conn.js +10 -6
- package/dist/media/constants.js +6 -2
- package/dist/message/WaMessageClient.js +31 -33
- package/dist/message/ack.js +6 -6
- package/dist/message/addon-crypto.js +65 -0
- package/dist/message/content.js +198 -9
- package/dist/message/icdc.js +81 -0
- package/dist/message/incoming.js +127 -120
- package/dist/message/index.js +2 -0
- package/dist/message/phash.js +3 -1
- package/dist/message/reporting-token.js +429 -0
- package/dist/message/use-case-secret.js +55 -0
- package/dist/protocol/appstate.js +28 -1
- package/dist/protocol/browser.js +10 -18
- package/dist/protocol/constants.js +26 -1
- package/dist/protocol/defaults.js +6 -0
- package/dist/protocol/index.js +23 -42
- package/dist/protocol/jid.js +140 -52
- package/dist/protocol/media.js +3 -3
- package/dist/protocol/message.js +62 -2
- package/dist/protocol/nodes.js +4 -0
- package/dist/protocol/notification.js +3 -1
- package/dist/protocol/privacy-token.js +20 -0
- package/dist/protocol/privacy.js +58 -0
- package/dist/protocol/stream.js +27 -2
- package/dist/protocol/usync.js +14 -0
- package/dist/retry/codec.js +220 -0
- package/dist/retry/constants.js +1 -1
- package/dist/retry/index.js +7 -5
- package/dist/retry/parse.js +88 -85
- package/dist/retry/replay.js +52 -49
- package/dist/retry/tracker.js +97 -0
- package/dist/signal/api/SignalDeviceSyncApi.js +273 -89
- package/dist/signal/api/SignalDigestSyncApi.js +17 -8
- package/dist/signal/api/SignalIdentitySyncApi.js +66 -36
- package/dist/signal/api/SignalMissingPreKeysSyncApi.js +82 -63
- package/dist/signal/api/SignalRotateKeyApi.js +4 -2
- package/dist/signal/api/SignalSessionSyncApi.js +36 -34
- package/dist/signal/api/result-map.js +13 -0
- package/dist/signal/constants.js +1 -5
- package/dist/signal/crypto/WaAdvSignature.js +11 -7
- package/dist/signal/{store/sqlite.js → encoding.js} +94 -61
- package/dist/signal/group/SenderKeyChain.js +27 -22
- package/dist/signal/group/SenderKeyCodec.js +5 -6
- package/dist/signal/group/SenderKeyManager.js +144 -115
- package/dist/signal/index.js +15 -1
- package/dist/signal/registration/keygen.js +6 -2
- package/dist/signal/registration/utils.js +1 -0
- package/dist/signal/session/SignalProtocol.js +164 -53
- package/dist/signal/session/SignalRatchet.js +24 -15
- package/dist/signal/session/SignalSession.js +14 -9
- package/dist/signal/session/resolver.js +224 -0
- package/dist/store/contracts/privacy-token.store.js +2 -0
- package/dist/store/createStore.js +100 -188
- package/dist/store/index.js +15 -33
- package/dist/store/locks/appstate.lock.js +29 -0
- package/dist/store/locks/auth.lock.js +18 -0
- package/dist/store/locks/contact.lock.js +23 -0
- package/dist/store/locks/device-list.lock.js +23 -0
- package/dist/store/locks/message.lock.js +24 -0
- package/dist/store/locks/participants.lock.js +23 -0
- package/dist/store/locks/privacy-token.lock.js +21 -0
- package/dist/store/locks/retry.lock.js +32 -0
- package/dist/store/locks/sender-key.lock.js +55 -0
- package/dist/store/locks/signal.lock.js +66 -0
- package/dist/store/locks/thread.lock.js +24 -0
- package/dist/store/noop.store.js +4 -7
- package/dist/store/providers/memory/appstate.store.js +36 -14
- package/dist/store/providers/memory/contact.store.js +5 -0
- package/dist/store/providers/memory/device-list.store.js +12 -34
- package/dist/store/providers/memory/message.store.js +11 -5
- package/dist/store/providers/memory/participants.store.js +1 -8
- package/dist/store/providers/memory/privacy-token.store.js +47 -0
- package/dist/store/providers/memory/retry.store.js +77 -2
- package/dist/store/providers/memory/sender-key.store.js +14 -11
- package/dist/store/providers/memory/signal.store.js +54 -25
- package/dist/store/providers/memory/thread.store.js +5 -0
- package/dist/transport/WaComms.js +30 -26
- package/dist/transport/WaWebSocket.js +148 -18
- package/dist/transport/binary/constants.js +1 -31
- package/dist/transport/binary/decoder.js +8 -8
- package/dist/transport/binary/encoder.js +10 -9
- package/dist/transport/binary/index.js +0 -4
- package/dist/transport/index.js +7 -1
- package/dist/transport/keepalive/WaKeepAlive.js +1 -7
- package/dist/transport/node/WaNodeOrchestrator.js +25 -21
- package/dist/transport/node/WaNodeTransport.js +0 -3
- package/dist/transport/node/builders/{accountSync.js → account-sync.js} +15 -35
- package/dist/transport/node/builders/business.js +137 -0
- package/dist/transport/node/builders/global.js +375 -0
- package/dist/transport/node/builders/index.js +29 -17
- package/dist/transport/node/builders/message.js +64 -236
- package/dist/transport/node/builders/pairing.js +2 -29
- package/dist/transport/node/builders/privacy-token.js +46 -0
- package/dist/transport/node/builders/privacy.js +55 -0
- package/dist/transport/node/builders/profile.js +78 -0
- package/dist/transport/node/builders/retry.js +9 -21
- package/dist/transport/node/builders/usync.js +49 -0
- package/dist/transport/node/helpers.js +131 -4
- package/dist/transport/node/usync.js +8 -0
- package/dist/transport/node/xml.js +35 -14
- package/dist/transport/noise/WaClientPayload.js +13 -13
- package/dist/transport/noise/WaFrameCodec.js +47 -32
- package/dist/transport/noise/WaNoiseCert.js +5 -8
- package/dist/transport/noise/WaNoiseSession.js +77 -29
- package/dist/transport/noise/WaNoiseSocket.js +8 -4
- package/dist/transport/proxy.js +34 -0
- package/dist/transport/stream/parse.js +20 -52
- package/dist/types/appstate/WaAppStateCrypto.d.ts +0 -1
- package/dist/types/appstate/WaAppStateSyncClient.d.ts +5 -2
- package/dist/types/appstate/constants.d.ts +1 -0
- package/dist/types/appstate/encoding.d.ts +7 -0
- package/dist/types/appstate/index.d.ts +3 -3
- package/dist/types/appstate/utils.d.ts +0 -3
- package/dist/types/auth/WaAuthClient.d.ts +10 -12
- package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +1 -1
- package/dist/types/auth/index.d.ts +0 -4
- package/dist/types/auth/pairing/WaQrFlow.d.ts +1 -1
- package/dist/types/auth/types.d.ts +7 -9
- package/dist/types/client/WaClient.d.ts +42 -25
- package/dist/types/client/WaClientFactory.d.ts +33 -26
- package/dist/types/client/connection/WaConnectionManager.d.ts +66 -0
- package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +14 -0
- package/dist/types/client/connection/WaReceiptQueue.d.ts +13 -0
- package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +46 -0
- package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
- package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +3 -2
- package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -38
- package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -0
- package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
- package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +36 -0
- package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +8 -0
- package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
- package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +45 -0
- package/dist/types/client/dirty.d.ts +1 -0
- package/dist/types/client/events/devices.d.ts +20 -0
- package/dist/types/client/events/group.d.ts +2 -1
- package/dist/types/client/events/identity.d.ts +9 -0
- package/dist/types/client/events/privacy-token.d.ts +7 -0
- package/dist/types/client/history-sync.d.ts +9 -6
- package/dist/types/client/incoming.d.ts +3 -1
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/mailbox.d.ts +3 -5
- package/dist/types/client/messages.d.ts +1 -2
- package/dist/types/client/messaging/fanout.d.ts +14 -0
- package/dist/types/client/messaging/key-protocol.d.ts +18 -0
- package/dist/types/client/messaging/participants.d.ts +13 -0
- package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
- package/dist/types/client/tokens/cs-token.d.ts +10 -0
- package/dist/types/client/tokens/tc-token.d.ts +5 -0
- package/dist/types/client/types.d.ts +75 -4
- package/dist/types/crypto/core/hkdf.d.ts +0 -6
- package/dist/types/crypto/core/index.d.ts +2 -3
- package/dist/types/crypto/core/nonce.d.ts +2 -0
- package/dist/types/crypto/core/primitives.d.ts +0 -1
- package/dist/types/crypto/core/random.d.ts +2 -7
- package/dist/types/crypto/index.d.ts +0 -1
- package/dist/types/crypto/math/constants.d.ts +4 -2
- package/dist/types/crypto/math/fe.d.ts +30 -0
- package/dist/types/crypto/math/mod.d.ts +0 -2
- package/dist/types/crypto/math/types.d.ts +11 -4
- package/dist/types/index.d.ts +5 -3
- package/dist/types/infra/log/ConsoleLogger.d.ts +2 -1
- package/dist/types/infra/log/PinoLogger.d.ts +1 -1
- package/dist/types/infra/log/types.d.ts +1 -0
- package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
- package/dist/types/infra/perf/BoundedTaskQueue.d.ts +1 -1
- package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
- package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
- package/dist/types/infra/perf/StoreLock.d.ts +10 -0
- package/dist/types/media/WaMediaCrypto.d.ts +3 -2
- package/dist/types/media/WaMediaTransferClient.d.ts +16 -15
- package/dist/types/media/constants.d.ts +1 -1
- package/dist/types/media/index.d.ts +1 -1
- package/dist/types/media/types.d.ts +15 -2
- package/dist/types/message/addon-crypto.d.ts +25 -0
- package/dist/types/message/content.d.ts +8 -0
- package/dist/types/message/icdc.d.ts +13 -0
- package/dist/types/message/index.d.ts +2 -0
- package/dist/types/message/reporting-token.d.ts +18 -0
- package/dist/types/message/types.d.ts +45 -6
- package/dist/types/message/use-case-secret.d.ts +20 -0
- package/dist/types/protocol/appstate.d.ts +47 -0
- package/dist/types/protocol/constants.d.ts +8 -3
- package/dist/types/protocol/defaults.d.ts +6 -0
- package/dist/types/protocol/index.d.ts +2 -11
- package/dist/types/protocol/jid.d.ts +22 -5
- package/dist/types/protocol/message.d.ts +60 -0
- package/dist/types/protocol/nodes.d.ts +4 -0
- package/dist/types/protocol/notification.d.ts +2 -0
- package/dist/types/protocol/privacy-token.d.ts +17 -0
- package/dist/types/protocol/privacy.d.ts +75 -0
- package/dist/types/protocol/stream.d.ts +30 -0
- package/dist/types/protocol/usync.d.ts +11 -0
- package/dist/types/retry/codec.d.ts +3 -0
- package/dist/types/retry/index.d.ts +4 -3
- package/dist/types/retry/parse.d.ts +5 -2
- package/dist/types/retry/replay.d.ts +0 -4
- package/dist/types/retry/tracker.d.ts +20 -0
- package/dist/types/retry/types.d.ts +10 -4
- package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +15 -2
- package/dist/types/signal/api/SignalDigestSyncApi.d.ts +6 -0
- package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +2 -0
- package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
- package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
- package/dist/types/signal/api/result-map.d.ts +1 -0
- package/dist/types/signal/constants.d.ts +0 -3
- package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +3 -3
- package/dist/types/signal/group/SenderKeyCodec.d.ts +4 -6
- package/dist/types/signal/group/SenderKeyManager.d.ts +10 -5
- package/dist/types/signal/index.d.ts +3 -0
- package/dist/types/signal/session/SignalProtocol.d.ts +19 -4
- package/dist/types/signal/session/resolver.d.ts +22 -0
- package/dist/types/store/contracts/appstate.store.d.ts +4 -1
- package/dist/types/store/contracts/contact.store.d.ts +1 -0
- package/dist/types/store/contracts/device-list.store.d.ts +0 -3
- package/dist/types/store/contracts/message.store.d.ts +1 -0
- package/dist/types/store/contracts/participants.store.d.ts +0 -1
- package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
- package/dist/types/store/contracts/retry.store.d.ts +7 -0
- package/dist/types/store/contracts/sender-key.store.d.ts +0 -1
- package/dist/types/store/contracts/signal.store.d.ts +13 -0
- package/dist/types/store/contracts/thread.store.d.ts +1 -0
- package/dist/types/store/createStore.d.ts +1 -1
- package/dist/types/store/index.d.ts +5 -13
- package/dist/types/store/locks/appstate.lock.d.ts +3 -0
- package/dist/types/store/locks/auth.lock.d.ts +3 -0
- package/dist/types/store/locks/contact.lock.d.ts +3 -0
- package/dist/types/store/locks/device-list.lock.d.ts +2 -0
- package/dist/types/store/locks/message.lock.d.ts +3 -0
- package/dist/types/store/locks/participants.lock.d.ts +2 -0
- package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
- package/dist/types/store/locks/retry.lock.d.ts +2 -0
- package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
- package/dist/types/store/locks/signal.lock.d.ts +3 -0
- package/dist/types/store/locks/thread.lock.d.ts +3 -0
- package/dist/types/store/providers/memory/appstate.store.d.ts +3 -1
- package/dist/types/store/providers/memory/contact.store.d.ts +1 -0
- package/dist/types/store/providers/memory/device-list.store.d.ts +0 -3
- package/dist/types/store/providers/memory/message.store.d.ts +1 -0
- package/dist/types/store/providers/memory/participants.store.d.ts +0 -1
- package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
- package/dist/types/store/providers/memory/retry.store.d.ts +8 -0
- package/dist/types/store/providers/memory/sender-key.store.d.ts +0 -1
- package/dist/types/store/providers/memory/signal.store.d.ts +8 -1
- package/dist/types/store/providers/memory/thread.store.d.ts +1 -0
- package/dist/types/store/types.d.ts +49 -58
- package/dist/types/transport/WaWebSocket.d.ts +3 -1
- package/dist/types/transport/binary/constants.d.ts +0 -30
- package/dist/types/transport/binary/index.d.ts +0 -1
- package/dist/types/transport/index.d.ts +2 -1
- package/dist/types/transport/keepalive/WaKeepAlive.d.ts +0 -1
- package/dist/types/transport/node/WaNodeOrchestrator.d.ts +3 -4
- package/dist/types/transport/node/WaNodeTransport.d.ts +0 -9
- package/dist/types/transport/node/builders/business.d.ts +29 -0
- package/dist/types/transport/node/builders/global.d.ts +102 -0
- package/dist/types/transport/node/builders/group.d.ts +4 -6
- package/dist/types/transport/node/builders/index.d.ts +7 -3
- package/dist/types/transport/node/builders/message.d.ts +20 -30
- package/dist/types/transport/node/builders/pairing.d.ts +0 -2
- package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
- package/dist/types/transport/node/builders/privacy.d.ts +7 -0
- package/dist/types/transport/node/builders/profile.d.ts +8 -0
- package/dist/types/transport/node/builders/retry.d.ts +2 -5
- package/dist/types/transport/node/builders/usync.d.ts +21 -0
- package/dist/types/transport/node/helpers.d.ts +13 -0
- package/dist/types/transport/node/usync.d.ts +2 -0
- package/dist/types/transport/noise/WaFrameCodec.d.ts +3 -0
- package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
- package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
- package/dist/types/transport/proxy.d.ts +6 -0
- package/dist/types/transport/stream/parse.d.ts +0 -1
- package/dist/types/transport/types.d.ts +18 -1
- package/dist/types/util/bytes.d.ts +5 -0
- package/dist/types/util/index.d.ts +5 -0
- package/dist/types/util/primitives.d.ts +2 -0
- package/dist/util/bytes.js +72 -46
- package/dist/util/coercion.js +6 -14
- package/dist/util/index.js +23 -0
- package/dist/util/primitives.js +42 -14
- package/package.json +52 -9
- package/proto/index.js +1 -1
- package/dist/crypto/core/constants.js +0 -4
- package/dist/crypto/core/encoding.js +0 -29
- package/dist/esm/crypto/core/constants.js +0 -1
- package/dist/esm/crypto/core/encoding.js +0 -25
- package/dist/esm/retry/outbound.js +0 -83
- package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
- package/dist/esm/store/providers/sqlite/appstate.store.js +0 -169
- package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
- package/dist/esm/store/providers/sqlite/connection.js +0 -240
- package/dist/esm/store/providers/sqlite/contact.store.js +0 -61
- package/dist/esm/store/providers/sqlite/device-list.store.js +0 -155
- package/dist/esm/store/providers/sqlite/message.store.js +0 -119
- package/dist/esm/store/providers/sqlite/migrations.js +0 -347
- package/dist/esm/store/providers/sqlite/participants.store.js +0 -85
- package/dist/esm/store/providers/sqlite/retry.store.js +0 -144
- package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -203
- package/dist/esm/store/providers/sqlite/signal.store.js +0 -353
- package/dist/esm/store/providers/sqlite/thread.store.js +0 -72
- package/dist/esm/util/base64.js +0 -18
- package/dist/esm/util/signal-address.js +0 -5
- package/dist/retry/outbound.js +0 -88
- package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
- package/dist/store/providers/sqlite/appstate.store.js +0 -173
- package/dist/store/providers/sqlite/auth.store.js +0 -180
- package/dist/store/providers/sqlite/connection.js +0 -276
- package/dist/store/providers/sqlite/contact.store.js +0 -65
- package/dist/store/providers/sqlite/device-list.store.js +0 -159
- package/dist/store/providers/sqlite/message.store.js +0 -123
- package/dist/store/providers/sqlite/migrations.js +0 -350
- package/dist/store/providers/sqlite/participants.store.js +0 -89
- package/dist/store/providers/sqlite/retry.store.js +0 -148
- package/dist/store/providers/sqlite/sender-key.store.js +0 -207
- package/dist/store/providers/sqlite/signal.store.js +0 -357
- package/dist/store/providers/sqlite/thread.store.js +0 -76
- package/dist/types/appstate/store/sqlite.d.ts +0 -21
- package/dist/types/crypto/core/constants.d.ts +0 -1
- package/dist/types/crypto/core/encoding.d.ts +0 -11
- package/dist/types/retry/outbound.d.ts +0 -4
- package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
- package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -15
- package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
- package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
- package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -10
- package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -18
- package/dist/types/store/providers/sqlite/message.store.d.ts +0 -11
- package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
- package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -13
- package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -16
- package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -25
- package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -46
- package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -11
- package/dist/types/util/base64.d.ts +0 -4
- package/dist/types/util/signal-address.d.ts +0 -2
- package/dist/util/base64.js +0 -24
- package/dist/util/signal-address.js +0 -8
- /package/dist/types/transport/node/builders/{accountSync.d.ts → account-sync.d.ts} +0 -0
|
@@ -2,14 +2,19 @@ import { EventEmitter } from 'node:events';
|
|
|
2
2
|
import type { WaAppStateStoreData, WaAppStateSyncResult } from '../appstate/types';
|
|
3
3
|
import type { WaAppStateSyncOptions } from '../appstate/types';
|
|
4
4
|
import type { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
|
|
5
|
-
import type {
|
|
5
|
+
import type { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
|
|
6
|
+
import type { WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
|
|
6
7
|
import type { WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
|
|
7
8
|
import type { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
|
|
8
|
-
import type {
|
|
9
|
+
import type { WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
|
|
10
|
+
import type { WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
|
|
11
|
+
import type { WriteBehindDrainResult } from './persistence/WriteBehindPersistence';
|
|
12
|
+
import type { WaClientOptions, WaSendMessageOptions, WaClientEventMap, WaIncomingNodeHandlerRegistration } from './types';
|
|
9
13
|
import type { Logger } from '../infra/log/types';
|
|
10
14
|
import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
11
15
|
import type { WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../message/types';
|
|
12
16
|
import type { WaMessageClient } from '../message/WaMessageClient';
|
|
17
|
+
import type { SignalLidSyncResult } from '../signal/api/SignalDeviceSyncApi';
|
|
13
18
|
import type { BinaryNode } from '../transport/types';
|
|
14
19
|
export declare class WaClient extends EventEmitter {
|
|
15
20
|
private readonly options;
|
|
@@ -18,6 +23,7 @@ export declare class WaClient extends EventEmitter {
|
|
|
18
23
|
private readonly contactStore;
|
|
19
24
|
private readonly messageStore;
|
|
20
25
|
private readonly participantsStore;
|
|
26
|
+
private readonly privacyTokenStore;
|
|
21
27
|
private readonly deviceListStore;
|
|
22
28
|
private readonly retryStore;
|
|
23
29
|
private readonly signalStore;
|
|
@@ -25,36 +31,45 @@ export declare class WaClient extends EventEmitter {
|
|
|
25
31
|
private readonly threadStore;
|
|
26
32
|
private readonly authClient;
|
|
27
33
|
private readonly nodeOrchestrator;
|
|
28
|
-
private readonly keepAlive;
|
|
29
34
|
private readonly nodeTransport;
|
|
35
|
+
private readonly signalDeviceSync;
|
|
30
36
|
readonly appStateSync: WaAppStateSyncClient;
|
|
37
|
+
readonly chatCoordinator: WaAppStateMutationCoordinator;
|
|
31
38
|
private readonly incomingNode;
|
|
32
|
-
private readonly passiveTasks;
|
|
33
39
|
readonly mediaTransfer: WaMediaTransferClient;
|
|
34
40
|
readonly messageDispatch: WaMessageDispatchCoordinator;
|
|
35
41
|
readonly messageClient: WaMessageClient;
|
|
36
42
|
readonly groupCoordinator: WaGroupCoordinator;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
private
|
|
43
|
+
readonly privacyCoordinator: WaPrivacyCoordinator;
|
|
44
|
+
readonly profileCoordinator: WaProfileCoordinator;
|
|
45
|
+
readonly businessCoordinator: WaBusinessCoordinator;
|
|
46
|
+
private readonly passiveTasks;
|
|
47
|
+
private readonly keepAlive;
|
|
48
|
+
private readonly receiptQueue;
|
|
49
|
+
private readonly keyShareCoordinator;
|
|
50
|
+
private readonly connectionManager;
|
|
51
|
+
private readonly trustedContactToken;
|
|
52
|
+
private readonly writeBehind;
|
|
41
53
|
private connectPromise;
|
|
42
|
-
private
|
|
43
|
-
private
|
|
44
|
-
private
|
|
45
|
-
private appStateBootstrapKeyShareWaitDone;
|
|
54
|
+
private acceptingIncomingEvents;
|
|
55
|
+
private activeIncomingHandlers;
|
|
56
|
+
private readonly incomingHandlersDrainedWaiters;
|
|
46
57
|
constructor(options: WaClientOptions, logger?: Logger);
|
|
47
58
|
on<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
59
|
+
on(event: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
48
60
|
once<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
61
|
+
once(event: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
49
62
|
off<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
50
|
-
|
|
63
|
+
off(event: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
64
|
+
emit<K extends keyof WaClientEventMap>(event: K, payload: Parameters<WaClientEventMap[K]>[0]): boolean;
|
|
65
|
+
emit(event: string | symbol, ...args: unknown[]): boolean;
|
|
51
66
|
getState(): {
|
|
52
67
|
connected: boolean;
|
|
53
68
|
registered: boolean;
|
|
54
69
|
hasQr: boolean;
|
|
55
70
|
hasPairingCode: boolean;
|
|
56
71
|
};
|
|
57
|
-
getCredentials(): WaAuthCredentials | null;
|
|
72
|
+
getCredentials(): import("../auth").WaAuthCredentials | null;
|
|
58
73
|
getClockSkewMs(): number | null;
|
|
59
74
|
sendNode(node: BinaryNode): Promise<void>;
|
|
60
75
|
query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
|
|
@@ -70,28 +85,30 @@ export declare class WaClient extends EventEmitter {
|
|
|
70
85
|
private queryWithContext;
|
|
71
86
|
private handleIncomingFrame;
|
|
72
87
|
connect(): Promise<void>;
|
|
73
|
-
private connectInternal;
|
|
74
|
-
private scheduleReconnectAfterPairing;
|
|
75
|
-
private reconnectAsRegisteredAfterPairing;
|
|
76
|
-
private reconnectAsRegisteredAfterPairingInternal;
|
|
77
88
|
disconnect(): Promise<void>;
|
|
78
89
|
requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
|
|
79
90
|
fetchPairingCountryCodeIso(): Promise<string>;
|
|
91
|
+
getLidsByPhoneNumbers(phoneNumbers: readonly string[]): Promise<readonly SignalLidSyncResult[]>;
|
|
80
92
|
sendMessage(to: string, content: WaSendMessageContent, options?: WaSendMessageOptions): Promise<WaMessagePublishResult>;
|
|
81
93
|
syncSignalSession(jid: string, reasonIdentity?: boolean): Promise<void>;
|
|
94
|
+
get chat(): WaAppStateMutationCoordinator;
|
|
95
|
+
get group(): WaGroupCoordinator;
|
|
96
|
+
get privacy(): WaPrivacyCoordinator;
|
|
97
|
+
get profile(): WaProfileCoordinator;
|
|
98
|
+
get business(): WaBusinessCoordinator;
|
|
82
99
|
sendReceipt(input: WaSendReceiptInput): Promise<void>;
|
|
100
|
+
flushAppStateMutations(): Promise<void>;
|
|
101
|
+
flushWriteBehind(timeoutMs?: number): Promise<WriteBehindDrainResult>;
|
|
83
102
|
exportAppState(): Promise<WaAppStateStoreData>;
|
|
84
103
|
syncAppState(options?: WaAppStateSyncOptions): Promise<WaAppStateSyncResult>;
|
|
85
104
|
private executeAppStateSync;
|
|
86
105
|
private getBlockedAppStateCollections;
|
|
87
|
-
private waitForAppStateKeyShare;
|
|
88
|
-
private notifyAppStateKeyShareWaiters;
|
|
89
106
|
private emitChatEventsFromAppStateSyncResult;
|
|
90
|
-
private
|
|
91
|
-
private shouldQueueDanglingReceipt;
|
|
92
|
-
private enqueueDanglingReceipt;
|
|
107
|
+
private handleNctSaltMutation;
|
|
93
108
|
private clearStoredState;
|
|
109
|
+
private tryEnterIncomingHandler;
|
|
110
|
+
private leaveIncomingHandler;
|
|
111
|
+
private pauseIncomingEventsAndWaitDrain;
|
|
112
|
+
private notifyIncomingHandlersDrained;
|
|
94
113
|
private handleError;
|
|
95
|
-
private clearCommsBinding;
|
|
96
|
-
private updateClockSkewFromSuccess;
|
|
97
114
|
}
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
+
import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../appstate/types';
|
|
1
2
|
import { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
|
|
2
3
|
import { WaAuthClient } from '../auth/WaAuthClient';
|
|
4
|
+
import { WaConnectionManager } from './connection/WaConnectionManager';
|
|
5
|
+
import { WaKeyShareCoordinator } from './connection/WaKeyShareCoordinator';
|
|
6
|
+
import { WaReceiptQueue } from './connection/WaReceiptQueue';
|
|
7
|
+
import { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
|
|
8
|
+
import { type WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
|
|
3
9
|
import { type WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
|
|
4
10
|
import { WaIncomingNodeCoordinator } from './coordinators/WaIncomingNodeCoordinator';
|
|
5
11
|
import { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
|
|
6
12
|
import { WaPassiveTasksCoordinator } from './coordinators/WaPassiveTasksCoordinator';
|
|
13
|
+
import { type WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
|
|
14
|
+
import { type WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
|
|
7
15
|
import { WaRetryCoordinator } from './coordinators/WaRetryCoordinator';
|
|
8
16
|
import { type WaStreamControlHandler } from './coordinators/WaStreamControlCoordinator';
|
|
9
|
-
import {
|
|
17
|
+
import { WaTrustedContactTokenCoordinator } from './coordinators/WaTrustedContactTokenCoordinator';
|
|
18
|
+
import { type WaMediaMessageOptions } from './messages';
|
|
10
19
|
import type { WaClientEventMap, WaClientOptions, WaIncomingMessageEvent } from './types';
|
|
11
20
|
import type { Logger } from '../infra/log/types';
|
|
12
|
-
import type { WaMediaConn } from '../media/types';
|
|
13
21
|
import { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
14
22
|
import { WaMessageClient } from '../message/WaMessageClient';
|
|
15
23
|
import { SignalDeviceSyncApi } from '../signal/api/SignalDeviceSyncApi';
|
|
@@ -24,19 +32,30 @@ import { WaKeepAlive } from '../transport/keepalive/WaKeepAlive';
|
|
|
24
32
|
import { WaNodeOrchestrator } from '../transport/node/WaNodeOrchestrator';
|
|
25
33
|
import { WaNodeTransport } from '../transport/node/WaNodeTransport';
|
|
26
34
|
import type { BinaryNode } from '../transport/types';
|
|
27
|
-
import type { WaComms } from '../transport/WaComms';
|
|
28
|
-
type WaMediaMessageBuildOptions = Parameters<typeof buildMediaMessageContent>[0];
|
|
29
35
|
interface WaClientBase {
|
|
30
36
|
readonly options: Readonly<WaClientOptions>;
|
|
31
37
|
readonly logger: Logger;
|
|
32
38
|
readonly sessionStore: ReturnType<WaClientOptions['store']['session']>;
|
|
33
39
|
}
|
|
40
|
+
interface WaClientBuildRuntime {
|
|
41
|
+
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
42
|
+
readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
|
|
43
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
44
|
+
readonly syncAppState: () => Promise<void>;
|
|
45
|
+
readonly syncAppStateWithOptions: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
|
|
46
|
+
readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
|
|
47
|
+
readonly handleIncomingMessageEvent: (event: WaIncomingMessageEvent) => Promise<void>;
|
|
48
|
+
readonly handleError: (error: Error) => void;
|
|
49
|
+
readonly handleIncomingFrame: (frame: Uint8Array) => Promise<void>;
|
|
50
|
+
readonly clearStoredState: () => Promise<void>;
|
|
51
|
+
readonly resumeIncomingEvents: () => void;
|
|
52
|
+
}
|
|
34
53
|
interface WaClientDependencies {
|
|
35
54
|
readonly nodeTransport: WaNodeTransport;
|
|
36
55
|
readonly nodeOrchestrator: WaNodeOrchestrator;
|
|
37
56
|
readonly keepAlive: WaKeepAlive;
|
|
38
57
|
readonly mediaTransfer: WaMediaTransferClient;
|
|
39
|
-
readonly mediaMessageBuildOptions:
|
|
58
|
+
readonly mediaMessageBuildOptions: WaMediaMessageOptions;
|
|
40
59
|
readonly messageClient: WaMessageClient;
|
|
41
60
|
readonly senderKeyManager: SenderKeyManager;
|
|
42
61
|
readonly signalProtocol: SignalProtocol;
|
|
@@ -50,34 +69,22 @@ interface WaClientDependencies {
|
|
|
50
69
|
readonly messageDispatch: WaMessageDispatchCoordinator;
|
|
51
70
|
readonly retryCoordinator: WaRetryCoordinator;
|
|
52
71
|
readonly appStateSync: WaAppStateSyncClient;
|
|
72
|
+
readonly chatCoordinator: WaAppStateMutationCoordinator;
|
|
53
73
|
readonly streamControl: WaStreamControlHandler;
|
|
54
74
|
readonly incomingNode: WaIncomingNodeCoordinator;
|
|
55
75
|
readonly passiveTasks: WaPassiveTasksCoordinator;
|
|
56
76
|
readonly groupCoordinator: WaGroupCoordinator;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
readonly
|
|
60
|
-
readonly
|
|
61
|
-
readonly
|
|
62
|
-
readonly
|
|
63
|
-
readonly
|
|
64
|
-
readonly handleIncomingMessageEvent: (event: WaIncomingMessageEvent) => Promise<void>;
|
|
65
|
-
readonly handleError: (error: Error) => void;
|
|
66
|
-
readonly scheduleReconnectAfterPairing: () => void;
|
|
67
|
-
readonly updateClockSkewFromSuccess: (serverUnixSeconds: number) => void;
|
|
68
|
-
readonly getComms: () => WaComms | null;
|
|
69
|
-
readonly getMediaConnCache: () => WaMediaConn | null;
|
|
70
|
-
readonly setMediaConnCache: (mediaConn: WaMediaConn | null) => void;
|
|
71
|
-
readonly disconnect: () => Promise<void>;
|
|
72
|
-
readonly clearStoredState: () => Promise<void>;
|
|
73
|
-
readonly connect: () => Promise<void>;
|
|
74
|
-
readonly shouldQueueDanglingReceipt: (node: BinaryNode, error: Error) => boolean;
|
|
75
|
-
readonly enqueueDanglingReceipt: (node: BinaryNode) => void;
|
|
76
|
-
readonly takeDanglingReceipts: () => BinaryNode[];
|
|
77
|
+
readonly privacyCoordinator: WaPrivacyCoordinator;
|
|
78
|
+
readonly profileCoordinator: WaProfileCoordinator;
|
|
79
|
+
readonly businessCoordinator: WaBusinessCoordinator;
|
|
80
|
+
readonly receiptQueue: WaReceiptQueue;
|
|
81
|
+
readonly keyShareCoordinator: WaKeyShareCoordinator;
|
|
82
|
+
readonly connectionManager: WaConnectionManager;
|
|
83
|
+
readonly trustedContactToken: WaTrustedContactTokenCoordinator;
|
|
77
84
|
}
|
|
78
85
|
export declare function resolveWaClientBase(options: WaClientOptions, logger: Logger): WaClientBase;
|
|
79
86
|
export declare function buildWaClientDependencies(input: {
|
|
80
87
|
readonly base: WaClientBase;
|
|
81
|
-
readonly
|
|
88
|
+
readonly runtime: WaClientBuildRuntime;
|
|
82
89
|
}): WaClientDependencies;
|
|
83
90
|
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { WaAuthClient } from '../../auth/WaAuthClient';
|
|
2
|
+
import type { WaPassiveTasksCoordinator } from '../coordinators/WaPassiveTasksCoordinator';
|
|
3
|
+
import type { WaClientOptions } from '../types';
|
|
4
|
+
import type { Logger } from '../../infra/log/types';
|
|
5
|
+
import type { WaMediaConn } from '../../media/types';
|
|
6
|
+
import type { WaKeepAlive } from '../../transport/keepalive/WaKeepAlive';
|
|
7
|
+
import type { WaNodeOrchestrator } from '../../transport/node/WaNodeOrchestrator';
|
|
8
|
+
import type { WaNodeTransport } from '../../transport/node/WaNodeTransport';
|
|
9
|
+
import { WaComms } from '../../transport/WaComms';
|
|
10
|
+
interface WaConnectionManagerOptions {
|
|
11
|
+
readonly logger: Logger;
|
|
12
|
+
readonly options: Readonly<WaClientOptions>;
|
|
13
|
+
readonly authClient: WaAuthClient;
|
|
14
|
+
readonly keepAlive: WaKeepAlive;
|
|
15
|
+
readonly nodeOrchestrator: WaNodeOrchestrator;
|
|
16
|
+
readonly nodeTransport: WaNodeTransport;
|
|
17
|
+
readonly getPassiveTasks: () => WaPassiveTasksCoordinator | null;
|
|
18
|
+
readonly clearStoredCredentials: () => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare class WaConnectionManager {
|
|
21
|
+
private readonly logger;
|
|
22
|
+
private readonly options;
|
|
23
|
+
private readonly authClient;
|
|
24
|
+
private readonly keepAlive;
|
|
25
|
+
private readonly nodeOrchestrator;
|
|
26
|
+
private readonly nodeTransport;
|
|
27
|
+
private readonly getPassiveTasks;
|
|
28
|
+
private readonly clearStoredCredentialsCallback;
|
|
29
|
+
private comms;
|
|
30
|
+
private clockSkewMs;
|
|
31
|
+
private mediaConnCache;
|
|
32
|
+
private connectPromise;
|
|
33
|
+
private pairingReconnectPromise;
|
|
34
|
+
private frameHandler;
|
|
35
|
+
private pendingComms;
|
|
36
|
+
private lifecycleGeneration;
|
|
37
|
+
private lifecycleQueue;
|
|
38
|
+
private lastConnectWasNewLogin;
|
|
39
|
+
constructor(options: WaConnectionManagerOptions);
|
|
40
|
+
connect(frameHandler: (frame: Uint8Array) => Promise<void>): Promise<void>;
|
|
41
|
+
scheduleReconnectAfterPairing(): void;
|
|
42
|
+
disconnect(): Promise<void>;
|
|
43
|
+
clearStoredCredentials(): Promise<void>;
|
|
44
|
+
isConnected(): boolean;
|
|
45
|
+
wasNewLogin(): boolean;
|
|
46
|
+
getComms(): WaComms | null;
|
|
47
|
+
getClockSkewMs(): number | null;
|
|
48
|
+
getMediaConnCache(): WaMediaConn | null;
|
|
49
|
+
setMediaConnCache(value: WaMediaConn | null): void;
|
|
50
|
+
updateClockSkewFromSuccess(serverUnixSeconds: number): void;
|
|
51
|
+
private connectInternal;
|
|
52
|
+
private reconnectAsRegisteredAfterPairing;
|
|
53
|
+
private reconnectAsRegisteredAfterPairingInternal;
|
|
54
|
+
private disconnectInternal;
|
|
55
|
+
private startCommsWithCredentials;
|
|
56
|
+
private clearCommsBinding;
|
|
57
|
+
private stopCommsQuietly;
|
|
58
|
+
private nextLifecycleGeneration;
|
|
59
|
+
private runLifecycleOperation;
|
|
60
|
+
private invalidatePendingComms;
|
|
61
|
+
private isLifecycleCurrent;
|
|
62
|
+
private assertLifecycleCurrent;
|
|
63
|
+
private createLifecycleSupersededError;
|
|
64
|
+
private isLifecycleSupersededError;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class WaKeyShareCoordinator {
|
|
2
|
+
private readonly waiters;
|
|
3
|
+
private version;
|
|
4
|
+
private bootstrapDone;
|
|
5
|
+
constructor();
|
|
6
|
+
waitForShare(timeoutMs: number): Promise<boolean>;
|
|
7
|
+
notifyReceived(): void;
|
|
8
|
+
notifyDisconnected(): void;
|
|
9
|
+
isBootstrapDone(): boolean;
|
|
10
|
+
markBootstrapDone(): void;
|
|
11
|
+
getVersion(): number;
|
|
12
|
+
hasWaiters(): boolean;
|
|
13
|
+
private releaseWaiters;
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export declare class WaReceiptQueue {
|
|
3
|
+
private readonly maxSize;
|
|
4
|
+
private readonly danglingReceipts;
|
|
5
|
+
private danglingHead;
|
|
6
|
+
constructor(options?: {
|
|
7
|
+
readonly maxSize?: number;
|
|
8
|
+
});
|
|
9
|
+
shouldQueue(node: BinaryNode, error: Error): boolean;
|
|
10
|
+
enqueue(node: BinaryNode): void;
|
|
11
|
+
take(): BinaryNode[];
|
|
12
|
+
size(): number;
|
|
13
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../../appstate/types';
|
|
2
|
+
import type { WaAppStateMessageKey, WaClearChatOptions, WaDeleteChatOptions, WaDeleteMessageForMeOptions } from '../types';
|
|
3
|
+
import type { Logger } from '../../infra/log/types';
|
|
4
|
+
import type { WaMessageStore } from '../../store/contracts/message.store';
|
|
5
|
+
interface WaAppStateMutationCoordinatorOptions {
|
|
6
|
+
readonly logger: Logger;
|
|
7
|
+
readonly messageStore: WaMessageStore;
|
|
8
|
+
readonly syncAppState: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
|
|
9
|
+
readonly archiveRangeLimit?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class WaAppStateMutationCoordinator {
|
|
12
|
+
private readonly logger;
|
|
13
|
+
private readonly messageStore;
|
|
14
|
+
private readonly syncAppState;
|
|
15
|
+
private readonly archiveRangeLimit;
|
|
16
|
+
private readonly pendingMutations;
|
|
17
|
+
private flushPromise;
|
|
18
|
+
constructor(options: WaAppStateMutationCoordinatorOptions);
|
|
19
|
+
setChatMute(chatJid: string, muted: boolean, muteEndTimestampMs?: number): Promise<void>;
|
|
20
|
+
setMessageStar(message: WaAppStateMessageKey, starred: boolean): Promise<void>;
|
|
21
|
+
setChatRead(chatJid: string, read: boolean): Promise<void>;
|
|
22
|
+
setChatPin(chatJid: string, pinned: boolean): Promise<void>;
|
|
23
|
+
setChatArchive(chatJid: string, archived: boolean): Promise<void>;
|
|
24
|
+
clearChat(chatJid: string, options?: WaClearChatOptions): Promise<void>;
|
|
25
|
+
deleteChat(chatJid: string, options?: WaDeleteChatOptions): Promise<void>;
|
|
26
|
+
deleteMessageForMe(message: WaAppStateMessageKey, options?: WaDeleteMessageForMeOptions): Promise<void>;
|
|
27
|
+
setChatLock(chatJid: string, locked: boolean): Promise<void>;
|
|
28
|
+
flushMutations(): Promise<void>;
|
|
29
|
+
private enqueueAndFlush;
|
|
30
|
+
private enqueueMutation;
|
|
31
|
+
private takePendingMutationsBatch;
|
|
32
|
+
private flushPendingMutationsLoop;
|
|
33
|
+
private requeueMutations;
|
|
34
|
+
private createSetMutation;
|
|
35
|
+
private createArchiveMutation;
|
|
36
|
+
private buildChatMessageRange;
|
|
37
|
+
private toChatMessageRangeMessage;
|
|
38
|
+
private normalizeMessageRangeParticipant;
|
|
39
|
+
private toOptionalTimestampSeconds;
|
|
40
|
+
private normalizeChatMutationJid;
|
|
41
|
+
private buildMessageMutationIndex;
|
|
42
|
+
private resolveMessageMutationParticipant;
|
|
43
|
+
private buildMutationIndex;
|
|
44
|
+
private describeMutationActions;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { WaEditBusinessProfileInput } from '../../transport/node/builders/business';
|
|
2
|
+
import type { BinaryNode } from '../../transport/types';
|
|
3
|
+
export interface WaBusinessCategory {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
}
|
|
7
|
+
export interface WaBusinessHoursEntry {
|
|
8
|
+
readonly dayOfWeek: string;
|
|
9
|
+
readonly mode: string;
|
|
10
|
+
readonly openTime?: number;
|
|
11
|
+
readonly closeTime?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface WaBusinessHours {
|
|
14
|
+
readonly timezone?: string;
|
|
15
|
+
readonly config: readonly WaBusinessHoursEntry[];
|
|
16
|
+
}
|
|
17
|
+
export interface WaBusinessWebsite {
|
|
18
|
+
readonly url: string;
|
|
19
|
+
}
|
|
20
|
+
export interface WaBusinessProfileResult {
|
|
21
|
+
readonly jid: string;
|
|
22
|
+
readonly tag?: string;
|
|
23
|
+
readonly description?: string;
|
|
24
|
+
readonly address?: string;
|
|
25
|
+
readonly email?: string;
|
|
26
|
+
readonly websites?: readonly WaBusinessWebsite[];
|
|
27
|
+
readonly categories?: readonly WaBusinessCategory[];
|
|
28
|
+
readonly businessHours?: WaBusinessHours;
|
|
29
|
+
readonly latitude?: number;
|
|
30
|
+
readonly longitude?: number;
|
|
31
|
+
readonly profileOptions?: Readonly<Record<string, string>>;
|
|
32
|
+
}
|
|
33
|
+
export interface WaVerifiedNamePrivacyMode {
|
|
34
|
+
readonly actualActors: number;
|
|
35
|
+
readonly hostStorage: number;
|
|
36
|
+
readonly privacyModeTs: number;
|
|
37
|
+
}
|
|
38
|
+
export interface WaVerifiedNameResult {
|
|
39
|
+
readonly name?: string;
|
|
40
|
+
readonly level?: string;
|
|
41
|
+
readonly serial?: string;
|
|
42
|
+
readonly isApi: boolean;
|
|
43
|
+
readonly isSmb: boolean;
|
|
44
|
+
readonly privacyMode?: WaVerifiedNamePrivacyMode;
|
|
45
|
+
}
|
|
46
|
+
export interface WaBusinessCoordinator {
|
|
47
|
+
readonly getBusinessProfile: (jids: readonly string[]) => Promise<readonly WaBusinessProfileResult[]>;
|
|
48
|
+
readonly editBusinessProfile: (input: WaEditBusinessProfileInput) => Promise<void>;
|
|
49
|
+
readonly getVerifiedName: (jid: string) => Promise<WaVerifiedNameResult | null>;
|
|
50
|
+
readonly updateCoverPhoto: (id: string, timestamp: string, token: string) => Promise<void>;
|
|
51
|
+
readonly deleteCoverPhoto: (id: string) => Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
interface WaBusinessCoordinatorOptions {
|
|
54
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
55
|
+
}
|
|
56
|
+
export declare function createBusinessCoordinator(options: WaBusinessCoordinatorOptions): WaBusinessCoordinator;
|
|
57
|
+
export {};
|
|
@@ -2,6 +2,7 @@ import type { WaSuccessPersistAttributes } from '../../auth/types';
|
|
|
2
2
|
import type { WaDirtyBit } from '../dirty';
|
|
3
3
|
import type { WaIncomingBaseEvent, WaIncomingCallEvent, WaIncomingChatstateEvent, WaIncomingFailureEvent, WaGroupEvent, WaIncomingNodeHandlerRegistration, WaIncomingNotificationEvent, WaIncomingPresenceEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent } from '../types';
|
|
4
4
|
import type { Logger } from '../../infra/log/types';
|
|
5
|
+
import type { WaConnectionCode, WaDisconnectReason } from '../../protocol/stream';
|
|
5
6
|
import { type WaStreamControlNodeResult } from '../../transport/stream/parse';
|
|
6
7
|
import type { BinaryNode } from '../../transport/types';
|
|
7
8
|
interface WaIncomingNodeRuntime {
|
|
@@ -31,7 +32,8 @@ interface WaIncomingNodeRuntime {
|
|
|
31
32
|
readonly emitGroupEvent: (event: WaGroupEvent) => void;
|
|
32
33
|
readonly emitUnhandledIncomingNode: (event: WaIncomingUnhandledStanzaEvent) => void;
|
|
33
34
|
readonly syncAppState: () => Promise<void>;
|
|
34
|
-
readonly
|
|
35
|
+
readonly stopComms: () => void;
|
|
36
|
+
readonly disconnect: (reason: WaDisconnectReason, isLogout: boolean, code: WaConnectionCode | null) => Promise<void>;
|
|
35
37
|
readonly clearStoredCredentials: () => Promise<void>;
|
|
36
38
|
readonly parseDirtyBits: (nodes: readonly BinaryNode[]) => readonly WaDirtyBit[];
|
|
37
39
|
readonly handleDirtyBits: (dirtyBits: readonly WaDirtyBit[]) => Promise<void>;
|
|
@@ -51,7 +53,6 @@ export declare class WaIncomingNodeCoordinator {
|
|
|
51
53
|
unregisterIncomingHandler(registration: WaIncomingNodeHandlerRegistration): boolean;
|
|
52
54
|
private dispatchIncomingNode;
|
|
53
55
|
private isRetryReceiptType;
|
|
54
|
-
private getHandlersForNode;
|
|
55
56
|
private registerDefaultIncomingHandlers;
|
|
56
57
|
private handleSuccessNode;
|
|
57
58
|
private scheduleMediaConnWarmup;
|
|
@@ -1,52 +1,59 @@
|
|
|
1
1
|
import type { WaAppStateSyncKey } from '../../appstate/types';
|
|
2
|
+
import type { DeviceFanoutResolver } from '../messaging/fanout';
|
|
3
|
+
import type { AppStateSyncKeyProtocol } from '../messaging/key-protocol';
|
|
4
|
+
import type { GroupParticipantsCache } from '../messaging/participants';
|
|
2
5
|
import type { WaGroupEvent, WaSignalMessagePublishInput, WaSendMessageOptions } from '../types';
|
|
3
6
|
import type { Logger } from '../../infra/log/types';
|
|
4
7
|
import type { WaEncryptedMessageInput, WaMessagePublishOptions, WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../../message/types';
|
|
5
8
|
import type { WaMessageClient } from '../../message/WaMessageClient';
|
|
6
9
|
import type { Proto } from '../..';
|
|
7
|
-
import type {
|
|
8
|
-
import type { SignalIdentitySyncApi } from '../../signal/api/SignalIdentitySyncApi';
|
|
9
|
-
import type { SignalSessionSyncApi } from '../../signal/api/SignalSessionSyncApi';
|
|
10
|
+
import type { OutboundRetryTracker } from '../../retry/tracker';
|
|
10
11
|
import type { SenderKeyManager } from '../../signal/group/SenderKeyManager';
|
|
12
|
+
import type { SignalSessionResolver } from '../../signal/session/resolver';
|
|
11
13
|
import type { SignalProtocol } from '../../signal/session/SignalProtocol';
|
|
12
|
-
import type {
|
|
13
|
-
import type { WaRetryStore } from '../../store/contracts/retry.store';
|
|
14
|
+
import type { WaDeviceListStore } from '../../store/contracts/device-list.store';
|
|
14
15
|
import type { WaSignalStore } from '../../store/contracts/signal.store';
|
|
15
16
|
import type { BinaryNode } from '../../transport/types';
|
|
16
17
|
interface WaMessageDispatchCoordinatorOptions {
|
|
17
18
|
readonly logger: Logger;
|
|
18
19
|
readonly messageClient: WaMessageClient;
|
|
19
|
-
readonly
|
|
20
|
-
readonly
|
|
20
|
+
readonly retryTracker: OutboundRetryTracker;
|
|
21
|
+
readonly sessionResolver: SignalSessionResolver;
|
|
22
|
+
readonly fanoutResolver: DeviceFanoutResolver;
|
|
23
|
+
readonly participantsCache: GroupParticipantsCache;
|
|
24
|
+
readonly appStateSyncKeyProtocol: AppStateSyncKeyProtocol;
|
|
21
25
|
readonly buildMessageContent: (content: WaSendMessageContent) => Promise<Proto.IMessage>;
|
|
22
|
-
readonly queryGroupParticipantJids: (groupJid: string) => Promise<readonly string[]>;
|
|
23
26
|
readonly senderKeyManager: SenderKeyManager;
|
|
24
27
|
readonly signalProtocol: SignalProtocol;
|
|
25
28
|
readonly signalStore: WaSignalStore;
|
|
26
|
-
readonly
|
|
27
|
-
readonly signalIdentitySync: SignalIdentitySyncApi;
|
|
28
|
-
readonly signalSessionSync: SignalSessionSyncApi;
|
|
29
|
+
readonly deviceListStore: WaDeviceListStore;
|
|
29
30
|
readonly getCurrentMeJid: () => string | null | undefined;
|
|
30
31
|
readonly getCurrentMeLid: () => string | null | undefined;
|
|
31
32
|
readonly getCurrentSignedIdentity: () => Proto.IADVSignedDeviceIdentity | null | undefined;
|
|
33
|
+
readonly resolvePrivacyTokenNode: (recipientJid: string) => Promise<BinaryNode | null>;
|
|
34
|
+
readonly onDirectMessageSent: (recipientJid: string) => void;
|
|
32
35
|
}
|
|
33
36
|
export declare class WaMessageDispatchCoordinator {
|
|
34
37
|
private readonly logger;
|
|
35
38
|
private readonly messageClient;
|
|
36
|
-
private readonly
|
|
37
|
-
private readonly
|
|
38
|
-
private readonly
|
|
39
|
+
private readonly retryTracker;
|
|
40
|
+
private readonly sessionResolver;
|
|
41
|
+
private readonly fanoutResolver;
|
|
42
|
+
private readonly participantsCache;
|
|
43
|
+
private readonly appStateSyncKeyProtocol;
|
|
39
44
|
private readonly buildMessageContent;
|
|
40
|
-
private readonly queryGroupParticipantJids;
|
|
41
45
|
private readonly senderKeyManager;
|
|
42
46
|
private readonly signalProtocol;
|
|
43
47
|
private readonly signalStore;
|
|
44
|
-
private readonly
|
|
45
|
-
private readonly signalIdentitySync;
|
|
46
|
-
private readonly signalSessionSync;
|
|
48
|
+
private readonly deviceListStore;
|
|
47
49
|
private readonly getCurrentMeJid;
|
|
48
50
|
private readonly getCurrentMeLid;
|
|
49
51
|
private readonly getCurrentSignedIdentity;
|
|
52
|
+
private readonly resolvePrivacyTokenNode;
|
|
53
|
+
private readonly onDirectMessageSent;
|
|
54
|
+
private readonly icdcDedup;
|
|
55
|
+
private readonly privacyTokenDedup;
|
|
56
|
+
private readonly distributionDedup;
|
|
50
57
|
constructor(options: WaMessageDispatchCoordinatorOptions);
|
|
51
58
|
publishMessageNode(node: BinaryNode, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
|
|
52
59
|
publishEncryptedMessage(input: WaEncryptedMessageInput, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
|
|
@@ -57,34 +64,18 @@ export declare class WaMessageDispatchCoordinator {
|
|
|
57
64
|
requestAppStateSyncKeys(keyIds: readonly Uint8Array[]): Promise<readonly string[]>;
|
|
58
65
|
sendAppStateSyncKeyShare(toDeviceJid: string, keys: readonly WaAppStateSyncKey[], missingKeyIds?: readonly Uint8Array[]): Promise<void>;
|
|
59
66
|
mutateParticipantsCacheFromGroupEvent(event: WaGroupEvent): Promise<void>;
|
|
60
|
-
private publishProtocolMessageToDevice;
|
|
61
|
-
private resolveOwnPeerDeviceJids;
|
|
62
|
-
private normalizeKeyIds;
|
|
63
|
-
private publishWithRetryTracking;
|
|
64
|
-
private createRetryOutboundRecord;
|
|
65
|
-
private safeUpsertRetryOutboundRecord;
|
|
66
67
|
private shouldUseGroupDirectPath;
|
|
67
68
|
private publishGroupDirectMessage;
|
|
68
69
|
private publishGroupSenderKeyMessage;
|
|
69
|
-
private resolveGroupParticipantUsers;
|
|
70
|
-
private resolveGroupJidForParticipantCacheEvent;
|
|
71
|
-
private extractParticipantUsersFromGroupEvent;
|
|
72
|
-
private mergeParticipantUsersIntoCache;
|
|
73
|
-
private removeParticipantUsersFromCache;
|
|
74
|
-
private replaceParticipantUsersInCache;
|
|
75
|
-
private areParticipantListsEqual;
|
|
76
|
-
private refreshGroupParticipantUsers;
|
|
77
|
-
private sanitizeParticipantUsers;
|
|
78
70
|
private resolveGroupAddressingMode;
|
|
79
71
|
private resolveSenderForAddressingMode;
|
|
80
72
|
private encryptGroupDistributionParticipants;
|
|
81
|
-
private resolveGroupParticipantDeviceJids;
|
|
82
73
|
private publishDirectSignalMessageWithFanout;
|
|
83
|
-
private
|
|
84
|
-
private
|
|
85
|
-
private
|
|
74
|
+
private withResolvedMessageId;
|
|
75
|
+
private generateOutgoingMessageId;
|
|
76
|
+
private tryBuildReportingTokenArtifacts;
|
|
86
77
|
private getEncodedSignedDeviceIdentity;
|
|
87
|
-
private
|
|
78
|
+
private resolveUserIcdc;
|
|
88
79
|
private requireCurrentMeJid;
|
|
89
80
|
}
|
|
90
81
|
export {};
|
|
@@ -32,11 +32,15 @@ export declare class WaPassiveTasksCoordinator {
|
|
|
32
32
|
readonly runtime: WaPassiveTasksRuntime;
|
|
33
33
|
});
|
|
34
34
|
startPassiveTasksAfterConnect(): void;
|
|
35
|
+
handlePreKeyLowNotification(): Promise<void>;
|
|
36
|
+
handleDigestNotification(): Promise<void>;
|
|
35
37
|
resetInFlightState(): void;
|
|
36
38
|
private runPassiveTasksAfterConnect;
|
|
37
39
|
private validateDigestAndRecoverPreKeys;
|
|
38
40
|
private uploadPreKeysIfMissing;
|
|
39
41
|
private rotateSignedPreKeyIfDue;
|
|
42
|
+
private resolveLocalKeyBundle;
|
|
43
|
+
private resolveLocalKeyBundleFromStore;
|
|
40
44
|
private resolveRotationTimestamp;
|
|
41
45
|
private flushDanglingReceipts;
|
|
42
46
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { WaPrivacyDisallowedListSettingName, WaPrivacySettingName, WaPrivacySettingValueMap } from '../../protocol/privacy';
|
|
2
|
+
import type { BinaryNode } from '../../transport/types';
|
|
3
|
+
export type WaPrivacySettings = {
|
|
4
|
+
readonly [K in WaPrivacySettingName]?: WaPrivacySettingValueMap[K];
|
|
5
|
+
};
|
|
6
|
+
export interface WaPrivacyDisallowedListResult {
|
|
7
|
+
readonly jids: readonly string[];
|
|
8
|
+
readonly dhash?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface WaBlocklistResult {
|
|
11
|
+
readonly jids: readonly string[];
|
|
12
|
+
readonly dhash?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface WaPrivacyCoordinator {
|
|
15
|
+
readonly getPrivacySettings: () => Promise<WaPrivacySettings>;
|
|
16
|
+
readonly setPrivacySetting: <S extends WaPrivacySettingName>(setting: S, value: WaPrivacySettingValueMap[S]) => Promise<void>;
|
|
17
|
+
readonly getDisallowedList: (category: WaPrivacyDisallowedListSettingName) => Promise<WaPrivacyDisallowedListResult>;
|
|
18
|
+
readonly getBlocklist: () => Promise<WaBlocklistResult>;
|
|
19
|
+
readonly blockUser: (jid: string) => Promise<void>;
|
|
20
|
+
readonly unblockUser: (jid: string) => Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
interface WaPrivacyCoordinatorOptions {
|
|
23
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
24
|
+
}
|
|
25
|
+
export declare function createPrivacyCoordinator(options: WaPrivacyCoordinatorOptions): WaPrivacyCoordinator;
|
|
26
|
+
export {};
|