zapo-js 0.3.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 +97 -177
- package/dist/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +58 -49
- package/dist/appstate/index.js +7 -6
- package/dist/appstate/{encoding.js → parsers/encoding.js} +11 -4
- package/dist/appstate/{response-parser.js → parsers/response-parser.js} +20 -8
- package/dist/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +174 -53
- package/dist/appstate/utils.js +16 -0
- package/dist/appstate-spec.js +89 -0
- package/dist/auth/WaAuthClient.js +100 -5
- package/dist/auth/credentials-flow.js +19 -7
- package/dist/auth/pairing/WaPairingFlow.js +33 -24
- package/dist/auth/pairing/pairing-code-crypto.js +16 -18
- package/dist/client/WaClient.js +342 -473
- package/dist/client/WaClientFactory.js +279 -78
- package/dist/client/connection/WaConnectionManager.js +28 -11
- package/dist/client/coordinators/WaAbPropsCoordinator.js +1 -2
- 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 -171
- package/dist/client/coordinators/WaEmailCoordinator.js +1 -0
- package/dist/client/coordinators/WaGroupCoordinator.js +529 -52
- package/dist/client/coordinators/WaIncomingNodeCoordinator.js +97 -12
- package/dist/client/coordinators/WaLowLevelCoordinator.js +41 -0
- package/dist/client/coordinators/WaMessageCoordinator.js +365 -0
- package/dist/client/coordinators/WaMessageDispatchCoordinator.js +682 -204
- package/dist/client/coordinators/WaNewsletterCoordinator.js +18 -0
- package/dist/client/coordinators/WaPassiveTasksCoordinator.js +17 -4
- package/dist/client/coordinators/WaPresenceCoordinator.js +21 -0
- package/dist/client/coordinators/WaPrivacyCoordinator.js +7 -5
- package/dist/client/coordinators/WaProfileCoordinator.js +220 -49
- package/dist/client/coordinators/WaRetryCoordinator.js +256 -125
- package/dist/client/coordinators/WaStatusCoordinator.js +49 -0
- package/dist/client/coordinators/WaStreamControlCoordinator.js +6 -6
- package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +7 -6
- 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} +33 -19
- 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/receipt.js +26 -0
- package/dist/client/media.js +161 -4
- 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 +6 -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 +6 -0
- package/dist/crypto/core/xeddsa.js +11 -9
- package/dist/crypto/curves/Ed25519.js +32 -21
- package/dist/crypto/curves/X25519.js +70 -34
- package/dist/crypto/curves/constants.js +2 -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} +58 -49
- package/dist/esm/appstate/index.js +5 -5
- package/dist/esm/appstate/{encoding.js → parsers/encoding.js} +11 -4
- package/dist/esm/appstate/{response-parser.js → parsers/response-parser.js} +20 -8
- package/dist/esm/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +174 -52
- package/dist/esm/appstate/utils.js +16 -0
- package/dist/esm/appstate-spec.js +79 -0
- package/dist/esm/auth/WaAuthClient.js +100 -5
- package/dist/esm/auth/credentials-flow.js +18 -6
- package/dist/esm/auth/pairing/WaPairingFlow.js +34 -25
- package/dist/esm/auth/pairing/pairing-code-crypto.js +12 -14
- package/dist/esm/client/WaClient.js +345 -476
- package/dist/esm/client/WaClientFactory.js +280 -79
- package/dist/esm/client/connection/WaConnectionManager.js +28 -11
- package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +2 -3
- 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 +79 -169
- package/dist/esm/client/coordinators/WaEmailCoordinator.js +1 -0
- package/dist/esm/client/coordinators/WaGroupCoordinator.js +532 -55
- package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +98 -13
- 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 +686 -208
- package/dist/esm/client/coordinators/WaNewsletterCoordinator.js +13 -0
- package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +18 -5
- 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 +223 -52
- package/dist/esm/client/coordinators/WaRetryCoordinator.js +258 -127
- 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 +7 -6
- 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} +33 -19
- 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/receipt.js +23 -0
- package/dist/esm/client/media.js +156 -6
- 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 +2 -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 +6 -0
- package/dist/esm/crypto/core/xeddsa.js +11 -9
- package/dist/esm/crypto/curves/Ed25519.js +35 -24
- package/dist/esm/crypto/curves/X25519.js +72 -36
- package/dist/esm/crypto/curves/constants.js +1 -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/media/constants.js +33 -2
- package/dist/esm/media/crypto/WaMediaCrypto.js +374 -0
- package/dist/esm/media/index.js +4 -3
- package/dist/esm/media/sticker/sticker-pack.js +133 -0
- package/dist/esm/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +37 -6
- 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/{addon-crypto.js → crypto/addon-crypto.js} +68 -10
- package/dist/esm/message/{icdc.js → crypto/icdc.js} +5 -7
- package/dist/esm/message/crypto/phash.js +133 -0
- package/dist/esm/message/{reporting-token.js → crypto/reporting-token.js} +6 -6
- package/dist/esm/message/{use-case-secret.js → crypto/use-case-secret.js} +20 -3
- package/dist/esm/message/{content.js → encode/content.js} +176 -7
- 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/{incoming.js → primitives/incoming.js} +215 -31
- package/dist/esm/message/primitives/peer-data-operation.js +93 -0
- package/dist/esm/mex.js +1 -0
- package/dist/esm/protocol/abprops.js +10 -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 +8 -0
- package/dist/esm/protocol/business.js +19 -0
- package/dist/esm/protocol/call.js +48 -0
- package/dist/esm/protocol/constants.js +8 -2
- package/dist/esm/protocol/defaults.js +3 -0
- package/dist/esm/protocol/index.js +1 -1
- package/dist/esm/protocol/jid.js +102 -5
- 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 +22 -2
- package/dist/esm/protocol/notification.js +18 -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 +5 -0
- package/dist/esm/retry/replay.js +131 -37
- package/dist/esm/retry/tracker.js +4 -8
- package/dist/esm/signal/api/SignalDeviceSyncApi.js +66 -19
- package/dist/esm/signal/api/SignalDigestSyncApi.js +7 -2
- package/dist/esm/signal/api/SignalIdentitySyncApi.js +9 -0
- 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/{crypto → attestation}/WaAdvSignature.js +5 -6
- package/dist/esm/signal/constants.js +3 -0
- package/dist/esm/signal/encoding.js +6 -289
- package/dist/esm/signal/group/SenderKeyChain.js +18 -33
- package/dist/esm/signal/group/SenderKeyManager.js +25 -8
- 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 +10 -0
- package/dist/esm/signal/registration/utils.js +6 -0
- package/dist/esm/signal/session/SignalProtocol.js +113 -11
- package/dist/esm/signal/session/SignalRatchet.js +29 -58
- package/dist/esm/signal/session/SignalSession.js +7 -14
- package/dist/esm/signal/session/encoding.js +173 -0
- package/dist/esm/signal/session/resolver.js +139 -30
- 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/createStore.js +91 -37
- package/dist/esm/store/index.js +15 -14
- 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/{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} +22 -13
- package/dist/esm/store/{providers/memory → memory}/identity.store.js +3 -3
- package/dist/esm/store/{providers/memory → memory}/message-secret.store.js +17 -8
- package/dist/esm/store/{providers/memory → memory}/message.store.js +2 -2
- package/dist/esm/store/{providers/memory → memory}/pre-key.store.js +2 -2
- package/dist/esm/store/{providers/memory → memory}/privacy-token.store.js +1 -1
- package/dist/esm/store/{providers/memory → memory}/retry.store.js +28 -7
- package/dist/esm/store/{providers/memory → memory}/sender-key.store.js +3 -3
- package/dist/esm/store/{providers/memory → memory}/session.store.js +3 -3
- package/dist/esm/store/{providers/memory → memory}/thread.store.js +2 -2
- package/dist/esm/store/noop.store.js +6 -4
- package/dist/esm/transport/WaComms.js +14 -5
- package/dist/esm/transport/WaWebSocket.js +32 -8
- 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 +1 -0
- package/dist/esm/transport/keepalive/WaKeepAlive.js +18 -4
- package/dist/esm/transport/node/WaMobileTcpSocket.js +6 -0
- package/dist/esm/transport/node/WaNodeOrchestrator.js +9 -5
- package/dist/esm/transport/node/WaNodeTransport.js +13 -0
- package/dist/esm/transport/node/builders/abprops.js +2 -2
- 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 +2 -2
- package/dist/esm/transport/node/builders/email.js +6 -5
- 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/passive.js +7 -0
- package/dist/esm/transport/node/builders/prekeys.js +4 -4
- package/dist/esm/transport/node/builders/presence.js +27 -1
- package/dist/esm/transport/node/builders/privacy-token.js +2 -2
- 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/tos.js +58 -0
- package/dist/esm/transport/node/builders/usync.js +51 -2
- package/dist/esm/transport/node/helpers.js +3 -1
- package/dist/esm/transport/node/mex/argo-decoder.js +2 -2
- package/dist/esm/transport/node/mex/client.js +22 -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 +8 -8
- package/dist/esm/transport/noise/WaMobileClientPayload.js +5 -0
- package/dist/esm/transport/noise/WaNoiseCert.js +5 -0
- package/dist/esm/transport/noise/WaNoiseHandshake.js +27 -25
- package/dist/esm/transport/noise/WaNoiseSession.js +39 -59
- 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/media/constants.js +34 -3
- package/dist/media/crypto/WaMediaCrypto.js +378 -0
- package/dist/media/index.js +9 -4
- package/dist/media/sticker/sticker-pack.js +136 -0
- package/dist/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +37 -6
- 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/{addon-crypto.js → crypto/addon-crypto.js} +68 -10
- package/dist/message/{icdc.js → crypto/icdc.js} +5 -7
- package/dist/message/crypto/phash.js +136 -0
- package/dist/message/{reporting-token.js → crypto/reporting-token.js} +6 -6
- package/dist/message/{use-case-secret.js → crypto/use-case-secret.js} +20 -3
- package/dist/message/{content.js → encode/content.js} +192 -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} +216 -31
- 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 +10 -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 +8 -0
- package/dist/protocol/business.js +22 -0
- package/dist/protocol/call.js +51 -0
- package/dist/protocol/constants.js +39 -3
- package/dist/protocol/defaults.js +3 -0
- package/dist/protocol/index.js +12 -3
- package/dist/protocol/jid.js +107 -5
- 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 +22 -2
- package/dist/protocol/notification.js +19 -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 +5 -0
- package/dist/retry/replay.js +129 -35
- package/dist/retry/tracker.js +3 -7
- package/dist/signal/api/SignalDeviceSyncApi.js +64 -17
- package/dist/signal/api/SignalDigestSyncApi.js +6 -1
- package/dist/signal/api/SignalIdentitySyncApi.js +9 -0
- 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/{crypto → attestation}/WaAdvSignature.js +5 -7
- package/dist/signal/constants.js +4 -1
- package/dist/signal/encoding.js +5 -303
- package/dist/signal/group/SenderKeyChain.js +17 -32
- package/dist/signal/group/SenderKeyManager.js +24 -7
- 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 +10 -0
- package/dist/signal/registration/utils.js +6 -0
- package/dist/signal/session/SignalProtocol.js +112 -10
- package/dist/signal/session/SignalRatchet.js +24 -54
- package/dist/signal/session/SignalSession.js +6 -14
- package/dist/signal/session/encoding.js +183 -0
- package/dist/signal/session/resolver.js +139 -30
- 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/createStore.js +90 -36
- package/dist/store/index.js +18 -16
- 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/{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} +24 -15
- package/dist/store/{providers/memory → memory}/identity.store.js +3 -3
- package/dist/store/{providers/memory → memory}/message-secret.store.js +17 -8
- package/dist/store/{providers/memory → memory}/message.store.js +2 -2
- package/dist/store/{providers/memory → memory}/pre-key.store.js +2 -2
- package/dist/store/{providers/memory → memory}/privacy-token.store.js +1 -1
- package/dist/store/{providers/memory → memory}/retry.store.js +28 -7
- package/dist/store/{providers/memory → memory}/sender-key.store.js +3 -3
- package/dist/store/{providers/memory → memory}/session.store.js +3 -3
- package/dist/store/{providers/memory → memory}/thread.store.js +2 -2
- package/dist/store/noop.store.js +7 -5
- package/dist/transport/WaComms.js +14 -5
- package/dist/transport/WaWebSocket.js +32 -8
- 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 +3 -1
- package/dist/transport/keepalive/WaKeepAlive.js +18 -4
- package/dist/transport/node/WaMobileTcpSocket.js +6 -0
- package/dist/transport/node/WaNodeOrchestrator.js +9 -5
- package/dist/transport/node/WaNodeTransport.js +13 -0
- package/dist/transport/node/builders/abprops.js +1 -1
- 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 +1 -1
- package/dist/transport/node/builders/email.js +6 -5
- 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/passive.js +10 -0
- package/dist/transport/node/builders/prekeys.js +3 -3
- package/dist/transport/node/builders/presence.js +28 -1
- package/dist/transport/node/builders/privacy-token.js +1 -1
- package/dist/transport/node/builders/privacy.js +5 -5
- package/dist/transport/node/builders/profile.js +30 -7
- package/dist/transport/node/builders/tos.js +63 -0
- package/dist/transport/node/builders/usync.js +52 -1
- package/dist/transport/node/helpers.js +2 -1
- package/dist/transport/node/mex/argo-decoder.js +2 -2
- package/dist/transport/node/mex/client.js +23 -0
- package/dist/transport/node/query.js +17 -0
- package/dist/transport/node/usync.js +13 -0
- package/dist/transport/noise/WaClientPayload.js +8 -8
- package/dist/transport/noise/WaMobileClientPayload.js +5 -0
- package/dist/transport/noise/WaNoiseCert.js +5 -0
- package/dist/transport/noise/WaNoiseHandshake.js +25 -23
- package/dist/transport/noise/WaNoiseSession.js +39 -59
- 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} +26 -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/{response-parser.d.ts → parsers/response-parser.d.ts} +13 -3
- package/dist/types/appstate/sync/WaAppStateSyncClient.d.ts +105 -0
- 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 +89 -3
- package/dist/types/auth/credentials-flow.d.ts +4 -3
- package/dist/types/auth/pairing/pairing-code-crypto.d.ts +0 -1
- package/dist/types/auth/types.d.ts +48 -1
- package/dist/types/client/WaClient.d.ts +178 -71
- package/dist/types/client/WaClientFactory.d.ts +30 -5
- 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/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 +44 -43
- package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +16 -0
- package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +311 -9
- package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +11 -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 +54 -31
- package/dist/types/client/coordinators/WaNewsletterCoordinator.d.ts +13 -0
- package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -3
- package/dist/types/client/coordinators/WaPresenceCoordinator.d.ts +27 -0
- package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +27 -0
- package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +113 -0
- package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +19 -17
- package/dist/types/client/coordinators/WaStatusCoordinator.d.ts +42 -0
- package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +5 -1
- package/dist/types/client/events/abprops.d.ts +2 -1
- 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} +4 -3
- package/dist/types/client/events/group.d.ts +2 -1
- package/dist/types/client/events/identity.d.ts +2 -1
- package/dist/types/client/{incoming.d.ts → events/incoming.d.ts} +27 -4
- 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 +4 -3
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/media.d.ts +35 -1
- 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 +12 -1
- package/dist/types/client/persistence/history-sync.d.ts +29 -0
- package/dist/types/client/{mailbox.d.ts → persistence/mailbox.d.ts} +4 -4
- package/dist/types/client/tokens/cs-token.d.ts +1 -3
- package/dist/types/client/types.d.ts +843 -71
- package/dist/types/crypto/core/hkdf.d.ts +10 -2
- package/dist/types/crypto/core/index.d.ts +2 -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 +6 -0
- package/dist/types/crypto/core/xeddsa.d.ts +9 -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 -3
- package/dist/types/crypto/curves/types.d.ts +0 -5
- 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 -6
- package/dist/types/infra/log/ConsoleLogger.d.ts +18 -1
- package/dist/types/infra/log/PinoLogger.d.ts +55 -1
- package/dist/types/infra/log/types.d.ts +6 -0
- package/dist/types/infra/perf/BackgroundQueue.d.ts +19 -0
- package/dist/types/media/constants.d.ts +7 -2
- package/dist/types/media/crypto/WaMediaCrypto.d.ts +59 -0
- package/dist/types/media/index.d.ts +7 -5
- package/dist/types/media/processor.d.ts +27 -5
- package/dist/types/media/sticker/sticker-pack.d.ts +6 -0
- package/dist/types/media/{WaMediaTransferClient.d.ts → transfer/WaMediaTransferClient.d.ts} +30 -1
- package/dist/types/media/transfer/conn.d.ts +7 -0
- package/dist/types/media/types.d.ts +1 -2
- 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/{addon-crypto.d.ts → crypto/addon-crypto.d.ts} +27 -5
- package/dist/types/message/{icdc.d.ts → crypto/icdc.d.ts} +4 -4
- 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 +208 -10
- package/dist/types/mex.d.ts +2 -0
- package/dist/types/proto.d.ts +2 -2
- package/dist/types/protocol/abprops.d.ts +9 -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 +8 -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 +16 -3
- package/dist/types/protocol/defaults.d.ts +3 -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 +78 -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 +20 -0
- package/dist/types/protocol/notification.d.ts +16 -0
- package/dist/types/protocol/presence.d.ts +16 -0
- package/dist/types/protocol/status.d.ts +7 -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 +5 -0
- 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 +10 -0
- package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +9 -0
- 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 -2
- 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 -68
- package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
- package/dist/types/signal/group/SenderKeyManager.d.ts +17 -0
- 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 +5 -0
- package/dist/types/signal/session/SignalProtocol.d.ts +55 -0
- package/dist/types/signal/session/SignalRatchet.d.ts +2 -3
- 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 +14 -0
- 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/message.store.d.ts +0 -2
- package/dist/types/store/createStore.d.ts +54 -2
- package/dist/types/store/index.d.ts +17 -16
- package/dist/types/store/locks/group-metadata.lock.d.ts +2 -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/{providers/memory → memory}/identity.store.d.ts +2 -2
- package/dist/types/store/{providers/memory → memory}/message-secret.store.d.ts +12 -2
- package/dist/types/store/{providers/memory → memory}/message.store.d.ts +1 -1
- package/dist/types/store/{providers/memory → memory}/pre-key.store.d.ts +2 -2
- 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 +16 -3
- package/dist/types/store/{providers/memory → memory}/sender-key.store.d.ts +2 -2
- package/dist/types/store/{providers/memory → memory}/session.store.d.ts +2 -2
- package/dist/types/store/{providers/memory → memory}/signal.store.d.ts +2 -2
- package/dist/types/store/{providers/memory → memory}/thread.store.d.ts +1 -1
- package/dist/types/store/noop.store.d.ts +2 -2
- package/dist/types/store/types.d.ts +250 -6
- package/dist/types/transport/WaComms.d.ts +5 -0
- package/dist/types/transport/WaWebSocket.d.ts +5 -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 +3 -1
- package/dist/types/transport/keepalive/WaKeepAlive.d.ts +7 -0
- package/dist/types/transport/node/WaMobileTcpSocket.d.ts +6 -0
- package/dist/types/transport/node/WaNodeOrchestrator.d.ts +5 -0
- package/dist/types/transport/node/WaNodeTransport.d.ts +13 -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/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/passive.d.ts +3 -0
- package/dist/types/transport/node/builders/presence.d.ts +8 -1
- 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 +1 -2
- package/dist/types/transport/node/mex/client.d.ts +12 -1
- 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 +5 -0
- package/dist/types/transport/noise/WaNoiseCert.d.ts +5 -0
- package/dist/types/transport/noise/WaNoiseHandshake.d.ts +12 -6
- package/dist/types/transport/noise/WaNoiseSession.d.ts +0 -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 +14 -7
- 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 +32 -8
- 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/client/events/chat.js +0 -227
- package/dist/client/incoming.js +0 -306
- package/dist/client/mailbox.js +0 -66
- package/dist/client/messages.js +0 -305
- package/dist/esm/client/events/chat.js +0 -224
- package/dist/esm/client/incoming.js +0 -296
- package/dist/esm/client/mailbox.js +0 -63
- package/dist/esm/client/messages.js +0 -301
- package/dist/esm/media/WaMediaCrypto.js +0 -499
- package/dist/esm/message/phash.js +0 -47
- 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 -67
- package/dist/esm/transport/node/mex/persist-ids.js +0 -10
- package/dist/media/WaMediaCrypto.js +0 -503
- package/dist/message/phash.js +0 -50
- 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 -71
- package/dist/transport/node/mex/persist-ids.js +0 -13
- package/dist/types/appstate/WaAppStateSyncClient.d.ts +0 -70
- package/dist/types/client/events/chat.d.ts +0 -3
- package/dist/types/client/history-sync.d.ts +0 -20
- package/dist/types/client/messages.d.ts +0 -18
- package/dist/types/client/messaging/participants.d.ts +0 -13
- package/dist/types/media/WaMediaCrypto.d.ts +0 -22
- package/dist/types/media/conn.d.ts +0 -3
- package/dist/types/message/content.d.ts +0 -14
- package/dist/types/message/incoming.d.ts +0 -18
- package/dist/types/signal/crypto/constants.d.ts +0 -4
- 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/transport/node/mex/persist-ids.d.ts +0 -14
- 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/esm/signal/{crypto → attestation}/constants.js +0 -0
- /package/dist/esm/store/{providers/memory → memory}/signal.store.js +0 -0
- /package/dist/message/{device-sent.js → encode/device-sent.js} +0 -0
- /package/dist/signal/{crypto → attestation}/constants.js +0 -0
- /package/dist/store/{providers/memory → memory}/signal.store.js +0 -0
- /package/dist/types/message/{padding.d.ts → encode/padding.d.ts} +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
import type { WaMessageDispatchCoordinator } from '../coordinators/WaMessageDispatchCoordinator';
|
|
3
|
+
import type { WaTrustedContactTokenCoordinator } from '../coordinators/WaTrustedContactTokenCoordinator';
|
|
4
|
+
import type { WaDownloadMediaOptions, WaIncomingAddonEvent, WaIncomingMessageEvent, WaSendMessageOptions } from '../types';
|
|
5
|
+
import type { Logger } from '../../infra/log/types';
|
|
6
|
+
import type { WaMediaTransferClient } from '../../media/transfer/WaMediaTransferClient';
|
|
7
|
+
import type { PeerDataOperationRequester } from '../../message/primitives/peer-data-operation';
|
|
8
|
+
import type { WaMessagePublishResult, WaSendMessageContent, WaSendReceiptEventOptions, WaSendReceiptOptions } from '../../message/types';
|
|
9
|
+
import { type Proto } from '../..';
|
|
10
|
+
import type { WaMessageSecretStore } from '../../store/contracts/message-secret.store';
|
|
11
|
+
import type { WaMessageStore } from '../../store/contracts/message.store';
|
|
12
|
+
import { type WaMexQuerySocket } from '../../transport/node/mex/client';
|
|
13
|
+
export interface WaMessageCoordinatorDeps {
|
|
14
|
+
readonly messageDispatch: WaMessageDispatchCoordinator;
|
|
15
|
+
readonly mediaTransfer: WaMediaTransferClient;
|
|
16
|
+
readonly logger: Logger;
|
|
17
|
+
readonly messageStore: WaMessageStore;
|
|
18
|
+
readonly messageSecretStore: WaMessageSecretStore;
|
|
19
|
+
readonly trustedContactToken: WaTrustedContactTokenCoordinator;
|
|
20
|
+
readonly emitAddon: (event: WaIncomingAddonEvent) => void;
|
|
21
|
+
readonly mexSocket: WaMexQuerySocket;
|
|
22
|
+
readonly peerDataOperation: PeerDataOperationRequester;
|
|
23
|
+
}
|
|
24
|
+
export interface WaRequestHistorySyncInput {
|
|
25
|
+
/** Chat the older messages should be fetched from. */
|
|
26
|
+
readonly chatJid: string;
|
|
27
|
+
/**
|
|
28
|
+
* Id of the oldest message currently in the local view. The server
|
|
29
|
+
* pages backwards from this anchor. Omit to let the server pick its
|
|
30
|
+
* own anchor (rarely useful).
|
|
31
|
+
*/
|
|
32
|
+
readonly oldestMsgId?: string;
|
|
33
|
+
/** Whether {@link oldestMsgId} was sent by the current account. */
|
|
34
|
+
readonly oldestMsgFromMe?: boolean;
|
|
35
|
+
/** Epoch ms of the oldest local message; pairs with {@link oldestMsgId}. */
|
|
36
|
+
readonly oldestMsgTimestampMs?: number;
|
|
37
|
+
/**
|
|
38
|
+
* How many older messages to request. WhatsApp Web defaults to the
|
|
39
|
+
* server-side `history_sync_on_demand_message_count` AB-prop (~50);
|
|
40
|
+
* passing nothing here leaves the field unset so the server applies
|
|
41
|
+
* its own default.
|
|
42
|
+
*/
|
|
43
|
+
readonly count?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface WaReachoutTimelock {
|
|
46
|
+
readonly isActive: boolean;
|
|
47
|
+
readonly enforcementType: string | null;
|
|
48
|
+
readonly enforcementEndsAt: number | null;
|
|
49
|
+
}
|
|
50
|
+
export type WaMessageCappingType = 'INDIVIDUAL_NEW_CHAT_THREAD';
|
|
51
|
+
export interface WaMessageCappingInfo {
|
|
52
|
+
readonly totalQuota: number | null;
|
|
53
|
+
readonly usedQuota: number | null;
|
|
54
|
+
readonly cycleStartAt: number | null;
|
|
55
|
+
readonly cycleEndAt: number | null;
|
|
56
|
+
readonly serverSentAt: number | null;
|
|
57
|
+
readonly oteStatus: string | null;
|
|
58
|
+
readonly mvStatus: string | null;
|
|
59
|
+
readonly cappingStatus: string | null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Coordinates outbound message sending, receipts, addon decryption, media
|
|
63
|
+
* download, and the related MEX account queries. Accessed via
|
|
64
|
+
* {@link WaClient.message}.
|
|
65
|
+
*/
|
|
66
|
+
export declare class WaMessageCoordinator {
|
|
67
|
+
private readonly messageDispatch;
|
|
68
|
+
private readonly mediaTransfer;
|
|
69
|
+
private readonly logger;
|
|
70
|
+
private readonly messageStore;
|
|
71
|
+
private readonly messageSecretStore;
|
|
72
|
+
private readonly trustedContactToken;
|
|
73
|
+
private readonly emitAddon;
|
|
74
|
+
private readonly mexSocket;
|
|
75
|
+
private readonly peerDataOperation;
|
|
76
|
+
constructor(deps: WaMessageCoordinatorDeps);
|
|
77
|
+
/**
|
|
78
|
+
* Asks the server to backfill older messages for `chatJid` beyond what
|
|
79
|
+
* arrived in the initial history-sync. Implemented as a
|
|
80
|
+
* `PeerDataOperationRequestMessage` (type `HISTORY_SYNC_ON_DEMAND`)
|
|
81
|
+
* sent to this account's own user JID; the response arrives later as
|
|
82
|
+
* a `history_sync_chunk` event the same way the bootstrap chunks do -
|
|
83
|
+
* subscribe before calling if you need to react to the chunk.
|
|
84
|
+
*
|
|
85
|
+
* The method returns once the request is dispatched (with the protocol
|
|
86
|
+
* message id), **not** when the chunk arrives. Pair `oldestMsgId` +
|
|
87
|
+
* `oldestMsgTimestampMs` + `oldestMsgFromMe` from the topmost message
|
|
88
|
+
* currently visible to page backwards correctly.
|
|
89
|
+
*/
|
|
90
|
+
requestHistorySync(input: WaRequestHistorySyncInput): Promise<{
|
|
91
|
+
readonly messageId: string;
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* Fetches the server-side "reachout" timelock that throttles cold outreach
|
|
95
|
+
* to non-contacts, returning the active window when enforcement is on.
|
|
96
|
+
*/
|
|
97
|
+
getReachoutTimelock(): Promise<WaReachoutTimelock>;
|
|
98
|
+
/**
|
|
99
|
+
* Fetches the per-cycle message capping info applied to new-chat threads
|
|
100
|
+
* (quota, used, cycle boundaries, status flags).
|
|
101
|
+
*/
|
|
102
|
+
getNewChatMessageCapping(type?: WaMessageCappingType): Promise<WaMessageCappingInfo>;
|
|
103
|
+
/**
|
|
104
|
+
* Force-refreshes the Signal session(s) for `jid`. Set `reasonIdentity` to
|
|
105
|
+
* `true` when the trigger was an identity change – this also queues a
|
|
106
|
+
* trusted-contact-token reissue.
|
|
107
|
+
*/
|
|
108
|
+
syncSignalSession(jid: string, reasonIdentity?: boolean): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Sends a message (any {@link WaSendMessageContent} kind – text, media,
|
|
111
|
+
* poll, reaction, edit, revoke, etc.) to `to` and returns the publish
|
|
112
|
+
* result containing the stanza id and ack metadata.
|
|
113
|
+
*
|
|
114
|
+
* `to` accepts any JID accepted by {@link normalizeRecipientJid}: bare
|
|
115
|
+
* digits (`'5511999999999'`), a phone JID (`'5511…@s.whatsapp.net'`),
|
|
116
|
+
* a group JID (`'…@g.us'`), or a LID. See the {@link WaSendMessageContent}
|
|
117
|
+
* union for the full kind list.
|
|
118
|
+
*
|
|
119
|
+
* **Gotchas:**
|
|
120
|
+
* - The stanza id is auto-generated unless you set `options.id`. Reusing
|
|
121
|
+
* an id manually makes the send idempotent on the server but is also how
|
|
122
|
+
* internal retries (`maxAttempts`) work – don't reuse ids across
|
|
123
|
+
* logically distinct messages.
|
|
124
|
+
* - Sending to a `@newsletter` JID routes through a separate code path
|
|
125
|
+
* that ignores most of `options` (no quote/forward/edit semantics).
|
|
126
|
+
* - Addon-crypto kinds (poll-vote, reaction, message-edit, ...) require an
|
|
127
|
+
* authenticated session (`meJid` present) – throws otherwise.
|
|
128
|
+
* - Group sends fan out to every cached member device. If your
|
|
129
|
+
* `groupMetadata` cache is empty/disabled, this triggers a metadata IQ
|
|
130
|
+
* per send (rate-limited server-side, see {@link WaCreateStoreOptions}).
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* // 1. Plain text (string shorthand)
|
|
135
|
+
* await client.message.send('5511999999999', 'hello!')
|
|
136
|
+
*
|
|
137
|
+
* // 2. Reply with mention
|
|
138
|
+
* await client.message.send(groupJid, {
|
|
139
|
+
* type: 'text',
|
|
140
|
+
* text: '@5511999999999 ping',
|
|
141
|
+
* contextInfo: {
|
|
142
|
+
* mentionedJid: ['5511999999999@s.whatsapp.net'],
|
|
143
|
+
* quoted: { key: { remoteJid: groupJid, fromMe: false, id: incomingId } }
|
|
144
|
+
* }
|
|
145
|
+
* })
|
|
146
|
+
*
|
|
147
|
+
* // 3. Image from a file path (the encoder opens + streams it for you)
|
|
148
|
+
* await client.message.send(jid, {
|
|
149
|
+
* type: 'image',
|
|
150
|
+
* media: '/tmp/photo.jpg',
|
|
151
|
+
* mimetype: 'image/jpeg',
|
|
152
|
+
* caption: 'check this out'
|
|
153
|
+
* })
|
|
154
|
+
*
|
|
155
|
+
* // 4. React to an incoming message (empty emoji = unreact)
|
|
156
|
+
* await client.message.send(event.key.remoteJid, {
|
|
157
|
+
* type: 'reaction',
|
|
158
|
+
* emoji: '👍',
|
|
159
|
+
* target: event.key // or pass the whole event
|
|
160
|
+
* })
|
|
161
|
+
*
|
|
162
|
+
* // 5. Poll
|
|
163
|
+
* const result = await client.message.send(jid, {
|
|
164
|
+
* type: 'poll',
|
|
165
|
+
* name: 'lunch?',
|
|
166
|
+
* options: ['pizza', 'sushi', 'burger'],
|
|
167
|
+
* selectableCount: 1
|
|
168
|
+
* })
|
|
169
|
+
* console.log('sent as', result.id)
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
send(to: string, content: WaSendMessageContent, options?: WaSendMessageOptions): Promise<WaMessagePublishResult>;
|
|
173
|
+
/**
|
|
174
|
+
* Sends a receipt (delivery / read / played / inactive). Overloads:
|
|
175
|
+
* - Pass one or many `WaIncomingMessageEvent` to auto-derive chat/sender
|
|
176
|
+
* metadata and batch ids by chat.
|
|
177
|
+
* - Pass an explicit `(jid, ids, options)` triple for manual control.
|
|
178
|
+
*
|
|
179
|
+
* **You usually don't need to call this for `'delivery'`** - the library
|
|
180
|
+
* already auto-ACKs delivery on every incoming `<message>` it decrypts
|
|
181
|
+
* successfully. Use this manually for `'read'`/`'played'` (read receipts
|
|
182
|
+
* the user explicitly toggled) or for `'inactive'`/retry receipts.
|
|
183
|
+
*/
|
|
184
|
+
sendReceipt(target: WaIncomingMessageEvent | readonly WaIncomingMessageEvent[], options?: WaSendReceiptEventOptions): Promise<void>;
|
|
185
|
+
sendReceipt(jid: string, ids: string | readonly string[], options?: WaSendReceiptOptions): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* Resolves the media payload inside `source` and returns a `Readable`
|
|
188
|
+
* stream of the decrypted bytes. Throws when the message has no
|
|
189
|
+
* downloadable media.
|
|
190
|
+
*
|
|
191
|
+
* **Caller owns the stream** - pipe it somewhere or call `.destroy()` to
|
|
192
|
+
* release the underlying socket; an unconsumed stream leaks the connection.
|
|
193
|
+
* MAC + SHA-256 verification runs **as bytes are consumed**, so if you
|
|
194
|
+
* abort mid-read you've consumed unverified bytes. Pass `options.signal`
|
|
195
|
+
* to cancel cleanly, or use {@link downloadBytes} / {@link downloadToFile}
|
|
196
|
+
* for one-shot verified downloads.
|
|
197
|
+
*/
|
|
198
|
+
download(source: WaIncomingMessageEvent | Proto.IMessage, options?: WaDownloadMediaOptions): Promise<Readable>;
|
|
199
|
+
/**
|
|
200
|
+
* Convenience wrapper around {@link download} that streams the decrypted
|
|
201
|
+
* media directly to `filePath`. On failure the **partial file is not
|
|
202
|
+
* cleaned up** - delete it yourself in the error handler if you don't
|
|
203
|
+
* want to leak corrupted artifacts.
|
|
204
|
+
*/
|
|
205
|
+
downloadToFile(source: WaIncomingMessageEvent | Proto.IMessage, filePath: string, options?: WaDownloadMediaOptions): Promise<void>;
|
|
206
|
+
/**
|
|
207
|
+
* Convenience wrapper around {@link download} that buffers the decrypted
|
|
208
|
+
* media into a single `Uint8Array`. Use only for small media – caps via
|
|
209
|
+
* `options.maxBytes`.
|
|
210
|
+
*/
|
|
211
|
+
downloadBytes(source: WaIncomingMessageEvent | Proto.IMessage, options?: WaDownloadMediaOptions): Promise<Uint8Array>;
|
|
212
|
+
/**
|
|
213
|
+
* Attempts to decrypt an addon payload (poll vote, reaction, edit, ...)
|
|
214
|
+
* attached to `event` and, on success, emits a typed
|
|
215
|
+
* `WaIncomingAddonEvent`. Silently returns when the parent message
|
|
216
|
+
* secret is missing or the payload is not an addon.
|
|
217
|
+
*
|
|
218
|
+
* Called automatically by the client unless `options.addons.autoDecrypt`
|
|
219
|
+
* is explicitly `false` - you rarely need to invoke it directly. The
|
|
220
|
+
* parent secret is looked up in the in-memory `messageSecret` cache
|
|
221
|
+
* first, then in the `messages` store. If both are `'none'`/missing,
|
|
222
|
+
* decryption fails and the event never fires; failures are logged at
|
|
223
|
+
* `warn` for `secretEncryptedMessage` addons (whose parent can be
|
|
224
|
+
* any message type, so the secret is only available when the
|
|
225
|
+
* `messages` mailbox is active) and at `debug` for the dedicated
|
|
226
|
+
* addon types (reactions, poll votes, event responses, comments)
|
|
227
|
+
* whose parent always carries a persisted secret or is itself
|
|
228
|
+
* short-lived.
|
|
229
|
+
*/
|
|
230
|
+
tryDecryptAddon(event: WaIncomingMessageEvent): Promise<void>;
|
|
231
|
+
private dispatchReceipt;
|
|
232
|
+
}
|
|
@@ -1,69 +1,62 @@
|
|
|
1
1
|
import type { WaAppStateSyncKey } from '../../appstate/types';
|
|
2
|
+
import type { WaAuthCredentials } from '../../auth/types';
|
|
2
3
|
import type { DeviceFanoutResolver } from '../messaging/fanout';
|
|
4
|
+
import type { GroupMetadataCache } from '../messaging/group-metadata';
|
|
3
5
|
import type { AppStateSyncKeyProtocol } from '../messaging/key-protocol';
|
|
4
|
-
import type { GroupParticipantsCache } from '../messaging/participants';
|
|
5
6
|
import type { WaGroupEvent, WaSendMessageOptions, WaSignalMessagePublishInput } from '../types';
|
|
6
7
|
import type { Logger } from '../../infra/log/types';
|
|
7
|
-
import
|
|
8
|
+
import { type WaSendContextInfo } from '../../message/context-info';
|
|
9
|
+
import { type IcdcMeta } from '../../message/crypto/icdc';
|
|
10
|
+
import type { WaEncryptedMessageInput, WaMessageBuildResult, WaMessagePublishOptions, WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../../message/types';
|
|
8
11
|
import type { WaMessageClient } from '../../message/WaMessageClient';
|
|
9
12
|
import { type Proto } from '../..';
|
|
13
|
+
import { type WaStatusDistributionSetting } from '../../protocol/constants';
|
|
10
14
|
import type { OutboundRetryTracker } from '../../retry/tracker';
|
|
15
|
+
import type { SignalDeviceSyncApi } from '../../signal/api/SignalDeviceSyncApi';
|
|
11
16
|
import type { SenderKeyManager } from '../../signal/group/SenderKeyManager';
|
|
12
17
|
import type { SignalSessionResolver } from '../../signal/session/resolver';
|
|
13
18
|
import type { SignalProtocol } from '../../signal/session/SignalProtocol';
|
|
19
|
+
import type { SignalAddress } from '../../signal/types';
|
|
14
20
|
import type { WaDeviceListStore } from '../../store/contracts/device-list.store';
|
|
15
21
|
import type { WaIdentityStore } from '../../store/contracts/identity.store';
|
|
16
22
|
import type { WaMessageSecretStore } from '../../store/contracts/message-secret.store';
|
|
17
23
|
import type { WaSessionStore } from '../../store/contracts/session.store';
|
|
18
24
|
import type { WaSignalStore } from '../../store/contracts/signal.store';
|
|
19
25
|
import type { BinaryNode } from '../../transport/types';
|
|
26
|
+
import type { ServerClock } from '../../util/clock';
|
|
20
27
|
interface WaMessageDispatchCoordinatorOptions {
|
|
21
28
|
readonly logger: Logger;
|
|
22
29
|
readonly messageClient: WaMessageClient;
|
|
23
30
|
readonly retryTracker: OutboundRetryTracker;
|
|
24
31
|
readonly sessionResolver: SignalSessionResolver;
|
|
25
32
|
readonly fanoutResolver: DeviceFanoutResolver;
|
|
26
|
-
readonly
|
|
33
|
+
readonly groupMetadataCache: GroupMetadataCache;
|
|
27
34
|
readonly appStateSyncKeyProtocol: AppStateSyncKeyProtocol;
|
|
28
|
-
readonly buildMessageContent: (content: WaSendMessageContent
|
|
35
|
+
readonly buildMessageContent: (content: WaSendMessageContent, ctx?: {
|
|
36
|
+
readonly to: string;
|
|
37
|
+
readonly outgoingStanzaId?: string;
|
|
38
|
+
readonly meJid?: string;
|
|
39
|
+
}) => Promise<WaMessageBuildResult>;
|
|
29
40
|
readonly senderKeyManager: SenderKeyManager;
|
|
30
41
|
readonly signalProtocol: SignalProtocol;
|
|
31
42
|
readonly signalStore: WaSignalStore;
|
|
32
43
|
readonly sessionStore: WaSessionStore;
|
|
33
44
|
readonly identityStore: WaIdentityStore;
|
|
34
45
|
readonly deviceListStore: WaDeviceListStore;
|
|
46
|
+
readonly signalDeviceSync: SignalDeviceSyncApi;
|
|
35
47
|
readonly messageSecretStore: WaMessageSecretStore;
|
|
36
|
-
readonly
|
|
37
|
-
readonly getCurrentMeLid: () => string | null | undefined;
|
|
38
|
-
readonly getCurrentSignedIdentity: () => Proto.IADVSignedDeviceIdentity | null | undefined;
|
|
48
|
+
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
39
49
|
readonly resolvePrivacyTokenNode: (recipientJid: string) => Promise<BinaryNode | null>;
|
|
40
50
|
readonly onDirectMessageSent: (recipientJid: string) => void;
|
|
51
|
+
readonly sendNewsletterMessage?: (newsletterJid: string, content: WaSendMessageContent, options: WaSendMessageOptions, contextInfo: WaSendContextInfo | null) => Promise<WaMessagePublishResult>;
|
|
41
52
|
readonly getIcdcHashLength?: () => number;
|
|
42
53
|
readonly mobileMessageIdFormat?: boolean;
|
|
54
|
+
readonly serverClock: ServerClock;
|
|
43
55
|
}
|
|
44
56
|
export declare class WaMessageDispatchCoordinator {
|
|
45
|
-
private readonly
|
|
46
|
-
private readonly messageClient;
|
|
47
|
-
private readonly retryTracker;
|
|
48
|
-
private readonly sessionResolver;
|
|
49
|
-
private readonly fanoutResolver;
|
|
50
|
-
private readonly participantsCache;
|
|
51
|
-
private readonly appStateSyncKeyProtocol;
|
|
52
|
-
private readonly buildMessageContent;
|
|
53
|
-
private readonly senderKeyManager;
|
|
54
|
-
private readonly signalProtocol;
|
|
55
|
-
private readonly signalStore;
|
|
56
|
-
private readonly sessionStore;
|
|
57
|
-
private readonly identityStore;
|
|
58
|
-
private readonly deviceListStore;
|
|
59
|
-
private readonly messageSecretStore;
|
|
60
|
-
private readonly getCurrentMeJid;
|
|
61
|
-
private readonly getCurrentMeLid;
|
|
62
|
-
private readonly getCurrentSignedIdentity;
|
|
63
|
-
private readonly resolvePrivacyTokenNode;
|
|
64
|
-
private readonly onDirectMessageSent;
|
|
65
|
-
private readonly getIcdcHashLength;
|
|
57
|
+
private readonly deps;
|
|
66
58
|
private readonly mobileMessageIdFormat;
|
|
59
|
+
private readonly serverClock;
|
|
67
60
|
private readonly icdcDedup;
|
|
68
61
|
private readonly privacyTokenDedup;
|
|
69
62
|
private readonly distributionDedup;
|
|
@@ -72,23 +65,53 @@ export declare class WaMessageDispatchCoordinator {
|
|
|
72
65
|
publishEncryptedMessage(input: WaEncryptedMessageInput, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
|
|
73
66
|
publishSignalMessage(input: WaSignalMessagePublishInput, options?: WaMessagePublishOptions): Promise<WaMessagePublishResult>;
|
|
74
67
|
sendMessage(to: string, content: WaSendMessageContent, options?: WaSendMessageOptions): Promise<WaMessagePublishResult>;
|
|
68
|
+
/**
|
|
69
|
+
* For a 1:1 recipient passed in PN form, returns the LID-addressed user JID
|
|
70
|
+
* (cache-first; falls back to a one-shot `queryLidsByPhoneJids`). Switching
|
|
71
|
+
* to LID before fanout ensures the envelope, eligible-requester list, and
|
|
72
|
+
* retry-receipt addressing all agree, which keeps the retry tracker from
|
|
73
|
+
* rejecting receipts that arrive in LID form. Returns the original PN if
|
|
74
|
+
* no LID is known/resolvable. Inputs already in LID form pass through.
|
|
75
|
+
*/
|
|
76
|
+
private resolveDirectRecipientLid;
|
|
75
77
|
syncSignalSession(jid: string, reasonIdentity?: boolean): Promise<void>;
|
|
76
78
|
sendReceipt(input: WaSendReceiptInput): Promise<void>;
|
|
79
|
+
publishProtocolMessageToDevice(deviceJid: string, protocolMessage: Proto.Message.IProtocolMessage, options?: {
|
|
80
|
+
readonly id?: string;
|
|
81
|
+
readonly pushPriority?: 'high' | 'high_force';
|
|
82
|
+
}): Promise<WaMessagePublishResult>;
|
|
83
|
+
publishStatusMessage(input: {
|
|
84
|
+
readonly message: Proto.IMessage;
|
|
85
|
+
readonly recipients: readonly string[];
|
|
86
|
+
readonly statusSetting?: WaStatusDistributionSetting;
|
|
87
|
+
readonly options?: WaSendMessageOptions;
|
|
88
|
+
}): Promise<WaMessagePublishResult>;
|
|
89
|
+
publishBroadcastListMessage(input: {
|
|
90
|
+
readonly listJid: string;
|
|
91
|
+
readonly message: Proto.IMessage;
|
|
92
|
+
readonly recipients: readonly string[];
|
|
93
|
+
readonly options?: WaSendMessageOptions;
|
|
94
|
+
}): Promise<WaMessagePublishResult>;
|
|
95
|
+
private publishSenderKeyFanout;
|
|
77
96
|
requestAppStateSyncKeys(keyIds: readonly Uint8Array[]): Promise<readonly string[]>;
|
|
78
97
|
sendAppStateSyncKeyShare(toDeviceJid: string, keys: readonly WaAppStateSyncKey[], missingKeyIds?: readonly Uint8Array[]): Promise<void>;
|
|
79
|
-
|
|
98
|
+
mutateGroupMetadataCacheFromGroupEvent(event: WaGroupEvent): Promise<void>;
|
|
80
99
|
private shouldUseGroupDirectPath;
|
|
81
100
|
private publishGroupDirectMessage;
|
|
101
|
+
private buildBotSidecarParticipant;
|
|
82
102
|
private publishGroupSenderKeyMessage;
|
|
83
103
|
private resolveGroupAddressingMode;
|
|
84
104
|
private resolveSenderForAddressingMode;
|
|
85
105
|
private encryptGroupDistributionParticipants;
|
|
86
106
|
private publishDirectSignalMessageWithFanout;
|
|
87
107
|
private withResolvedMessageId;
|
|
88
|
-
|
|
108
|
+
generateOutgoingMessageId(): Promise<string>;
|
|
89
109
|
private tryBuildReportingTokenArtifacts;
|
|
90
110
|
private getEncodedSignedDeviceIdentity;
|
|
91
|
-
|
|
111
|
+
resolveUserIcdc(userJid: string, localIdentity?: {
|
|
112
|
+
readonly address: SignalAddress;
|
|
113
|
+
readonly pubKey: Uint8Array;
|
|
114
|
+
}): Promise<IcdcMeta | null>;
|
|
92
115
|
private requireCurrentMeJid;
|
|
93
116
|
}
|
|
94
117
|
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type WaNewsletterAdminOps } from '../newsletter/admin';
|
|
2
|
+
import { type WaNewsletterDiscoveryOps } from '../newsletter/discovery';
|
|
3
|
+
import { type WaNewsletterMessagingDeps, type WaNewsletterMessagingOps } from '../newsletter/messaging';
|
|
4
|
+
export { parseNewsletterMetadata } from '../newsletter/parse';
|
|
5
|
+
export type { WaNewsletterAdminInfo, WaNewsletterAdminInviteInput, WaNewsletterAdminInviteResult, WaNewsletterAdminProfile, WaNewsletterCapabilityExposure, WaNewsletterCreateInput, WaNewsletterDehydratedMetadata, WaNewsletterDirectoryCategoriesPreviewOptions, WaNewsletterDirectoryCategoryPreview, WaNewsletterDirectoryListOptions, WaNewsletterDirectoryResults, WaNewsletterDirectorySearchOptions, WaNewsletterDirectoryView, WaNewsletterFetchOptions, WaNewsletterFollower, WaNewsletterFollowersOptions, WaNewsletterFollowersPage, WaNewsletterInsightMetricRequest, WaNewsletterMetadata, WaNewsletterMuteInput, WaNewsletterPicture, WaNewsletterPollVoter, WaNewsletterReactInput, WaNewsletterReactionSenders, WaNewsletterRecommendedOptions, WaNewsletterRevokeInput, WaNewsletterSendOptions, WaNewsletterSendResult, WaNewsletterSimilarOptions, WaNewsletterUpdateInput, WaNewsletterViewReceiptInput, WaNewsletterVotePollInput, WaPageInfo } from '../newsletter/types';
|
|
6
|
+
/**
|
|
7
|
+
* Newsletter coordinator surface – combines the discovery, admin, and
|
|
8
|
+
* messaging operation sets. Accessed via {@link WaClient.newsletter}.
|
|
9
|
+
*/
|
|
10
|
+
export type WaNewsletterCoordinator = WaNewsletterDiscoveryOps & WaNewsletterAdminOps & WaNewsletterMessagingOps;
|
|
11
|
+
export type WaNewsletterCoordinatorOptions = WaNewsletterMessagingDeps;
|
|
12
|
+
/** Builds a {@link WaNewsletterCoordinator} from its MEX/messaging dependencies. */
|
|
13
|
+
export declare function createNewsletterCoordinator(options: WaNewsletterCoordinatorOptions): WaNewsletterCoordinator;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WaAppStateSyncClient } from '../../appstate/WaAppStateSyncClient';
|
|
1
|
+
import type { WaAppStateSyncClient } from '../../appstate/sync/WaAppStateSyncClient';
|
|
2
2
|
import type { WaAuthCredentials } from '../../auth/types';
|
|
3
3
|
import type { Logger } from '../../infra/log/types';
|
|
4
4
|
import type { SignalDigestSyncApi } from '../../signal/api/SignalDigestSyncApi';
|
|
@@ -13,11 +13,11 @@ type WaPassiveTasksRuntime = {
|
|
|
13
13
|
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
14
14
|
readonly persistServerHasPreKeys: (serverHasPreKeys: boolean) => Promise<void>;
|
|
15
15
|
readonly sendNodeDirect: (node: BinaryNode) => Promise<void>;
|
|
16
|
-
readonly takeDanglingReceipts: () => BinaryNode[];
|
|
16
|
+
readonly takeDanglingReceipts: () => readonly BinaryNode[];
|
|
17
17
|
readonly requeueDanglingReceipt: (node: BinaryNode) => void;
|
|
18
18
|
readonly shouldQueueDanglingReceipt: (node: BinaryNode, error: Error) => boolean;
|
|
19
19
|
readonly syncAbProps: () => void;
|
|
20
|
-
readonly
|
|
20
|
+
readonly sendInitialPresence: () => Promise<void>;
|
|
21
21
|
};
|
|
22
22
|
export declare class WaPassiveTasksCoordinator {
|
|
23
23
|
private readonly logger;
|
|
@@ -48,6 +48,7 @@ export declare class WaPassiveTasksCoordinator {
|
|
|
48
48
|
handleDigestNotification(): Promise<void>;
|
|
49
49
|
resetInFlightState(): void;
|
|
50
50
|
private runPassiveTasksAfterConnect;
|
|
51
|
+
private sendActiveModeIq;
|
|
51
52
|
private validateDigestAndRecoverPreKeys;
|
|
52
53
|
private uploadPreKeysIfMissing;
|
|
53
54
|
private rotateSignedPreKeyIfDue;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { WaAuthCredentials } from '../../auth/types';
|
|
2
|
+
import { type BuildChatstateNodeInput } from '../../transport/node/builders/chatstate';
|
|
3
|
+
import { type BuildPresenceSubscribeNodeInput } from '../../transport/node/builders/presence';
|
|
4
|
+
import type { BinaryNode } from '../../transport/types';
|
|
5
|
+
/**
|
|
6
|
+
* Coordinates own presence broadcasts and peer presence subscriptions.
|
|
7
|
+
* Accessed via {@link WaClient.presence}.
|
|
8
|
+
*/
|
|
9
|
+
export interface WaPresenceCoordinator {
|
|
10
|
+
/** Broadcasts the current account's `available`/`unavailable` presence. */
|
|
11
|
+
readonly send: (type?: 'available' | 'unavailable') => Promise<void>;
|
|
12
|
+
/** Sends a chatstate hint (typing/recording/paused/...) into a specific chat. */
|
|
13
|
+
readonly sendChatstate: (jid: string, options: Omit<BuildChatstateNodeInput, 'jid'>) => Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Subscribes to presence updates (online/offline + chatstate) for a chat.
|
|
16
|
+
* The subscription is per-jid and lives only for the current connection;
|
|
17
|
+
* after a reconnect the caller must re-subscribe to keep receiving events.
|
|
18
|
+
*/
|
|
19
|
+
readonly subscribe: (jid: string, options?: Omit<BuildPresenceSubscribeNodeInput, 'jid'>) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
interface WaPresenceCoordinatorOptions {
|
|
22
|
+
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
23
|
+
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
24
|
+
}
|
|
25
|
+
/** Builds a {@link WaPresenceCoordinator} from its node-send dependency. */
|
|
26
|
+
export declare function createPresenceCoordinator(options: WaPresenceCoordinatorOptions): WaPresenceCoordinator;
|
|
27
|
+
export {};
|
|
@@ -11,16 +11,43 @@ export interface WaBlocklistResult {
|
|
|
11
11
|
readonly jids: readonly string[];
|
|
12
12
|
readonly dhash?: string;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Coordinates privacy queries/mutations: per-category settings, blocklist,
|
|
16
|
+
* and the per-category disallowed lists. Accessed via {@link WaClient.privacy}.
|
|
17
|
+
*/
|
|
14
18
|
export interface WaPrivacyCoordinator {
|
|
19
|
+
/** Fetches the current value of every privacy category. */
|
|
15
20
|
readonly getPrivacySettings: () => Promise<WaPrivacySettings>;
|
|
21
|
+
/**
|
|
22
|
+
* Updates a single privacy category to a new {@link WaPrivacyValue}.
|
|
23
|
+
*
|
|
24
|
+
* The `'contact_blacklist'` value (a deny-list of specific contacts on
|
|
25
|
+
* top of `'contacts'`/`'all'`) only flips the **mode** here - you must
|
|
26
|
+
* separately populate the per-category disallowed list with
|
|
27
|
+
* {@link getDisallowedList} + the corresponding app-state mutation, or
|
|
28
|
+
* the deny-list stays empty.
|
|
29
|
+
*/
|
|
16
30
|
readonly setPrivacySetting: <S extends WaPrivacySettingName>(setting: S, value: WaPrivacySettingValueMap[S]) => Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Fetches the per-category disallowed list (the JIDs explicitly excluded
|
|
33
|
+
* from `contact_blacklist`/`contact_whitelist` style settings).
|
|
34
|
+
*/
|
|
17
35
|
readonly getDisallowedList: (category: WaPrivacyDisallowedListSettingName) => Promise<WaPrivacyDisallowedListResult>;
|
|
36
|
+
/** Returns the current account-wide blocklist. */
|
|
18
37
|
readonly getBlocklist: () => Promise<WaBlocklistResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Blocks `jid` (account-wide blocklist). After this, the peer can no
|
|
40
|
+
* longer message/call you and cannot see your last seen/online/photo/
|
|
41
|
+
* status. The block is symmetric only from the peer's read perspective -
|
|
42
|
+
* they don't get an explicit "you were blocked" notification.
|
|
43
|
+
*/
|
|
19
44
|
readonly blockUser: (jid: string) => Promise<void>;
|
|
45
|
+
/** Removes `jid` from the blocklist. */
|
|
20
46
|
readonly unblockUser: (jid: string) => Promise<void>;
|
|
21
47
|
}
|
|
22
48
|
interface WaPrivacyCoordinatorOptions {
|
|
23
49
|
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
24
50
|
}
|
|
51
|
+
/** Builds a {@link WaPrivacyCoordinator} backed by the given IQ query function. */
|
|
25
52
|
export declare function createPrivacyCoordinator(options: WaPrivacyCoordinatorOptions): WaPrivacyCoordinator;
|
|
26
53
|
export {};
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import type { WaAppStateMutationCoordinator } from '../coordinators/WaAppStateMutationCoordinator';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import type { SignalLidSyncResult } from '../../signal/api/SignalDeviceSyncApi';
|
|
1
4
|
import { type WaProfilePictureType } from '../../transport/node/builders/profile';
|
|
5
|
+
import { type WaMexQuerySocket } from '../../transport/node/mex/client';
|
|
2
6
|
import type { BinaryNode } from '../../transport/types';
|
|
3
7
|
export interface WaProfilePictureResult {
|
|
4
8
|
readonly url?: string;
|
|
@@ -19,20 +23,129 @@ export interface WaDisappearingModeResult {
|
|
|
19
23
|
readonly timestamp: number;
|
|
20
24
|
readonly ephemeralityDisabled?: boolean;
|
|
21
25
|
}
|
|
26
|
+
export interface WaTextStatusResult {
|
|
27
|
+
readonly jid: string;
|
|
28
|
+
readonly text: string | null;
|
|
29
|
+
readonly emoji: string | null;
|
|
30
|
+
readonly ephemeralDurationSec: number | null;
|
|
31
|
+
readonly lastUpdateTime: number | null;
|
|
32
|
+
}
|
|
33
|
+
export interface WaSetTextStatusInput {
|
|
34
|
+
readonly text?: string | null;
|
|
35
|
+
readonly emoji?: string | null;
|
|
36
|
+
readonly ephemeralDurationSec?: number | null;
|
|
37
|
+
}
|
|
38
|
+
export interface WaUsernameResult {
|
|
39
|
+
readonly jid: string;
|
|
40
|
+
readonly username: string | null;
|
|
41
|
+
}
|
|
42
|
+
export interface WaOwnUsernameResult {
|
|
43
|
+
readonly username: string | null;
|
|
44
|
+
readonly state: string | null;
|
|
45
|
+
readonly pin: string | null;
|
|
46
|
+
}
|
|
47
|
+
export interface WaSetUsernameInput {
|
|
48
|
+
readonly username: string;
|
|
49
|
+
readonly reserved?: boolean;
|
|
50
|
+
readonly sessionId?: string;
|
|
51
|
+
readonly source?: 'USER_INPUT';
|
|
52
|
+
}
|
|
53
|
+
export interface WaUsernameAvailabilityResult {
|
|
54
|
+
readonly available: boolean;
|
|
55
|
+
readonly suggestions: readonly string[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Coordinates own/peer profile queries and mutations: picture, status, text
|
|
59
|
+
* status, username, disappearing mode, and LID lookup. Accessed via
|
|
60
|
+
* {@link WaClient.profile}.
|
|
61
|
+
*/
|
|
22
62
|
export interface WaProfileCoordinator {
|
|
63
|
+
/** Fetches a profile picture envelope (URL + direct path + id). */
|
|
23
64
|
readonly getProfilePicture: (jid: string, type?: WaProfilePictureType, existingId?: string) => Promise<WaProfilePictureResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Sets the profile picture for the current account or `targetJid`
|
|
67
|
+
* (group/community admin operation when set). `imageBytes` is uploaded
|
|
68
|
+
* **as-is** - the library does not transcode, resize, or crop, so pass
|
|
69
|
+
* pre-encoded JPEG bytes shaped to WhatsApp's expected picture format
|
|
70
|
+
* (square, JPEG, reasonable resolution). Returns the server-side
|
|
71
|
+
* picture id on success.
|
|
72
|
+
*/
|
|
24
73
|
readonly setProfilePicture: (imageBytes: Uint8Array, targetJid?: string) => Promise<string | null>;
|
|
74
|
+
/** Deletes the profile picture for the current account or `targetJid` (admin op for groups/communities). */
|
|
25
75
|
readonly deleteProfilePicture: (targetJid?: string) => Promise<void>;
|
|
76
|
+
/** Fetches the legacy "About" status for a single JID. */
|
|
26
77
|
readonly getStatus: (jid: string) => Promise<WaProfileStatusResult>;
|
|
78
|
+
/** Sets the current account's legacy "About" status. */
|
|
27
79
|
readonly setStatus: (text: string) => Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Sets the account's pushName - the display name broadcast to other
|
|
82
|
+
* users in chats and group participant lists. WhatsApp Web applies the
|
|
83
|
+
* change via a `SettingPushName` app-state mutation (collection
|
|
84
|
+
* `critical_block`); the new value reaches peers as their next
|
|
85
|
+
* incoming-message envelope from this account carries the updated
|
|
86
|
+
* `notify` attr. Empty strings are accepted but reset the display name
|
|
87
|
+
* to the device fingerprint default.
|
|
88
|
+
*/
|
|
89
|
+
readonly setPushName: (name: string) => Promise<void>;
|
|
90
|
+
/** Batched usync fetch of picture id + status for many JIDs. */
|
|
28
91
|
readonly getProfiles: (jids: readonly string[]) => Promise<readonly WaProfileInfo[]>;
|
|
92
|
+
/** Batched fetch of the disappearing-mode setting per JID. */
|
|
29
93
|
readonly getDisappearingMode: (jids: readonly string[]) => Promise<readonly WaDisappearingModeResult[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Sets the account-wide default disappearing-mode duration applied to
|
|
96
|
+
* **new** 1:1 chats started by this account. `durationSeconds` is the
|
|
97
|
+
* ephemeral message lifetime (`0` disables, `86400` = 24h, `604800` =
|
|
98
|
+
* 7d, `7776000` = 90d). Existing chats keep their per-chat setting -
|
|
99
|
+
* change that with a system `disappearing_mode` message instead.
|
|
100
|
+
*/
|
|
101
|
+
readonly setDisappearingMode: (durationSeconds: number) => Promise<void>;
|
|
102
|
+
/** Batched fetch of the modern text-status (emoji + text) per JID. */
|
|
103
|
+
readonly getTextStatuses: (jids: readonly string[]) => Promise<readonly WaTextStatusResult[]>;
|
|
104
|
+
/**
|
|
105
|
+
* Updates the current account's text status (the modern "About" emoji +
|
|
106
|
+
* text shown in chat). Passing `text: null` (or `''`) **clears** the
|
|
107
|
+
* status; passing `ephemeralDurationSec` without `text` and `emoji` is
|
|
108
|
+
* silently coerced back to `0` (server rejects expiring empty statuses).
|
|
109
|
+
*/
|
|
110
|
+
readonly setTextStatus: (input: WaSetTextStatusInput) => Promise<void>;
|
|
111
|
+
/** Batched fetch of username per JID. */
|
|
112
|
+
readonly getUsernames: (jids: readonly string[]) => Promise<readonly WaUsernameResult[]>;
|
|
113
|
+
/** Fetches the current account's username record (value, state, recovery pin). */
|
|
114
|
+
readonly getOwnUsername: () => Promise<WaOwnUsernameResult>;
|
|
115
|
+
/**
|
|
116
|
+
* Reserves/sets a username on the current account. Returns `true` only
|
|
117
|
+
* when the server reports `'SUCCESS'`; on any other outcome (taken,
|
|
118
|
+
* invalid, rate-limited) it returns `false` without throwing - check the
|
|
119
|
+
* value and consult {@link checkUsernameAvailability} for suggestions.
|
|
120
|
+
*/
|
|
121
|
+
readonly setUsername: (input: WaSetUsernameInput) => Promise<boolean>;
|
|
122
|
+
/** Deletes the current account's username. Returns `true` on success. */
|
|
123
|
+
readonly deleteUsername: () => Promise<boolean>;
|
|
124
|
+
/** Fetches the "About" text for a single JID via MEX. */
|
|
125
|
+
readonly getAboutStatus: (jid: string) => Promise<string | null>;
|
|
126
|
+
/** Checks whether a username is available and returns server suggestions. */
|
|
127
|
+
readonly checkUsernameAvailability: (username: string) => Promise<WaUsernameAvailabilityResult>;
|
|
128
|
+
/** Sets the username recovery PIN. Returns `true` on success. */
|
|
129
|
+
readonly setUsernameKey: (pin: string) => Promise<boolean>;
|
|
130
|
+
/** Resolves LIDs for a list of phone numbers (handles normalization). */
|
|
131
|
+
readonly getLidsByPhoneNumbers: (phoneNumbers: readonly string[]) => Promise<readonly SignalLidSyncResult[]>;
|
|
30
132
|
}
|
|
31
133
|
interface WaProfileCoordinatorOptions {
|
|
32
134
|
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>, options?: {
|
|
33
135
|
readonly useSystemId?: boolean;
|
|
34
136
|
}) => Promise<BinaryNode>;
|
|
35
137
|
readonly generateSid: () => Promise<string>;
|
|
138
|
+
readonly mexSocket: WaMexQuerySocket;
|
|
139
|
+
readonly queryLidsByPhoneJids: (phoneJids: readonly string[]) => Promise<readonly SignalLidSyncResult[]>;
|
|
140
|
+
/**
|
|
141
|
+
* App-state mutation coordinator. {@link WaProfileCoordinator.setPushName}
|
|
142
|
+
* routes through `mutations.set({ schema: 'SettingPushName', ... })` so
|
|
143
|
+
* the pushName change shares the same flush pipeline as other queued
|
|
144
|
+
* mutations.
|
|
145
|
+
*/
|
|
146
|
+
readonly mutations: WaAppStateMutationCoordinator;
|
|
147
|
+
readonly logger: Logger;
|
|
36
148
|
}
|
|
149
|
+
/** Builds a {@link WaProfileCoordinator} from its IQ/MEX/SID dependencies. */
|
|
37
150
|
export declare function createProfileCoordinator(options: WaProfileCoordinatorOptions): WaProfileCoordinator;
|
|
38
151
|
export {};
|