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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { APP_STATE_EMPTY_LT_HASH } from './constants';
|
|
2
2
|
export type { AppStateCollectionName, WaAppStateStoreData, WaAppStateSyncKey, WaAppStateSyncOptions } from './types';
|
|
3
|
-
export { encodeAppStateFingerprint, decodeAppStateFingerprint, decodeAppStateCollections, decodeAppStateSyncKeys } from './encoding';
|
|
3
|
+
export { encodeAppStateFingerprint, decodeAppStateFingerprint, decodeAppStateCollections, decodeAppStateSyncKeys } from './parsers/encoding';
|
|
4
4
|
export * from './utils';
|
|
5
|
-
export { WaAppStateCrypto } from './WaAppStateCrypto';
|
|
6
|
-
export { parseSyncResponse } from './response-parser';
|
|
7
|
-
export { WaAppStateSyncClient } from './WaAppStateSyncClient';
|
|
5
|
+
export { WaAppStateCrypto } from './crypto/WaAppStateCrypto';
|
|
6
|
+
export { parseSyncResponse } from './parsers/response-parser';
|
|
7
|
+
export { WaAppStateSyncClient } from './sync/WaAppStateSyncClient';
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import type { WaAppStateStoreData, WaAppStateSyncKey } from '
|
|
1
|
+
import type { WaAppStateStoreData, WaAppStateSyncKey } from '../types';
|
|
2
2
|
type StoreRow = Readonly<Record<string, unknown>>;
|
|
3
|
+
/** Serializes an app-state sync key fingerprint to its protobuf bytes, or `null` when absent. */
|
|
3
4
|
export declare function encodeAppStateFingerprint(fingerprint: WaAppStateSyncKey['fingerprint']): Uint8Array | null;
|
|
5
|
+
/** Inverse of {@link encodeAppStateFingerprint}; throws on malformed input. */
|
|
4
6
|
export declare function decodeAppStateFingerprint(raw: unknown): WaAppStateSyncKey['fingerprint'] | undefined;
|
|
7
|
+
/** Decodes app-state sync-key SQL rows into {@link WaAppStateSyncKey} records. */
|
|
5
8
|
export declare function decodeAppStateSyncKeys(rows: readonly StoreRow[]): readonly WaAppStateSyncKey[];
|
|
9
|
+
/**
|
|
10
|
+
* Joins app-state collection-version and index-value SQL rows into the
|
|
11
|
+
* `collections` shape used by the in-memory app-state store.
|
|
12
|
+
*/
|
|
6
13
|
export declare function decodeAppStateCollections(versionRows: readonly StoreRow[], valueRows: readonly StoreRow[]): WaAppStateStoreData['collections'];
|
|
7
14
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AppStateCollectionName, AppStateCollectionState } from '
|
|
2
|
-
import { type Proto } from '
|
|
3
|
-
import type { BinaryNode } from '
|
|
1
|
+
import type { AppStateCollectionName, AppStateCollectionState } from '../types';
|
|
2
|
+
import { type Proto } from '../..';
|
|
3
|
+
import type { BinaryNode } from '../../transport/types';
|
|
4
4
|
export interface CollectionResponsePayload {
|
|
5
5
|
readonly collection: AppStateCollectionName;
|
|
6
6
|
readonly state: AppStateCollectionState;
|
|
@@ -8,5 +8,15 @@ export interface CollectionResponsePayload {
|
|
|
8
8
|
readonly patches: readonly Proto.ISyncdPatch[];
|
|
9
9
|
readonly snapshotReference?: Proto.IExternalBlobReference;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Parses an app-state `sync` IQ response into one payload per collection,
|
|
13
|
+
* decoding embedded patches and snapshot references. Throws when the IQ is
|
|
14
|
+
* an error envelope or missing the `<sync>` child.
|
|
15
|
+
*/
|
|
11
16
|
export declare function parseSyncResponse(iqNode: BinaryNode): readonly CollectionResponsePayload[];
|
|
17
|
+
/**
|
|
18
|
+
* Reads a `<collection>` node and returns the right
|
|
19
|
+
* {@link AppStateCollectionState} (success / has-more / conflict / fatal /
|
|
20
|
+
* retryable) based on its `type` attribute and embedded error code.
|
|
21
|
+
*/
|
|
12
22
|
export declare function parseCollectionState(node: BinaryNode): AppStateCollectionState;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { WaAppStateMissingKeysEvent, WaAppStateSyncKey, WaAppStateSyncOptions, WaAppStateSyncResult } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import { type Proto } from '../..';
|
|
4
|
+
import type { WaAppStateStore } from '../../store/contracts/appstate.store';
|
|
5
|
+
import type { BinaryNode } from '../../transport/types';
|
|
6
|
+
import type { ServerClock } from '../../util/clock';
|
|
7
|
+
/**
|
|
8
|
+
* Minimal message-key context for incoming app-state key protocol messages.
|
|
9
|
+
* Uses the proto `Proto.IMessageKey` attribute names so callers can pass an
|
|
10
|
+
* incoming message's `key` verbatim (no field remapping).
|
|
11
|
+
*/
|
|
12
|
+
interface IncomingKeyEventContext {
|
|
13
|
+
readonly remoteJid?: string;
|
|
14
|
+
readonly id?: string;
|
|
15
|
+
readonly participant?: string;
|
|
16
|
+
readonly senderDevice: number;
|
|
17
|
+
}
|
|
18
|
+
interface WaAppStateSyncClientOptions {
|
|
19
|
+
readonly logger: Logger;
|
|
20
|
+
readonly query: (node: BinaryNode, timeoutMs: number) => Promise<BinaryNode>;
|
|
21
|
+
readonly store: WaAppStateStore;
|
|
22
|
+
readonly serverClock: ServerClock;
|
|
23
|
+
readonly getCurrentMeJid?: () => string | null | undefined;
|
|
24
|
+
readonly hostDomain?: string;
|
|
25
|
+
readonly defaultTimeoutMs?: number;
|
|
26
|
+
readonly onMissingKeys?: (event: WaAppStateMissingKeysEvent) => Promise<void>;
|
|
27
|
+
readonly skipMacVerification?: boolean;
|
|
28
|
+
readonly mobilePrimary?: boolean;
|
|
29
|
+
readonly isOwnAccountDevice?: (deviceJid: string) => boolean;
|
|
30
|
+
readonly sendKeyShare?: (toDeviceJid: string, keys: readonly WaAppStateSyncKey[], missingKeyIds: readonly Uint8Array[]) => Promise<void>;
|
|
31
|
+
readonly triggerSync?: () => Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* App-state synchronization client. Owns the sync key inventory, processes
|
|
35
|
+
* snapshots/patches, encrypts pending mutations, and persists the resulting
|
|
36
|
+
* collection state in the {@link WaAppStateStore}.
|
|
37
|
+
*/
|
|
38
|
+
export declare class WaAppStateSyncClient {
|
|
39
|
+
private readonly logger;
|
|
40
|
+
private readonly query;
|
|
41
|
+
private readonly store;
|
|
42
|
+
private readonly serverClock;
|
|
43
|
+
private readonly getCurrentMeJid?;
|
|
44
|
+
private readonly hostDomain;
|
|
45
|
+
private readonly defaultTimeoutMs;
|
|
46
|
+
private readonly onMissingKeys?;
|
|
47
|
+
private readonly isOwnAccountDevice?;
|
|
48
|
+
private readonly sendKeyShare?;
|
|
49
|
+
private readonly triggerSync?;
|
|
50
|
+
private readonly crypto;
|
|
51
|
+
private readonly mobilePrimary;
|
|
52
|
+
private syncContext;
|
|
53
|
+
private syncPromise;
|
|
54
|
+
constructor(options: WaAppStateSyncClientOptions);
|
|
55
|
+
/**
|
|
56
|
+
* Returns the active app-state sync key, generating and persisting a new
|
|
57
|
+
* one when the store is empty (used during initial setup).
|
|
58
|
+
*/
|
|
59
|
+
ensureInitialSyncKey(): Promise<WaAppStateSyncKey>;
|
|
60
|
+
/** Imports peer-shared sync keys into the store; returns the count actually added. */
|
|
61
|
+
importSyncKeys(keys: readonly WaAppStateSyncKey[]): Promise<number>;
|
|
62
|
+
/** Handler for `AppStateSyncKeyShare` protocol messages – stores received keys and triggers a sync. */
|
|
63
|
+
handleIncomingKeyShare(context: IncomingKeyEventContext, protocolMessage: Proto.Message.IProtocolMessage): Promise<void>;
|
|
64
|
+
/** Handler for `AppStateSyncKeyRequest` protocol messages – replies with the requested keys via `sendKeyShare`. */
|
|
65
|
+
handleIncomingKeyRequest(context: IncomingKeyEventContext, protocolMessage: Proto.Message.IProtocolMessage): Promise<void>;
|
|
66
|
+
private extractKeyRequestIds;
|
|
67
|
+
/** Imports the keys from a decoded `AppStateSyncKeyShare` proto message. */
|
|
68
|
+
importSyncKeyShare(share: Proto.Message.IAppStateSyncKeyShare): Promise<number>;
|
|
69
|
+
/**
|
|
70
|
+
* Runs one app-state sync round across the requested collections,
|
|
71
|
+
* applying any `pendingMutations` and downloading external snapshots
|
|
72
|
+
* via `options.downloadExternalBlob` when present. Concurrent calls
|
|
73
|
+
* share the in-flight promise.
|
|
74
|
+
*/
|
|
75
|
+
sync(options?: WaAppStateSyncOptions): Promise<WaAppStateSyncResult>;
|
|
76
|
+
private syncOnce;
|
|
77
|
+
private syncCollectionsRound;
|
|
78
|
+
private buildCollectionSyncRequest;
|
|
79
|
+
private buildSyncIqNode;
|
|
80
|
+
private fetchSyncPayloadByCollection;
|
|
81
|
+
private processCollectionRound;
|
|
82
|
+
private createCollectionOutcome;
|
|
83
|
+
private notifyMissingKeys;
|
|
84
|
+
private resolveReadyPatches;
|
|
85
|
+
private validateSnapshot;
|
|
86
|
+
private parseCollectionPatchVersion;
|
|
87
|
+
private validatePatch;
|
|
88
|
+
private applySnapshot;
|
|
89
|
+
private applyPatch;
|
|
90
|
+
private decryptSnapshotRecords;
|
|
91
|
+
private decryptPatchMutations;
|
|
92
|
+
private assertPatchMacsMatch;
|
|
93
|
+
private buildOutgoingPatch;
|
|
94
|
+
private resolveDeviceIndex;
|
|
95
|
+
private computeNextCollectionState;
|
|
96
|
+
private normalizeProtoLong;
|
|
97
|
+
private groupPendingMutations;
|
|
98
|
+
private preloadKeyData;
|
|
99
|
+
private getKeyData;
|
|
100
|
+
private getCollectionState;
|
|
101
|
+
private setCollectionState;
|
|
102
|
+
private persistCollectionUpdates;
|
|
103
|
+
private requireSyncContext;
|
|
104
|
+
}
|
|
105
|
+
export {};
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
import type { AppStateCollectionName, WaAppStateSyncKey } from './types';
|
|
2
|
-
import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
2
|
+
import type { WaMediaTransferClient } from '../media/transfer/WaMediaTransferClient';
|
|
3
3
|
import type { Proto } from '..';
|
|
4
|
+
/**
|
|
5
|
+
* Returns `value` typed as a known {@link AppStateCollectionName}, or `null`
|
|
6
|
+
* when the string is unrecognized.
|
|
7
|
+
*/
|
|
4
8
|
export declare function parseCollectionName(value: string | undefined): AppStateCollectionName | null;
|
|
9
|
+
/**
|
|
10
|
+
* Reads the 32-bit big-endian epoch encoded in bytes 2..5 of an app-state key id.
|
|
11
|
+
* Returns `-1` when the key id is too short.
|
|
12
|
+
*/
|
|
5
13
|
export declare function keyEpoch(keyId: Uint8Array): number;
|
|
14
|
+
/**
|
|
15
|
+
* Picks the highest-epoch app-state sync key from `keys`. Ties are broken by
|
|
16
|
+
* the lower device id. Returns `null` when the iterable is empty.
|
|
17
|
+
*/
|
|
6
18
|
export declare function pickActiveSyncKey(keys: Iterable<WaAppStateSyncKey>): WaAppStateSyncKey | null;
|
|
19
|
+
/**
|
|
20
|
+
* Downloads and decrypts an external app-state blob via the media transfer
|
|
21
|
+
* client. Throws when the reference is missing required fields.
|
|
22
|
+
*/
|
|
7
23
|
export declare function downloadExternalBlobReference(mediaTransfer: WaMediaTransferClient, reference: Proto.IExternalBlobReference): Promise<Uint8Array>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { proto, type Proto } from '.';
|
|
2
|
+
import { WA_APPSTATE_SCHEMAS as RAW_WA_APPSTATE_SCHEMAS, type WaAppstateActionKey, type WaAppstateSchema, type WaAppstateValueEnumFields } from '../spec/appstate';
|
|
3
|
+
export { WA_APPSTATE_COLLECTIONS, WA_APPSTATE_SCHEMAS } from '../spec/appstate';
|
|
4
|
+
export type { WaAppstateActionKey, WaAppstateCollection, WaAppstateIndexArgs, WaAppstateIndexPart, WaAppstateIndexValueOf, WaAppstateSchema, WaAppstateScope, WaAppstateValueEnumFields } from '../spec/appstate';
|
|
5
|
+
export type GetByPath<T, P extends string> = P extends `${infer Head}.${infer Tail}` ? Head extends keyof T ? GetByPath<T[Head], Tail> : never : P extends keyof T ? T[P] : never;
|
|
6
|
+
export type EnumNamesAt<P extends string> = keyof GetByPath<typeof proto.SyncActionValue, P> & string;
|
|
7
|
+
type EnumValueFor<P extends string, Original> = Original extends ReadonlyArray<unknown> | null | undefined ? ReadonlyArray<EnumNamesAt<P>> | null | undefined : EnumNamesAt<P> | null | undefined;
|
|
8
|
+
type WithEnumStrings<Data, Fields extends WaAppstateValueEnumFields | null> = Fields extends WaAppstateValueEnumFields ? {
|
|
9
|
+
[K in keyof Data]: K extends keyof Fields ? Fields[K] extends string ? EnumValueFor<Fields[K], Data[K]> : Data[K] : Data[K];
|
|
10
|
+
} : Data;
|
|
11
|
+
export type ValueForSchema<S extends WaAppstateSchema> = S['valueField'] extends keyof Proto.ISyncActionValue ? Pick<Proto.ISyncActionValue, S['valueField'] & keyof Proto.ISyncActionValue> : Proto.ISyncActionValue;
|
|
12
|
+
export type ValueForKey<K extends WaAppstateActionKey> = ValueForSchema<(typeof RAW_WA_APPSTATE_SCHEMAS)[K]>;
|
|
13
|
+
type BaseDataForSchema<S extends WaAppstateSchema> = S['valueField'] extends keyof Proto.ISyncActionValue ? NonNullable<Proto.ISyncActionValue[S['valueField'] & keyof Proto.ISyncActionValue]> : Proto.ISyncActionValue;
|
|
14
|
+
export type DataForSchema<S extends WaAppstateSchema> = WithEnumStrings<BaseDataForSchema<S>, S['valueEnumFields']>;
|
|
15
|
+
export type DataForKey<K extends WaAppstateActionKey> = DataForSchema<(typeof RAW_WA_APPSTATE_SCHEMAS)[K]>;
|
|
16
|
+
export declare const WA_APPSTATE_SCHEMA_BY_ACTION_NAME: Readonly<Record<string, WaAppstateActionKey>>;
|
|
17
|
+
export declare function getAppstateSchemaByActionName(actionName: string): {
|
|
18
|
+
readonly key: WaAppstateActionKey;
|
|
19
|
+
readonly schema: WaAppstateSchema;
|
|
20
|
+
} | null;
|
|
21
|
+
export declare function resolveEnumObject(protoEnumPath: string): Record<string, number | string> | null;
|
|
22
|
+
export declare function encodeEnumValue(protoEnumPath: string, name: string): number | null;
|
|
23
|
+
export declare function decodeEnumValue(protoEnumPath: string, value: number): string | null;
|
|
24
|
+
export declare function decodeIndexArgsFromSchema(schema: WaAppstateSchema, parts: readonly string[]): Readonly<Record<string, string | boolean | null>> | null;
|
|
@@ -3,7 +3,8 @@ import type { Logger } from '../infra/log/types';
|
|
|
3
3
|
import type { WaAuthStore } from '../store/contracts/auth.store';
|
|
4
4
|
import type { WaPreKeyStore } from '../store/contracts/pre-key.store';
|
|
5
5
|
import type { WaSignalStore } from '../store/contracts/signal.store';
|
|
6
|
-
import type {
|
|
6
|
+
import type { WaNoiseRootCa } from '../transport/noise/WaNoiseCert';
|
|
7
|
+
import type { BinaryNode, WaCommsConfig } from '../transport/types';
|
|
7
8
|
type WaAuthClientDeps = Readonly<{
|
|
8
9
|
readonly logger: Logger;
|
|
9
10
|
readonly authStore: WaAuthStore;
|
|
@@ -13,6 +14,7 @@ type WaAuthClientDeps = Readonly<{
|
|
|
13
14
|
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
14
15
|
readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
|
|
15
16
|
};
|
|
17
|
+
readonly isConnected?: () => boolean;
|
|
16
18
|
readonly callbacks?: {
|
|
17
19
|
readonly onQr?: (qr: string, ttlMs: number) => void;
|
|
18
20
|
readonly onPairingCode?: (code: string) => void;
|
|
@@ -21,6 +23,15 @@ type WaAuthClientDeps = Readonly<{
|
|
|
21
23
|
readonly onError?: (error: Error) => void;
|
|
22
24
|
};
|
|
23
25
|
}>;
|
|
26
|
+
/**
|
|
27
|
+
* Owns the auth/pairing lifecycle and persistence of {@link WaAuthCredentials}.
|
|
28
|
+
* Exposed as `client.auth` on a {@link WaClient}.
|
|
29
|
+
*
|
|
30
|
+
* Lifecycle: construct with options + dependencies, call
|
|
31
|
+
* {@link loadOrCreateCredentials} to bring credentials online, then either
|
|
32
|
+
* follow the QR flow (`onQr` callback) or call {@link requestPairingCode} for
|
|
33
|
+
* the link-code flow.
|
|
34
|
+
*/
|
|
24
35
|
export declare class WaAuthClient {
|
|
25
36
|
private readonly options;
|
|
26
37
|
private readonly logger;
|
|
@@ -28,37 +39,112 @@ export declare class WaAuthClient {
|
|
|
28
39
|
private readonly authStore;
|
|
29
40
|
private readonly signalStore;
|
|
30
41
|
private readonly preKeyStore;
|
|
42
|
+
private readonly isConnected?;
|
|
31
43
|
private readonly qrFlow;
|
|
32
44
|
private readonly pairingFlow;
|
|
33
45
|
private credentials;
|
|
46
|
+
private versionOverride;
|
|
34
47
|
constructor(options: WaAuthClientOptions, deps: WaAuthClientDeps);
|
|
48
|
+
/**
|
|
49
|
+
* Returns a snapshot of auth readiness flags (connection, registration,
|
|
50
|
+
* pending QR/pairing prompts).
|
|
51
|
+
*/
|
|
35
52
|
getState(connected?: boolean): {
|
|
36
53
|
connected: boolean;
|
|
37
54
|
registered: boolean;
|
|
38
55
|
hasQr: boolean;
|
|
39
56
|
hasPairingCode: boolean;
|
|
40
57
|
};
|
|
58
|
+
/** Returns the currently-loaded credentials, or `null` before initialization. */
|
|
41
59
|
getCurrentCredentials(): WaAuthCredentials | null;
|
|
60
|
+
/**
|
|
61
|
+
* Loads persisted credentials from the auth store, or generates a fresh
|
|
62
|
+
* set when none exist. Must be called before connecting.
|
|
63
|
+
*/
|
|
42
64
|
loadOrCreateCredentials(): Promise<WaAuthCredentials>;
|
|
65
|
+
/**
|
|
66
|
+
* Builds a {@link WaCommsConfig} from the current credentials and the
|
|
67
|
+
* runtime device/transport options – feeds {@link WaComms}.
|
|
68
|
+
*/
|
|
43
69
|
buildCommsConfig(socketOptions: WaAuthSocketOptions, overrides?: {
|
|
44
|
-
readonly noiseTrustedRootCa?:
|
|
70
|
+
readonly noiseTrustedRootCa?: WaNoiseRootCa;
|
|
45
71
|
readonly disableNoiseCertificateChainVerification?: boolean;
|
|
46
|
-
}):
|
|
72
|
+
}): Promise<WaCommsConfig>;
|
|
73
|
+
/**
|
|
74
|
+
* One-shot override for the next {@link buildCommsConfig} call: takes
|
|
75
|
+
* precedence over the user-supplied `version` option, then clears. Used
|
|
76
|
+
* by the `recoverFromClientTooOld` auto-retry to inject a fresh version
|
|
77
|
+
* string fetched from `web.whatsapp.com` without mutating the user's
|
|
78
|
+
* options.
|
|
79
|
+
*/
|
|
80
|
+
setNextConnectVersion(version: string): void;
|
|
81
|
+
/** Clears the in-memory QR and pairing sessions without touching storage. */
|
|
47
82
|
clearTransientState(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Wipes credentials from memory **and** from the auth store. Does
|
|
85
|
+
* **not** touch the other store domains (signal, app-state, ...) -
|
|
86
|
+
* those are cleared separately when {@link WaClient.logout} triggers
|
|
87
|
+
* the server-side logout path, honoring `options.logoutStoreClear`.
|
|
88
|
+
* Call this manually only when you want to force a re-pair without
|
|
89
|
+
* going through the server logout IQ.
|
|
90
|
+
*/
|
|
48
91
|
clearStoredCredentials(): Promise<void>;
|
|
92
|
+
/** Stores the server's noise static key for subsequent handshakes. */
|
|
49
93
|
persistServerStaticKey(serverStaticKey: Uint8Array): Promise<void>;
|
|
94
|
+
/** Stores the "server holds prekeys" flag; persists only when the value changes. */
|
|
50
95
|
persistServerHasPreKeys(serverHasPreKeys: boolean): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Stores the routing-info blob received from the server. Skips persistence
|
|
98
|
+
* when the value matches the one already on disk.
|
|
99
|
+
*/
|
|
51
100
|
persistRoutingInfo(routingInfo: Uint8Array): Promise<void>;
|
|
101
|
+
/** Clears the persisted routing-info blob (used after a routing error). */
|
|
52
102
|
clearRoutingInfo(): Promise<WaAuthCredentials>;
|
|
103
|
+
/**
|
|
104
|
+
* Persists the per-connection success attributes from the server (LID,
|
|
105
|
+
* display name, companion key, last-success ts, props versions, ...). Only
|
|
106
|
+
* persists when at least one attribute actually changed.
|
|
107
|
+
*/
|
|
53
108
|
persistSuccessAttributes(attributes: WaSuccessPersistAttributes): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Requests an 8-character pairing code for `phoneNumber` (link-code flow).
|
|
111
|
+
* Pass `customCode` to suggest a specific code; the server still validates
|
|
112
|
+
* and may return a different one.
|
|
113
|
+
*
|
|
114
|
+
* The client must already be connected – kick off `WaClient.connect()` in
|
|
115
|
+
* parallel, wait for the `auth_pairing_required` event (or any QR), then
|
|
116
|
+
* call this. The user then enters the returned code in WhatsApp on their
|
|
117
|
+
* phone under *Linked Devices → Link with phone number instead*.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* // Start the handshake; do NOT await – connect() resolves only after pairing
|
|
122
|
+
* void client.connect()
|
|
123
|
+
*
|
|
124
|
+
* // Wait until the pairing screen is ready on the server side
|
|
125
|
+
* await new Promise<void>((resolve) => client.once('auth_pairing_required', () => resolve()))
|
|
126
|
+
*
|
|
127
|
+
* // Phone number in international format, digits only
|
|
128
|
+
* const code = await client.auth.requestPairingCode('5511999999999')
|
|
129
|
+
* console.log(`enter this on your phone: ${code.match(/.{1,4}/g)!.join('-')}`)
|
|
130
|
+
*
|
|
131
|
+
* // The `connect()` promise resolves after the user types the code:
|
|
132
|
+
* await new Promise<void>((resolve) => client.once('auth_paired', () => resolve()))
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
54
135
|
requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean, customCode?: string): Promise<string>;
|
|
136
|
+
/** Fetches the ISO country code the server resolved for the current account. */
|
|
55
137
|
fetchPairingCountryCodeIso(): Promise<string>;
|
|
138
|
+
/** Dispatcher: returns `true` when `node` is a pairing-related IQ-set we handled. */
|
|
56
139
|
handleIncomingIqSet(node: BinaryNode): Promise<boolean>;
|
|
140
|
+
/** Dispatcher: returns `true` when `node` is a link-code companion notification. */
|
|
57
141
|
handleLinkCodeNotification(node: BinaryNode): Promise<boolean>;
|
|
142
|
+
/** Dispatcher: returns `true` when `node` is a companion-registration refresh notification. */
|
|
58
143
|
handleCompanionRegRefreshNotification(node: BinaryNode): Promise<boolean>;
|
|
59
144
|
private patchCredentials;
|
|
60
145
|
private runHandled;
|
|
61
146
|
private updateCredentials;
|
|
147
|
+
private requireConnected;
|
|
62
148
|
private requireCredentials;
|
|
63
149
|
private handleError;
|
|
64
150
|
}
|
|
@@ -3,7 +3,8 @@ import type { Logger } from '../infra/log/types';
|
|
|
3
3
|
import type { WaAuthStore } from '../store/contracts/auth.store';
|
|
4
4
|
import type { WaPreKeyStore } from '../store/contracts/pre-key.store';
|
|
5
5
|
import type { WaSignalStore } from '../store/contracts/signal.store';
|
|
6
|
-
import type {
|
|
6
|
+
import type { WaNoiseRootCa } from '../transport/noise/WaNoiseCert';
|
|
7
|
+
import type { WaCommsConfig } from '../transport/types';
|
|
7
8
|
interface WaAuthCredentialsFlowArgs {
|
|
8
9
|
readonly logger: Logger;
|
|
9
10
|
readonly authStore: WaAuthStore;
|
|
@@ -14,7 +15,7 @@ interface WaAuthCredentialsFlowArgs {
|
|
|
14
15
|
export declare function loadOrCreateCredentials(args: WaAuthCredentialsFlowArgs): Promise<WaAuthCredentials>;
|
|
15
16
|
export declare function persistCredentials(args: WaAuthCredentialsFlowArgs, credentials: WaAuthCredentials): Promise<void>;
|
|
16
17
|
export declare function buildCommsConfig(logger: Logger, credentials: WaAuthCredentials, socketOptions: WaAuthSocketOptions, clientOptions: Pick<WaAuthClientOptions, 'deviceBrowser' | 'deviceOsDisplayName' | 'requireFullSync' | 'version' | 'mobileTransport'> & {
|
|
17
|
-
readonly noiseTrustedRootCa?:
|
|
18
|
+
readonly noiseTrustedRootCa?: WaNoiseRootCa;
|
|
18
19
|
readonly disableNoiseCertificateChainVerification?: boolean;
|
|
19
|
-
}): WaCommsConfig
|
|
20
|
+
}): Promise<WaCommsConfig>;
|
|
20
21
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { SignalKeyPair } from '../../crypto/curves/types';
|
|
2
|
-
export declare const CROCKFORD_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTVWXYZ";
|
|
3
2
|
export declare const PBKDF2_ITERATIONS: number;
|
|
4
3
|
export declare function normalizeCustomPairingCode(input: string): string;
|
|
5
4
|
export declare function createCompanionHello(options?: {
|
|
@@ -4,6 +4,11 @@ import type { RegistrationInfo, SignedPreKeyRecord } from '../signal/types';
|
|
|
4
4
|
import type { WaMobileTransportDeviceInfo } from '../transport/noise/WaMobileClientPayload';
|
|
5
5
|
import type { WaCommsConfig, WaProxyTransport } from '../transport/types';
|
|
6
6
|
export type { WaMobileTransportDeviceInfo } from '../transport/noise/WaMobileClientPayload';
|
|
7
|
+
/**
|
|
8
|
+
* @sensitive Contains private key material (`noiseKeyPair`, `signedPreKey`,
|
|
9
|
+
* `advSecretKey`, `serverStaticKey`, `companionEncStatic`). Never log, serialize
|
|
10
|
+
* via `JSON.stringify`, or transmit unencrypted. Persist with encryption-at-rest.
|
|
11
|
+
*/
|
|
7
12
|
export interface WaAuthCredentials {
|
|
8
13
|
readonly noiseKeyPair: SignalKeyPair;
|
|
9
14
|
readonly registrationInfo: RegistrationInfo;
|
|
@@ -33,13 +38,55 @@ export type WaAuthSocketOptions = Pick<WaCommsConfig, 'url' | 'urls' | 'protocol
|
|
|
33
38
|
readonly ws?: WaProxyTransport;
|
|
34
39
|
};
|
|
35
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* WhatsApp Web version supplied to {@link WaAuthClientOptions.version}. Either
|
|
43
|
+
* a literal `'x.y.z'` string or an async resolver invoked once per connect,
|
|
44
|
+
* letting callers refresh the version (e.g. via `fetchLatestWaWebVersion`)
|
|
45
|
+
* without rebuilding the client.
|
|
46
|
+
*/
|
|
47
|
+
export type WaVersionResolver = string | (() => string | Promise<string>);
|
|
36
48
|
export interface WaAuthClientOptions {
|
|
49
|
+
/**
|
|
50
|
+
* Browser id advertised during pairing (`'chrome' | 'firefox' | 'safari' |
|
|
51
|
+
* ...`, see {@link WA_BROWSERS}). Drives the platform id sent in the
|
|
52
|
+
* link-code stanza and the *Linked Devices* UI label on the phone.
|
|
53
|
+
* Defaults to `WA_DEFAULTS.DEVICE_BROWSER` (`'chrome'`).
|
|
54
|
+
*/
|
|
37
55
|
readonly deviceBrowser?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Override the numeric companion platform id (see
|
|
58
|
+
* {@link WA_COMPANION_PLATFORM_IDS}). Inferred from `deviceBrowser` when
|
|
59
|
+
* omitted – set explicitly for non-browser platforms (Electron, UWP, ...).
|
|
60
|
+
*/
|
|
38
61
|
readonly devicePlatform?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Human-readable OS name shown in the *Linked Devices* list (`'Windows'`,
|
|
64
|
+
* `'Mac OS'`, `'Linux'`). Defaults to the current runtime's OS.
|
|
65
|
+
*/
|
|
39
66
|
readonly deviceOsDisplayName?: string;
|
|
67
|
+
/**
|
|
68
|
+
* When `true`, request a full history download from the primary device on
|
|
69
|
+
* pairing instead of just recent messages. Off by default.
|
|
70
|
+
*/
|
|
40
71
|
readonly requireFullSync?: boolean;
|
|
41
|
-
|
|
72
|
+
/**
|
|
73
|
+
* WhatsApp Web version the client advertises. Either a `'x.y.z'` literal
|
|
74
|
+
* or a (sync/async) resolver invoked once per connect – use the resolver
|
|
75
|
+
* form together with {@link fetchLatestWaWebVersion} to refresh the
|
|
76
|
+
* version when the hardcoded default starts hitting `failure_client_too_old`.
|
|
77
|
+
* Defaults to a tested production version.
|
|
78
|
+
*/
|
|
79
|
+
readonly version?: WaVersionResolver;
|
|
80
|
+
/**
|
|
81
|
+
* **Dangerous escape hatches** – each flag disables a security check.
|
|
82
|
+
* Do not enable in production.
|
|
83
|
+
*/
|
|
42
84
|
readonly dangerous?: WaAuthDangerousOptions;
|
|
85
|
+
/**
|
|
86
|
+
* Mobile-transport overrides (TCP socket, device info). Set this to
|
|
87
|
+
* connect via the WhatsApp Mobile protocol instead of Web – see
|
|
88
|
+
* {@link WaMobileTransportOptions}.
|
|
89
|
+
*/
|
|
43
90
|
readonly mobileTransport?: WaMobileTransportOptions;
|
|
44
91
|
}
|
|
45
92
|
export interface WaMobileTransportOptions {
|