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,37 +1,248 @@
|
|
|
1
|
+
import type { WaAppStateSyncClient } from '../../appstate/sync/WaAppStateSyncClient';
|
|
1
2
|
import type { WaAppStateSyncOptions, WaAppStateSyncResult } from '../../appstate/types';
|
|
2
|
-
import
|
|
3
|
+
import { type DataForKey, type WaAppstateActionKey, type WaAppstateIndexArgs } from '../..';
|
|
4
|
+
import type { WaAppStateMessageKey, WaAppStateMutationEvent, WaClearChatOptions, WaDeleteChatOptions, WaDeleteMessageForMeOptions } from '../types';
|
|
3
5
|
import type { Logger } from '../../infra/log/types';
|
|
6
|
+
import type { WaMediaTransferClient } from '../../media/transfer/WaMediaTransferClient';
|
|
7
|
+
import { proto, type Proto } from '../..';
|
|
8
|
+
import type { WaStoredContactRecord } from '../../store/contracts/contact.store';
|
|
4
9
|
import type { WaMessageStore } from '../../store/contracts/message.store';
|
|
10
|
+
import type { ServerClock } from '../../util/clock';
|
|
11
|
+
type StatusDistributionMode = Proto.SyncActionValue.StatusPrivacyAction.StatusDistributionMode;
|
|
12
|
+
type StatusDistributionModeKey = keyof typeof proto.SyncActionValue.StatusPrivacyAction.StatusDistributionMode;
|
|
13
|
+
type SetMutationInputFor<K extends WaAppstateActionKey> = K extends K ? {
|
|
14
|
+
readonly schema: K;
|
|
15
|
+
} & WaAppstateIndexArgs<K> & Partial<DataForKey<K>> : never;
|
|
16
|
+
type RemoveMutationInputFor<K extends WaAppstateActionKey> = K extends K ? {
|
|
17
|
+
readonly schema: K;
|
|
18
|
+
} & WaAppstateIndexArgs<K> : never;
|
|
19
|
+
export interface WaSetMutationInputMap {
|
|
20
|
+
readonly _: SetMutationInputFor<WaAppstateActionKey>;
|
|
21
|
+
}
|
|
22
|
+
export interface WaRemoveMutationInputMap {
|
|
23
|
+
readonly _: RemoveMutationInputFor<WaAppstateActionKey>;
|
|
24
|
+
}
|
|
25
|
+
export type WaSetMutationInput = WaSetMutationInputMap['_'];
|
|
26
|
+
export type WaRemoveMutationInput = WaRemoveMutationInputMap['_'];
|
|
5
27
|
interface WaAppStateMutationCoordinatorOptions {
|
|
6
28
|
readonly logger: Logger;
|
|
7
29
|
readonly messageStore: WaMessageStore;
|
|
8
|
-
readonly
|
|
30
|
+
readonly appStateSync: WaAppStateSyncClient;
|
|
31
|
+
readonly mediaTransfer: WaMediaTransferClient;
|
|
32
|
+
readonly isConnected: () => boolean;
|
|
33
|
+
readonly serverClock: ServerClock;
|
|
9
34
|
readonly archiveRangeLimit?: number;
|
|
35
|
+
readonly emitMutation?: (event: WaAppStateMutationEvent) => void;
|
|
36
|
+
readonly emitSnapshotMutations?: boolean;
|
|
37
|
+
readonly nctSaltSink?: (salt: Uint8Array | null) => Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Persistence sink for `Contact` collection mutations (the locally-saved
|
|
40
|
+
* address-book name the primary device synced over app-state). Invoked on
|
|
41
|
+
* every winning mutation including snapshot ones, so the contact store is
|
|
42
|
+
* bootstrapped at pair-time regardless of `emitSnapshotMutations`.
|
|
43
|
+
*/
|
|
44
|
+
readonly contactSink?: (record: WaStoredContactRecord) => void;
|
|
45
|
+
}
|
|
46
|
+
export interface WaSetStatusPrivacyInput {
|
|
47
|
+
readonly mode: StatusDistributionModeKey | StatusDistributionMode;
|
|
48
|
+
readonly userJids?: readonly string[];
|
|
49
|
+
readonly shareToFB?: boolean;
|
|
50
|
+
readonly shareToIG?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface WaBroadcastListParticipant {
|
|
53
|
+
readonly lidJid: string;
|
|
54
|
+
readonly pnJid?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface WaSetBroadcastListInput {
|
|
57
|
+
readonly id: string;
|
|
58
|
+
readonly listName: string;
|
|
59
|
+
readonly participants: readonly WaBroadcastListParticipant[];
|
|
60
|
+
readonly labelIds?: readonly string[];
|
|
10
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Coordinates app-state mutations (mute/star/read/pin/archive/clear/delete/
|
|
64
|
+
* lock chats, status privacy, broadcast lists) and emits parsed mutation
|
|
65
|
+
* events on sync. Accessed via {@link WaClient.chat}.
|
|
66
|
+
*/
|
|
11
67
|
export declare class WaAppStateMutationCoordinator {
|
|
12
68
|
private readonly logger;
|
|
13
69
|
private readonly messageStore;
|
|
14
|
-
private readonly
|
|
70
|
+
private readonly appStateSync;
|
|
71
|
+
private readonly mediaTransfer;
|
|
72
|
+
private readonly isConnected;
|
|
73
|
+
private readonly serverClock;
|
|
15
74
|
private readonly archiveRangeLimit;
|
|
75
|
+
private readonly emitMutation?;
|
|
76
|
+
private readonly emitSnapshotMutations;
|
|
77
|
+
private readonly nctSaltSink?;
|
|
78
|
+
private readonly contactSink?;
|
|
16
79
|
private readonly pendingMutations;
|
|
17
80
|
private flushPromise;
|
|
18
81
|
constructor(options: WaAppStateMutationCoordinatorOptions);
|
|
82
|
+
/**
|
|
83
|
+
* Runs an app-state sync round, optionally applying pending mutations.
|
|
84
|
+
* Throws when the client is not connected. Returns the per-collection
|
|
85
|
+
* result; blocked collections are logged.
|
|
86
|
+
*/
|
|
87
|
+
sync(options?: WaAppStateSyncOptions): Promise<WaAppStateSyncResult>;
|
|
88
|
+
/** Returns the names of collections reported as `BLOCKED` in `syncResult`. */
|
|
89
|
+
getBlockedCollections(syncResult: WaAppStateSyncResult): readonly string[];
|
|
90
|
+
/**
|
|
91
|
+
* Walks a sync result and emits one `app_state_mutation` event per
|
|
92
|
+
* distinct (collection, index) – only the last mutation per key wins.
|
|
93
|
+
* Snapshot-source mutations are skipped unless `emitSnapshotMutations`
|
|
94
|
+
* was enabled at construction.
|
|
95
|
+
*/
|
|
96
|
+
emitEventsFromSyncResult(syncResult: WaAppStateSyncResult): void;
|
|
97
|
+
private handleNctSaltMutation;
|
|
98
|
+
private handleContactMutation;
|
|
99
|
+
/**
|
|
100
|
+
* Mutes or unmutes a chat. `muteEndTimestampMs` is required when
|
|
101
|
+
* `muted` is `true` and must be a non-negative safe-integer epoch.
|
|
102
|
+
*
|
|
103
|
+
* For a "mute forever" entry, pass a very large epoch value (the
|
|
104
|
+
* official client uses year-9999 epochs). The mute end is the absolute
|
|
105
|
+
* timestamp when WhatsApp will re-enable notifications - the client
|
|
106
|
+
* does **not** unmute automatically when the timer expires (you'll see
|
|
107
|
+
* the chat un-muted on the phone, but no `mutation` event re-fires).
|
|
108
|
+
*/
|
|
19
109
|
setChatMute(chatJid: string, muted: boolean, muteEndTimestampMs?: number): Promise<void>;
|
|
110
|
+
/** Stars or un-stars a specific message. */
|
|
20
111
|
setMessageStar(message: WaAppStateMessageKey, starred: boolean): Promise<void>;
|
|
112
|
+
/** Marks the chat as read or unread. */
|
|
21
113
|
setChatRead(chatJid: string, read: boolean): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Pins or unpins the chat. Pinning also clears any active archive flag
|
|
116
|
+
* (the two states are mutually exclusive on the client). WhatsApp
|
|
117
|
+
* imposes a server-side cap on pinned chats - extra pins sync but the
|
|
118
|
+
* official UI will hide / reject them.
|
|
119
|
+
*/
|
|
22
120
|
setChatPin(chatJid: string, pinned: boolean): Promise<void>;
|
|
121
|
+
/** Archives or unarchives the chat. Archiving also clears any pin. */
|
|
23
122
|
setChatArchive(chatJid: string, archived: boolean): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Clears the chat history (without deleting the chat itself - it stays
|
|
125
|
+
* in the chat list, just empty). Defaults to **preserving** starred
|
|
126
|
+
* messages and media; set `options.deleteStarred`/`deleteMedia` to wipe
|
|
127
|
+
* those too. The clear is local-only - other participants keep their
|
|
128
|
+
* copies.
|
|
129
|
+
*/
|
|
24
130
|
clearChat(chatJid: string, options?: WaClearChatOptions): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Deletes the chat entirely (removes from the chat list + drops every
|
|
133
|
+
* stored message). Local-only - the conversation continues to exist on
|
|
134
|
+
* the peer's device. For groups, this does **not** leave the group;
|
|
135
|
+
* use {@link WaGroupCoordinator.leaveGroup} for that.
|
|
136
|
+
*/
|
|
25
137
|
deleteChat(chatJid: string, options?: WaDeleteChatOptions): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Deletes a single message **locally** - removes it from your own
|
|
140
|
+
* device(s) only. The recipient(s) still see it. Use a `revoke`
|
|
141
|
+
* outgoing message ({@link WaMessageCoordinator.send} with
|
|
142
|
+
* `{ type: 'revoke', ... }`) to delete-for-everyone instead.
|
|
143
|
+
* `messageTimestampMs` must be a non-negative safe-integer epoch when set.
|
|
144
|
+
*/
|
|
26
145
|
deleteMessageForMe(message: WaAppStateMessageKey, options?: WaDeleteMessageForMeOptions): Promise<void>;
|
|
146
|
+
/** Locks or unlocks the chat. Locking also clears archive and pin. */
|
|
27
147
|
setChatLock(chatJid: string, locked: boolean): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* Drains any queued mutations through a sync round. Concurrent callers
|
|
150
|
+
* share the in-flight flush promise. Failed collections are re-queued
|
|
151
|
+
* before the error is rethrown.
|
|
152
|
+
*/
|
|
28
153
|
flushMutations(): Promise<void>;
|
|
29
154
|
private enqueueAndFlush;
|
|
30
155
|
private enqueueMutation;
|
|
31
156
|
private takePendingMutationsBatch;
|
|
32
157
|
private flushPendingMutationsLoop;
|
|
33
158
|
private requeueMutations;
|
|
34
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Sets the account-wide status-broadcast distribution policy. `mode`
|
|
161
|
+
* accepts either the proto enum number or its string name; allow/deny
|
|
162
|
+
* lists are provided via `userJids`.
|
|
163
|
+
*/
|
|
164
|
+
setStatusPrivacy(input: WaSetStatusPrivacyInput): Promise<void>;
|
|
165
|
+
/** Mutes/unmutes a single user's status broadcasts. Rejects group/broadcast JIDs. */
|
|
166
|
+
setUserStatusMute(jid: string, muted: boolean): Promise<void>;
|
|
167
|
+
/** Creates or updates the broadcast list identified by `input.id`. */
|
|
168
|
+
setBroadcastList(input: WaSetBroadcastListInput): Promise<void>;
|
|
169
|
+
/** Deletes the broadcast list identified by `id`. */
|
|
170
|
+
removeBroadcastList(id: string): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* Applies a `set` mutation against any registered app-state schema. This
|
|
173
|
+
* is the way to reach schemas that don't have a typed helper on this
|
|
174
|
+
* coordinator (Contact, LabelEdit, LabelJid, QuickReply, AiThreadPin,
|
|
175
|
+
* Favorites, Nux, ...). For the common chat actions there's a dedicated
|
|
176
|
+
* method ({@link setChatMute}, {@link setChatRead}, {@link setMessageStar},
|
|
177
|
+
* {@link setChatPin}, {@link setChatArchive}, etc.) – use those instead.
|
|
178
|
+
*
|
|
179
|
+
* `input` is flat – pick a `schema` name from {@link WA_APPSTATE_SCHEMAS},
|
|
180
|
+
* fill the index fields (`id`, `chatJid`, `labelId`, ...) and the value
|
|
181
|
+
* fields side-by-side, and the coordinator routes them to the right
|
|
182
|
+
* SyncActionValue subfield.
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```ts
|
|
186
|
+
* // Add a contact to the address book
|
|
187
|
+
* await client.chat.set({
|
|
188
|
+
* schema: 'Contact',
|
|
189
|
+
* id: '5511999999999@s.whatsapp.net',
|
|
190
|
+
* contactAction: { fullName: 'Maria Silva', firstName: 'Maria' }
|
|
191
|
+
* })
|
|
192
|
+
*
|
|
193
|
+
* // Create a chat label (color is a server-side palette index)
|
|
194
|
+
* await client.chat.set({
|
|
195
|
+
* schema: 'LabelEdit',
|
|
196
|
+
* id: 'label-1',
|
|
197
|
+
* labelEditAction: { name: 'Pendente', color: 0, isActive: true }
|
|
198
|
+
* })
|
|
199
|
+
*
|
|
200
|
+
* // Apply that label to a chat
|
|
201
|
+
* await client.chat.set({
|
|
202
|
+
* schema: 'LabelJid',
|
|
203
|
+
* labelId: 'label-1',
|
|
204
|
+
* chatJid: '5511999999999@s.whatsapp.net',
|
|
205
|
+
* labelAssociationAction: { labeled: true }
|
|
206
|
+
* })
|
|
207
|
+
*
|
|
208
|
+
* // Save a business quick reply
|
|
209
|
+
* await client.chat.set({
|
|
210
|
+
* schema: 'QuickReply',
|
|
211
|
+
* id: 'qr-greeting',
|
|
212
|
+
* quickReplyAction: { shortcut: '/oi', message: 'Olá! Tudo bem?' }
|
|
213
|
+
* })
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
set(input: WaSetMutationInput): Promise<void>;
|
|
217
|
+
/**
|
|
218
|
+
* Applies a `remove` mutation against any registered app-state schema -
|
|
219
|
+
* same shape as {@link set} but without the value fields (only the schema
|
|
220
|
+
* name + index args). Use this for schemas without a typed helper.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```ts
|
|
224
|
+
* // Drop a contact from the address book
|
|
225
|
+
* await client.chat.remove({
|
|
226
|
+
* schema: 'Contact',
|
|
227
|
+
* id: '5511999999999@s.whatsapp.net'
|
|
228
|
+
* })
|
|
229
|
+
*
|
|
230
|
+
* // Remove a label from a chat (the label itself stays – use LabelEdit
|
|
231
|
+
* // with `deleted: true` to delete the label definition entirely)
|
|
232
|
+
* await client.chat.remove({
|
|
233
|
+
* schema: 'LabelJid',
|
|
234
|
+
* labelId: 'label-1',
|
|
235
|
+
* chatJid: '5511999999999@s.whatsapp.net'
|
|
236
|
+
* })
|
|
237
|
+
*
|
|
238
|
+
* // Delete a quick reply
|
|
239
|
+
* await client.chat.remove({
|
|
240
|
+
* schema: 'QuickReply',
|
|
241
|
+
* id: 'qr-greeting'
|
|
242
|
+
* })
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
remove(input: WaRemoveMutationInput): Promise<void>;
|
|
35
246
|
private createArchiveMutation;
|
|
36
247
|
private buildChatMessageRange;
|
|
37
248
|
private toChatMessageRangeMessage;
|
|
@@ -40,7 +251,6 @@ export declare class WaAppStateMutationCoordinator {
|
|
|
40
251
|
private normalizeChatMutationJid;
|
|
41
252
|
private buildMessageMutationIndex;
|
|
42
253
|
private resolveMessageMutationParticipant;
|
|
43
|
-
private buildMutationIndex;
|
|
44
254
|
private describeMutationActions;
|
|
45
255
|
}
|
|
46
256
|
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { WaAuthCredentials } from '../../auth/types';
|
|
2
|
+
import type { WaIncomingBotChunkEvent, WaIncomingMessageEvent, WaSendMessageOptions } from '../types';
|
|
3
|
+
import type { Logger } from '../../infra/log/types';
|
|
4
|
+
import type { WaMessageBuildResult, WaMessagePublishResult, WaSendMessageContent } from '../../message/types';
|
|
5
|
+
import { proto } from '../..';
|
|
6
|
+
import type { WaMessageSecretStore } from '../../store/contracts/message-secret.store';
|
|
7
|
+
import type { WaMessageStore } from '../../store/contracts/message.store';
|
|
8
|
+
import type { BinaryNode } from '../../transport/types';
|
|
9
|
+
export interface WaBotInfo {
|
|
10
|
+
readonly jid: string;
|
|
11
|
+
readonly fbidJid: string;
|
|
12
|
+
readonly personaId: string;
|
|
13
|
+
readonly isDefault: boolean;
|
|
14
|
+
readonly section?: string;
|
|
15
|
+
readonly count?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface WaBotProfilePrompt {
|
|
18
|
+
readonly emoji: string;
|
|
19
|
+
readonly text: string;
|
|
20
|
+
}
|
|
21
|
+
export interface WaBotProfileCommand {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
readonly description: string;
|
|
24
|
+
}
|
|
25
|
+
export type WaBotPosingAsProfessional = 'unknown' | 'yes' | 'no';
|
|
26
|
+
export interface WaBotProfileResult {
|
|
27
|
+
readonly name: string | null;
|
|
28
|
+
readonly attributes: string | null;
|
|
29
|
+
readonly description: string | null;
|
|
30
|
+
readonly category: string | null;
|
|
31
|
+
readonly isDefault: boolean;
|
|
32
|
+
readonly prompts: readonly WaBotProfilePrompt[];
|
|
33
|
+
readonly personaId: string | null;
|
|
34
|
+
readonly commands: readonly WaBotProfileCommand[];
|
|
35
|
+
readonly commandsDescription: string | null;
|
|
36
|
+
readonly isMetaCreated: boolean | null;
|
|
37
|
+
readonly creatorName: string | null;
|
|
38
|
+
readonly creatorProfileUrl: string | null;
|
|
39
|
+
readonly posingAsProfessional: WaBotPosingAsProfessional | null;
|
|
40
|
+
}
|
|
41
|
+
export interface WaGetBotProfileOptions {
|
|
42
|
+
readonly personaId?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface WaBotPromptOptions extends WaSendMessageOptions {
|
|
45
|
+
readonly botJid?: string;
|
|
46
|
+
readonly personaId?: string;
|
|
47
|
+
readonly capabilities?: readonly proto.BotCapabilityMetadata.BotCapabilityType[];
|
|
48
|
+
readonly extraMentionedJids?: readonly string[];
|
|
49
|
+
readonly aiThreadId?: string;
|
|
50
|
+
readonly aiThreadType?: proto.AIThreadInfo.AIThreadClientInfo.AIThreadType;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Coordinates Meta-AI bot discovery, profile lookup, prompt send, and
|
|
54
|
+
* streaming chunk decryption. Accessed via {@link WaClient.bot}.
|
|
55
|
+
*/
|
|
56
|
+
export interface WaBotCoordinator {
|
|
57
|
+
/** Lists the bots available to the current account, grouped by section. */
|
|
58
|
+
readonly listBots: () => Promise<readonly WaBotInfo[]>;
|
|
59
|
+
/** Fetches a single bot's profile (commands, prompts, creator metadata). */
|
|
60
|
+
readonly getBotProfile: (jid: string, options?: WaGetBotProfileOptions) => Promise<WaBotProfileResult | null>;
|
|
61
|
+
/**
|
|
62
|
+
* Sends a prompt to a bot. When `to` is a `@bot` JID this uses the
|
|
63
|
+
* direct path; for a group/chat JID, set `options.botJid` to invoke
|
|
64
|
+
* the bot via mention.
|
|
65
|
+
*
|
|
66
|
+
* **Where do I get a bot JID?**
|
|
67
|
+
* - Call {@link listBots} - returns one entry per available bot with
|
|
68
|
+
* both `jid` (the `@bot` JID for direct sends) and `fbidJid` (the
|
|
69
|
+
* form for `options.botJid` on the mention path).
|
|
70
|
+
* - Use the `WA_BOT_KNOWN_JIDS` constants from `zapo-js/protocol`
|
|
71
|
+
* when you know the target (`META_AI_PN`, `META_AI_FBID`,
|
|
72
|
+
* `MANUS_FBID`, `HATCH_FBID`, ...). No IQ required.
|
|
73
|
+
* - Read it off an incoming `message` event whose sender is a bot
|
|
74
|
+
* (reply scenario).
|
|
75
|
+
*
|
|
76
|
+
* **Direct path** (`to` is a `@bot` JID): generates a fresh
|
|
77
|
+
* `aiThreadId` unless one is reused via `options.aiThreadId`,
|
|
78
|
+
* attaches the bot metadata + thread proto, and sends to the bot's
|
|
79
|
+
* FBID JID. Subsequent prompts using the same `aiThreadId` keep the
|
|
80
|
+
* conversation context.
|
|
81
|
+
*
|
|
82
|
+
* **Mention path** (`to` is a group/chat JID): `options.botJid`
|
|
83
|
+
* **must** be set. The bot is invoked indirectly; the lib strips
|
|
84
|
+
* persona/invoker/capabilities/threadInfo from the inner message
|
|
85
|
+
* because Meta AI silently drops the request when those are present
|
|
86
|
+
* on the mention path. `options.aiThreadId` and `options.aiThreadType`
|
|
87
|
+
* are ignored here.
|
|
88
|
+
*/
|
|
89
|
+
readonly sendPrompt: (to: string, content: WaSendMessageContent, options?: WaBotPromptOptions) => Promise<WaMessagePublishResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Attempts to decrypt a streaming bot chunk attached to `event` and,
|
|
92
|
+
* on success, emits a typed `WaIncomingBotChunkEvent`. Silently
|
|
93
|
+
* returns when the chunk is not addressed to the current account or
|
|
94
|
+
* the parent prompt secret is not available.
|
|
95
|
+
*
|
|
96
|
+
* **Called automatically by {@link WaClient} on every incoming
|
|
97
|
+
* message** - you rarely need to invoke it directly. Multiple chunks
|
|
98
|
+
* arrive per response; concatenate them in arrival order using the
|
|
99
|
+
* `editType` field (`first` → `inner` → `last`, or a single `full`)
|
|
100
|
+
* to reconstruct the full reply.
|
|
101
|
+
*/
|
|
102
|
+
readonly tryDecryptChunk: (event: WaIncomingMessageEvent) => Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
interface WaBotCoordinatorOptions {
|
|
105
|
+
readonly logger: Logger;
|
|
106
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
107
|
+
readonly buildMessageContent: (content: WaSendMessageContent) => Promise<WaMessageBuildResult>;
|
|
108
|
+
readonly sendMessage: (to: string, content: WaSendMessageContent, options?: WaSendMessageOptions) => Promise<WaMessagePublishResult>;
|
|
109
|
+
readonly messageStore: WaMessageStore;
|
|
110
|
+
readonly messageSecretStore: WaMessageSecretStore;
|
|
111
|
+
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
112
|
+
readonly emitBotChunk: (event: WaIncomingBotChunkEvent) => void;
|
|
113
|
+
readonly generateSid: () => Promise<string>;
|
|
114
|
+
}
|
|
115
|
+
/** Builds a {@link WaBotCoordinator} from its IQ/message/store dependencies. */
|
|
116
|
+
export declare function createBotCoordinator(options: WaBotCoordinatorOptions): WaBotCoordinator;
|
|
117
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { WaAppStateMutationCoordinator, WaSetBroadcastListInput } from '../coordinators/WaAppStateMutationCoordinator';
|
|
2
|
+
import type { WaSendMessageOptions } from '../types';
|
|
3
|
+
import type { WaMessageBuildResult, WaMessagePublishResult, WaSendMessageContent } from '../../message/types';
|
|
4
|
+
import type { Proto } from '../..';
|
|
5
|
+
export interface WaBroadcastListCoordinatorOptions {
|
|
6
|
+
readonly appStateMutations: WaAppStateMutationCoordinator;
|
|
7
|
+
readonly buildMessageContent: (content: WaSendMessageContent) => Promise<WaMessageBuildResult>;
|
|
8
|
+
readonly publishBroadcastListMessage: (input: {
|
|
9
|
+
readonly listJid: string;
|
|
10
|
+
readonly message: Proto.IMessage;
|
|
11
|
+
readonly recipients: readonly string[];
|
|
12
|
+
readonly options?: WaSendMessageOptions;
|
|
13
|
+
}) => Promise<WaMessagePublishResult>;
|
|
14
|
+
}
|
|
15
|
+
export interface WaSendBroadcastListMessageInput {
|
|
16
|
+
readonly listJid: string;
|
|
17
|
+
readonly content: WaSendMessageContent;
|
|
18
|
+
readonly recipients: readonly string[];
|
|
19
|
+
readonly options?: WaSendMessageOptions;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Manages broadcast lists and dispatches messages to one. Accessed via
|
|
23
|
+
* {@link WaClient.broadcastList}.
|
|
24
|
+
*
|
|
25
|
+
* **Business-only.** Broadcast lists are backed by the
|
|
26
|
+
* `BusinessBroadcastList` app-state schema and are only available on
|
|
27
|
+
* WhatsApp Business accounts - regular accounts will see the underlying
|
|
28
|
+
* mutation IQs rejected by the server.
|
|
29
|
+
*/
|
|
30
|
+
export interface WaBroadcastListCoordinator {
|
|
31
|
+
/** Creates or updates a broadcast list definition (name + recipients). */
|
|
32
|
+
readonly setList: (input: WaSetBroadcastListInput) => Promise<void>;
|
|
33
|
+
/** Deletes a broadcast list by id. */
|
|
34
|
+
readonly removeList: (id: string) => Promise<void>;
|
|
35
|
+
/** Sends a message to every member of a broadcast list. */
|
|
36
|
+
readonly send: (input: WaSendBroadcastListMessageInput) => Promise<WaMessagePublishResult>;
|
|
37
|
+
}
|
|
38
|
+
/** Builds a {@link WaBroadcastListCoordinator} from its dependencies. */
|
|
39
|
+
export declare function createBroadcastListCoordinator(options: WaBroadcastListCoordinatorOptions): WaBroadcastListCoordinator;
|
|
@@ -1,57 +1,58 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type WaUploadMediaSource } from '../media';
|
|
2
|
+
import type { WaBusinessProfileResult, WaVerifiedNameResult } from '../types';
|
|
3
|
+
import type { Logger } from '../../infra/log/types';
|
|
4
|
+
import type { WaMediaTransferClient } from '../../media/transfer/WaMediaTransferClient';
|
|
5
|
+
import type { WaMediaConn } from '../../media/types';
|
|
6
|
+
import { type WaEditBusinessProfileInput } from '../../transport/node/builders/business';
|
|
2
7
|
import type { BinaryNode } from '../../transport/types';
|
|
3
|
-
export interface
|
|
4
|
-
readonly id: string;
|
|
5
|
-
readonly name: string;
|
|
6
|
-
}
|
|
7
|
-
export interface WaBusinessHoursEntry {
|
|
8
|
-
readonly dayOfWeek: string;
|
|
9
|
-
readonly mode: string;
|
|
10
|
-
readonly openTime?: number;
|
|
11
|
-
readonly closeTime?: number;
|
|
12
|
-
}
|
|
13
|
-
export interface WaBusinessHours {
|
|
14
|
-
readonly timezone?: string;
|
|
15
|
-
readonly config: readonly WaBusinessHoursEntry[];
|
|
16
|
-
}
|
|
17
|
-
export interface WaBusinessWebsite {
|
|
18
|
-
readonly url: string;
|
|
19
|
-
}
|
|
20
|
-
export interface WaBusinessProfileResult {
|
|
8
|
+
export interface WaVerifiedNameBatchEntry {
|
|
21
9
|
readonly jid: string;
|
|
22
|
-
readonly
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
readonly actualActors: number;
|
|
35
|
-
readonly hostStorage: number;
|
|
36
|
-
readonly privacyModeTs: number;
|
|
37
|
-
}
|
|
38
|
-
export interface WaVerifiedNameResult {
|
|
39
|
-
readonly name?: string;
|
|
40
|
-
readonly level?: string;
|
|
41
|
-
readonly serial?: string;
|
|
42
|
-
readonly isApi: boolean;
|
|
43
|
-
readonly isSmb: boolean;
|
|
44
|
-
readonly privacyMode?: WaVerifiedNamePrivacyMode;
|
|
45
|
-
}
|
|
10
|
+
readonly verifiedName: WaVerifiedNameResult | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Coordinates WhatsApp Business profile reads/writes (profile body, verified
|
|
14
|
+
* name, cover photo). Accessed via {@link WaClient.business}.
|
|
15
|
+
*
|
|
16
|
+
* Read methods (`getBusinessProfile`, `getVerifiedName`, `getVerifiedNames`)
|
|
17
|
+
* work from any account. Write methods (`editBusinessProfile`,
|
|
18
|
+
* `updateCoverPhoto`, `deleteCoverPhoto`) are **business-only**: they target
|
|
19
|
+
* the current account's own business profile and the server rejects them
|
|
20
|
+
* when the account is not registered as a WhatsApp Business account.
|
|
21
|
+
*/
|
|
46
22
|
export interface WaBusinessCoordinator {
|
|
23
|
+
/** Batched fetch of business profile bodies (about, address, hours, ...). */
|
|
47
24
|
readonly getBusinessProfile: (jids: readonly string[]) => Promise<readonly WaBusinessProfileResult[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Edits the current account's business profile. **Business-only** - throws
|
|
27
|
+
* on regular WhatsApp accounts.
|
|
28
|
+
*/
|
|
48
29
|
readonly editBusinessProfile: (input: WaEditBusinessProfileInput) => Promise<void>;
|
|
30
|
+
/** Fetches a single business verified-name record (or `null`). */
|
|
49
31
|
readonly getVerifiedName: (jid: string) => Promise<WaVerifiedNameResult | null>;
|
|
50
|
-
|
|
32
|
+
/** Batched verified-name lookup over many JIDs (usync). */
|
|
33
|
+
readonly getVerifiedNames: (jids: readonly string[]) => Promise<readonly WaVerifiedNameBatchEntry[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Uploads and binds a new business cover photo. Returns the server-side
|
|
36
|
+
* upload id – feed it back into {@link deleteCoverPhoto} to remove the
|
|
37
|
+
* cover later. **Business-only** - throws on regular WhatsApp accounts.
|
|
38
|
+
*/
|
|
39
|
+
readonly updateCoverPhoto: (media: WaUploadMediaSource) => Promise<{
|
|
40
|
+
readonly id: string;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Deletes the business cover photo by upload id (returned from
|
|
44
|
+
* {@link updateCoverPhoto}). **Business-only** - throws on regular
|
|
45
|
+
* WhatsApp accounts.
|
|
46
|
+
*/
|
|
51
47
|
readonly deleteCoverPhoto: (id: string) => Promise<void>;
|
|
52
48
|
}
|
|
53
49
|
interface WaBusinessCoordinatorOptions {
|
|
54
50
|
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
51
|
+
readonly mediaTransfer: WaMediaTransferClient;
|
|
52
|
+
readonly getMediaConn: () => Promise<WaMediaConn>;
|
|
53
|
+
readonly logger: Logger;
|
|
54
|
+
readonly generateSid: () => Promise<string>;
|
|
55
55
|
}
|
|
56
|
+
/** Builds a {@link WaBusinessCoordinator} from its IQ/media dependencies. */
|
|
56
57
|
export declare function createBusinessCoordinator(options: WaBusinessCoordinatorOptions): WaBusinessCoordinator;
|
|
57
58
|
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type WaEmailContext } from '../../protocol/email';
|
|
2
|
+
import { type BuildRequestEmailVerificationCodeInput } from '../../transport/node/builders/email';
|
|
3
|
+
import type { BinaryNode } from '../../transport/types';
|
|
4
|
+
export interface WaEmailStatus {
|
|
5
|
+
readonly email: string | null;
|
|
6
|
+
readonly verified: boolean;
|
|
7
|
+
readonly confirmed: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface WaEmailVerifyCodeResult {
|
|
10
|
+
readonly verified: boolean;
|
|
11
|
+
readonly autoVerifyFailed: boolean;
|
|
12
|
+
readonly email: string | null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Coordinates the email-on-account flow: read state, bind/unbind, request
|
|
16
|
+
* verification code, submit the code, and confirm. Accessed via
|
|
17
|
+
* {@link WaClient.email}.
|
|
18
|
+
*
|
|
19
|
+
* **Mobile-only.** Email binding is only available when the client is
|
|
20
|
+
* connected via the WhatsApp Mobile transport (`options.mobileTransport`).
|
|
21
|
+
* Every method throws against a regular Web/companion connection because
|
|
22
|
+
* the server rejects the underlying IQ.
|
|
23
|
+
*/
|
|
24
|
+
export interface WaEmailCoordinator {
|
|
25
|
+
/** Returns the current email binding (address + verified/confirmed flags). */
|
|
26
|
+
readonly getStatus: () => Promise<WaEmailStatus>;
|
|
27
|
+
/** Binds (or rebinds) an email address to the account. */
|
|
28
|
+
readonly setEmail: (email: string, context?: WaEmailContext) => Promise<WaEmailStatus>;
|
|
29
|
+
/** Asks the server to send a verification code to the bound address. */
|
|
30
|
+
readonly requestVerificationCode: (input: BuildRequestEmailVerificationCodeInput) => Promise<void>;
|
|
31
|
+
/** Submits a verification code received via email. */
|
|
32
|
+
readonly verifyCode: (code: string) => Promise<WaEmailVerifyCodeResult>;
|
|
33
|
+
/** Confirms email ownership (post-verification handshake). */
|
|
34
|
+
readonly confirm: (context?: WaEmailContext) => Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
export interface WaEmailCoordinatorOptions {
|
|
37
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
38
|
+
}
|
|
39
|
+
/** Builds a {@link WaEmailCoordinator} backed by the given IQ query function. */
|
|
40
|
+
export declare function createEmailCoordinator(options: WaEmailCoordinatorOptions): WaEmailCoordinator;
|