zapo-js 0.2.0 → 1.0.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/LICENSE +21 -0
- package/README.md +103 -179
- package/dist/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +79 -62
- package/dist/appstate/index.js +8 -7
- package/dist/appstate/{encoding.js → parsers/encoding.js} +11 -4
- package/dist/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
- package/dist/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +246 -88
- package/dist/appstate/utils.js +16 -0
- package/dist/appstate-spec.js +89 -0
- package/dist/auth/WaAuthClient.js +117 -13
- package/dist/auth/credentials-flow.js +207 -0
- package/dist/auth/pairing/WaPairingFlow.js +53 -47
- package/dist/auth/pairing/pairing-code-crypto.js +91 -0
- package/dist/client/WaClient.js +369 -460
- package/dist/client/WaClientFactory.js +377 -93
- package/dist/client/connection/WaConnectionManager.js +31 -11
- package/dist/client/coordinators/WaAbPropsCoordinator.js +140 -0
- package/dist/client/coordinators/WaAppStateMutationCoordinator.js +663 -143
- package/dist/client/coordinators/WaBotCoordinator.js +345 -0
- package/dist/client/coordinators/WaBroadcastListCoordinator.js +20 -0
- package/dist/client/coordinators/WaBusinessCoordinator.js +81 -180
- package/dist/client/coordinators/WaEmailCoordinator.js +64 -0
- package/dist/client/coordinators/WaGroupCoordinator.js +529 -52
- package/dist/client/coordinators/WaIncomingNodeCoordinator.js +130 -20
- package/dist/client/coordinators/WaLowLevelCoordinator.js +41 -0
- package/dist/client/coordinators/WaMessageCoordinator.js +365 -0
- package/dist/client/coordinators/WaMessageDispatchCoordinator.js +724 -216
- package/dist/client/coordinators/WaNewsletterCoordinator.js +18 -0
- package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
- package/dist/client/coordinators/WaPassiveTasksCoordinator.js +53 -22
- package/dist/client/coordinators/WaPresenceCoordinator.js +21 -0
- package/dist/client/coordinators/WaPrivacyCoordinator.js +7 -5
- package/dist/client/coordinators/WaProfileCoordinator.js +223 -50
- package/dist/client/coordinators/WaRetryCoordinator.js +256 -123
- package/dist/client/coordinators/WaStatusCoordinator.js +49 -0
- package/dist/client/coordinators/WaStreamControlCoordinator.js +6 -6
- package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +29 -10
- package/dist/client/events/abprops.js +43 -0
- package/dist/client/events/appstate-mutation.js +133 -0
- package/dist/client/events/business.js +375 -0
- package/dist/client/events/call.js +58 -0
- package/dist/client/events/chatstate.js +23 -0
- package/dist/client/events/devices.js +15 -16
- package/dist/client/{dirty.js → events/dirty.js} +34 -20
- package/dist/client/events/group.js +13 -24
- package/dist/client/events/identity.js +2 -1
- package/dist/client/events/incoming.js +502 -0
- package/dist/client/events/mex-notification.js +181 -0
- package/dist/client/events/picture.js +33 -0
- package/dist/client/events/presence.js +44 -0
- package/dist/client/events/privacy-token.js +1 -2
- package/dist/client/events/receipt.js +26 -0
- package/dist/client/events/registration.js +42 -0
- package/dist/client/media.js +400 -0
- package/dist/client/messaging/fanout.js +9 -10
- package/dist/client/messaging/{participants.js → group-metadata.js} +73 -35
- package/dist/client/messaging/ignore-key.js +132 -0
- package/dist/client/messaging/key-protocol.js +3 -17
- package/dist/client/messaging/link-preview.js +159 -0
- package/dist/client/messaging/messages.js +671 -0
- package/dist/client/newsletter/admin.js +165 -0
- package/dist/client/newsletter/content.js +253 -0
- package/dist/client/newsletter/discovery.js +115 -0
- package/dist/client/newsletter/messaging.js +197 -0
- package/dist/client/newsletter/mex.js +41 -0
- package/dist/client/newsletter/parse.js +217 -0
- package/dist/client/persistence/WriteBehindPersistence.js +31 -4
- package/dist/client/{history-sync.js → persistence/history-sync.js} +125 -18
- package/dist/client/persistence/mailbox.js +104 -0
- package/dist/client/tokens/cs-token.js +11 -17
- package/dist/crypto/core/hkdf.js +12 -12
- package/dist/crypto/core/index.js +9 -8
- package/dist/crypto/core/keys.js +1 -8
- package/dist/crypto/core/nonce.js +12 -12
- package/dist/crypto/core/primitives.js +123 -93
- package/dist/crypto/core/random.js +9 -9
- package/dist/crypto/core/xeddsa.js +59 -0
- package/dist/crypto/curves/Ed25519.js +32 -21
- package/dist/crypto/curves/X25519.js +71 -17
- package/dist/crypto/curves/constants.js +3 -1
- package/dist/crypto/math/constants.js +1 -2
- package/dist/crypto/math/mod.js +0 -33
- package/dist/esm/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +72 -55
- package/dist/esm/appstate/index.js +5 -5
- package/dist/esm/appstate/{encoding.js → parsers/encoding.js} +11 -4
- package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
- package/dist/esm/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +235 -76
- package/dist/esm/appstate/utils.js +16 -0
- package/dist/esm/appstate-spec.js +79 -0
- package/dist/esm/auth/WaAuthClient.js +114 -10
- package/dist/esm/auth/credentials-flow.js +202 -0
- package/dist/esm/auth/pairing/WaPairingFlow.js +52 -46
- package/dist/esm/auth/pairing/pairing-code-crypto.js +85 -0
- package/dist/esm/client/WaClient.js +372 -463
- package/dist/esm/client/WaClientFactory.js +380 -96
- package/dist/esm/client/connection/WaConnectionManager.js +31 -11
- package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +136 -0
- package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +665 -145
- package/dist/esm/client/coordinators/WaBotCoordinator.js +342 -0
- package/dist/esm/client/coordinators/WaBroadcastListCoordinator.js +17 -0
- package/dist/esm/client/coordinators/WaBusinessCoordinator.js +78 -177
- package/dist/esm/client/coordinators/WaEmailCoordinator.js +61 -0
- package/dist/esm/client/coordinators/WaGroupCoordinator.js +532 -55
- package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +132 -22
- package/dist/esm/client/coordinators/WaLowLevelCoordinator.js +38 -0
- package/dist/esm/client/coordinators/WaMessageCoordinator.js +361 -0
- package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +719 -211
- package/dist/esm/client/coordinators/WaNewsletterCoordinator.js +13 -0
- package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
- package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +54 -23
- package/dist/esm/client/coordinators/WaPresenceCoordinator.js +18 -0
- package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +7 -5
- package/dist/esm/client/coordinators/WaProfileCoordinator.js +226 -53
- package/dist/esm/client/coordinators/WaRetryCoordinator.js +258 -125
- package/dist/esm/client/coordinators/WaStatusCoordinator.js +46 -0
- package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +6 -6
- package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +31 -12
- package/dist/esm/client/events/abprops.js +40 -0
- package/dist/esm/client/events/appstate-mutation.js +130 -0
- package/dist/esm/client/events/business.js +370 -0
- package/dist/esm/client/events/call.js +55 -0
- package/dist/esm/client/events/chatstate.js +20 -0
- package/dist/esm/client/events/devices.js +15 -16
- package/dist/esm/client/{dirty.js → events/dirty.js} +34 -20
- package/dist/esm/client/events/group.js +14 -25
- package/dist/esm/client/events/identity.js +2 -1
- package/dist/esm/client/events/incoming.js +487 -0
- package/dist/esm/client/events/mex-notification.js +178 -0
- package/dist/esm/client/events/picture.js +30 -0
- package/dist/esm/client/events/presence.js +41 -0
- package/dist/esm/client/events/privacy-token.js +1 -2
- package/dist/esm/client/events/receipt.js +23 -0
- package/dist/esm/client/events/registration.js +39 -0
- package/dist/esm/client/media.js +384 -0
- package/dist/esm/client/messaging/fanout.js +10 -11
- package/dist/esm/client/messaging/{participants.js → group-metadata.js} +72 -34
- package/dist/esm/client/messaging/ignore-key.js +126 -0
- package/dist/esm/client/messaging/key-protocol.js +3 -17
- package/dist/esm/client/messaging/link-preview.js +156 -0
- package/dist/esm/client/messaging/messages.js +667 -0
- package/dist/esm/client/newsletter/admin.js +162 -0
- package/dist/esm/client/newsletter/content.js +249 -0
- package/dist/esm/client/newsletter/discovery.js +112 -0
- package/dist/esm/client/newsletter/messaging.js +194 -0
- package/dist/esm/client/newsletter/mex.js +37 -0
- package/dist/esm/client/newsletter/parse.js +200 -0
- package/dist/esm/client/persistence/WriteBehindPersistence.js +31 -4
- package/dist/esm/client/{history-sync.js → persistence/history-sync.js} +124 -18
- package/dist/esm/client/persistence/mailbox.js +101 -0
- package/dist/esm/client/tokens/cs-token.js +12 -18
- package/dist/esm/crypto/core/hkdf.js +14 -14
- package/dist/esm/crypto/core/index.js +3 -2
- package/dist/esm/crypto/core/keys.js +1 -7
- package/dist/esm/crypto/core/nonce.js +11 -11
- package/dist/esm/crypto/core/primitives.js +121 -88
- package/dist/esm/crypto/core/random.js +8 -7
- package/dist/esm/crypto/core/xeddsa.js +55 -0
- package/dist/esm/crypto/curves/Ed25519.js +35 -24
- package/dist/esm/crypto/curves/X25519.js +74 -20
- package/dist/esm/crypto/curves/constants.js +2 -0
- package/dist/esm/crypto/math/constants.js +1 -2
- package/dist/esm/crypto/math/mod.js +0 -32
- package/dist/esm/index.js +7 -2
- package/dist/esm/infra/log/ConsoleLogger.js +30 -6
- package/dist/esm/infra/log/PinoLogger.js +64 -0
- package/dist/esm/infra/log/types.js +4 -2
- package/dist/esm/infra/perf/BackgroundQueue.js +55 -13
- package/dist/esm/infra/perf/StoreLock.js +7 -4
- package/dist/esm/media/constants.js +35 -2
- package/dist/esm/media/crypto/WaMediaCrypto.js +374 -0
- package/dist/esm/media/index.js +4 -3
- package/dist/esm/media/processor.js +1 -0
- package/dist/esm/media/sticker/sticker-pack.js +133 -0
- package/dist/esm/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +84 -196
- package/dist/esm/media/{conn.js → transfer/conn.js} +10 -5
- package/dist/esm/message/WaMessageClient.js +46 -15
- package/dist/esm/message/addons/link-preview/builder.js +36 -0
- package/dist/esm/message/addons/link-preview/detect.js +55 -0
- package/dist/esm/message/addons/link-preview/fetcher.js +391 -0
- package/dist/esm/message/addons/link-preview/types.js +1 -0
- package/dist/esm/message/context-info.js +123 -0
- package/dist/esm/message/crypto/addon-crypto.js +244 -0
- package/dist/esm/message/{icdc.js → crypto/icdc.js} +11 -13
- package/dist/esm/message/crypto/phash.js +133 -0
- package/dist/esm/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
- package/dist/esm/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
- package/dist/esm/message/{content.js → encode/content.js} +183 -8
- package/dist/esm/message/encode/media-payload.js +42 -0
- package/dist/esm/message/{padding.js → encode/padding.js} +9 -3
- package/dist/esm/message/index.js +2 -2
- package/dist/esm/message/kinds/bot.js +111 -0
- package/dist/esm/message/kinds/newsletter.js +244 -0
- package/dist/esm/message/kinds/sticker-pack.js +29 -0
- package/dist/esm/message/{ack.js → primitives/ack.js} +8 -1
- package/dist/esm/message/primitives/incoming.js +511 -0
- package/dist/esm/message/primitives/peer-data-operation.js +93 -0
- package/dist/esm/mex.js +1 -0
- package/dist/esm/protocol/abprops.js +169 -0
- package/dist/esm/protocol/appstate.js +6 -30
- package/dist/esm/protocol/auth.js +3 -2
- package/dist/esm/protocol/bot.js +77 -0
- package/dist/esm/protocol/browser.js +22 -0
- package/dist/esm/protocol/business.js +19 -0
- package/dist/esm/protocol/call.js +48 -0
- package/dist/esm/protocol/constants.js +10 -2
- package/dist/esm/protocol/defaults.js +3 -0
- package/dist/esm/protocol/email.js +30 -0
- package/dist/esm/protocol/index.js +1 -1
- package/dist/esm/protocol/jid.js +142 -11
- package/dist/esm/protocol/media.js +25 -12
- package/dist/esm/protocol/message.js +4 -1
- package/dist/esm/protocol/newsletter.js +61 -0
- package/dist/esm/protocol/nodes.js +26 -2
- package/dist/esm/protocol/notification.js +24 -2
- package/dist/esm/protocol/presence.js +13 -0
- package/dist/esm/protocol/status.js +6 -0
- package/dist/esm/retry/codec.js +5 -0
- package/dist/esm/retry/parse.js +20 -38
- package/dist/esm/retry/reason.js +6 -1
- package/dist/esm/retry/replay.js +131 -37
- package/dist/esm/retry/tracker.js +4 -8
- package/dist/esm/signal/api/SignalDeviceSyncApi.js +71 -21
- package/dist/esm/signal/api/SignalDigestSyncApi.js +15 -8
- package/dist/esm/signal/api/SignalIdentitySyncApi.js +13 -4
- package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +24 -63
- package/dist/esm/signal/api/SignalRotateKeyApi.js +10 -0
- package/dist/esm/signal/api/SignalSessionSyncApi.js +23 -51
- package/dist/esm/signal/api/codec.js +52 -1
- package/dist/esm/signal/api/prekeys.js +4 -0
- package/dist/esm/signal/attestation/WaAdvSignature.js +17 -0
- package/dist/esm/signal/{crypto → attestation}/constants.js +0 -4
- package/dist/esm/signal/constants.js +3 -0
- package/dist/esm/signal/encoding.js +6 -332
- package/dist/esm/signal/group/SenderKeyChain.js +20 -35
- package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
- package/dist/esm/signal/group/SenderKeyManager.js +37 -17
- package/dist/esm/signal/group/encoding.js +96 -0
- package/dist/esm/signal/index.js +4 -1
- package/dist/esm/signal/registration/encoding.js +34 -0
- package/dist/esm/signal/registration/keygen.js +12 -3
- package/dist/esm/signal/registration/utils.js +8 -2
- package/dist/esm/signal/session/SignalProtocol.js +129 -26
- package/dist/esm/signal/session/SignalRatchet.js +46 -64
- package/dist/esm/signal/session/SignalSerializer.js +5 -6
- package/dist/esm/signal/session/SignalSession.js +14 -19
- package/dist/esm/signal/session/encoding.js +173 -0
- package/dist/esm/signal/session/resolver.js +144 -35
- package/dist/esm/store/cache/identity.cache.js +75 -0
- package/dist/esm/store/cache/privacy-token.cache.js +57 -0
- package/dist/esm/store/cache/sender-key.cache.js +101 -0
- package/dist/esm/store/cache/session.cache.js +92 -0
- package/dist/esm/store/contracts/group-metadata.store.js +1 -0
- 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/session.store.js +1 -0
- package/dist/esm/store/createStore.js +129 -39
- package/dist/esm/store/index.js +15 -10
- package/dist/esm/store/locks/contact.lock.js +1 -0
- package/dist/esm/store/locks/device-list.lock.js +1 -0
- package/dist/esm/store/locks/group-metadata.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/pre-key.lock.js +27 -0
- package/dist/esm/store/locks/session.lock.js +19 -0
- package/dist/esm/store/locks/signal.lock.js +0 -24
- package/dist/esm/store/{providers/memory → memory}/appstate.store.js +5 -5
- package/dist/esm/store/memory/auth.store.js +24 -0
- package/dist/esm/store/memory/contact.store.js +79 -0
- package/dist/esm/store/memory/device-list.store.js +103 -0
- package/dist/esm/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +24 -12
- package/dist/esm/store/memory/identity.store.js +31 -0
- package/dist/esm/store/memory/message-secret.store.js +90 -0
- package/dist/esm/store/{providers/memory → memory}/message.store.js +2 -2
- package/dist/esm/store/memory/pre-key.store.js +97 -0
- package/dist/esm/store/{providers/memory → memory}/privacy-token.store.js +1 -1
- package/dist/esm/store/{providers/memory → memory}/retry.store.js +49 -14
- package/dist/esm/store/{providers/memory → memory}/sender-key.store.js +3 -3
- package/dist/esm/store/memory/session.store.js +45 -0
- package/dist/esm/store/memory/signal.store.js +36 -0
- package/dist/esm/store/{providers/memory → memory}/thread.store.js +2 -2
- package/dist/esm/store/noop.store.js +26 -4
- package/dist/esm/transport/WaComms.js +18 -8
- package/dist/esm/transport/WaWebSocket.js +41 -9
- package/dist/esm/transport/binary/constants.js +10 -4
- package/dist/esm/transport/binary/decoder.js +21 -15
- package/dist/esm/transport/binary/encoder.js +96 -21
- package/dist/esm/transport/binary/tokens.js +12 -12
- package/dist/esm/transport/index.js +7 -0
- package/dist/esm/transport/keepalive/WaKeepAlive.js +35 -12
- package/dist/esm/transport/node/WaMobileTcpSocket.js +120 -0
- package/dist/esm/transport/node/WaNodeOrchestrator.js +26 -13
- package/dist/esm/transport/node/WaNodeTransport.js +13 -0
- package/dist/esm/transport/node/builders/abprops.js +20 -0
- package/dist/esm/transport/node/builders/account-sync.js +7 -15
- package/dist/esm/transport/node/builders/bot.js +38 -0
- package/dist/esm/transport/node/builders/business.js +30 -30
- package/dist/esm/transport/node/builders/chatstate.js +28 -0
- package/dist/esm/transport/node/builders/community.js +53 -0
- package/dist/esm/transport/node/builders/device.js +11 -0
- package/dist/esm/transport/node/builders/email.js +66 -0
- package/dist/esm/transport/node/builders/global.js +1 -1
- package/dist/esm/transport/node/builders/group.js +114 -4
- package/dist/esm/transport/node/builders/media.js +2 -2
- package/dist/esm/transport/node/builders/message.js +83 -49
- package/dist/esm/transport/node/builders/newsletter.js +176 -0
- package/dist/esm/transport/node/builders/offline.js +14 -0
- package/dist/esm/transport/node/builders/passive.js +7 -0
- package/dist/esm/transport/node/builders/prekeys.js +40 -43
- package/dist/esm/transport/node/builders/presence.js +39 -0
- package/dist/esm/transport/node/builders/privacy-token.js +19 -23
- package/dist/esm/transport/node/builders/privacy.js +6 -6
- package/dist/esm/transport/node/builders/profile.js +28 -8
- package/dist/esm/transport/node/builders/retry.js +1 -1
- package/dist/esm/transport/node/builders/tos.js +58 -0
- package/dist/esm/transport/node/builders/usync.js +51 -2
- package/dist/esm/transport/node/helpers.js +27 -1
- package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
- package/dist/esm/transport/node/mex/client.js +105 -0
- package/dist/esm/transport/node/query.js +17 -0
- package/dist/esm/transport/node/usync.js +12 -0
- package/dist/esm/transport/noise/WaClientPayload.js +23 -18
- package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
- package/dist/esm/transport/noise/WaMobileClientPayload.js +58 -0
- package/dist/esm/transport/noise/WaNoiseCert.js +14 -27
- package/dist/esm/transport/noise/WaNoiseHandshake.js +27 -25
- package/dist/esm/transport/noise/WaNoiseSession.js +48 -67
- package/dist/esm/transport/noise/WaNoiseSocket.js +19 -13
- package/dist/esm/transport/noise/constants.js +0 -1
- package/dist/esm/transport/proxy.js +5 -0
- package/dist/esm/transport/stream/parse.js +3 -7
- package/dist/esm/transport/wa-web-version-fetcher.js +91 -0
- package/dist/esm/util/async.js +4 -0
- package/dist/esm/util/bytes.js +37 -2
- package/dist/esm/util/clock.js +15 -0
- package/dist/esm/util/coercion.js +45 -3
- package/dist/esm/util/collections.js +11 -0
- package/dist/esm/util/index.js +2 -2
- package/dist/esm/util/primitives.js +19 -0
- package/dist/esm/util/runtime.js +5 -0
- package/dist/esm/version-spec.js +1 -0
- package/dist/index.js +31 -1
- package/dist/infra/log/ConsoleLogger.js +30 -6
- package/dist/infra/log/PinoLogger.js +64 -0
- package/dist/infra/log/types.js +4 -2
- package/dist/infra/perf/BackgroundQueue.js +55 -13
- package/dist/infra/perf/StoreLock.js +7 -4
- package/dist/media/constants.js +36 -3
- package/dist/media/crypto/WaMediaCrypto.js +378 -0
- package/dist/media/index.js +9 -4
- package/dist/media/processor.js +2 -0
- package/dist/media/sticker/sticker-pack.js +136 -0
- package/dist/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +87 -229
- package/dist/media/{conn.js → transfer/conn.js} +10 -5
- package/dist/message/WaMessageClient.js +46 -15
- package/dist/message/addons/link-preview/builder.js +39 -0
- package/dist/message/addons/link-preview/detect.js +58 -0
- package/dist/message/addons/link-preview/fetcher.js +394 -0
- package/dist/message/addons/link-preview/types.js +2 -0
- package/dist/message/context-info.js +129 -0
- package/dist/message/crypto/addon-crypto.js +254 -0
- package/dist/message/{icdc.js → crypto/icdc.js} +11 -13
- package/dist/message/crypto/phash.js +136 -0
- package/dist/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
- package/dist/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
- package/dist/message/{content.js → encode/content.js} +200 -7
- package/dist/message/encode/media-payload.js +45 -0
- package/dist/message/{padding.js → encode/padding.js} +9 -3
- package/dist/message/index.js +2 -2
- package/dist/message/kinds/bot.js +120 -0
- package/dist/message/kinds/newsletter.js +248 -0
- package/dist/message/kinds/sticker-pack.js +34 -0
- package/dist/message/{ack.js → primitives/ack.js} +8 -1
- package/dist/message/{incoming.js → primitives/incoming.js} +225 -38
- package/dist/message/primitives/peer-data-operation.js +96 -0
- package/dist/mex.js +6 -0
- package/dist/proto.js +1 -1
- package/dist/protocol/abprops.js +173 -0
- package/dist/protocol/appstate.js +7 -31
- package/dist/protocol/auth.js +3 -2
- package/dist/protocol/bot.js +81 -0
- package/dist/protocol/browser.js +23 -0
- package/dist/protocol/business.js +22 -0
- package/dist/protocol/call.js +51 -0
- package/dist/protocol/constants.js +51 -3
- package/dist/protocol/defaults.js +3 -0
- package/dist/protocol/email.js +33 -0
- package/dist/protocol/index.js +12 -3
- package/dist/protocol/jid.js +148 -11
- package/dist/protocol/media.js +25 -12
- package/dist/protocol/message.js +4 -1
- package/dist/protocol/newsletter.js +64 -0
- package/dist/protocol/nodes.js +26 -2
- package/dist/protocol/notification.js +25 -3
- package/dist/protocol/presence.js +16 -0
- package/dist/protocol/status.js +9 -0
- package/dist/retry/codec.js +5 -0
- package/dist/retry/parse.js +16 -34
- package/dist/retry/reason.js +6 -1
- package/dist/retry/replay.js +129 -35
- package/dist/retry/tracker.js +3 -7
- package/dist/signal/api/SignalDeviceSyncApi.js +69 -19
- package/dist/signal/api/SignalDigestSyncApi.js +14 -7
- package/dist/signal/api/SignalIdentitySyncApi.js +13 -4
- package/dist/signal/api/SignalMissingPreKeysSyncApi.js +21 -60
- package/dist/signal/api/SignalRotateKeyApi.js +10 -0
- package/dist/signal/api/SignalSessionSyncApi.js +20 -48
- package/dist/signal/api/codec.js +52 -0
- package/dist/signal/api/prekeys.js +4 -0
- package/dist/signal/attestation/WaAdvSignature.js +26 -0
- package/dist/signal/{crypto → attestation}/constants.js +1 -5
- package/dist/signal/constants.js +4 -1
- package/dist/signal/encoding.js +5 -341
- package/dist/signal/group/SenderKeyChain.js +19 -34
- package/dist/signal/group/SenderKeyCodec.js +4 -5
- package/dist/signal/group/SenderKeyManager.js +36 -16
- package/dist/signal/group/encoding.js +101 -0
- package/dist/signal/index.js +13 -10
- package/dist/signal/registration/encoding.js +39 -0
- package/dist/signal/registration/keygen.js +11 -2
- package/dist/signal/registration/utils.js +8 -2
- package/dist/signal/session/SignalProtocol.js +128 -25
- package/dist/signal/session/SignalRatchet.js +41 -60
- package/dist/signal/session/SignalSerializer.js +5 -6
- package/dist/signal/session/SignalSession.js +13 -19
- package/dist/signal/session/encoding.js +183 -0
- package/dist/signal/session/resolver.js +144 -35
- package/dist/store/cache/identity.cache.js +78 -0
- package/dist/store/cache/privacy-token.cache.js +60 -0
- package/dist/store/cache/sender-key.cache.js +104 -0
- package/dist/store/cache/session.cache.js +95 -0
- package/dist/store/contracts/group-metadata.store.js +2 -0
- 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/session.store.js +2 -0
- package/dist/store/createStore.js +128 -38
- package/dist/store/index.js +22 -12
- package/dist/store/locks/contact.lock.js +1 -0
- package/dist/store/locks/device-list.lock.js +1 -0
- package/dist/store/locks/group-metadata.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/pre-key.lock.js +30 -0
- package/dist/store/locks/session.lock.js +22 -0
- package/dist/store/locks/signal.lock.js +0 -24
- package/dist/store/{providers/memory → memory}/appstate.store.js +5 -5
- package/dist/store/memory/auth.store.js +28 -0
- package/dist/store/memory/contact.store.js +83 -0
- package/dist/store/memory/device-list.store.js +107 -0
- package/dist/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +26 -14
- package/dist/store/memory/identity.store.js +35 -0
- package/dist/store/memory/message-secret.store.js +94 -0
- package/dist/store/{providers/memory → memory}/message.store.js +2 -2
- package/dist/store/memory/pre-key.store.js +101 -0
- package/dist/store/{providers/memory → memory}/privacy-token.store.js +1 -1
- package/dist/store/{providers/memory → memory}/retry.store.js +49 -14
- package/dist/store/{providers/memory → memory}/sender-key.store.js +3 -3
- package/dist/store/memory/session.store.js +49 -0
- package/dist/store/memory/signal.store.js +40 -0
- package/dist/store/{providers/memory → memory}/thread.store.js +2 -2
- package/dist/store/noop.store.js +27 -5
- package/dist/transport/WaComms.js +18 -8
- package/dist/transport/WaWebSocket.js +41 -9
- package/dist/transport/binary/constants.js +11 -5
- package/dist/transport/binary/decoder.js +24 -18
- package/dist/transport/binary/encoder.js +109 -34
- package/dist/transport/binary/tokens.js +12 -12
- package/dist/transport/index.js +19 -1
- package/dist/transport/keepalive/WaKeepAlive.js +35 -12
- package/dist/transport/node/WaMobileTcpSocket.js +124 -0
- package/dist/transport/node/WaNodeOrchestrator.js +25 -12
- package/dist/transport/node/WaNodeTransport.js +13 -0
- package/dist/transport/node/builders/abprops.js +23 -0
- package/dist/transport/node/builders/account-sync.js +7 -16
- package/dist/transport/node/builders/bot.js +43 -0
- package/dist/transport/node/builders/business.js +31 -31
- package/dist/transport/node/builders/chatstate.js +31 -0
- package/dist/transport/node/builders/community.js +59 -0
- package/dist/transport/node/builders/device.js +14 -0
- package/dist/transport/node/builders/email.js +73 -0
- package/dist/transport/node/builders/global.js +1 -1
- package/dist/transport/node/builders/group.js +121 -3
- package/dist/transport/node/builders/media.js +1 -1
- package/dist/transport/node/builders/message.js +84 -49
- package/dist/transport/node/builders/newsletter.js +183 -0
- package/dist/transport/node/builders/offline.js +17 -0
- package/dist/transport/node/builders/passive.js +10 -0
- package/dist/transport/node/builders/prekeys.js +38 -41
- package/dist/transport/node/builders/presence.js +43 -0
- package/dist/transport/node/builders/privacy-token.js +18 -22
- package/dist/transport/node/builders/privacy.js +5 -5
- package/dist/transport/node/builders/profile.js +30 -7
- package/dist/transport/node/builders/retry.js +1 -1
- package/dist/transport/node/builders/tos.js +63 -0
- package/dist/transport/node/builders/usync.js +52 -1
- package/dist/transport/node/helpers.js +28 -1
- package/dist/transport/node/mex/argo-decoder.js +189 -0
- package/dist/transport/node/mex/client.js +109 -0
- package/dist/transport/node/query.js +17 -0
- package/dist/transport/node/usync.js +13 -0
- package/dist/transport/noise/WaClientPayload.js +22 -17
- package/dist/transport/noise/WaFrameCodec.js +1 -1
- package/dist/transport/noise/WaMobileClientPayload.js +61 -0
- package/dist/transport/noise/WaNoiseCert.js +13 -26
- package/dist/transport/noise/WaNoiseHandshake.js +25 -23
- package/dist/transport/noise/WaNoiseSession.js +47 -66
- package/dist/transport/noise/WaNoiseSocket.js +18 -12
- package/dist/transport/noise/constants.js +1 -2
- package/dist/transport/proxy.js +5 -0
- package/dist/transport/stream/parse.js +3 -7
- package/dist/transport/wa-web-version-fetcher.js +94 -0
- package/dist/types/appstate/constants.d.ts +1 -1
- package/dist/types/appstate/{WaAppStateCrypto.d.ts → crypto/WaAppStateCrypto.d.ts} +29 -9
- package/dist/types/appstate/index.d.ts +5 -5
- package/dist/types/appstate/{encoding.d.ts → parsers/encoding.d.ts} +8 -1
- package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → parsers/response-parser.d.ts} +13 -3
- package/dist/types/appstate/sync/WaAppStateSyncClient.d.ts +105 -0
- package/dist/types/appstate/types.d.ts +1 -1
- package/dist/types/appstate/utils.d.ts +17 -1
- package/dist/types/appstate-spec.d.ts +24 -0
- package/dist/types/auth/WaAuthClient.d.ts +95 -3
- package/dist/types/auth/credentials-flow.d.ts +21 -0
- package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
- package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +5 -1
- package/dist/types/auth/types.d.ts +88 -1
- package/dist/types/client/WaClient.d.ts +183 -65
- package/dist/types/client/WaClientFactory.d.ts +40 -9
- package/dist/types/client/connection/WaConnectionManager.d.ts +4 -2
- package/dist/types/client/connection/WaReceiptQueue.d.ts +1 -1
- package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
- package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +215 -5
- package/dist/types/client/coordinators/WaBotCoordinator.d.ts +117 -0
- package/dist/types/client/coordinators/WaBroadcastListCoordinator.d.ts +39 -0
- package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +45 -44
- package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +40 -0
- package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +311 -9
- package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +16 -4
- package/dist/types/client/coordinators/WaLowLevelCoordinator.d.ts +47 -0
- package/dist/types/client/coordinators/WaMessageCoordinator.d.ts +232 -0
- package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +65 -29
- package/dist/types/client/coordinators/WaNewsletterCoordinator.d.ts +13 -0
- package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
- package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +15 -3
- package/dist/types/client/coordinators/WaPresenceCoordinator.d.ts +27 -0
- package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +28 -1
- package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +117 -2
- package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +23 -15
- package/dist/types/client/coordinators/WaStatusCoordinator.d.ts +42 -0
- package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +16 -2
- package/dist/types/client/events/abprops.d.ts +15 -0
- package/dist/types/client/events/appstate-mutation.d.ts +3 -0
- package/dist/types/client/events/business.d.ts +10 -0
- package/dist/types/client/events/call.d.ts +31 -0
- package/dist/types/client/events/chatstate.d.ts +9 -0
- package/dist/types/client/events/devices.d.ts +5 -4
- package/dist/types/client/{dirty.d.ts → events/dirty.d.ts} +7 -4
- package/dist/types/client/events/group.d.ts +2 -1
- package/dist/types/client/events/identity.d.ts +2 -1
- package/dist/types/client/events/incoming.d.ts +65 -0
- package/dist/types/client/events/mex-notification.d.ts +6 -0
- package/dist/types/client/events/picture.d.ts +8 -0
- package/dist/types/client/events/presence.d.ts +28 -0
- package/dist/types/client/events/receipt.d.ts +14 -0
- package/dist/types/client/events/registration.d.ts +18 -0
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/media.d.ts +65 -0
- package/dist/types/client/messaging/fanout.d.ts +2 -2
- package/dist/types/client/messaging/group-metadata.d.ts +19 -0
- package/dist/types/client/messaging/ignore-key.d.ts +11 -0
- package/dist/types/client/messaging/key-protocol.d.ts +9 -7
- package/dist/types/client/messaging/link-preview.d.ts +19 -0
- package/dist/types/client/messaging/messages.d.ts +28 -0
- package/dist/types/client/newsletter/admin.d.ts +71 -0
- package/dist/types/client/newsletter/content.d.ts +42 -0
- package/dist/types/client/newsletter/discovery.d.ts +33 -0
- package/dist/types/client/newsletter/messaging.d.ts +66 -0
- package/dist/types/client/newsletter/mex.d.ts +14 -0
- package/dist/types/client/newsletter/parse.d.ts +19 -0
- package/dist/types/client/newsletter/types.d.ts +190 -0
- package/dist/types/client/persistence/WriteBehindPersistence.d.ts +13 -2
- package/dist/types/client/persistence/history-sync.d.ts +29 -0
- package/dist/types/client/persistence/mailbox.d.ts +12 -0
- package/dist/types/client/tokens/cs-token.d.ts +1 -3
- package/dist/types/client/types.d.ts +926 -55
- package/dist/types/crypto/core/hkdf.d.ts +10 -2
- package/dist/types/crypto/core/index.d.ts +3 -2
- package/dist/types/crypto/core/keys.d.ts +0 -4
- package/dist/types/crypto/core/nonce.d.ts +4 -5
- package/dist/types/crypto/core/primitives.d.ts +31 -20
- package/dist/types/crypto/core/random.d.ts +7 -1
- package/dist/types/crypto/core/xeddsa.d.ts +11 -0
- package/dist/types/crypto/curves/Ed25519.d.ts +7 -1
- package/dist/types/crypto/curves/X25519.d.ts +20 -1
- package/dist/types/crypto/curves/constants.d.ts +4 -2
- package/dist/types/crypto/curves/types.d.ts +0 -5
- package/dist/types/crypto/index.d.ts +1 -0
- package/dist/types/crypto/math/constants.d.ts +0 -1
- package/dist/types/crypto/math/mod.d.ts +0 -1
- package/dist/types/index.d.ts +32 -5
- package/dist/types/infra/log/ConsoleLogger.d.ts +19 -2
- package/dist/types/infra/log/PinoLogger.d.ts +56 -2
- package/dist/types/infra/log/types.d.ts +6 -0
- package/dist/types/infra/perf/BackgroundQueue.d.ts +19 -0
- package/dist/types/infra/perf/StoreLock.d.ts +1 -0
- package/dist/types/media/constants.d.ts +9 -2
- package/dist/types/media/crypto/WaMediaCrypto.d.ts +59 -0
- package/dist/types/media/index.d.ts +7 -4
- package/dist/types/media/processor.d.ts +50 -0
- package/dist/types/media/sticker/sticker-pack.d.ts +6 -0
- package/dist/types/media/{WaMediaTransferClient.d.ts → transfer/WaMediaTransferClient.d.ts} +33 -12
- package/dist/types/media/transfer/conn.d.ts +7 -0
- package/dist/types/media/types.d.ts +10 -5
- package/dist/types/message/WaMessageClient.d.ts +14 -0
- package/dist/types/message/addons/link-preview/builder.d.ts +13 -0
- package/dist/types/message/addons/link-preview/detect.d.ts +5 -0
- package/dist/types/message/addons/link-preview/fetcher.d.ts +13 -0
- package/dist/types/message/addons/link-preview/types.d.ts +51 -0
- package/dist/types/message/context-info.d.ts +66 -0
- package/dist/types/message/crypto/addon-crypto.d.ts +78 -0
- package/dist/types/message/{icdc.d.ts → crypto/icdc.d.ts} +6 -6
- package/dist/types/message/{phash.d.ts → crypto/phash.d.ts} +1 -1
- package/dist/types/message/{reporting-token.d.ts → crypto/reporting-token.d.ts} +2 -2
- package/dist/types/message/{use-case-secret.d.ts → crypto/use-case-secret.d.ts} +17 -1
- package/dist/types/message/encode/content.d.ts +43 -0
- package/dist/types/message/{device-sent.d.ts → encode/device-sent.d.ts} +1 -1
- package/dist/types/message/encode/media-payload.d.ts +12 -0
- package/dist/types/message/index.d.ts +2 -2
- package/dist/types/message/kinds/bot.d.ts +31 -0
- package/dist/types/message/kinds/newsletter.d.ts +12 -0
- package/dist/types/message/kinds/sticker-pack.d.ts +6 -0
- package/dist/types/message/{ack.d.ts → primitives/ack.d.ts} +1 -1
- package/dist/types/message/primitives/incoming.d.ts +21 -0
- package/dist/types/message/primitives/peer-data-operation.d.ts +23 -0
- package/dist/types/message/types.d.ts +218 -28
- package/dist/types/mex.d.ts +2 -0
- package/dist/types/proto.d.ts +2 -2
- package/dist/types/protocol/abprops.d.ts +151 -0
- package/dist/types/protocol/appstate.d.ts +4 -49
- package/dist/types/protocol/auth.d.ts +2 -2
- package/dist/types/protocol/bot.d.ts +45 -0
- package/dist/types/protocol/browser.d.ts +9 -0
- package/dist/types/protocol/business.d.ts +21 -0
- package/dist/types/protocol/call.d.ts +44 -0
- package/dist/types/protocol/constants.d.ts +20 -3
- package/dist/types/protocol/defaults.d.ts +3 -0
- package/dist/types/protocol/email.d.ts +32 -0
- package/dist/types/protocol/group.d.ts +1 -1
- package/dist/types/protocol/index.d.ts +2 -1
- package/dist/types/protocol/jid.d.ts +79 -0
- package/dist/types/protocol/media.d.ts +21 -13
- package/dist/types/protocol/message.d.ts +4 -0
- package/dist/types/protocol/newsletter.d.ts +65 -0
- package/dist/types/protocol/nodes.d.ts +24 -0
- package/dist/types/protocol/notification.d.ts +22 -0
- package/dist/types/protocol/presence.d.ts +16 -0
- package/dist/types/protocol/status.d.ts +7 -0
- package/dist/types/protocol/stream.d.ts +1 -0
- package/dist/types/retry/codec.d.ts +5 -0
- package/dist/types/retry/index.d.ts +1 -1
- package/dist/types/retry/parse.d.ts +9 -0
- package/dist/types/retry/reason.d.ts +6 -1
- package/dist/types/retry/replay.d.ts +19 -5
- package/dist/types/retry/tracker.d.ts +10 -3
- package/dist/types/retry/types.d.ts +3 -8
- package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +20 -0
- package/dist/types/signal/api/SignalDigestSyncApi.d.ts +13 -0
- package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +12 -3
- package/dist/types/signal/api/SignalMissingPreKeysSyncApi.d.ts +8 -0
- package/dist/types/signal/api/SignalRotateKeyApi.d.ts +10 -0
- package/dist/types/signal/api/SignalSessionSyncApi.d.ts +13 -0
- package/dist/types/signal/api/codec.d.ts +20 -0
- package/dist/types/signal/api/constants.d.ts +1 -1
- package/dist/types/signal/api/prekeys.d.ts +4 -0
- package/dist/types/signal/{crypto → attestation}/WaAdvSignature.d.ts +2 -4
- package/dist/types/signal/attestation/constants.d.ts +4 -0
- package/dist/types/signal/constants.d.ts +7 -4
- package/dist/types/signal/encoding.d.ts +6 -62
- package/dist/types/signal/group/SenderKeyChain.d.ts +2 -2
- package/dist/types/signal/group/SenderKeyManager.d.ts +24 -2
- package/dist/types/signal/group/encoding.d.ts +25 -0
- package/dist/types/signal/index.d.ts +4 -1
- package/dist/types/signal/registration/encoding.d.ts +30 -0
- package/dist/types/signal/registration/keygen.d.ts +10 -0
- package/dist/types/signal/registration/utils.d.ts +7 -1
- package/dist/types/signal/session/SignalProtocol.d.ts +66 -2
- package/dist/types/signal/session/SignalRatchet.d.ts +2 -3
- package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
- package/dist/types/signal/session/SignalSession.d.ts +0 -1
- package/dist/types/signal/session/encoding.d.ts +28 -0
- package/dist/types/signal/session/resolver.d.ts +18 -2
- package/dist/types/signal/types.d.ts +16 -4
- package/dist/types/store/cache/identity.cache.d.ts +15 -0
- package/dist/types/store/cache/privacy-token.cache.d.ts +15 -0
- package/dist/types/store/cache/sender-key.cache.d.ts +18 -0
- package/dist/types/store/cache/session.cache.d.ts +23 -0
- package/dist/types/store/contracts/contact.store.d.ts +14 -0
- package/dist/types/store/contracts/device-list.store.d.ts +13 -0
- package/dist/types/store/contracts/group-metadata.store.d.ts +14 -0
- 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/message.store.d.ts +0 -2
- package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
- package/dist/types/store/contracts/session.store.d.ts +14 -0
- package/dist/types/store/contracts/signal.store.d.ts +1 -34
- package/dist/types/store/createStore.d.ts +54 -2
- package/dist/types/store/index.d.ts +22 -13
- package/dist/types/store/locks/group-metadata.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/pre-key.lock.d.ts +3 -0
- package/dist/types/store/locks/session.lock.d.ts +3 -0
- package/dist/types/store/{providers/memory → memory}/appstate.store.d.ts +2 -2
- package/dist/types/store/memory/auth.store.d.ts +18 -0
- package/dist/types/store/{providers/memory → memory}/contact.store.d.ts +6 -1
- package/dist/types/store/{providers/memory → memory}/device-list.store.d.ts +15 -2
- package/dist/types/store/memory/group-metadata.store.d.ts +27 -0
- package/dist/types/store/memory/identity.store.d.ts +18 -0
- package/dist/types/store/memory/message-secret.store.d.ts +31 -0
- package/dist/types/store/{providers/memory → memory}/message.store.d.ts +1 -1
- package/dist/types/store/memory/pre-key.store.d.ts +23 -0
- package/dist/types/store/{providers/memory → memory}/privacy-token.store.d.ts +1 -1
- package/dist/types/store/{providers/memory → memory}/retry.store.d.ts +23 -4
- package/dist/types/store/{providers/memory → memory}/sender-key.store.d.ts +2 -2
- package/dist/types/store/memory/session.store.d.ts +21 -0
- package/dist/types/store/memory/signal.store.d.ts +16 -0
- package/dist/types/store/{providers/memory → memory}/thread.store.d.ts +1 -1
- package/dist/types/store/noop.store.d.ts +6 -2
- package/dist/types/store/types.d.ts +271 -7
- package/dist/types/transport/WaComms.d.ts +5 -0
- package/dist/types/transport/WaWebSocket.d.ts +6 -0
- package/dist/types/transport/binary/constants.d.ts +8 -2
- package/dist/types/transport/binary/decoder.d.ts +5 -0
- package/dist/types/transport/binary/encoder.d.ts +5 -0
- package/dist/types/transport/binary/tokens.d.ts +6 -6
- package/dist/types/transport/index.d.ts +9 -0
- package/dist/types/transport/keepalive/WaKeepAlive.d.ts +11 -1
- package/dist/types/transport/node/WaMobileTcpSocket.d.ts +24 -0
- package/dist/types/transport/node/WaNodeOrchestrator.d.ts +11 -2
- package/dist/types/transport/node/WaNodeTransport.d.ts +13 -0
- package/dist/types/transport/node/builders/abprops.d.ts +5 -0
- package/dist/types/transport/node/builders/account-sync.d.ts +1 -2
- package/dist/types/transport/node/builders/bot.d.ts +4 -0
- package/dist/types/transport/node/builders/business.d.ts +21 -4
- package/dist/types/transport/node/builders/chatstate.d.ts +11 -0
- package/dist/types/transport/node/builders/community.d.ts +17 -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/group.d.ts +44 -2
- package/dist/types/transport/node/builders/message.d.ts +11 -6
- package/dist/types/transport/node/builders/newsletter.d.ts +73 -0
- package/dist/types/transport/node/builders/offline.d.ts +2 -0
- package/dist/types/transport/node/builders/passive.d.ts +3 -0
- package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
- package/dist/types/transport/node/builders/presence.d.ts +13 -0
- package/dist/types/transport/node/builders/profile.d.ts +3 -0
- package/dist/types/transport/node/builders/tos.d.ts +12 -0
- package/dist/types/transport/node/builders/usync.d.ts +16 -0
- package/dist/types/transport/node/helpers.d.ts +3 -1
- package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
- package/dist/types/transport/node/mex/client.d.ts +29 -0
- package/dist/types/transport/node/query.d.ts +19 -1
- package/dist/types/transport/node/usync.d.ts +3 -0
- package/dist/types/transport/noise/WaMobileClientPayload.d.ts +34 -0
- package/dist/types/transport/noise/WaNoiseCert.d.ts +12 -1
- package/dist/types/transport/noise/WaNoiseHandshake.d.ts +12 -6
- package/dist/types/transport/noise/WaNoiseSession.d.ts +1 -1
- package/dist/types/transport/noise/WaNoiseSocket.d.ts +12 -6
- package/dist/types/transport/noise/constants.d.ts +4 -5
- package/dist/types/transport/proxy.d.ts +5 -0
- package/dist/types/transport/types.d.ts +15 -0
- package/dist/types/transport/wa-web-version-fetcher.d.ts +44 -0
- package/dist/types/util/async.d.ts +4 -0
- package/dist/types/util/bytes.d.ts +36 -1
- package/dist/types/util/clock.d.ts +6 -0
- package/dist/types/util/coercion.d.ts +25 -0
- package/dist/types/util/collections.d.ts +8 -0
- package/dist/types/util/index.d.ts +2 -2
- package/dist/types/util/primitives.d.ts +11 -0
- package/dist/types/util/runtime.d.ts +5 -0
- package/dist/types/version-spec.d.ts +1 -0
- package/dist/util/async.js +4 -0
- package/dist/util/bytes.js +37 -2
- package/dist/util/clock.js +18 -0
- package/dist/util/coercion.js +48 -3
- package/dist/util/collections.js +12 -0
- package/dist/util/index.js +7 -1
- package/dist/util/primitives.js +20 -0
- package/dist/util/runtime.js +5 -0
- package/dist/version-spec.js +5 -0
- package/package.json +37 -11
- package/spec/appstate/index.d.ts +188 -0
- package/spec/appstate/index.js +850 -0
- package/spec/mex/index.d.ts +4172 -0
- package/spec/mex/index.js +261 -0
- package/spec/proto/index.d.ts +16305 -0
- package/spec/proto/index.js +1 -0
- package/spec/version/index.d.ts +4 -0
- package/spec/version/index.js +9 -0
- package/spec/version/version.json +3 -0
- package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
- package/dist/auth/pairing/WaPairingCodeCrypto.js +0 -77
- package/dist/auth/pairing/constants.js +0 -5
- package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
- package/dist/client/events/chat.js +0 -227
- package/dist/client/incoming.js +0 -269
- package/dist/client/mailbox.js +0 -50
- package/dist/client/messages.js +0 -228
- package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
- package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +0 -73
- package/dist/esm/auth/pairing/constants.js +0 -2
- package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
- package/dist/esm/client/events/chat.js +0 -224
- package/dist/esm/client/incoming.js +0 -260
- package/dist/esm/client/mailbox.js +0 -47
- package/dist/esm/client/messages.js +0 -224
- package/dist/esm/media/WaMediaCrypto.js +0 -304
- package/dist/esm/message/addon-crypto.js +0 -59
- package/dist/esm/message/incoming.js +0 -325
- package/dist/esm/message/phash.js +0 -27
- package/dist/esm/signal/crypto/WaAdvSignature.js +0 -64
- package/dist/esm/store/locks/participants.lock.js +0 -20
- package/dist/esm/store/providers/memory/contact.store.js +0 -28
- package/dist/esm/store/providers/memory/device-list.store.js +0 -64
- package/dist/esm/store/providers/memory/signal.store.js +0 -199
- package/dist/esm/transport/node/builders/index.js +0 -11
- package/dist/media/WaMediaCrypto.js +0 -308
- package/dist/message/addon-crypto.js +0 -65
- package/dist/message/phash.js +0 -30
- package/dist/signal/crypto/WaAdvSignature.js +0 -76
- package/dist/store/locks/participants.lock.js +0 -23
- package/dist/store/providers/memory/contact.store.js +0 -32
- package/dist/store/providers/memory/device-list.store.js +0 -68
- package/dist/store/providers/memory/signal.store.js +0 -203
- package/dist/transport/node/builders/index.js +0 -51
- package/dist/types/appstate/WaAppStateSyncClient.d.ts +0 -66
- 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/client/events/chat.d.ts +0 -3
- package/dist/types/client/history-sync.d.ts +0 -20
- package/dist/types/client/incoming.d.ts +0 -37
- package/dist/types/client/mailbox.d.ts +0 -10
- package/dist/types/client/messages.d.ts +0 -16
- package/dist/types/client/messaging/participants.d.ts +0 -13
- package/dist/types/media/WaMediaCrypto.d.ts +0 -13
- package/dist/types/media/conn.d.ts +0 -3
- package/dist/types/message/addon-crypto.d.ts +0 -25
- package/dist/types/message/content.d.ts +0 -12
- package/dist/types/message/incoming.d.ts +0 -18
- package/dist/types/signal/crypto/constants.d.ts +0 -5
- package/dist/types/store/contracts/participants.store.d.ts +0 -13
- package/dist/types/store/locks/participants.lock.d.ts +0 -2
- package/dist/types/store/providers/memory/participants.store.d.ts +0 -17
- package/dist/types/store/providers/memory/signal.store.d.ts +0 -58
- package/dist/types/transport/node/builders/index.d.ts +0 -11
- package/proto/index.d.ts +0 -10903
- package/proto/index.js +0 -1
- /package/dist/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
- /package/dist/esm/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
- /package/dist/esm/message/{device-sent.js → encode/device-sent.js} +0 -0
- /package/dist/message/{device-sent.js → encode/device-sent.js} +0 -0
- /package/dist/types/message/{padding.d.ts → encode/padding.d.ts} +0 -0
|
@@ -1,110 +1,228 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
|
-
import type {
|
|
3
|
-
import type { WaAppStateSyncOptions } from '../appstate/types';
|
|
4
|
-
import type { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
|
|
2
|
+
import type { WaAuthClient } from '../auth/WaAuthClient';
|
|
5
3
|
import type { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
|
|
4
|
+
import type { WaBotCoordinator } from './coordinators/WaBotCoordinator';
|
|
5
|
+
import type { WaBroadcastListCoordinator } from './coordinators/WaBroadcastListCoordinator';
|
|
6
6
|
import type { WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
|
|
7
|
+
import type { WaEmailCoordinator } from './coordinators/WaEmailCoordinator';
|
|
7
8
|
import type { WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
|
|
8
|
-
import type {
|
|
9
|
+
import type { WaLowLevelCoordinator } from './coordinators/WaLowLevelCoordinator';
|
|
10
|
+
import type { WaMessageCoordinator } from './coordinators/WaMessageCoordinator';
|
|
11
|
+
import type { WaNewsletterCoordinator } from './coordinators/WaNewsletterCoordinator';
|
|
12
|
+
import type { WaPresenceCoordinator } from './coordinators/WaPresenceCoordinator';
|
|
9
13
|
import type { WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
|
|
10
14
|
import type { WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
15
|
+
import type { WaStatusCoordinator } from './coordinators/WaStatusCoordinator';
|
|
16
|
+
import type { WaClientEventMap, WaClientOptions, WaIgnoreKey, WaIgnoreKeyPredicate } from './types';
|
|
13
17
|
import type { Logger } from '../infra/log/types';
|
|
14
|
-
import type
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
import { type WaLogoutReason } from '../protocol/stream';
|
|
19
|
+
/**
|
|
20
|
+
* Top-level WhatsApp client. Owns the transport, auth, signal, and per-feature
|
|
21
|
+
* coordinators (accessible via getters such as {@link message}, {@link group},
|
|
22
|
+
* {@link newsletter}, etc.) and re-emits every {@link WaClientEventMap} event.
|
|
23
|
+
*
|
|
24
|
+
* Lifecycle: construct with {@link WaClientOptions}, call {@link connect} to
|
|
25
|
+
* open the socket, react to `connection`/`auth_qr`/`auth_pairing_code` events,
|
|
26
|
+
* then use the coordinator getters to drive the session. Call {@link disconnect}
|
|
27
|
+
* to shut down cleanly or {@link logout} to remove the companion device.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { createPinoLogger, createStore, WaClient } from '..'
|
|
32
|
+
* import { createSqliteStore } from '@zapo-js/store-sqlite'
|
|
33
|
+
*
|
|
34
|
+
* const store = createStore({
|
|
35
|
+
* backends: { sqlite: createSqliteStore({ path: '.auth/state.sqlite' }) },
|
|
36
|
+
* providers: {
|
|
37
|
+
* auth: 'sqlite',
|
|
38
|
+
* signal: 'sqlite',
|
|
39
|
+
* preKey: 'sqlite',
|
|
40
|
+
* session: 'sqlite',
|
|
41
|
+
* identity: 'sqlite',
|
|
42
|
+
* senderKey: 'sqlite',
|
|
43
|
+
* appState: 'sqlite',
|
|
44
|
+
* privacyToken: 'sqlite',
|
|
45
|
+
* messages: 'sqlite',
|
|
46
|
+
* threads: 'sqlite',
|
|
47
|
+
* contacts: 'sqlite'
|
|
48
|
+
* }
|
|
49
|
+
* })
|
|
50
|
+
*
|
|
51
|
+
* const client = new WaClient(
|
|
52
|
+
* { store, sessionId: 'default' },
|
|
53
|
+
* await createPinoLogger({ level: 'info', pretty: true })
|
|
54
|
+
* )
|
|
55
|
+
*
|
|
56
|
+
* client.on('auth_qr', ({ qr, ttlMs }) => console.log('scan:', qr, ttlMs))
|
|
57
|
+
* client.on('connection', (event) => console.log('connection', event))
|
|
58
|
+
* client.on('message', async (event) => {
|
|
59
|
+
* if (event.message?.conversation === 'ping') {
|
|
60
|
+
* await client.message.send(event.chatJid!, 'pong')
|
|
61
|
+
* }
|
|
62
|
+
* })
|
|
63
|
+
*
|
|
64
|
+
* await client.connect()
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
19
67
|
export declare class WaClient extends EventEmitter {
|
|
20
68
|
private readonly options;
|
|
21
69
|
private readonly logger;
|
|
22
|
-
private readonly
|
|
23
|
-
private readonly
|
|
24
|
-
private readonly
|
|
25
|
-
private readonly
|
|
26
|
-
private readonly privacyTokenStore;
|
|
27
|
-
private readonly deviceListStore;
|
|
28
|
-
private readonly retryStore;
|
|
29
|
-
private readonly signalStore;
|
|
30
|
-
private readonly senderKeyStore;
|
|
31
|
-
private readonly threadStore;
|
|
32
|
-
private readonly authClient;
|
|
33
|
-
private readonly nodeOrchestrator;
|
|
34
|
-
private readonly nodeTransport;
|
|
35
|
-
private readonly signalDeviceSync;
|
|
36
|
-
readonly appStateSync: WaAppStateSyncClient;
|
|
37
|
-
readonly chatCoordinator: WaAppStateMutationCoordinator;
|
|
38
|
-
private readonly incomingNode;
|
|
39
|
-
readonly mediaTransfer: WaMediaTransferClient;
|
|
40
|
-
readonly messageDispatch: WaMessageDispatchCoordinator;
|
|
41
|
-
readonly messageClient: WaMessageClient;
|
|
42
|
-
readonly groupCoordinator: WaGroupCoordinator;
|
|
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;
|
|
70
|
+
private readonly stores;
|
|
71
|
+
private readonly deps;
|
|
72
|
+
private readonly appStateSync;
|
|
73
|
+
private readonly mediaTransfer;
|
|
52
74
|
private readonly writeBehind;
|
|
53
75
|
private connectPromise;
|
|
54
76
|
private acceptingIncomingEvents;
|
|
55
77
|
private activeIncomingHandlers;
|
|
56
78
|
private readonly incomingHandlersDrainedWaiters;
|
|
79
|
+
/**
|
|
80
|
+
* @param options Client configuration (store, transport, addons, history...).
|
|
81
|
+
* @param logger Optional structured logger. Defaults to a `ConsoleLogger('info')`.
|
|
82
|
+
*/
|
|
57
83
|
constructor(options: WaClientOptions, logger?: Logger);
|
|
84
|
+
private runClientTooOldRecover;
|
|
85
|
+
/** Strongly-typed `EventEmitter#on` over {@link WaClientEventMap}. */
|
|
58
86
|
on<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
59
87
|
on(event: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
88
|
+
/** Strongly-typed `EventEmitter#once` over {@link WaClientEventMap}. */
|
|
60
89
|
once<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
61
90
|
once(event: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
91
|
+
/** Strongly-typed `EventEmitter#off` over {@link WaClientEventMap}. */
|
|
62
92
|
off<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
63
93
|
off(event: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
94
|
+
/** Strongly-typed `EventEmitter#emit` over {@link WaClientEventMap}. */
|
|
64
95
|
emit<K extends keyof WaClientEventMap>(event: K, payload: Parameters<WaClientEventMap[K]>[0]): boolean;
|
|
65
96
|
emit(event: string | symbol, ...args: unknown[]): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Returns the current auth state snapshot (credentials, registration,
|
|
99
|
+
* connection flag) – useful for resuming or inspecting the client.
|
|
100
|
+
*/
|
|
66
101
|
getState(): {
|
|
67
102
|
connected: boolean;
|
|
68
103
|
registered: boolean;
|
|
69
104
|
hasQr: boolean;
|
|
70
105
|
hasPairingCode: boolean;
|
|
71
106
|
};
|
|
72
|
-
|
|
107
|
+
/**
|
|
108
|
+
* Returns the credentials persisted for the current session, or `null` if
|
|
109
|
+
* the client has not been paired yet.
|
|
110
|
+
*/
|
|
111
|
+
getCredentials(): import("..").WaAuthCredentials | null;
|
|
112
|
+
/**
|
|
113
|
+
* Returns the measured skew between the local clock and the server, in
|
|
114
|
+
* milliseconds, or `null` if no handshake has completed yet.
|
|
115
|
+
*/
|
|
73
116
|
getClockSkewMs(): number | null;
|
|
74
|
-
sendNode(node: BinaryNode): Promise<void>;
|
|
75
|
-
query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
|
|
76
|
-
registerIncomingHandler(registration: WaIncomingNodeHandlerRegistration): () => void;
|
|
77
|
-
unregisterIncomingHandler(registration: WaIncomingNodeHandlerRegistration): boolean;
|
|
78
117
|
private bindNodeTransportEvents;
|
|
79
118
|
private handleIncomingMessageEvent;
|
|
80
|
-
private handleIncomingAppStateSyncKeyShare;
|
|
81
|
-
private handleIncomingAppStateSyncKeyRequest;
|
|
82
|
-
private extractAppStateSyncKeyRequestIds;
|
|
83
|
-
private isOwnAccountDeviceJid;
|
|
84
|
-
private handleHistorySyncNotification;
|
|
85
119
|
private queryWithContext;
|
|
86
120
|
private handleIncomingFrame;
|
|
121
|
+
/**
|
|
122
|
+
* Opens the transport and runs the noise/auth handshake. If a connection
|
|
123
|
+
* is already in flight, the in-flight promise is reused. Resolves once the
|
|
124
|
+
* client is fully ready; pairing prompts are surfaced via the `auth_qr`
|
|
125
|
+
* and `auth_pairing_code` events while this awaits.
|
|
126
|
+
*
|
|
127
|
+
* **First-time pairing:** the promise stays pending until the user scans a
|
|
128
|
+
* QR or types the pairing code. Subscribe to `auth_qr` / `auth_pairing_code`
|
|
129
|
+
* *before* awaiting – they fire while `connect()` is still running.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```ts
|
|
133
|
+
* // QR pairing (default – works headless)
|
|
134
|
+
* client.on('auth_qr', ({ qr }) => console.log('scan:', qr))
|
|
135
|
+
* client.on('auth_paired', ({ credentials }) => console.log('paired:', credentials.meJid))
|
|
136
|
+
* await client.connect()
|
|
137
|
+
*
|
|
138
|
+
* // Link-code pairing – call requestPairingCode while connect() is running
|
|
139
|
+
* void client.connect()
|
|
140
|
+
* await new Promise((r) => client.once('auth_pairing_required', r))
|
|
141
|
+
* const code = await client.auth.requestPairingCode('5511999999999')
|
|
142
|
+
* console.log('enter code on phone:', code)
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
87
145
|
connect(): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Closes the transport gracefully: pauses incoming events, flushes the
|
|
148
|
+
* write-behind persistence queue, and emits a `connection` close event
|
|
149
|
+
* with reason `client_disconnected`. Does not clear stored credentials -
|
|
150
|
+
* call {@link connect} again to resume the same session. There is no
|
|
151
|
+
* built-in auto-reconnect; subscribe to `connection: { status: 'close' }`
|
|
152
|
+
* and decide your own backoff.
|
|
153
|
+
*/
|
|
88
154
|
disconnect(): Promise<void>;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
155
|
+
/**
|
|
156
|
+
* Drops matching inbound stanzas before any handler runs. Server still
|
|
157
|
+
* gets the ack so it stops re-delivering. Returns an `unregister` function.
|
|
158
|
+
*
|
|
159
|
+
* Accepts either a declarative descriptor or a predicate. The descriptor
|
|
160
|
+
* matches by `remoteJid`/`fromMe`/`id`/`participant` (PN ↔ LID alt-attrs
|
|
161
|
+
* resolved automatically) and throws when no match field is given or
|
|
162
|
+
* arrays are empty. The predicate receives a parsed
|
|
163
|
+
* {@link WaIgnoreKeyContext} and returns `true` to drop the stanza.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* client.ignoreKey({ remoteJid: spammerJid })
|
|
168
|
+
* client.ignoreKey({ fromMe: true, only: ['message'] })
|
|
169
|
+
* client.ignoreKey((m) => m.kind === 'message' && isGroupJid(m.remoteJid ?? ''))
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
ignoreKey(input: WaIgnoreKey | WaIgnoreKeyPredicate): () => void;
|
|
173
|
+
/** Auth client: pairing, credentials, registration state. */
|
|
174
|
+
get auth(): WaAuthClient;
|
|
175
|
+
/** Message coordinator: send/receive, receipts, addons, media download. */
|
|
176
|
+
get message(): WaMessageCoordinator;
|
|
177
|
+
/** Presence coordinator: own/peer presence subscriptions. */
|
|
178
|
+
get presence(): WaPresenceCoordinator;
|
|
179
|
+
/** Low-level coordinator: raw node send/query escape hatch. */
|
|
180
|
+
get lowlevel(): WaLowLevelCoordinator;
|
|
181
|
+
/** App-state mutation coordinator: chat-side settings (mute, pin, etc.). */
|
|
94
182
|
get chat(): WaAppStateMutationCoordinator;
|
|
183
|
+
/** Group coordinator: create/query/manage WhatsApp groups and communities. */
|
|
95
184
|
get group(): WaGroupCoordinator;
|
|
185
|
+
/** Status coordinator: status broadcast send and reactions. */
|
|
186
|
+
get status(): WaStatusCoordinator;
|
|
187
|
+
/**
|
|
188
|
+
* Broadcast-list coordinator: list management and broadcast sends.
|
|
189
|
+
* **Business-only** - the underlying app-state schema rejects regular
|
|
190
|
+
* accounts. See {@link WaBroadcastListCoordinator}.
|
|
191
|
+
*/
|
|
192
|
+
get broadcastList(): WaBroadcastListCoordinator;
|
|
193
|
+
/** Newsletter coordinator: create/query/follow/admin/send for channels. */
|
|
194
|
+
get newsletter(): WaNewsletterCoordinator;
|
|
195
|
+
/** Privacy coordinator: privacy categories, blocklist, disallowed list. */
|
|
96
196
|
get privacy(): WaPrivacyCoordinator;
|
|
197
|
+
/** Profile coordinator: own/peer profile fields (picture, status, username). */
|
|
97
198
|
get profile(): WaProfileCoordinator;
|
|
199
|
+
/**
|
|
200
|
+
* Business coordinator: business profile, verified-name lookups. Reads
|
|
201
|
+
* work from any account; **writes (`editBusinessProfile`,
|
|
202
|
+
* `updateCoverPhoto`, `deleteCoverPhoto`) are business-only** and throw
|
|
203
|
+
* on regular accounts. See {@link WaBusinessCoordinator}.
|
|
204
|
+
*/
|
|
98
205
|
get business(): WaBusinessCoordinator;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
206
|
+
/** Bot coordinator: Meta-AI bot profiles, prompt/chunk decryption. */
|
|
207
|
+
get bot(): WaBotCoordinator;
|
|
208
|
+
/**
|
|
209
|
+
* Email coordinator: bind/unbind/verify email on the account.
|
|
210
|
+
* **Mobile-only** - every method throws unless the client is connected
|
|
211
|
+
* via `options.mobileTransport`. See {@link WaEmailCoordinator}.
|
|
212
|
+
*/
|
|
213
|
+
get email(): WaEmailCoordinator;
|
|
214
|
+
/**
|
|
215
|
+
* Unpairs this companion device by removing it server-side. Requires an
|
|
216
|
+
* authenticated session; throws when no `meJid` is present.
|
|
217
|
+
*
|
|
218
|
+
* **Does not** disconnect the socket or clear local stores by itself -
|
|
219
|
+
* the server initiates the close after accepting the IQ, which surfaces
|
|
220
|
+
* via a `connection` event with `isLogout: true`. That close handler is
|
|
221
|
+
* what wipes the persisted state, honoring `options.logoutStoreClear`.
|
|
222
|
+
* The {@link WaClient} instance is single-shot after logout: create a
|
|
223
|
+
* fresh one (with a fresh `sessionId` or pre-cleared store) to re-pair.
|
|
224
|
+
*/
|
|
225
|
+
logout(reason?: WaLogoutReason): Promise<void>;
|
|
108
226
|
private clearStoredState;
|
|
109
227
|
private tryEnterIncomingHandler;
|
|
110
228
|
private leaveIncomingHandler;
|
|
@@ -1,24 +1,33 @@
|
|
|
1
|
+
import { WaAppStateSyncClient } from '../appstate/sync/WaAppStateSyncClient';
|
|
1
2
|
import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../appstate/types';
|
|
2
|
-
import { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
|
|
3
3
|
import { WaAuthClient } from '../auth/WaAuthClient';
|
|
4
4
|
import { WaConnectionManager } from './connection/WaConnectionManager';
|
|
5
|
-
import { WaKeyShareCoordinator } from './connection/WaKeyShareCoordinator';
|
|
6
5
|
import { WaReceiptQueue } from './connection/WaReceiptQueue';
|
|
6
|
+
import { WaAbPropsCoordinator } from './coordinators/WaAbPropsCoordinator';
|
|
7
7
|
import { WaAppStateMutationCoordinator } from './coordinators/WaAppStateMutationCoordinator';
|
|
8
|
+
import { type WaBotCoordinator } from './coordinators/WaBotCoordinator';
|
|
9
|
+
import { type WaBroadcastListCoordinator } from './coordinators/WaBroadcastListCoordinator';
|
|
8
10
|
import { type WaBusinessCoordinator } from './coordinators/WaBusinessCoordinator';
|
|
11
|
+
import { type WaEmailCoordinator } from './coordinators/WaEmailCoordinator';
|
|
9
12
|
import { type WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
|
|
10
13
|
import { WaIncomingNodeCoordinator } from './coordinators/WaIncomingNodeCoordinator';
|
|
14
|
+
import { type WaLowLevelCoordinator } from './coordinators/WaLowLevelCoordinator';
|
|
15
|
+
import { WaMessageCoordinator } from './coordinators/WaMessageCoordinator';
|
|
11
16
|
import { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
|
|
17
|
+
import { type WaNewsletterCoordinator } from './coordinators/WaNewsletterCoordinator';
|
|
12
18
|
import { WaPassiveTasksCoordinator } from './coordinators/WaPassiveTasksCoordinator';
|
|
19
|
+
import { type WaPresenceCoordinator } from './coordinators/WaPresenceCoordinator';
|
|
13
20
|
import { type WaPrivacyCoordinator } from './coordinators/WaPrivacyCoordinator';
|
|
14
21
|
import { type WaProfileCoordinator } from './coordinators/WaProfileCoordinator';
|
|
15
22
|
import { WaRetryCoordinator } from './coordinators/WaRetryCoordinator';
|
|
23
|
+
import { type WaStatusCoordinator } from './coordinators/WaStatusCoordinator';
|
|
16
24
|
import { type WaStreamControlHandler } from './coordinators/WaStreamControlCoordinator';
|
|
17
25
|
import { WaTrustedContactTokenCoordinator } from './coordinators/WaTrustedContactTokenCoordinator';
|
|
18
|
-
import { type WaMediaMessageOptions } from './messages';
|
|
19
|
-
import type { WaClientEventMap, WaClientOptions, WaIncomingMessageEvent } from './types';
|
|
26
|
+
import { type WaMediaMessageOptions } from './messaging/messages';
|
|
27
|
+
import type { WaClientEventMap, WaClientOptions, WaIncomingMessageEvent, WaIncomingProtocolMessageEvent } from './types';
|
|
20
28
|
import type { Logger } from '../infra/log/types';
|
|
21
|
-
import { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
29
|
+
import { WaMediaTransferClient } from '../media/transfer/WaMediaTransferClient';
|
|
30
|
+
import { type PeerDataOperationRequester } from '../message/primitives/peer-data-operation';
|
|
22
31
|
import { WaMessageClient } from '../message/WaMessageClient';
|
|
23
32
|
import { SignalDeviceSyncApi } from '../signal/api/SignalDeviceSyncApi';
|
|
24
33
|
import { SignalDigestSyncApi } from '../signal/api/SignalDigestSyncApi';
|
|
@@ -28,6 +37,7 @@ import { SignalRotateKeyApi } from '../signal/api/SignalRotateKeyApi';
|
|
|
28
37
|
import { SignalSessionSyncApi } from '../signal/api/SignalSessionSyncApi';
|
|
29
38
|
import { SenderKeyManager } from '../signal/group/SenderKeyManager';
|
|
30
39
|
import { SignalProtocol } from '../signal/session/SignalProtocol';
|
|
40
|
+
import type { WaStoredContactRecord } from '../store/contracts/contact.store';
|
|
31
41
|
import { WaKeepAlive } from '../transport/keepalive/WaKeepAlive';
|
|
32
42
|
import { WaNodeOrchestrator } from '../transport/node/WaNodeOrchestrator';
|
|
33
43
|
import { WaNodeTransport } from '../transport/node/WaNodeTransport';
|
|
@@ -39,8 +49,12 @@ interface WaClientBase {
|
|
|
39
49
|
}
|
|
40
50
|
interface WaClientBuildRuntime {
|
|
41
51
|
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
42
|
-
readonly query: (node: BinaryNode, timeoutMs?: number
|
|
43
|
-
|
|
52
|
+
readonly query: (node: BinaryNode, timeoutMs?: number, options?: {
|
|
53
|
+
readonly useSystemId?: boolean;
|
|
54
|
+
}) => Promise<BinaryNode>;
|
|
55
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
|
|
56
|
+
readonly useSystemId?: boolean;
|
|
57
|
+
}) => Promise<BinaryNode>;
|
|
44
58
|
readonly syncAppState: () => Promise<void>;
|
|
45
59
|
readonly syncAppStateWithOptions: (options?: WaAppStateSyncOptions) => Promise<WaAppStateSyncResult>;
|
|
46
60
|
readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
|
|
@@ -49,8 +63,16 @@ interface WaClientBuildRuntime {
|
|
|
49
63
|
readonly handleIncomingFrame: (frame: Uint8Array) => Promise<void>;
|
|
50
64
|
readonly clearStoredState: () => Promise<void>;
|
|
51
65
|
readonly resumeIncomingEvents: () => void;
|
|
66
|
+
readonly subscribeProtocolMessage: (handler: (event: WaIncomingProtocolMessageEvent) => void) => () => void;
|
|
67
|
+
/**
|
|
68
|
+
* Sink for address-book contact rows synced over app-state. Wired by
|
|
69
|
+
* `WaClient` to {@link WriteBehindPersistence.persistContact} so Contact
|
|
70
|
+
* mutations land in the contact store at pair-time (snapshot) and on
|
|
71
|
+
* every incremental sync.
|
|
72
|
+
*/
|
|
73
|
+
readonly persistContact: (record: WaStoredContactRecord) => void;
|
|
52
74
|
}
|
|
53
|
-
interface WaClientDependencies {
|
|
75
|
+
export interface WaClientDependencies {
|
|
54
76
|
readonly nodeTransport: WaNodeTransport;
|
|
55
77
|
readonly nodeOrchestrator: WaNodeOrchestrator;
|
|
56
78
|
readonly keepAlive: WaKeepAlive;
|
|
@@ -67,20 +89,29 @@ interface WaClientDependencies {
|
|
|
67
89
|
readonly signalSessionSync: SignalSessionSyncApi;
|
|
68
90
|
readonly authClient: WaAuthClient;
|
|
69
91
|
readonly messageDispatch: WaMessageDispatchCoordinator;
|
|
92
|
+
readonly messageCoordinator: WaMessageCoordinator;
|
|
93
|
+
readonly presenceCoordinator: WaPresenceCoordinator;
|
|
70
94
|
readonly retryCoordinator: WaRetryCoordinator;
|
|
71
95
|
readonly appStateSync: WaAppStateSyncClient;
|
|
72
96
|
readonly chatCoordinator: WaAppStateMutationCoordinator;
|
|
73
97
|
readonly streamControl: WaStreamControlHandler;
|
|
74
98
|
readonly incomingNode: WaIncomingNodeCoordinator;
|
|
99
|
+
readonly lowLevelCoordinator: WaLowLevelCoordinator;
|
|
75
100
|
readonly passiveTasks: WaPassiveTasksCoordinator;
|
|
76
101
|
readonly groupCoordinator: WaGroupCoordinator;
|
|
102
|
+
readonly statusCoordinator: WaStatusCoordinator;
|
|
103
|
+
readonly broadcastListCoordinator: WaBroadcastListCoordinator;
|
|
104
|
+
readonly newsletterCoordinator: WaNewsletterCoordinator;
|
|
77
105
|
readonly privacyCoordinator: WaPrivacyCoordinator;
|
|
78
106
|
readonly profileCoordinator: WaProfileCoordinator;
|
|
79
107
|
readonly businessCoordinator: WaBusinessCoordinator;
|
|
108
|
+
readonly botCoordinator: WaBotCoordinator;
|
|
109
|
+
readonly emailCoordinator: WaEmailCoordinator;
|
|
80
110
|
readonly receiptQueue: WaReceiptQueue;
|
|
81
|
-
readonly keyShareCoordinator: WaKeyShareCoordinator;
|
|
82
111
|
readonly connectionManager: WaConnectionManager;
|
|
83
112
|
readonly trustedContactToken: WaTrustedContactTokenCoordinator;
|
|
113
|
+
readonly abPropsCoordinator: WaAbPropsCoordinator;
|
|
114
|
+
readonly peerDataOperation: PeerDataOperationRequester;
|
|
84
115
|
}
|
|
85
116
|
export declare function resolveWaClientBase(options: WaClientOptions, logger: Logger): WaClientBase;
|
|
86
117
|
export declare function buildWaClientDependencies(input: {
|
|
@@ -16,6 +16,7 @@ interface WaConnectionManagerOptions {
|
|
|
16
16
|
readonly nodeTransport: WaNodeTransport;
|
|
17
17
|
readonly getPassiveTasks: () => WaPassiveTasksCoordinator | null;
|
|
18
18
|
readonly clearStoredCredentials: () => Promise<void>;
|
|
19
|
+
readonly onPostPairReconnected: () => void;
|
|
19
20
|
}
|
|
20
21
|
export declare class WaConnectionManager {
|
|
21
22
|
private readonly logger;
|
|
@@ -26,28 +27,29 @@ export declare class WaConnectionManager {
|
|
|
26
27
|
private readonly nodeTransport;
|
|
27
28
|
private readonly getPassiveTasks;
|
|
28
29
|
private readonly clearStoredCredentialsCallback;
|
|
30
|
+
private readonly onPostPairReconnected;
|
|
29
31
|
private comms;
|
|
30
32
|
private clockSkewMs;
|
|
31
33
|
private mediaConnCache;
|
|
32
34
|
private connectPromise;
|
|
33
35
|
private pairingReconnectPromise;
|
|
36
|
+
private pairingReconnectTimeout;
|
|
34
37
|
private frameHandler;
|
|
35
38
|
private pendingComms;
|
|
36
39
|
private lifecycleGeneration;
|
|
37
40
|
private lifecycleQueue;
|
|
38
|
-
private lastConnectWasNewLogin;
|
|
39
41
|
constructor(options: WaConnectionManagerOptions);
|
|
40
42
|
connect(frameHandler: (frame: Uint8Array) => Promise<void>): Promise<void>;
|
|
41
43
|
scheduleReconnectAfterPairing(): void;
|
|
42
44
|
disconnect(): Promise<void>;
|
|
43
45
|
clearStoredCredentials(): Promise<void>;
|
|
44
46
|
isConnected(): boolean;
|
|
45
|
-
wasNewLogin(): boolean;
|
|
46
47
|
getComms(): WaComms | null;
|
|
47
48
|
getClockSkewMs(): number | null;
|
|
48
49
|
getMediaConnCache(): WaMediaConn | null;
|
|
49
50
|
setMediaConnCache(value: WaMediaConn | null): void;
|
|
50
51
|
updateClockSkewFromSuccess(serverUnixSeconds: number): void;
|
|
52
|
+
setClockSkewMs(clockSkewMs: number, source: string): void;
|
|
51
53
|
private connectInternal;
|
|
52
54
|
private reconnectAsRegisteredAfterPairing;
|
|
53
55
|
private reconnectAsRegisteredAfterPairingInternal;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Logger } from '../../infra/log/types';
|
|
2
|
+
import { type AbPropName, type AbPropValue } from '../../protocol/abprops';
|
|
3
|
+
import type { BinaryNode } from '../../transport/types';
|
|
4
|
+
type WaAbPropsRuntime = {
|
|
5
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
6
|
+
};
|
|
7
|
+
export declare class WaAbPropsCoordinator {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
private readonly runtime;
|
|
10
|
+
private readonly cache;
|
|
11
|
+
private readonly syncState;
|
|
12
|
+
private syncPromise;
|
|
13
|
+
private syncEpoch;
|
|
14
|
+
private pendingSync;
|
|
15
|
+
constructor(options: {
|
|
16
|
+
readonly logger: Logger;
|
|
17
|
+
readonly runtime: WaAbPropsRuntime;
|
|
18
|
+
});
|
|
19
|
+
getConfigValue<T extends AbPropValue>(name: AbPropName): T;
|
|
20
|
+
sync(): void;
|
|
21
|
+
reset(): void;
|
|
22
|
+
private startSync;
|
|
23
|
+
private executeSyncWithRetry;
|
|
24
|
+
private executeSync;
|
|
25
|
+
}
|
|
26
|
+
export {};
|