zapo-js 0.1.2 → 0.3.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 +16 -4
- package/dist/appstate/WaAppStateCrypto.js +50 -42
- package/dist/appstate/WaAppStateSyncClient.js +215 -133
- package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
- package/dist/appstate/index.js +9 -7
- package/dist/appstate/utils.js +0 -5
- package/dist/auth/WaAuthClient.js +55 -57
- package/dist/auth/credentials-flow.js +195 -0
- package/dist/auth/index.js +1 -6
- package/dist/auth/pairing/WaPairingFlow.js +39 -32
- package/dist/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +35 -17
- package/dist/client/WaClient.js +338 -174
- package/dist/client/WaClientFactory.js +399 -66
- package/dist/client/connection/WaConnectionManager.js +23 -11
- package/dist/client/coordinators/WaAbPropsCoordinator.js +141 -0
- package/dist/client/coordinators/WaBusinessCoordinator.js +232 -0
- package/dist/client/coordinators/WaEmailCoordinator.js +63 -0
- package/dist/client/coordinators/WaGroupCoordinator.js +11 -7
- package/dist/client/coordinators/WaIncomingNodeCoordinator.js +34 -8
- package/dist/client/coordinators/WaMessageDispatchCoordinator.js +341 -118
- package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
- package/dist/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
- package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
- package/dist/client/coordinators/WaProfileCoordinator.js +214 -0
- package/dist/client/coordinators/WaRetryCoordinator.js +184 -30
- package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
- package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +184 -0
- package/dist/client/dirty.js +41 -21
- package/dist/client/events/abprops.js +43 -0
- package/dist/client/events/devices.js +72 -0
- package/dist/client/events/group.js +3 -11
- package/dist/client/events/identity.js +22 -0
- package/dist/client/events/privacy-token.js +38 -0
- package/dist/client/events/registration.js +42 -0
- package/dist/client/history-sync.js +50 -9
- package/dist/client/incoming.js +74 -7
- package/dist/client/mailbox.js +40 -23
- package/dist/client/media.js +243 -0
- package/dist/client/messages.js +245 -92
- package/dist/client/messaging/fanout.js +21 -11
- package/dist/client/messaging/participants.js +6 -4
- 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/index.js +5 -2
- package/dist/crypto/core/keys.js +4 -4
- package/dist/crypto/core/nonce.js +2 -0
- package/dist/crypto/core/primitives.js +0 -8
- package/dist/crypto/core/random.js +24 -8
- package/dist/crypto/core/xeddsa.js +57 -0
- package/dist/crypto/curves/X25519.js +43 -6
- package/dist/crypto/curves/constants.js +2 -1
- package/dist/crypto/index.js +3 -0
- 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 +40 -32
- package/dist/esm/appstate/WaAppStateSyncClient.js +206 -124
- package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
- package/dist/esm/appstate/index.js +2 -2
- package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +1 -1
- package/dist/esm/appstate/utils.js +2 -5
- package/dist/esm/auth/WaAuthClient.js +52 -54
- package/dist/esm/auth/credentials-flow.js +190 -0
- package/dist/esm/auth/index.js +0 -2
- package/dist/esm/auth/pairing/WaPairingFlow.js +39 -32
- package/dist/esm/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +26 -10
- package/dist/esm/client/WaClient.js +339 -175
- package/dist/esm/client/WaClientFactory.js +401 -68
- package/dist/esm/client/connection/WaConnectionManager.js +23 -11
- package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +137 -0
- package/dist/esm/client/coordinators/WaBusinessCoordinator.js +229 -0
- package/dist/esm/client/coordinators/WaEmailCoordinator.js +60 -0
- package/dist/esm/client/coordinators/WaGroupCoordinator.js +11 -7
- package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +36 -10
- package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +337 -114
- package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
- package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
- package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
- package/dist/esm/client/coordinators/WaProfileCoordinator.js +211 -0
- package/dist/esm/client/coordinators/WaRetryCoordinator.js +186 -32
- package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
- package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +180 -0
- package/dist/esm/client/dirty.js +41 -21
- package/dist/esm/client/events/abprops.js +40 -0
- package/dist/esm/client/events/devices.js +68 -0
- package/dist/esm/client/events/group.js +3 -11
- package/dist/esm/client/events/identity.js +19 -0
- package/dist/esm/client/events/privacy-token.js +35 -0
- package/dist/esm/client/events/registration.js +39 -0
- package/dist/esm/client/history-sync.js +50 -9
- package/dist/esm/client/incoming.js +74 -8
- package/dist/esm/client/mailbox.js +40 -23
- package/dist/esm/client/media.js +234 -0
- package/dist/esm/client/messages.js +244 -91
- package/dist/esm/client/messaging/fanout.js +22 -12
- package/dist/esm/client/messaging/participants.js +6 -4
- 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/index.js +3 -2
- package/dist/esm/crypto/core/keys.js +1 -1
- package/dist/esm/crypto/core/nonce.js +2 -0
- package/dist/esm/crypto/core/primitives.js +0 -7
- package/dist/esm/crypto/core/random.js +23 -7
- package/dist/esm/crypto/core/xeddsa.js +53 -0
- package/dist/esm/crypto/curves/X25519.js +45 -8
- package/dist/esm/crypto/curves/constants.js +1 -0
- package/dist/esm/crypto/index.js +1 -0
- 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/perf/BackgroundQueue.js +478 -0
- package/dist/esm/infra/perf/BoundedTaskQueue.js +3 -1
- 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 +80 -0
- package/dist/esm/media/WaMediaCrypto.js +332 -55
- package/dist/esm/media/WaMediaTransferClient.js +69 -220
- package/dist/esm/media/constants.js +4 -1
- package/dist/esm/media/processor.js +1 -0
- package/dist/esm/message/WaMessageClient.js +26 -19
- package/dist/esm/message/addon-crypto.js +130 -3
- package/dist/esm/message/content.js +206 -14
- package/dist/esm/message/icdc.js +76 -0
- package/dist/esm/message/incoming.js +38 -24
- package/dist/esm/message/phash.js +35 -13
- package/dist/esm/message/reporting-token.js +17 -30
- package/dist/esm/message/use-case-secret.js +1 -1
- package/dist/esm/protocol/abprops.js +159 -0
- package/dist/esm/protocol/appstate.js +9 -40
- package/dist/esm/protocol/browser.js +24 -18
- package/dist/esm/protocol/constants.js +8 -4
- package/dist/esm/protocol/defaults.js +6 -0
- package/dist/esm/protocol/email.js +30 -0
- package/dist/esm/protocol/index.js +1 -2
- package/dist/esm/protocol/jid.js +142 -39
- package/dist/esm/protocol/message.js +61 -1
- package/dist/esm/protocol/nodes.js +8 -2
- package/dist/esm/protocol/notification.js +9 -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/retry/codec.js +216 -0
- package/dist/esm/retry/constants.js +1 -1
- package/dist/esm/retry/index.js +2 -2
- package/dist/esm/retry/parse.js +50 -30
- package/dist/esm/retry/reason.js +1 -1
- package/dist/esm/retry/replay.js +11 -7
- package/dist/esm/retry/tracker.js +50 -12
- package/dist/esm/signal/api/SignalDeviceSyncApi.js +52 -32
- package/dist/esm/signal/api/SignalDigestSyncApi.js +21 -15
- package/dist/esm/signal/api/SignalIdentitySyncApi.js +30 -15
- package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +19 -8
- package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
- package/dist/esm/signal/api/SignalSessionSyncApi.js +17 -8
- 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 +5 -45
- package/dist/esm/signal/crypto/constants.js +0 -4
- package/dist/esm/signal/{store/sqlite.js → encoding.js} +40 -29
- package/dist/esm/signal/group/SenderKeyChain.js +3 -3
- package/dist/esm/signal/group/SenderKeyCodec.js +8 -8
- package/dist/esm/signal/group/SenderKeyManager.js +131 -109
- package/dist/esm/signal/index.js +1 -0
- package/dist/esm/signal/registration/keygen.js +8 -5
- package/dist/esm/signal/registration/utils.js +3 -2
- package/dist/esm/signal/session/SignalProtocol.js +158 -81
- package/dist/esm/signal/session/SignalRatchet.js +21 -10
- package/dist/esm/signal/session/SignalSerializer.js +5 -6
- package/dist/esm/signal/session/SignalSession.js +11 -9
- package/dist/esm/signal/session/resolver.js +140 -105
- package/dist/esm/store/contracts/identity.store.js +1 -0
- package/dist/esm/store/contracts/message-secret.store.js +1 -0
- package/dist/esm/store/contracts/pre-key.store.js +1 -0
- package/dist/esm/store/contracts/privacy-token.store.js +1 -0
- package/dist/esm/store/contracts/session.store.js +1 -0
- package/dist/esm/store/createStore.js +143 -193
- package/dist/esm/store/index.js +5 -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/identity.lock.js +16 -0
- package/dist/esm/store/locks/message-secret.lock.js +17 -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/pre-key.lock.js +27 -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/session.lock.js +19 -0
- package/dist/esm/store/locks/signal.lock.js +39 -0
- package/dist/esm/store/locks/thread.lock.js +21 -0
- package/dist/esm/store/noop.store.js +21 -1
- package/dist/esm/store/providers/memory/appstate.store.js +22 -24
- package/dist/esm/store/providers/memory/device-list.store.js +13 -5
- package/dist/esm/store/providers/memory/identity.store.js +31 -0
- package/dist/esm/store/providers/memory/message-secret.store.js +81 -0
- package/dist/esm/store/providers/memory/participants.store.js +3 -0
- package/dist/esm/store/providers/memory/pre-key.store.js +97 -0
- package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
- package/dist/esm/store/providers/memory/retry.store.js +99 -10
- package/dist/esm/store/providers/memory/sender-key.store.js +6 -1
- package/dist/esm/store/providers/memory/session.store.js +45 -0
- package/dist/esm/store/providers/memory/signal.store.js +1 -147
- package/dist/esm/transport/WaComms.js +7 -4
- package/dist/esm/transport/WaWebSocket.js +9 -7
- package/dist/esm/transport/binary/constants.js +0 -30
- package/dist/esm/transport/binary/decoder.js +4 -4
- package/dist/esm/transport/binary/encoder.js +8 -15
- package/dist/esm/transport/binary/index.js +0 -1
- package/dist/esm/transport/index.js +6 -0
- package/dist/esm/transport/keepalive/WaKeepAlive.js +17 -8
- package/dist/esm/transport/node/WaMobileTcpSocket.js +114 -0
- package/dist/esm/transport/node/WaNodeOrchestrator.js +37 -22
- package/dist/esm/transport/node/builders/abprops.js +20 -0
- package/dist/esm/transport/node/builders/business.js +129 -0
- package/dist/esm/transport/node/builders/device.js +11 -0
- package/dist/esm/transport/node/builders/email.js +65 -0
- package/dist/esm/transport/node/builders/global.js +370 -0
- package/dist/esm/transport/node/builders/message.js +63 -239
- package/dist/esm/transport/node/builders/offline.js +14 -0
- package/dist/esm/transport/node/builders/pairing.js +0 -24
- package/dist/esm/transport/node/builders/prekeys.js +37 -40
- package/dist/esm/transport/node/builders/presence.js +13 -0
- package/dist/esm/transport/node/builders/privacy-token.js +37 -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 +11 -23
- package/dist/esm/transport/node/builders/usync.js +6 -2
- package/dist/esm/transport/node/helpers.js +43 -1
- package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
- package/dist/esm/transport/node/mex/client.js +83 -0
- package/dist/esm/transport/node/mex/persist-ids.js +10 -0
- package/dist/esm/transport/node/usync.js +3 -33
- package/dist/esm/transport/node/xml.js +35 -14
- package/dist/esm/transport/noise/WaClientPayload.js +24 -19
- package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
- package/dist/esm/transport/noise/WaMobileClientPayload.js +53 -0
- package/dist/esm/transport/noise/WaNoiseCert.js +9 -27
- package/dist/esm/transport/noise/WaNoiseSession.js +76 -34
- package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
- package/dist/esm/transport/stream/parse.js +8 -4
- package/dist/esm/util/bytes.js +22 -18
- package/dist/esm/util/index.js +5 -0
- package/dist/esm/util/primitives.js +3 -2
- package/dist/index.js +7 -1
- package/dist/infra/perf/BackgroundQueue.js +482 -0
- package/dist/infra/perf/BoundedTaskQueue.js +3 -1
- package/dist/infra/perf/PromiseDedup.js +24 -0
- package/dist/infra/perf/SharedExclusiveGate.js +113 -0
- package/dist/infra/perf/StoreLock.js +84 -0
- package/dist/media/WaMediaCrypto.js +328 -51
- package/dist/media/WaMediaTransferClient.js +72 -253
- package/dist/media/constants.js +5 -2
- package/dist/media/processor.js +2 -0
- package/dist/message/WaMessageClient.js +26 -19
- package/dist/message/addon-crypto.js +131 -0
- package/dist/message/content.js +211 -14
- package/dist/message/icdc.js +81 -0
- package/dist/message/incoming.js +38 -24
- package/dist/message/phash.js +35 -13
- package/dist/message/reporting-token.js +16 -30
- package/dist/message/use-case-secret.js +1 -1
- package/dist/protocol/abprops.js +163 -0
- package/dist/protocol/appstate.js +10 -41
- package/dist/protocol/browser.js +25 -18
- package/dist/protocol/constants.js +33 -2
- package/dist/protocol/defaults.js +6 -0
- package/dist/protocol/email.js +33 -0
- package/dist/protocol/index.js +8 -5
- package/dist/protocol/jid.js +149 -39
- package/dist/protocol/message.js +62 -2
- package/dist/protocol/nodes.js +8 -2
- package/dist/protocol/notification.js +10 -2
- package/dist/protocol/privacy-token.js +20 -0
- package/dist/protocol/privacy.js +58 -0
- package/dist/protocol/stream.js +27 -2
- package/dist/retry/codec.js +220 -0
- package/dist/retry/constants.js +1 -1
- package/dist/retry/index.js +5 -5
- package/dist/retry/parse.js +51 -30
- package/dist/retry/reason.js +1 -1
- package/dist/retry/replay.js +10 -6
- package/dist/retry/tracker.js +50 -12
- package/dist/signal/api/SignalDeviceSyncApi.js +51 -31
- package/dist/signal/api/SignalDigestSyncApi.js +21 -15
- package/dist/signal/api/SignalIdentitySyncApi.js +29 -14
- package/dist/signal/api/SignalMissingPreKeysSyncApi.js +17 -6
- package/dist/signal/api/SignalRotateKeyApi.js +4 -2
- package/dist/signal/api/SignalSessionSyncApi.js +16 -7
- package/dist/signal/api/result-map.js +13 -0
- package/dist/signal/constants.js +1 -5
- package/dist/signal/crypto/WaAdvSignature.js +2 -44
- package/dist/signal/crypto/constants.js +1 -5
- package/dist/signal/{store/sqlite.js → encoding.js} +41 -25
- package/dist/signal/group/SenderKeyChain.js +2 -2
- package/dist/signal/group/SenderKeyCodec.js +8 -8
- package/dist/signal/group/SenderKeyManager.js +130 -108
- package/dist/signal/index.js +13 -1
- package/dist/signal/registration/keygen.js +7 -4
- package/dist/signal/registration/utils.js +3 -2
- package/dist/signal/session/SignalProtocol.js +158 -81
- package/dist/signal/session/SignalRatchet.js +19 -8
- package/dist/signal/session/SignalSerializer.js +5 -6
- package/dist/signal/session/SignalSession.js +11 -9
- package/dist/signal/session/resolver.js +138 -103
- package/dist/store/contracts/identity.store.js +2 -0
- package/dist/store/contracts/message-secret.store.js +2 -0
- package/dist/store/contracts/pre-key.store.js +2 -0
- package/dist/store/contracts/privacy-token.store.js +2 -0
- package/dist/store/contracts/session.store.js +2 -0
- package/dist/store/createStore.js +142 -192
- package/dist/store/index.js +23 -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/identity.lock.js +19 -0
- package/dist/store/locks/message-secret.lock.js +20 -0
- package/dist/store/locks/message.lock.js +24 -0
- package/dist/store/locks/participants.lock.js +23 -0
- package/dist/store/locks/pre-key.lock.js +30 -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/session.lock.js +22 -0
- package/dist/store/locks/signal.lock.js +42 -0
- package/dist/store/locks/thread.lock.js +24 -0
- package/dist/store/noop.store.js +22 -2
- package/dist/store/providers/memory/appstate.store.js +22 -24
- package/dist/store/providers/memory/device-list.store.js +13 -5
- package/dist/store/providers/memory/identity.store.js +35 -0
- package/dist/store/providers/memory/message-secret.store.js +85 -0
- package/dist/store/providers/memory/participants.store.js +3 -0
- package/dist/store/providers/memory/pre-key.store.js +101 -0
- package/dist/store/providers/memory/privacy-token.store.js +47 -0
- package/dist/store/providers/memory/retry.store.js +98 -9
- package/dist/store/providers/memory/sender-key.store.js +6 -1
- package/dist/store/providers/memory/session.store.js +49 -0
- package/dist/store/providers/memory/signal.store.js +1 -147
- package/dist/transport/WaComms.js +7 -4
- package/dist/transport/WaWebSocket.js +9 -7
- package/dist/transport/binary/constants.js +1 -31
- package/dist/transport/binary/decoder.js +4 -4
- package/dist/transport/binary/encoder.js +8 -15
- package/dist/transport/binary/index.js +0 -4
- package/dist/transport/index.js +17 -1
- package/dist/transport/keepalive/WaKeepAlive.js +17 -8
- package/dist/transport/node/WaMobileTcpSocket.js +118 -0
- package/dist/transport/node/WaNodeOrchestrator.js +36 -21
- package/dist/transport/node/builders/abprops.js +23 -0
- package/dist/transport/node/builders/business.js +137 -0
- package/dist/transport/node/builders/device.js +14 -0
- package/dist/transport/node/builders/email.js +72 -0
- package/dist/transport/node/builders/global.js +375 -0
- package/dist/transport/node/builders/message.js +64 -245
- package/dist/transport/node/builders/offline.js +17 -0
- package/dist/transport/node/builders/pairing.js +0 -26
- package/dist/transport/node/builders/prekeys.js +36 -39
- package/dist/transport/node/builders/presence.js +16 -0
- package/dist/transport/node/builders/privacy-token.js +42 -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 +10 -22
- package/dist/transport/node/builders/usync.js +6 -2
- package/dist/transport/node/helpers.js +46 -1
- package/dist/transport/node/mex/argo-decoder.js +189 -0
- package/dist/transport/node/mex/client.js +86 -0
- package/dist/transport/node/mex/persist-ids.js +13 -0
- package/dist/transport/node/usync.js +2 -32
- package/dist/transport/node/xml.js +35 -14
- package/dist/transport/noise/WaClientPayload.js +26 -21
- package/dist/transport/noise/WaFrameCodec.js +1 -1
- package/dist/transport/noise/WaMobileClientPayload.js +56 -0
- package/dist/transport/noise/WaNoiseCert.js +8 -26
- package/dist/transport/noise/WaNoiseSession.js +75 -33
- package/dist/transport/noise/WaNoiseSocket.js +8 -4
- package/dist/transport/stream/parse.js +7 -3
- package/dist/types/appstate/WaAppStateCrypto.d.ts +11 -8
- package/dist/types/appstate/WaAppStateSyncClient.d.ts +6 -2
- package/dist/types/appstate/encoding.d.ts +7 -0
- package/dist/types/appstate/index.d.ts +3 -3
- package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → response-parser.d.ts} +1 -1
- package/dist/types/appstate/types.d.ts +1 -1
- package/dist/types/appstate/utils.d.ts +0 -2
- package/dist/types/auth/WaAuthClient.d.ts +9 -3
- package/dist/types/auth/credentials-flow.d.ts +20 -0
- package/dist/types/auth/index.d.ts +0 -2
- package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
- package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +6 -1
- package/dist/types/auth/types.d.ts +41 -0
- package/dist/types/client/WaClient.d.ts +44 -18
- package/dist/types/client/WaClientFactory.d.ts +22 -8
- package/dist/types/client/connection/WaConnectionManager.d.ts +2 -0
- package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
- package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
- package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +24 -0
- package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +9 -2
- package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -2
- package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
- package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +16 -1
- package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
- package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +38 -0
- package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +12 -0
- package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
- package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +55 -0
- package/dist/types/client/dirty.d.ts +3 -1
- package/dist/types/client/events/abprops.d.ts +14 -0
- package/dist/types/client/events/devices.d.ts +20 -0
- 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/events/registration.d.ts +17 -0
- package/dist/types/client/history-sync.d.ts +9 -6
- package/dist/types/client/incoming.d.ts +9 -2
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/mailbox.d.ts +5 -5
- package/dist/types/client/media.d.ts +31 -0
- package/dist/types/client/messages.d.ts +3 -2
- 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 +151 -4
- package/dist/types/crypto/core/index.d.ts +3 -2
- package/dist/types/crypto/core/nonce.d.ts +2 -0
- package/dist/types/crypto/core/primitives.d.ts +1 -2
- package/dist/types/crypto/core/random.d.ts +2 -1
- package/dist/types/crypto/core/xeddsa.d.ts +2 -0
- package/dist/types/crypto/curves/constants.d.ts +1 -0
- package/dist/types/crypto/index.d.ts +2 -0
- 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 +6 -3
- package/dist/types/infra/log/ConsoleLogger.d.ts +1 -1
- package/dist/types/infra/log/PinoLogger.d.ts +1 -1
- package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
- 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 +11 -0
- package/dist/types/media/WaMediaCrypto.d.ts +16 -6
- package/dist/types/media/WaMediaTransferClient.d.ts +6 -23
- package/dist/types/media/constants.d.ts +3 -1
- package/dist/types/media/index.d.ts +2 -1
- package/dist/types/media/processor.d.ts +28 -0
- package/dist/types/media/types.d.ts +19 -5
- package/dist/types/message/addon-crypto.d.ts +34 -3
- package/dist/types/message/content.d.ts +11 -1
- package/dist/types/message/icdc.d.ts +13 -0
- package/dist/types/message/reporting-token.d.ts +0 -1
- package/dist/types/message/types.d.ts +42 -11
- package/dist/types/protocol/abprops.d.ts +142 -0
- package/dist/types/protocol/appstate.d.ts +0 -11
- package/dist/types/protocol/browser.d.ts +1 -0
- package/dist/types/protocol/constants.d.ts +12 -4
- package/dist/types/protocol/defaults.d.ts +6 -0
- package/dist/types/protocol/email.d.ts +32 -0
- package/dist/types/protocol/index.d.ts +1 -2
- package/dist/types/protocol/jid.d.ts +20 -2
- package/dist/types/protocol/message.d.ts +60 -0
- package/dist/types/protocol/nodes.d.ts +6 -0
- package/dist/types/protocol/notification.d.ts +8 -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 +31 -0
- package/dist/types/retry/codec.d.ts +3 -0
- package/dist/types/retry/index.d.ts +3 -3
- package/dist/types/retry/parse.d.ts +5 -2
- package/dist/types/retry/reason.d.ts +1 -1
- package/dist/types/retry/tracker.d.ts +1 -0
- package/dist/types/retry/types.d.ts +6 -1
- package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +2 -1
- package/dist/types/signal/api/SignalDigestSyncApi.d.ts +9 -0
- package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +5 -3
- 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/crypto/WaAdvSignature.d.ts +0 -2
- package/dist/types/signal/crypto/constants.d.ts +0 -1
- package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +9 -3
- package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
- package/dist/types/signal/group/SenderKeyManager.d.ts +17 -7
- package/dist/types/signal/index.d.ts +2 -0
- package/dist/types/signal/registration/utils.d.ts +2 -1
- package/dist/types/signal/session/SignalProtocol.d.ts +21 -6
- package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
- package/dist/types/signal/session/resolver.d.ts +11 -4
- package/dist/types/signal/types.d.ts +16 -4
- package/dist/types/store/contracts/appstate.store.d.ts +1 -1
- package/dist/types/store/contracts/identity.store.d.ts +11 -0
- package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
- package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
- 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/session.store.d.ts +14 -0
- package/dist/types/store/contracts/signal.store.d.ts +1 -27
- package/dist/types/store/createStore.d.ts +1 -1
- package/dist/types/store/index.d.ts +12 -12
- 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/identity.lock.d.ts +3 -0
- package/dist/types/store/locks/message-secret.lock.d.ts +3 -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/pre-key.lock.d.ts +3 -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/session.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/noop.store.d.ts +4 -0
- package/dist/types/store/providers/memory/appstate.store.d.ts +1 -1
- package/dist/types/store/providers/memory/identity.store.d.ts +18 -0
- package/dist/types/store/providers/memory/message-secret.store.d.ts +21 -0
- package/dist/types/store/providers/memory/pre-key.store.d.ts +23 -0
- package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
- package/dist/types/store/providers/memory/retry.store.d.ts +15 -1
- package/dist/types/store/providers/memory/session.store.d.ts +21 -0
- package/dist/types/store/providers/memory/signal.store.d.ts +2 -43
- package/dist/types/store/providers/memory/thread.store.d.ts +1 -1
- package/dist/types/store/types.d.ts +69 -61
- package/dist/types/transport/WaWebSocket.d.ts +1 -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 +8 -1
- package/dist/types/transport/keepalive/WaKeepAlive.d.ts +4 -1
- package/dist/types/transport/node/WaMobileTcpSocket.d.ts +18 -0
- package/dist/types/transport/node/WaNodeOrchestrator.d.ts +9 -6
- package/dist/types/transport/node/builders/abprops.d.ts +5 -0
- package/dist/types/transport/node/builders/business.d.ts +29 -0
- package/dist/types/transport/node/builders/device.d.ts +2 -0
- package/dist/types/transport/node/builders/email.d.ts +11 -0
- package/dist/types/transport/node/builders/global.d.ts +102 -0
- package/dist/types/transport/node/builders/message.d.ts +8 -7
- package/dist/types/transport/node/builders/offline.d.ts +2 -0
- package/dist/types/transport/node/builders/pairing.d.ts +0 -2
- package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
- package/dist/types/transport/node/builders/presence.d.ts +6 -0
- 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 +0 -1
- package/dist/types/transport/node/helpers.d.ts +8 -0
- package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
- package/dist/types/transport/node/mex/client.d.ts +18 -0
- package/dist/types/transport/node/mex/persist-ids.d.ts +14 -0
- package/dist/types/transport/noise/WaMobileClientPayload.d.ts +29 -0
- package/dist/types/transport/noise/WaNoiseCert.d.ts +7 -1
- package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
- package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
- package/dist/types/transport/types.d.ts +8 -0
- package/dist/types/util/bytes.d.ts +1 -1
- package/dist/types/util/index.d.ts +5 -0
- package/dist/types/util/primitives.d.ts +0 -1
- package/dist/util/bytes.js +22 -18
- package/dist/util/index.js +23 -0
- package/dist/util/primitives.js +2 -2
- package/package.json +34 -10
- package/proto/index.js +1 -1
- package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
- package/dist/auth/pairing/constants.js +0 -5
- package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
- package/dist/crypto/core/constants.js +0 -4
- package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
- package/dist/esm/auth/pairing/constants.js +0 -2
- package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
- package/dist/esm/crypto/core/constants.js +0 -1
- package/dist/esm/retry/outbound.js +0 -82
- package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
- package/dist/esm/store/providers/sqlite/appstate.store.js +0 -250
- package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
- package/dist/esm/store/providers/sqlite/connection.js +0 -245
- package/dist/esm/store/providers/sqlite/contact.store.js +0 -74
- package/dist/esm/store/providers/sqlite/device-list.store.js +0 -127
- package/dist/esm/store/providers/sqlite/message.store.js +0 -132
- package/dist/esm/store/providers/sqlite/migrations.js +0 -347
- package/dist/esm/store/providers/sqlite/participants.store.js +0 -77
- package/dist/esm/store/providers/sqlite/retry.store.js +0 -141
- package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -198
- package/dist/esm/store/providers/sqlite/signal.store.js +0 -435
- package/dist/esm/store/providers/sqlite/table-names.js +0 -107
- package/dist/esm/store/providers/sqlite/thread.store.js +0 -85
- package/dist/esm/transport/node/builders/index.js +0 -8
- package/dist/retry/outbound.js +0 -87
- package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
- package/dist/store/providers/sqlite/appstate.store.js +0 -254
- package/dist/store/providers/sqlite/auth.store.js +0 -180
- package/dist/store/providers/sqlite/connection.js +0 -281
- package/dist/store/providers/sqlite/contact.store.js +0 -78
- package/dist/store/providers/sqlite/device-list.store.js +0 -131
- package/dist/store/providers/sqlite/message.store.js +0 -136
- package/dist/store/providers/sqlite/migrations.js +0 -350
- package/dist/store/providers/sqlite/participants.store.js +0 -81
- package/dist/store/providers/sqlite/retry.store.js +0 -145
- package/dist/store/providers/sqlite/sender-key.store.js +0 -202
- package/dist/store/providers/sqlite/signal.store.js +0 -439
- package/dist/store/providers/sqlite/table-names.js +0 -113
- package/dist/store/providers/sqlite/thread.store.js +0 -89
- package/dist/transport/node/builders/index.js +0 -42
- package/dist/types/appstate/store/sqlite.d.ts +0 -7
- package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
- package/dist/types/auth/pairing/constants.d.ts +0 -2
- package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
- package/dist/types/crypto/core/constants.d.ts +0 -1
- 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 -17
- 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 -12
- package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -15
- package/dist/types/store/providers/sqlite/message.store.d.ts +0 -13
- package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
- package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -12
- package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -15
- package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -24
- package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -53
- package/dist/types/store/providers/sqlite/table-names.d.ts +0 -5
- package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -13
- package/dist/types/transport/node/builders/index.d.ts +0 -8
- /package/dist/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { WaOfflineResumeEvent } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import type { BinaryNode } from '../../transport/types';
|
|
4
|
+
interface WaOfflineResumeRuntime {
|
|
5
|
+
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
6
|
+
readonly emitOfflineResume: (event: WaOfflineResumeEvent) => void;
|
|
7
|
+
}
|
|
8
|
+
interface WaOfflineResumeCoordinatorOptions {
|
|
9
|
+
readonly logger: Logger;
|
|
10
|
+
readonly runtime: WaOfflineResumeRuntime;
|
|
11
|
+
}
|
|
12
|
+
export declare class WaOfflineResumeCoordinator {
|
|
13
|
+
private readonly logger;
|
|
14
|
+
private readonly runtime;
|
|
15
|
+
private state;
|
|
16
|
+
private totalStanzas;
|
|
17
|
+
private pendingStanzas;
|
|
18
|
+
private stanzaTimeout;
|
|
19
|
+
constructor(options: WaOfflineResumeCoordinatorOptions);
|
|
20
|
+
get isComplete(): boolean;
|
|
21
|
+
get isResuming(): boolean;
|
|
22
|
+
handleOfflinePreview(stanzaCount: number): void;
|
|
23
|
+
handleOfflineComplete(serverStanzaCount: number): void;
|
|
24
|
+
trackOfflineStanza(): void;
|
|
25
|
+
reset(): void;
|
|
26
|
+
private completeResume;
|
|
27
|
+
private sendOfflineBatch;
|
|
28
|
+
private resetStanzaTimeout;
|
|
29
|
+
private clearTimers;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -1,42 +1,57 @@
|
|
|
1
|
+
import type { WaAppStateSyncClient } from '../../appstate/WaAppStateSyncClient';
|
|
1
2
|
import type { WaAuthCredentials } from '../../auth/types';
|
|
2
3
|
import type { Logger } from '../../infra/log/types';
|
|
3
4
|
import type { SignalDigestSyncApi } from '../../signal/api/SignalDigestSyncApi';
|
|
4
5
|
import type { SignalRotateKeyApi } from '../../signal/api/SignalRotateKeyApi';
|
|
6
|
+
import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
|
|
5
7
|
import type { WaSignalStore } from '../../store/contracts/signal.store';
|
|
6
8
|
import type { BinaryNode } from '../../transport/types';
|
|
7
9
|
type WaPassiveTasksRuntime = {
|
|
8
|
-
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown
|
|
10
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
|
|
11
|
+
readonly useSystemId?: boolean;
|
|
12
|
+
}) => Promise<BinaryNode>;
|
|
9
13
|
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
10
14
|
readonly persistServerHasPreKeys: (serverHasPreKeys: boolean) => Promise<void>;
|
|
11
15
|
readonly sendNodeDirect: (node: BinaryNode) => Promise<void>;
|
|
12
16
|
readonly takeDanglingReceipts: () => BinaryNode[];
|
|
13
17
|
readonly requeueDanglingReceipt: (node: BinaryNode) => void;
|
|
14
18
|
readonly shouldQueueDanglingReceipt: (node: BinaryNode, error: Error) => boolean;
|
|
19
|
+
readonly syncAbProps: () => void;
|
|
20
|
+
readonly sendPresenceAvailable: () => Promise<void>;
|
|
15
21
|
};
|
|
16
22
|
export declare class WaPassiveTasksCoordinator {
|
|
17
23
|
private readonly logger;
|
|
18
24
|
private readonly signalStore;
|
|
25
|
+
private readonly preKeyStore;
|
|
19
26
|
private readonly signalDigestSync;
|
|
20
27
|
private readonly signalRotateKey;
|
|
21
28
|
private readonly signedPreKeyRotationIntervalMs;
|
|
22
29
|
private readonly signedPreKeyServerErrorBackoffMs;
|
|
23
30
|
private readonly runtime;
|
|
31
|
+
private readonly mobilePrimary;
|
|
32
|
+
private readonly appStateSync?;
|
|
24
33
|
private passiveTasksPromise;
|
|
25
34
|
constructor(options: {
|
|
26
35
|
readonly logger: Logger;
|
|
27
36
|
readonly signalStore: WaSignalStore;
|
|
37
|
+
readonly preKeyStore: WaPreKeyStore;
|
|
28
38
|
readonly signalDigestSync: SignalDigestSyncApi;
|
|
29
39
|
readonly signalRotateKey: SignalRotateKeyApi;
|
|
30
40
|
readonly signedPreKeyRotationIntervalMs?: number;
|
|
31
41
|
readonly signedPreKeyServerErrorBackoffMs?: number;
|
|
32
42
|
readonly runtime: WaPassiveTasksRuntime;
|
|
43
|
+
readonly mobilePrimary?: boolean;
|
|
44
|
+
readonly appStateSync?: WaAppStateSyncClient;
|
|
33
45
|
});
|
|
34
46
|
startPassiveTasksAfterConnect(): void;
|
|
47
|
+
handlePreKeyLowNotification(): Promise<void>;
|
|
48
|
+
handleDigestNotification(): Promise<void>;
|
|
35
49
|
resetInFlightState(): void;
|
|
36
50
|
private runPassiveTasksAfterConnect;
|
|
37
51
|
private validateDigestAndRecoverPreKeys;
|
|
38
52
|
private uploadPreKeysIfMissing;
|
|
39
53
|
private rotateSignedPreKeyIfDue;
|
|
54
|
+
private resolveLocalKeyBundleFromStore;
|
|
40
55
|
private resolveRotationTimestamp;
|
|
41
56
|
private flushDanglingReceipts;
|
|
42
57
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type WaPrivacyDisallowedListSettingName, type WaPrivacySettingName, type 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 {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type WaProfilePictureType } from '../../transport/node/builders/profile';
|
|
2
|
+
import type { BinaryNode } from '../../transport/types';
|
|
3
|
+
export interface WaProfilePictureResult {
|
|
4
|
+
readonly url?: string;
|
|
5
|
+
readonly directPath?: string;
|
|
6
|
+
readonly id?: string;
|
|
7
|
+
readonly type?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface WaProfileStatusResult {
|
|
10
|
+
readonly status: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface WaProfileInfo {
|
|
13
|
+
readonly jid: string;
|
|
14
|
+
readonly pictureId?: number;
|
|
15
|
+
readonly status?: string | null;
|
|
16
|
+
}
|
|
17
|
+
export interface WaDisappearingModeResult {
|
|
18
|
+
readonly duration: number;
|
|
19
|
+
readonly timestamp: number;
|
|
20
|
+
readonly ephemeralityDisabled?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface WaProfileCoordinator {
|
|
23
|
+
readonly getProfilePicture: (jid: string, type?: WaProfilePictureType, existingId?: string) => Promise<WaProfilePictureResult>;
|
|
24
|
+
readonly setProfilePicture: (imageBytes: Uint8Array, targetJid?: string) => Promise<string | null>;
|
|
25
|
+
readonly deleteProfilePicture: (targetJid?: string) => Promise<void>;
|
|
26
|
+
readonly getStatus: (jid: string) => Promise<WaProfileStatusResult>;
|
|
27
|
+
readonly setStatus: (text: string) => Promise<void>;
|
|
28
|
+
readonly getProfiles: (jids: readonly string[]) => Promise<readonly WaProfileInfo[]>;
|
|
29
|
+
readonly getDisappearingMode: (jids: readonly string[]) => Promise<readonly WaDisappearingModeResult[]>;
|
|
30
|
+
}
|
|
31
|
+
interface WaProfileCoordinatorOptions {
|
|
32
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
|
|
33
|
+
readonly useSystemId?: boolean;
|
|
34
|
+
}) => Promise<BinaryNode>;
|
|
35
|
+
readonly generateSid: () => Promise<string>;
|
|
36
|
+
}
|
|
37
|
+
export declare function createProfileCoordinator(options: WaProfileCoordinatorOptions): WaProfileCoordinator;
|
|
38
|
+
export {};
|
|
@@ -5,14 +5,18 @@ import type { WaRetryDecryptFailureContext } from '../../retry/types';
|
|
|
5
5
|
import type { SignalDeviceSyncApi } from '../../signal/api/SignalDeviceSyncApi';
|
|
6
6
|
import type { SignalMissingPreKeysSyncApi } from '../../signal/api/SignalMissingPreKeysSyncApi';
|
|
7
7
|
import type { SignalProtocol } from '../../signal/session/SignalProtocol';
|
|
8
|
+
import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
|
|
8
9
|
import type { WaRetryStore } from '../../store/contracts/retry.store';
|
|
9
10
|
import type { WaSenderKeyStore } from '../../store/contracts/sender-key.store';
|
|
11
|
+
import type { WaSessionStore } from '../../store/contracts/session.store';
|
|
10
12
|
import type { WaSignalStore } from '../../store/contracts/signal.store';
|
|
11
13
|
import type { BinaryNode } from '../../transport/types';
|
|
12
14
|
interface WaRetryCoordinatorOptions {
|
|
13
15
|
readonly logger: Logger;
|
|
14
16
|
readonly retryStore: WaRetryStore;
|
|
15
17
|
readonly signalStore: WaSignalStore;
|
|
18
|
+
readonly preKeyStore: WaPreKeyStore;
|
|
19
|
+
readonly sessionStore: WaSessionStore;
|
|
16
20
|
readonly senderKeyStore: WaSenderKeyStore;
|
|
17
21
|
readonly signalProtocol: SignalProtocol;
|
|
18
22
|
readonly signalDeviceSync: SignalDeviceSyncApi;
|
|
@@ -28,6 +32,8 @@ export declare class WaRetryCoordinator {
|
|
|
28
32
|
private readonly retryStore;
|
|
29
33
|
private readonly retryTtlMs;
|
|
30
34
|
private readonly signalStore;
|
|
35
|
+
private readonly preKeyStore;
|
|
36
|
+
private readonly sessionStore;
|
|
31
37
|
private readonly senderKeyStore;
|
|
32
38
|
private readonly signalProtocol;
|
|
33
39
|
private readonly signalDeviceSync;
|
|
@@ -38,6 +44,7 @@ export declare class WaRetryCoordinator {
|
|
|
38
44
|
private readonly getCurrentMeLid;
|
|
39
45
|
private readonly getCurrentSignedIdentity;
|
|
40
46
|
private readonly retryProcessingByMessageId;
|
|
47
|
+
private readonly retrySessionBaseKeys;
|
|
41
48
|
private nextRetryCleanupAtMs;
|
|
42
49
|
constructor(options: WaRetryCoordinatorOptions);
|
|
43
50
|
onDecryptFailure(context: WaRetryDecryptFailureContext, error: unknown): Promise<boolean>;
|
|
@@ -52,6 +59,7 @@ export declare class WaRetryCoordinator {
|
|
|
52
59
|
private runRetryTaskSerialized;
|
|
53
60
|
private buildRetryKeysSection;
|
|
54
61
|
private updateLocalSessionFromRetryRequest;
|
|
62
|
+
private applySessionBaseKeyPolicy;
|
|
55
63
|
private markRetryRequesterSenderKeyAsStale;
|
|
56
64
|
private fetchMissingPreKeysSession;
|
|
57
65
|
private authorizeRetryRequest;
|
|
@@ -59,5 +67,9 @@ export declare class WaRetryCoordinator {
|
|
|
59
67
|
private mapOutboundStateFromReceiptType;
|
|
60
68
|
private sendRetryAckSafe;
|
|
61
69
|
private maybeCleanupRetryStore;
|
|
70
|
+
private retrySessionBaseKeyMapKey;
|
|
71
|
+
private setRetrySessionBaseKey;
|
|
72
|
+
private getRetrySessionBaseKey;
|
|
73
|
+
private cleanupRetrySessionBaseKeys;
|
|
62
74
|
}
|
|
63
75
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Logger } from '../../infra/log/types';
|
|
2
|
+
import type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason } from '../../protocol/stream';
|
|
2
3
|
import type { WaStreamControlNodeResult } from '../../transport/stream/parse';
|
|
3
4
|
import type { WaComms } from '../../transport/WaComms';
|
|
4
5
|
interface WaStreamControlCoordinatorOptions {
|
|
@@ -6,9 +7,9 @@ interface WaStreamControlCoordinatorOptions {
|
|
|
6
7
|
readonly getComms: () => WaComms | null;
|
|
7
8
|
readonly clearPendingQueries: (error: Error) => void;
|
|
8
9
|
readonly clearMediaConnCache: () => void;
|
|
9
|
-
readonly disconnect: () => Promise<void>;
|
|
10
|
+
readonly disconnect: (reason: WaDisconnectReason, isLogout: boolean, code: WaConnectionCode | null) => Promise<void>;
|
|
10
11
|
readonly clearStoredCredentials: () => Promise<void>;
|
|
11
|
-
readonly connect: () => Promise<void>;
|
|
12
|
+
readonly connect: (reason: WaConnectionOpenReason) => Promise<void>;
|
|
12
13
|
}
|
|
13
14
|
export interface WaStreamControlHandler {
|
|
14
15
|
readonly handleStreamControlResult: (result: WaStreamControlNodeResult) => Promise<void>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ParsedPrivacyToken } from '../events/privacy-token';
|
|
2
|
+
import type { WaClientEventMap } from '../types';
|
|
3
|
+
import type { Logger } from '../../infra/log/types';
|
|
4
|
+
import type { WaPrivacyTokenStore } from '../../store/contracts/privacy-token.store';
|
|
5
|
+
import type { BinaryNode } from '../../transport/types';
|
|
6
|
+
type WaTrustedContactTokenRuntime = {
|
|
7
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
8
|
+
readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
|
|
9
|
+
readonly getCurrentMeLid: () => string | null;
|
|
10
|
+
};
|
|
11
|
+
interface WaTrustedContactTokenConfig {
|
|
12
|
+
readonly durationS: number;
|
|
13
|
+
readonly numBuckets: number;
|
|
14
|
+
readonly senderDurationS: number;
|
|
15
|
+
readonly senderNumBuckets: number;
|
|
16
|
+
readonly maxDurationS: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class WaTrustedContactTokenCoordinator {
|
|
19
|
+
private readonly logger;
|
|
20
|
+
private readonly store;
|
|
21
|
+
private readonly runtime;
|
|
22
|
+
private readonly baseConfig;
|
|
23
|
+
private readonly getConfigOverrides;
|
|
24
|
+
private readonly csTokenGenerator;
|
|
25
|
+
private readonly senderTokenDedup;
|
|
26
|
+
private cachedNctSalt;
|
|
27
|
+
private nctSaltHydrated;
|
|
28
|
+
constructor(options: {
|
|
29
|
+
readonly logger: Logger;
|
|
30
|
+
readonly store: WaPrivacyTokenStore;
|
|
31
|
+
readonly runtime: WaTrustedContactTokenRuntime;
|
|
32
|
+
readonly durationS?: number;
|
|
33
|
+
readonly numBuckets?: number;
|
|
34
|
+
readonly senderDurationS?: number;
|
|
35
|
+
readonly senderNumBuckets?: number;
|
|
36
|
+
readonly maxDurationS?: number;
|
|
37
|
+
readonly getConfigOverrides?: () => Partial<WaTrustedContactTokenConfig>;
|
|
38
|
+
});
|
|
39
|
+
private resolveConfig;
|
|
40
|
+
resolveTokenForMessage(recipientJid: string): Promise<BinaryNode | null>;
|
|
41
|
+
handleIncomingToken(fromJid: string, tokens: readonly ParsedPrivacyToken[]): Promise<void>;
|
|
42
|
+
maybeIssueSenderToken(recipientJid: string): Promise<void>;
|
|
43
|
+
reissueOnIdentityChange(jid: string): Promise<void>;
|
|
44
|
+
hydrateFromHistorySync(conversations: readonly {
|
|
45
|
+
readonly jid: string;
|
|
46
|
+
readonly tcToken?: Uint8Array | null;
|
|
47
|
+
readonly tcTokenTimestamp?: number | null;
|
|
48
|
+
readonly tcTokenSenderTimestamp?: number | null;
|
|
49
|
+
}[]): Promise<void>;
|
|
50
|
+
handleNctSaltSync(salt: Uint8Array | null): Promise<void>;
|
|
51
|
+
hydrateNctSaltFromHistorySync(salt: Uint8Array): Promise<void>;
|
|
52
|
+
private getNctSalt;
|
|
53
|
+
private issuePrivacyToken;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
@@ -8,7 +8,9 @@ export interface WaDirtyBit {
|
|
|
8
8
|
}
|
|
9
9
|
interface WaDirtySyncRuntime {
|
|
10
10
|
readonly logger: Logger;
|
|
11
|
-
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown
|
|
11
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
|
|
12
|
+
readonly useSystemId?: boolean;
|
|
13
|
+
}) => Promise<BinaryNode>;
|
|
12
14
|
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
13
15
|
readonly syncAppState: () => Promise<void>;
|
|
14
16
|
readonly generateUsyncSid: () => Promise<string>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export interface AbPropResponseEntry {
|
|
3
|
+
readonly configCode: number;
|
|
4
|
+
readonly configValue: string | null;
|
|
5
|
+
}
|
|
6
|
+
export interface AbPropSyncResult {
|
|
7
|
+
readonly abKey: string | null;
|
|
8
|
+
readonly hash: string | null;
|
|
9
|
+
readonly refresh: number | null;
|
|
10
|
+
readonly refreshId: number | null;
|
|
11
|
+
readonly isDeltaUpdate: boolean;
|
|
12
|
+
readonly props: readonly AbPropResponseEntry[];
|
|
13
|
+
}
|
|
14
|
+
export declare function parseAbPropsIqResult(node: BinaryNode): AbPropSyncResult;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export declare const DEVICE_NOTIFICATION_ACTIONS: Readonly<{
|
|
3
|
+
readonly ADD: "add";
|
|
4
|
+
readonly REMOVE: "remove";
|
|
5
|
+
readonly UPDATE: "update";
|
|
6
|
+
}>;
|
|
7
|
+
export type DeviceNotificationAction = (typeof DEVICE_NOTIFICATION_ACTIONS)[keyof typeof DEVICE_NOTIFICATION_ACTIONS];
|
|
8
|
+
export interface DeviceNotificationDevice {
|
|
9
|
+
readonly deviceId: number;
|
|
10
|
+
readonly keyIndex: number | null;
|
|
11
|
+
}
|
|
12
|
+
export interface DeviceNotification {
|
|
13
|
+
readonly action: DeviceNotificationAction;
|
|
14
|
+
readonly stanzaId: string;
|
|
15
|
+
readonly fromJid: string;
|
|
16
|
+
readonly lid: string | undefined;
|
|
17
|
+
readonly hash: string | undefined;
|
|
18
|
+
readonly devices: readonly DeviceNotificationDevice[];
|
|
19
|
+
}
|
|
20
|
+
export declare function parseDeviceNotification(node: BinaryNode): DeviceNotification | null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export interface IdentityChangeNotification {
|
|
3
|
+
readonly fromJid: string;
|
|
4
|
+
readonly stanzaId: string;
|
|
5
|
+
readonly displayName: string | undefined;
|
|
6
|
+
readonly lid: string | undefined;
|
|
7
|
+
readonly offline: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function parseIdentityChangeNotification(node: BinaryNode): IdentityChangeNotification | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export interface ParsedPrivacyToken {
|
|
3
|
+
readonly type: string;
|
|
4
|
+
readonly tokenBytes: Uint8Array;
|
|
5
|
+
readonly timestampS: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function parsePrivacyTokenNotification(node: BinaryNode): readonly ParsedPrivacyToken[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export interface ParsedRegistrationCode {
|
|
3
|
+
readonly kind: 'registration_code';
|
|
4
|
+
readonly code: string;
|
|
5
|
+
readonly expiryTimestampMs: number;
|
|
6
|
+
readonly fromDeviceId: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ParsedAccountTakeoverNotice {
|
|
9
|
+
readonly kind: 'account_takeover_notice';
|
|
10
|
+
readonly serverToken: string;
|
|
11
|
+
readonly attemptTimestampMs: number;
|
|
12
|
+
readonly newDeviceName?: string;
|
|
13
|
+
readonly newDevicePlatform?: string;
|
|
14
|
+
readonly newDeviceAppVersion?: string;
|
|
15
|
+
}
|
|
16
|
+
export type ParsedRegistrationNotification = ParsedRegistrationCode | ParsedAccountTakeoverNotice | null;
|
|
17
|
+
export declare function parseRegistrationNotification(node: BinaryNode): ParsedRegistrationNotification;
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
+
import type { WriteBehindPersistence } from './persistence/WriteBehindPersistence';
|
|
1
2
|
import type { WaClientEventMap } from './types';
|
|
2
3
|
import type { Logger } from '../infra/log/types';
|
|
3
4
|
import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
4
5
|
import { type Proto } from '..';
|
|
5
|
-
import type { WaContactStore } from '../store/contracts/contact.store';
|
|
6
|
-
import type { WaMessageStore } from '../store/contracts/message.store';
|
|
7
|
-
import type { WaThreadStore } from '../store/contracts/thread.store';
|
|
8
6
|
interface WaHistorySyncDeps {
|
|
9
7
|
readonly logger: Logger;
|
|
10
8
|
readonly mediaTransfer: WaMediaTransferClient;
|
|
11
|
-
readonly
|
|
12
|
-
readonly messageStore: WaMessageStore;
|
|
13
|
-
readonly threadStore: WaThreadStore;
|
|
9
|
+
readonly writeBehind: WriteBehindPersistence;
|
|
14
10
|
readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
|
|
11
|
+
readonly onPrivacyTokens?: (conversations: readonly {
|
|
12
|
+
readonly jid: string;
|
|
13
|
+
readonly tcToken?: Uint8Array | null;
|
|
14
|
+
readonly tcTokenTimestamp?: number | null;
|
|
15
|
+
readonly tcTokenSenderTimestamp?: number | null;
|
|
16
|
+
}[]) => Promise<void>;
|
|
17
|
+
readonly onNctSalt?: (salt: Uint8Array) => Promise<void>;
|
|
15
18
|
}
|
|
16
19
|
export declare function processHistorySyncNotification(deps: WaHistorySyncDeps, notification: Proto.Message.IHistorySyncNotification): Promise<void>;
|
|
17
20
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { WaIncomingBaseEvent, WaIncomingFailureEvent, WaIncomingNotificationEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent,
|
|
1
|
+
import type { WaAccountTakeoverNoticeEvent, WaGroupEvent, WaIncomingBaseEvent, WaIncomingFailureEvent, WaIncomingNotificationEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent, WaRegistrationCodeEvent } from './types';
|
|
2
2
|
import type { Logger } from '../infra/log/types';
|
|
3
|
+
import type { WaConnectionCode, WaDisconnectReason } from '../protocol/stream';
|
|
3
4
|
import type { BinaryNode } from '../transport/types';
|
|
4
5
|
interface IncomingAckRuntime {
|
|
5
6
|
readonly logger: Logger;
|
|
@@ -13,7 +14,8 @@ type IncomingReceiptHandlerOptions = IncomingAckRuntime & {
|
|
|
13
14
|
type IncomingFailureHandlerOptions = {
|
|
14
15
|
readonly logger: Logger;
|
|
15
16
|
readonly emitIncomingFailure: (event: WaIncomingFailureEvent) => void;
|
|
16
|
-
readonly
|
|
17
|
+
readonly stopComms: () => void;
|
|
18
|
+
readonly disconnect: (reason: WaDisconnectReason, isLogout: boolean, code: WaConnectionCode | null) => Promise<void>;
|
|
17
19
|
readonly clearStoredCredentials: () => Promise<void>;
|
|
18
20
|
};
|
|
19
21
|
type IncomingNotificationHandlerOptions = IncomingAckRuntime & {
|
|
@@ -25,10 +27,15 @@ type IncomingGroupNotificationHandlerOptions = IncomingAckRuntime & {
|
|
|
25
27
|
readonly emitGroupEvent: (event: WaGroupEvent) => void;
|
|
26
28
|
readonly emitUnhandledStanza: (event: WaIncomingUnhandledStanzaEvent) => void;
|
|
27
29
|
};
|
|
30
|
+
type IncomingRegistrationNotificationHandlerOptions = IncomingAckRuntime & {
|
|
31
|
+
readonly emitRegistrationCode: (event: WaRegistrationCodeEvent) => void;
|
|
32
|
+
readonly emitAccountTakeoverNotice: (event: WaAccountTakeoverNoticeEvent) => void;
|
|
33
|
+
};
|
|
28
34
|
export declare function createIncomingBaseEvent(node: BinaryNode): WaIncomingBaseEvent;
|
|
29
35
|
export declare function createIncomingReceiptHandler(options: IncomingReceiptHandlerOptions): (node: BinaryNode) => Promise<boolean>;
|
|
30
36
|
export declare function createIncomingFailureHandler(options: IncomingFailureHandlerOptions): (node: BinaryNode) => Promise<boolean>;
|
|
31
37
|
export declare function createIncomingNotificationHandler(options: IncomingNotificationHandlerOptions): (node: BinaryNode) => Promise<boolean>;
|
|
38
|
+
export declare function createIncomingRegistrationNotificationHandler(options: IncomingRegistrationNotificationHandlerOptions): (node: BinaryNode) => Promise<boolean>;
|
|
32
39
|
export declare function createIncomingGroupNotificationHandler(options: IncomingGroupNotificationHandlerOptions): (node: BinaryNode) => Promise<boolean>;
|
|
33
40
|
export declare function createInfoBulletinNotificationEvent(node: BinaryNode, type: string, details?: Readonly<Record<string, unknown>>): WaIncomingNotificationEvent;
|
|
34
41
|
export declare function createUnhandledIncomingNodeEvent(node: BinaryNode, reason?: string): WaIncomingUnhandledStanzaEvent;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { WaClient } from './WaClient';
|
|
2
|
-
export type { WaAppStateMessageKey, WaClientProxyOptions, WaClearChatOptions, WaChatEvent, WaChatEventAction, WaChatEventSource, WaClientEventMap, WaClientOptions, WaDeleteChatOptions, WaDeleteMessageForMeOptions, WaHistorySyncChunkEvent, WaHistorySyncOptions } from './types';
|
|
2
|
+
export type { WaAppStateMessageKey, WaClientProxyOptions, WaClearChatOptions, WaChatEvent, WaChatEventAction, WaChatEventSource, WaClientEventMap, WaClientOptions, WaConnectionEvent, WaDeleteChatOptions, WaDeleteMessageForMeOptions, WaHistorySyncChunkEvent, WaHistorySyncOptions, WaLogoutStoreClearOptions, WaWriteBehindOptions } from './types';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import type { WriteBehindPersistence } from './persistence/WriteBehindPersistence';
|
|
1
2
|
import type { WaIncomingMessageEvent } from './types';
|
|
2
3
|
import type { Logger } from '../infra/log/types';
|
|
3
|
-
import type {
|
|
4
|
-
import type { WaMessageStore } from '../store/contracts/message.store';
|
|
4
|
+
import type { WaMessageSecretStore } from '../store/contracts/message-secret.store';
|
|
5
5
|
interface WaPersistIncomingMailboxOptions {
|
|
6
6
|
readonly logger: Logger;
|
|
7
|
-
readonly
|
|
8
|
-
readonly
|
|
7
|
+
readonly writeBehind: WriteBehindPersistence;
|
|
8
|
+
readonly messageSecretStore: WaMessageSecretStore;
|
|
9
9
|
readonly event: WaIncomingMessageEvent;
|
|
10
10
|
}
|
|
11
|
-
export declare function persistIncomingMailboxEntities(options: WaPersistIncomingMailboxOptions):
|
|
11
|
+
export declare function persistIncomingMailboxEntities(options: WaPersistIncomingMailboxOptions): void;
|
|
12
12
|
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
import type { WaMediaOptions } from './types';
|
|
3
|
+
import type { Logger } from '../infra/log/types';
|
|
4
|
+
import type { WaSendMediaMessage } from '../message/types';
|
|
5
|
+
export interface ProcessedMediaFields {
|
|
6
|
+
readonly jpegThumbnail?: Uint8Array;
|
|
7
|
+
readonly pngThumbnail?: Uint8Array;
|
|
8
|
+
readonly width?: number;
|
|
9
|
+
readonly height?: number;
|
|
10
|
+
readonly seconds?: number;
|
|
11
|
+
readonly waveform?: Uint8Array;
|
|
12
|
+
readonly isAnimated?: boolean;
|
|
13
|
+
readonly firstFrameLength?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function readFileHead(filePath: string, bytes: number): Promise<Uint8Array>;
|
|
16
|
+
interface WebpAnimInfo {
|
|
17
|
+
readonly isAnimated: true;
|
|
18
|
+
readonly firstFrameLength: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function parseWebpAnimation(data: Uint8Array): WebpAnimInfo | null;
|
|
21
|
+
export declare function isReadableStream(value: unknown): value is Readable;
|
|
22
|
+
export declare function cleanupTempFile(filePath: string): Promise<void>;
|
|
23
|
+
export interface ResolvedMediaInputs {
|
|
24
|
+
readonly processorInput?: Uint8Array | string;
|
|
25
|
+
readonly uploadMedia: Uint8Array | Readable;
|
|
26
|
+
readonly tempFilePath?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function resolveMediaInputs(shouldProcess: boolean, raw: Uint8Array | ArrayBuffer | Readable | string): Promise<ResolvedMediaInputs>;
|
|
29
|
+
export declare function hasMediaProcessingTasks(media: WaMediaOptions | undefined, content: WaSendMediaMessage): boolean;
|
|
30
|
+
export declare function runMediaProcessor(media: WaMediaOptions | undefined, input: Uint8Array | string | undefined, content: WaSendMediaMessage, logger: Logger): Promise<ProcessedMediaFields>;
|
|
31
|
+
export {};
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
import type { WaMediaOptions } from './types';
|
|
1
2
|
import type { Logger } from '../infra/log/types';
|
|
2
3
|
import type { WaMediaConn } from '../media/types';
|
|
3
4
|
import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
4
5
|
import type { WaSendMessageContent } from '../message/types';
|
|
5
6
|
import type { Proto } from '..';
|
|
6
7
|
import type { BinaryNode } from '../transport/types';
|
|
7
|
-
interface WaMediaMessageOptions {
|
|
8
|
+
export interface WaMediaMessageOptions {
|
|
8
9
|
readonly logger: Logger;
|
|
9
10
|
readonly mediaTransfer: WaMediaTransferClient;
|
|
10
11
|
readonly iqTimeoutMs?: number;
|
|
11
12
|
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
12
13
|
readonly getMediaConnCache: () => WaMediaConn | null;
|
|
13
14
|
readonly setMediaConnCache: (mediaConn: WaMediaConn | null) => void;
|
|
15
|
+
readonly media?: WaMediaOptions;
|
|
14
16
|
}
|
|
15
17
|
export declare function buildMediaMessageContent(options: WaMediaMessageOptions, content: WaSendMessageContent): Promise<Proto.IMessage>;
|
|
16
18
|
export declare function getMediaConn(options: WaMediaMessageOptions, forceRefresh?: boolean): Promise<WaMediaConn>;
|
|
17
|
-
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WaWriteBehindOptions } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import { type BackgroundQueueFlushResult } from '../../infra/perf/BackgroundQueue';
|
|
4
|
+
import type { WaContactStore, WaStoredContactRecord } from '../../store/contracts/contact.store';
|
|
5
|
+
import type { WaMessageStore, WaStoredMessageRecord } from '../../store/contracts/message.store';
|
|
6
|
+
import type { WaStoredThreadRecord, WaThreadStore } from '../../store/contracts/thread.store';
|
|
7
|
+
interface WriteBehindStores {
|
|
8
|
+
readonly messageStore: WaMessageStore;
|
|
9
|
+
readonly threadStore: WaThreadStore;
|
|
10
|
+
readonly contactStore: WaContactStore;
|
|
11
|
+
}
|
|
12
|
+
export interface WriteBehindDrainResult {
|
|
13
|
+
readonly messages: BackgroundQueueFlushResult;
|
|
14
|
+
readonly threads: BackgroundQueueFlushResult;
|
|
15
|
+
readonly contacts: BackgroundQueueFlushResult;
|
|
16
|
+
readonly flushed: number;
|
|
17
|
+
readonly remaining: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class WriteBehindPersistence {
|
|
20
|
+
private readonly logger;
|
|
21
|
+
private readonly queues;
|
|
22
|
+
private readonly flushTimeoutMs;
|
|
23
|
+
constructor(stores: WriteBehindStores, logger: Logger, options?: WaWriteBehindOptions);
|
|
24
|
+
persistMessage(record: WaStoredMessageRecord): void;
|
|
25
|
+
persistMessageAsync(record: WaStoredMessageRecord): Promise<void>;
|
|
26
|
+
persistThread(record: WaStoredThreadRecord): void;
|
|
27
|
+
persistThreadAsync(record: WaStoredThreadRecord): Promise<void>;
|
|
28
|
+
persistContact(record: WaStoredContactRecord): void;
|
|
29
|
+
persistContactAsync(record: WaStoredContactRecord): Promise<void>;
|
|
30
|
+
flush(timeoutMs?: number): Promise<WriteBehindDrainResult>;
|
|
31
|
+
destroy(timeoutMs?: number): Promise<WriteBehindDrainResult>;
|
|
32
|
+
private toDrainResult;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class CsTokenGenerator {
|
|
2
|
+
private cachedKey;
|
|
3
|
+
private cachedSalt;
|
|
4
|
+
private readonly cache;
|
|
5
|
+
constructor();
|
|
6
|
+
generate(nctSalt: Uint8Array, accountLid: string): Promise<Uint8Array>;
|
|
7
|
+
invalidate(): void;
|
|
8
|
+
private isSameSalt;
|
|
9
|
+
private resolveKey;
|
|
10
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function computeBucket(unixTimeS: number, durationS: number): number;
|
|
2
|
+
export declare function tokenExpirationCutoffS(nowS: number, durationS: number, numBuckets: number): number;
|
|
3
|
+
export declare function isTokenExpired(tokenTimestampS: number, nowS: number, durationS: number, numBuckets: number): boolean;
|
|
4
|
+
export declare function shouldSendNewToken(senderTimestampS: number, nowS: number, senderDurationS: number): boolean;
|
|
5
|
+
export declare function clampDuration(durationS: number, maxDurationS: number): number;
|