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,37 +1,115 @@
|
|
|
1
1
|
import type { SignalAddress } from '../signal/types';
|
|
2
|
+
/**
|
|
3
|
+
* Splits a JID into `user` and `server` parts at the `@` separator.
|
|
4
|
+
* Throws if the input does not contain a valid `user@server` shape.
|
|
5
|
+
*/
|
|
2
6
|
export declare function splitJid(jid: string): {
|
|
3
7
|
readonly user: string;
|
|
4
8
|
readonly server: string;
|
|
5
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Normalizes a user-supplied recipient (phone number, group id, or full JID)
|
|
12
|
+
* into a canonical JID. Strings already containing `@` are returned as-is;
|
|
13
|
+
* dashed inputs map to `<input>@g.us` (group); pure-digit inputs map to
|
|
14
|
+
* `<digits>@s.whatsapp.net`.
|
|
15
|
+
*/
|
|
6
16
|
export declare function normalizeRecipientJid(to: string): string;
|
|
17
|
+
/** Returns `true` for JIDs in the `@lid` server (linked-device identity). */
|
|
7
18
|
export declare function isLidJid(jid: string): boolean;
|
|
19
|
+
/** Returns `true` for JIDs in the `@s.whatsapp.net` server (phone-number user JIDs). */
|
|
20
|
+
export declare function isUserJid(jid: string): boolean;
|
|
21
|
+
/** Returns `true` for JIDs in the `@bot` server. */
|
|
22
|
+
export declare function isBotJid(jid: string): boolean;
|
|
23
|
+
/** Returns `true` for JIDs in the `@g.us` server (groups). */
|
|
8
24
|
export declare function isGroupJid(jid: string): boolean;
|
|
25
|
+
/** Returns `true` for JIDs in the `@broadcast` server (broadcast lists). */
|
|
9
26
|
export declare function isBroadcastJid(jid: string): boolean;
|
|
27
|
+
/** Returns `true` for the special `status@broadcast` JID. */
|
|
28
|
+
export declare function isStatusBroadcastJid(jid: string): boolean;
|
|
29
|
+
/** Returns `true` for JIDs in the `@newsletter` server. */
|
|
30
|
+
export declare function isNewsletterJid(jid: string): boolean;
|
|
31
|
+
/** Returns `true` for any group or broadcast JID. */
|
|
10
32
|
export declare function isGroupOrBroadcastJid(jid: string): boolean;
|
|
11
33
|
export interface ParsedJid {
|
|
12
34
|
readonly address: SignalAddress;
|
|
13
35
|
readonly userJid: string;
|
|
14
36
|
readonly normalizedJid: string;
|
|
15
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Parses a JID into a Signal-style `{ user, server, device }` address.
|
|
40
|
+
* `device` is `0` when the JID has no `:device` segment.
|
|
41
|
+
*/
|
|
16
42
|
export declare function parseSignalAddressFromJid(jid: string): SignalAddress;
|
|
43
|
+
/**
|
|
44
|
+
* Parses a JID and returns the Signal address plus the user-only and
|
|
45
|
+
* fully-normalized device JID forms in a single pass.
|
|
46
|
+
*/
|
|
17
47
|
export declare function parseJidFull(jid: string): ParsedJid;
|
|
48
|
+
/**
|
|
49
|
+
* Maps the hosted-account server variants (`hosted` / `hosted.lid`) back to
|
|
50
|
+
* their canonical Signal server (`hostDomain` / `lid`). Other servers are
|
|
51
|
+
* returned unchanged.
|
|
52
|
+
*/
|
|
18
53
|
export declare function canonicalizeSignalServer(server: string, hostDomain?: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the JID rewritten with its server canonicalized via
|
|
56
|
+
* {@link canonicalizeSignalServer} – used to derive the address Signal
|
|
57
|
+
* sessions are keyed by.
|
|
58
|
+
*/
|
|
19
59
|
export declare function canonicalizeSignalJid(jid: string, hostDomain?: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* Strips the `:device` segment from a JID, returning the bare `user@server`
|
|
62
|
+
* form. Set `options.canonicalizeSignalServer` to also rewrite hosted servers
|
|
63
|
+
* via {@link canonicalizeSignalServer}.
|
|
64
|
+
*/
|
|
20
65
|
export declare function toUserJid(jid: string, options?: {
|
|
21
66
|
readonly canonicalizeSignalServer?: boolean;
|
|
22
67
|
readonly hostDomain?: string;
|
|
23
68
|
}): string;
|
|
69
|
+
/**
|
|
70
|
+
* Returns the JID in its full device form. JIDs with `device === 0` lose the
|
|
71
|
+
* device segment (`user@server`); all others keep `user:device@server`.
|
|
72
|
+
*/
|
|
24
73
|
export declare function normalizeDeviceJid(jid: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Appends `:device` to a bare user JID. A falsy `device` returns the input
|
|
76
|
+
* unchanged.
|
|
77
|
+
*/
|
|
78
|
+
export declare function applyDeviceToJid(userJid: string, device: number | undefined): string;
|
|
79
|
+
/** Returns `true` when `deviceId` matches the WhatsApp hosted-device id. */
|
|
25
80
|
export declare function isHostedDeviceId(deviceId: number): boolean;
|
|
81
|
+
/** Returns `true` for the hosted server variants (`hosted` and `hosted.lid`). */
|
|
26
82
|
export declare function isHostedServer(server: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Returns `true` when the JID refers to a hosted device – either by server
|
|
85
|
+
* (`@hosted` / `@hosted.lid`) or by a `:HOSTED_DEVICE_ID@…` device segment.
|
|
86
|
+
*/
|
|
27
87
|
export declare function isHostedDeviceJid(jid: string): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Builds a device JID from its parts. When `options.isHosted` is set, the
|
|
90
|
+
* hosted-server variant is selected (preserving LID vs phone) and the canonical
|
|
91
|
+
* hosted device id is used.
|
|
92
|
+
*/
|
|
28
93
|
export declare function buildDeviceJid(user: string, normalizedServer: string, deviceId: number, options?: {
|
|
29
94
|
readonly rawServer?: string;
|
|
30
95
|
readonly isHosted?: boolean;
|
|
31
96
|
}): string;
|
|
97
|
+
/**
|
|
98
|
+
* Extracts the numeric username and device id from the authenticated user's
|
|
99
|
+
* own JID. Throws when either segment is missing, non-numeric, or out of the
|
|
100
|
+
* safe-integer range.
|
|
101
|
+
*/
|
|
32
102
|
export declare function getLoginIdentity(meJid: string): {
|
|
33
103
|
readonly username: number;
|
|
34
104
|
readonly device: number;
|
|
35
105
|
};
|
|
106
|
+
/**
|
|
107
|
+
* Builds a `<digits>@s.whatsapp.net` JID from a free-form phone number,
|
|
108
|
+
* stripping non-digit characters. Throws when no digits are found.
|
|
109
|
+
*/
|
|
36
110
|
export declare function parsePhoneJid(input: string): string;
|
|
111
|
+
/**
|
|
112
|
+
* Returns a stable `user|server|device` key for a Signal address, suitable
|
|
113
|
+
* as a Map/Set key.
|
|
114
|
+
*/
|
|
37
115
|
export declare function signalAddressKey(address: SignalAddress): string;
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
export declare const WA_MEDIA_HKDF_INFO: Readonly<{
|
|
2
|
-
readonly document:
|
|
3
|
-
readonly image:
|
|
4
|
-
readonly sticker:
|
|
5
|
-
readonly 'xma-image':
|
|
6
|
-
readonly video:
|
|
7
|
-
readonly gif:
|
|
8
|
-
readonly audio:
|
|
9
|
-
readonly ptt:
|
|
10
|
-
readonly 'md-app-state':
|
|
11
|
-
readonly 'md-msg-hist':
|
|
12
|
-
readonly history:
|
|
2
|
+
readonly document: NodeJS.NonSharedUint8Array;
|
|
3
|
+
readonly image: NodeJS.NonSharedUint8Array;
|
|
4
|
+
readonly sticker: NodeJS.NonSharedUint8Array;
|
|
5
|
+
readonly 'xma-image': NodeJS.NonSharedUint8Array;
|
|
6
|
+
readonly video: NodeJS.NonSharedUint8Array;
|
|
7
|
+
readonly gif: NodeJS.NonSharedUint8Array;
|
|
8
|
+
readonly audio: NodeJS.NonSharedUint8Array;
|
|
9
|
+
readonly ptt: NodeJS.NonSharedUint8Array;
|
|
10
|
+
readonly 'md-app-state': NodeJS.NonSharedUint8Array;
|
|
11
|
+
readonly 'md-msg-hist': NodeJS.NonSharedUint8Array;
|
|
12
|
+
readonly history: NodeJS.NonSharedUint8Array;
|
|
13
|
+
readonly 'sticker-pack': NodeJS.NonSharedUint8Array;
|
|
14
|
+
readonly 'thumbnail-sticker-pack': NodeJS.NonSharedUint8Array;
|
|
15
|
+
readonly 'thumbnail-link': NodeJS.NonSharedUint8Array;
|
|
13
16
|
}>;
|
|
14
|
-
export declare const WA_PREVIEW_MEDIA_HKDF_INFO
|
|
15
|
-
|
|
17
|
+
export declare const WA_PREVIEW_MEDIA_HKDF_INFO: NodeJS.NonSharedUint8Array;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the HKDF `info` bytes used to derive per-media keys for a given
|
|
20
|
+
* media type. Throws for unsupported types – see {@link WA_MEDIA_HKDF_INFO}
|
|
21
|
+
* for the supported set.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getWaMediaHkdfInfo(mediaType: string): Uint8Array;
|
|
@@ -11,6 +11,7 @@ export declare const WA_MESSAGE_TYPES: Readonly<{
|
|
|
11
11
|
readonly ACK_TYPE_ERROR: "error";
|
|
12
12
|
readonly ACK_CLASS_ERROR: "error";
|
|
13
13
|
readonly ACK_CLASS_MESSAGE: "message";
|
|
14
|
+
readonly ACK_CLASS_CALL: "call";
|
|
14
15
|
readonly RECEIPT_TYPE_DELIVERY: "delivery";
|
|
15
16
|
readonly RECEIPT_TYPE_SENDER: "sender";
|
|
16
17
|
readonly RECEIPT_TYPE_INACTIVE: "inactive";
|
|
@@ -22,7 +23,9 @@ export declare const WA_MESSAGE_TYPES: Readonly<{
|
|
|
22
23
|
readonly RECEIPT_TYPE_PEER: "peer_msg";
|
|
23
24
|
readonly RECEIPT_TYPE_SERVER_ERROR: "server-error";
|
|
24
25
|
readonly RECEIPT_TYPE_RETRY: "retry";
|
|
26
|
+
readonly RECEIPT_TYPE_ENC_REKEY_RETRY: "enc_rekey_retry";
|
|
25
27
|
}>;
|
|
28
|
+
export type WaOutboundReceiptType = typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_READ | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_READ_SELF | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_PLAYED | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_PLAYED_SELF | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_INACTIVE | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_HISTORY_SYNC;
|
|
26
29
|
export declare const WA_RETRYABLE_ACK_CODES: readonly ["408", "429", "500", "503"];
|
|
27
30
|
export declare const WA_STANZA_MSG_TYPES: Readonly<{
|
|
28
31
|
readonly TEXT: "text";
|
|
@@ -36,6 +39,7 @@ export declare const WA_STANZA_MSG_TYPES: Readonly<{
|
|
|
36
39
|
export declare const WA_EDIT_ATTRS: Readonly<{
|
|
37
40
|
readonly MESSAGE_EDIT: "1";
|
|
38
41
|
readonly PIN_IN_CHAT: "2";
|
|
42
|
+
readonly NEWSLETTER_EDIT: "3";
|
|
39
43
|
readonly SENDER_REVOKE: "7";
|
|
40
44
|
readonly ADMIN_REVOKE: "8";
|
|
41
45
|
}>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export declare const WA_NEWSLETTER_ROLES: Readonly<{
|
|
2
|
+
readonly SUBSCRIBER: "SUBSCRIBER";
|
|
3
|
+
readonly GUEST: "GUEST";
|
|
4
|
+
readonly ADMIN: "ADMIN";
|
|
5
|
+
readonly OWNER: "OWNER";
|
|
6
|
+
}>;
|
|
7
|
+
export type WaNewsletterRole = (typeof WA_NEWSLETTER_ROLES)[keyof typeof WA_NEWSLETTER_ROLES];
|
|
8
|
+
export declare const WA_NEWSLETTER_STATE_TYPES: Readonly<{
|
|
9
|
+
readonly ACTIVE: "ACTIVE";
|
|
10
|
+
readonly SUSPENDED: "SUSPENDED";
|
|
11
|
+
readonly GEOSUSPENDED: "GEOSUSPENDED";
|
|
12
|
+
readonly DELETED: "DELETED";
|
|
13
|
+
readonly NON_EXISTING: "NON_EXISTING";
|
|
14
|
+
}>;
|
|
15
|
+
export type WaNewsletterStateType = (typeof WA_NEWSLETTER_STATE_TYPES)[keyof typeof WA_NEWSLETTER_STATE_TYPES];
|
|
16
|
+
export declare const WA_NEWSLETTER_PICTURE_TYPES: Readonly<{
|
|
17
|
+
readonly IMAGE: "IMAGE";
|
|
18
|
+
readonly PREVIEW: "PREVIEW";
|
|
19
|
+
}>;
|
|
20
|
+
export declare const WA_NEWSLETTER_FETCH_KEY_TYPES: Readonly<{
|
|
21
|
+
readonly JID: "JID";
|
|
22
|
+
readonly INVITE: "INVITE";
|
|
23
|
+
}>;
|
|
24
|
+
export declare const WA_NEWSLETTER_VIEW_ROLES: Readonly<{
|
|
25
|
+
readonly GUEST: "GUEST";
|
|
26
|
+
readonly SUBSCRIBER: "SUBSCRIBER";
|
|
27
|
+
readonly ADMIN: "ADMIN";
|
|
28
|
+
readonly OWNER: "OWNER";
|
|
29
|
+
}>;
|
|
30
|
+
export declare const WA_NEWSLETTER_MUTE_TYPES: Readonly<{
|
|
31
|
+
readonly ADMIN_ACTIVITY: "MUTE_ADMIN_ACTIVITY";
|
|
32
|
+
readonly FOLLOWER_ACTIVITY: "MUTE_FOLLOWER_ACTIVITY";
|
|
33
|
+
}>;
|
|
34
|
+
export declare const WA_NEWSLETTER_MUTE_VALUES: Readonly<{
|
|
35
|
+
readonly ON: "ON";
|
|
36
|
+
readonly OFF: "OFF";
|
|
37
|
+
}>;
|
|
38
|
+
export declare const WA_NEWSLETTER_SEND_TYPES: Readonly<{
|
|
39
|
+
readonly TEXT: "text";
|
|
40
|
+
readonly MEDIA: "media";
|
|
41
|
+
readonly REACTION: "reaction";
|
|
42
|
+
readonly REVOKE: "revoke";
|
|
43
|
+
}>;
|
|
44
|
+
export type WaNewsletterSendType = (typeof WA_NEWSLETTER_SEND_TYPES)[keyof typeof WA_NEWSLETTER_SEND_TYPES];
|
|
45
|
+
export declare const WA_NEWSLETTER_RECEIVE_TYPES: Readonly<{
|
|
46
|
+
readonly TEXT: "NewsletterText";
|
|
47
|
+
readonly MEDIA: "NewsletterMedia";
|
|
48
|
+
readonly REACTION: "NewsletterReaction";
|
|
49
|
+
readonly REACTION_REVOKE: "NewsletterReactionRevoke";
|
|
50
|
+
readonly REVOKE: "NewsletterRevoke";
|
|
51
|
+
readonly EDIT: "NewsletterEdit";
|
|
52
|
+
readonly POLL_CREATION: "NewsletterPollCreation";
|
|
53
|
+
readonly POLL_VOTE: "NewsletterPollVote";
|
|
54
|
+
readonly POLL_RESULT_SNAPSHOT: "NewsletterPollResultSnapshot";
|
|
55
|
+
readonly QUIZ_CREATION: "NewsletterQuizCreation";
|
|
56
|
+
readonly QUESTION: "NewsletterQuestion";
|
|
57
|
+
readonly QUESTION_REPLY: "NewsletterQuestionReply";
|
|
58
|
+
readonly QUESTION_RESPONSE: "NewsletterQuestionResponse";
|
|
59
|
+
readonly WAMO_EMPTY: "NewsletterWAMOEmpty";
|
|
60
|
+
}>;
|
|
61
|
+
export type WaNewsletterReceiveType = (typeof WA_NEWSLETTER_RECEIVE_TYPES)[keyof typeof WA_NEWSLETTER_RECEIVE_TYPES];
|
|
62
|
+
export declare const WA_NEWSLETTER_VERIFICATION_STATES: Readonly<{
|
|
63
|
+
readonly VERIFIED: "VERIFIED";
|
|
64
|
+
readonly UNVERIFIED: "UNVERIFIED";
|
|
65
|
+
}>;
|
|
@@ -63,6 +63,22 @@ export declare const WA_NODE_TAGS: Readonly<{
|
|
|
63
63
|
readonly MEMBERSHIP_APPROVAL_MODE: "membership_approval_mode";
|
|
64
64
|
readonly GROUP_JOIN: "group_join";
|
|
65
65
|
readonly ABPROPS: "abprops";
|
|
66
|
+
readonly PLAINTEXT: "plaintext";
|
|
67
|
+
readonly PRESENCE: "presence";
|
|
68
|
+
readonly CHATSTATE: "chatstate";
|
|
69
|
+
readonly CALL: "call";
|
|
70
|
+
readonly COMPOSING: "composing";
|
|
71
|
+
readonly PAUSED: "paused";
|
|
72
|
+
readonly BIZ: "biz";
|
|
73
|
+
readonly INTERACTIVE: "interactive";
|
|
74
|
+
readonly NATIVE_FLOW: "native_flow";
|
|
75
|
+
readonly BOT: "bot";
|
|
76
|
+
readonly META: "meta";
|
|
77
|
+
readonly STATUS: "status";
|
|
78
|
+
readonly USERNAME: "username";
|
|
79
|
+
readonly TEXT_STATUS: "text_status";
|
|
80
|
+
readonly DISAPPEARING_MODE: "disappearing_mode";
|
|
81
|
+
readonly BUSINESS: "business";
|
|
66
82
|
}>;
|
|
67
83
|
export declare const WA_IQ_TYPES: Readonly<{
|
|
68
84
|
readonly GET: "get";
|
|
@@ -84,8 +100,12 @@ export declare const WA_XMLNS: Readonly<{
|
|
|
84
100
|
readonly STATUS: "status";
|
|
85
101
|
readonly GROUPS: "w:g2";
|
|
86
102
|
readonly NEWSLETTER: "newsletter";
|
|
103
|
+
readonly TOS: "tos";
|
|
87
104
|
readonly XMPP_PING: "urn:xmpp:ping";
|
|
88
105
|
readonly WHATSAPP_PING: "w:p";
|
|
89
106
|
readonly ABPROPS: "abt";
|
|
90
107
|
readonly MEX: "w:mex";
|
|
108
|
+
readonly BOT: "bot";
|
|
109
|
+
readonly DISAPPEARING_MODE: "disappearing_mode";
|
|
110
|
+
readonly PASSIVE: "passive";
|
|
91
111
|
}>;
|
|
@@ -4,6 +4,20 @@ export declare const WA_NOTIFICATION_TYPES: Readonly<{
|
|
|
4
4
|
readonly DEVICES: "devices";
|
|
5
5
|
readonly SERVER: "server";
|
|
6
6
|
readonly REGISTRATION: "registration";
|
|
7
|
+
readonly NEWSLETTER: "newsletter";
|
|
8
|
+
readonly BUSINESS: "business";
|
|
9
|
+
readonly PICTURE: "picture";
|
|
10
|
+
}>;
|
|
11
|
+
export declare const WA_BUSINESS_NOTIFICATION_TAGS: Readonly<{
|
|
12
|
+
readonly VERIFIED_NAME: "verified_name";
|
|
13
|
+
readonly REMOVE: "remove";
|
|
14
|
+
readonly PROFILE: "profile";
|
|
15
|
+
readonly PRODUCT_CATALOG: "product_catalog";
|
|
16
|
+
readonly SUBSCRIPTIONS: "subscriptions";
|
|
17
|
+
readonly FEATURE_FLAGS: "feature_flags";
|
|
18
|
+
}>;
|
|
19
|
+
export declare const WA_NEWSLETTER_NOTIFICATION_TAGS: Readonly<{
|
|
20
|
+
readonly LIVE_UPDATES: "live_updates";
|
|
7
21
|
}>;
|
|
8
22
|
export declare const WA_REGISTRATION_NOTIFICATION_TAGS: Readonly<{
|
|
9
23
|
readonly WA_OLD_REGISTRATION: "wa_old_registration";
|
|
@@ -55,4 +69,6 @@ export declare const WA_GROUP_NOTIFICATION_TAGS: Readonly<{
|
|
|
55
69
|
readonly GROUP_SAFETY_CHECK: "group_safety_check";
|
|
56
70
|
readonly LIMIT_SHARING_ENABLED: "limit_sharing_enabled";
|
|
57
71
|
readonly MISSING_PARTICIPANT_IDENTIFICATION: "missing_participant_identification";
|
|
72
|
+
readonly GROUP_HISTORY: "group_history";
|
|
73
|
+
readonly NO_GROUP_HISTORY: "no_group_history";
|
|
58
74
|
}>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const WA_PRESENCE_TYPES: Readonly<{
|
|
2
|
+
readonly AVAILABLE: "available";
|
|
3
|
+
readonly UNAVAILABLE: "unavailable";
|
|
4
|
+
readonly SUBSCRIBE: "subscribe";
|
|
5
|
+
}>;
|
|
6
|
+
export declare const WA_PRESENCE_LAST_SENTINELS: Readonly<{
|
|
7
|
+
readonly DENY: "deny";
|
|
8
|
+
readonly NONE: "none";
|
|
9
|
+
readonly ERROR: "error";
|
|
10
|
+
}>;
|
|
11
|
+
export declare const WA_CHATSTATE_MEDIA: Readonly<{
|
|
12
|
+
readonly AUDIO: "audio";
|
|
13
|
+
}>;
|
|
14
|
+
export type WaPresenceType = (typeof WA_PRESENCE_TYPES)[keyof typeof WA_PRESENCE_TYPES];
|
|
15
|
+
export type WaPresenceLastSentinel = (typeof WA_PRESENCE_LAST_SENTINELS)[keyof typeof WA_PRESENCE_LAST_SENTINELS];
|
|
16
|
+
export type WaChatstateMedia = (typeof WA_CHATSTATE_MEDIA)[keyof typeof WA_CHATSTATE_MEDIA];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const WA_STATUS_DISTRIBUTION_SETTINGS: Readonly<{
|
|
2
|
+
readonly CONTACTS: "contacts";
|
|
3
|
+
readonly ALLOWLIST: "allowlist";
|
|
4
|
+
readonly DENYLIST: "denylist";
|
|
5
|
+
readonly CLOSE_FRIENDS: "close_friends";
|
|
6
|
+
}>;
|
|
7
|
+
export type WaStatusDistributionSetting = (typeof WA_STATUS_DISTRIBUTION_SETTINGS)[keyof typeof WA_STATUS_DISTRIBUTION_SETTINGS];
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import type { WaRetryReplayPayload } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Encodes a {@link WaRetryReplayPayload} into the on-disk codec format used
|
|
4
|
+
* by the retry store. Supports the `plaintext`/`encrypted`/`opaque_node` modes.
|
|
5
|
+
*/
|
|
2
6
|
export declare function encodeRetryReplayPayload(payload: WaRetryReplayPayload): Uint8Array;
|
|
7
|
+
/** Inverse of {@link encodeRetryReplayPayload}. Throws on bad magic/version. */
|
|
3
8
|
export declare function decodeRetryReplayPayload(raw: Uint8Array): WaRetryReplayPayload;
|
|
@@ -2,7 +2,7 @@ export { MAX_RETRY_ATTEMPTS, RETRY_KEYS_MIN_COUNT, RETRY_OUTBOUND_TTL_MS, RETRY_
|
|
|
2
2
|
export type { WaRetryReasonCode } from './constants';
|
|
3
3
|
export { mapRetryReasonFromError } from './reason';
|
|
4
4
|
export { parseRetryReceiptRequest, pickRetryStateMax } from './parse';
|
|
5
|
-
export type { WaParsedRetryRequest, WaRetryDecryptFailureContext, WaRetryEncryptedReplayPayload, WaRetryKey, WaRetryKeyBundle, WaRetryOpaqueNodeReplayPayload, WaRetryOutboundMessageRecord, WaRetryOutboundMode, WaRetryOutboundState, WaRetryPlaintextReplayPayload, WaRetryReceiptType, WaRetryReplayPayload, WaRetryStoredReplayPayload
|
|
5
|
+
export type { WaParsedRetryRequest, WaRetryDecryptFailureContext, WaRetryEncryptedReplayPayload, WaRetryKey, WaRetryKeyBundle, WaRetryOpaqueNodeReplayPayload, WaRetryOutboundMessageRecord, WaRetryOutboundMode, WaRetryOutboundState, WaRetryPlaintextReplayPayload, WaRetryReceiptType, WaRetryReplayPayload, WaRetryStoredReplayPayload } from './types';
|
|
6
6
|
export { decodeRetryReplayPayload, encodeRetryReplayPayload } from './codec';
|
|
7
7
|
export { WaRetryReplayService, type WaRetryReplayServiceOptions, type WaRetryResendResult } from './replay';
|
|
8
8
|
export { createOutboundRetryTracker, type OutboundRetryTrackHint, type OutboundRetryTracker } from './tracker';
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { WaParsedRetryRequest, WaRetryOutboundState } from './types';
|
|
2
2
|
import type { BinaryNode } from '../transport/types';
|
|
3
|
+
/**
|
|
4
|
+
* Parses an incoming `receipt` stanza into a {@link WaParsedRetryRequest}.
|
|
5
|
+
* Returns `null` when the stanza is not a retry/rekey-retry receipt; throws
|
|
6
|
+
* when required attrs/children are missing.
|
|
7
|
+
*/
|
|
3
8
|
export declare function parseRetryReceiptRequest(node: BinaryNode, options?: {
|
|
4
9
|
readonly expectedToJids?: readonly string[];
|
|
5
10
|
}): WaParsedRetryRequest | null;
|
|
11
|
+
/**
|
|
12
|
+
* Returns whichever of `left`/`right` represents the more advanced retry
|
|
13
|
+
* state (according to the internal precedence rank).
|
|
14
|
+
*/
|
|
6
15
|
export declare function pickRetryStateMax(left: WaRetryOutboundState, right: WaRetryOutboundState): WaRetryOutboundState;
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
import { type WaRetryReasonCode } from './constants';
|
|
2
|
+
/**
|
|
3
|
+
* Maps a decryption/Signal error to the appropriate {@link WaRetryReasonCode}
|
|
4
|
+
* so an outbound retry receipt carries the correct `error` attribute.
|
|
5
|
+
* Returns `undefined` when no known reason matches.
|
|
6
|
+
*/
|
|
2
7
|
export declare function mapRetryReasonFromError(error: unknown): WaRetryReasonCode | undefined;
|
|
@@ -1,26 +1,40 @@
|
|
|
1
|
+
import type { WaAuthCredentials } from '../auth/types';
|
|
1
2
|
import type { Logger } from '../infra/log/types';
|
|
3
|
+
import { type IcdcMeta } from '../message/crypto/icdc';
|
|
2
4
|
import type { WaMessageClient } from '../message/WaMessageClient';
|
|
3
|
-
import { type Proto } from '..';
|
|
4
5
|
import type { WaRetryOutboundMessageRecord } from './types';
|
|
6
|
+
import type { SignalSessionResolver } from '../signal/session/resolver';
|
|
5
7
|
import type { SignalProtocol } from '../signal/session/SignalProtocol';
|
|
6
8
|
export interface WaRetryReplayServiceOptions {
|
|
7
9
|
readonly logger: Logger;
|
|
8
10
|
readonly messageClient: WaMessageClient;
|
|
9
11
|
readonly signalProtocol: SignalProtocol;
|
|
10
|
-
readonly
|
|
11
|
-
readonly
|
|
12
|
-
readonly
|
|
12
|
+
readonly sessionResolver: SignalSessionResolver;
|
|
13
|
+
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
14
|
+
readonly resolveUserIcdc?: (userJid: string) => Promise<IcdcMeta | null>;
|
|
13
15
|
}
|
|
14
16
|
export type WaRetryResendResult = 'resent' | 'ineligible';
|
|
17
|
+
/**
|
|
18
|
+
* Replays a previously-sent outbound message in response to an incoming
|
|
19
|
+
* retry receipt. Dispatches to plaintext/encrypted/opaque-node handlers
|
|
20
|
+
* based on the stored payload shape.
|
|
21
|
+
*/
|
|
15
22
|
export declare class WaRetryReplayService {
|
|
16
23
|
private readonly options;
|
|
17
24
|
constructor(options: WaRetryReplayServiceOptions);
|
|
25
|
+
/**
|
|
26
|
+
* Resends `outbound` to `requesterJid`. Returns `'resent'` on a fresh
|
|
27
|
+
* send or `'ineligible'` when the cached payload cannot satisfy the
|
|
28
|
+
* request (e.g. requester not in the original device list).
|
|
29
|
+
*/
|
|
18
30
|
resendOutboundMessage(outbound: WaRetryOutboundMessageRecord, requesterJid: string, retryCount: number): Promise<WaRetryResendResult>;
|
|
19
31
|
private resendPlaintextPayload;
|
|
32
|
+
private resolveSignedDeviceIdentity;
|
|
33
|
+
private refreshRetryPlaintext;
|
|
34
|
+
private safeUserJid;
|
|
20
35
|
private resendGroupPlaintextPayload;
|
|
21
36
|
private resendEncryptedPayload;
|
|
22
37
|
private resendOpaquePayload;
|
|
23
|
-
private maybeWrapGroupRetryPlaintextForSelfDevice;
|
|
24
38
|
private isRequesterCurrentAccount;
|
|
25
39
|
private isOpaqueReplayCompatible;
|
|
26
40
|
}
|
|
@@ -5,15 +5,22 @@ import type { WaRetryStore } from '../store/contracts/retry.store';
|
|
|
5
5
|
export type OutboundRetryTrackHint = {
|
|
6
6
|
readonly messageIdHint?: string;
|
|
7
7
|
readonly toJid?: string;
|
|
8
|
-
readonly type: string;
|
|
9
8
|
readonly replayPayload: WaRetryReplayPayload;
|
|
10
|
-
readonly participantJid?: string;
|
|
11
|
-
readonly recipientJid?: string;
|
|
12
9
|
readonly eligibleRequesterDeviceJids?: readonly string[];
|
|
13
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Wraps message publishes and persists a replay record so the
|
|
13
|
+
* {@link WaRetryReplayService} can re-send the message later if a retry
|
|
14
|
+
* receipt arrives.
|
|
15
|
+
*/
|
|
14
16
|
export type OutboundRetryTracker = {
|
|
17
|
+
/**
|
|
18
|
+
* Runs `publish`, then upserts a retry-outbound record built from the
|
|
19
|
+
* tracking `hint`. Returns the publish result unchanged.
|
|
20
|
+
*/
|
|
15
21
|
track(hint: OutboundRetryTrackHint, publish: () => Promise<WaMessagePublishResult>): Promise<WaMessagePublishResult>;
|
|
16
22
|
};
|
|
23
|
+
/** Builds an {@link OutboundRetryTracker} backed by a {@link WaRetryStore}. */
|
|
17
24
|
export declare function createOutboundRetryTracker(options: {
|
|
18
25
|
readonly retryStore: WaRetryStore;
|
|
19
26
|
readonly logger: Logger;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { WA_MESSAGE_TYPES } from '../protocol/message';
|
|
1
2
|
import type { BinaryNode } from '../transport/types';
|
|
2
|
-
export type WaRetryReceiptType =
|
|
3
|
+
export type WaRetryReceiptType = typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_RETRY | typeof WA_MESSAGE_TYPES.RECEIPT_TYPE_ENC_REKEY_RETRY;
|
|
3
4
|
export type WaRetryOutboundMode = 'plaintext' | 'encrypted' | 'opaque_node';
|
|
4
5
|
export type WaRetryOutboundState = 'pending' | 'delivered' | 'read' | 'played' | 'ineligible';
|
|
5
6
|
export interface WaRetryKey {
|
|
@@ -7,9 +8,6 @@ export interface WaRetryKey {
|
|
|
7
8
|
readonly publicKey: Uint8Array;
|
|
8
9
|
readonly signature?: Uint8Array;
|
|
9
10
|
}
|
|
10
|
-
export type WaRetrySignedKey = WaRetryKey & {
|
|
11
|
-
readonly signature: Uint8Array;
|
|
12
|
-
};
|
|
13
11
|
export interface WaRetryKeyBundle {
|
|
14
12
|
readonly identity: Uint8Array;
|
|
15
13
|
readonly deviceIdentity?: Uint8Array;
|
|
@@ -44,6 +42,7 @@ export interface WaRetryPlaintextReplayPayload {
|
|
|
44
42
|
readonly to: string;
|
|
45
43
|
readonly type: string;
|
|
46
44
|
readonly plaintext: Uint8Array;
|
|
45
|
+
readonly statusSetting?: string;
|
|
47
46
|
}
|
|
48
47
|
export interface WaRetryEncryptedReplayPayload {
|
|
49
48
|
readonly mode: 'encrypted';
|
|
@@ -62,15 +61,11 @@ export type WaRetryStoredReplayPayload = Uint8Array | WaRetryReplayPayload;
|
|
|
62
61
|
export interface WaRetryOutboundMessageRecord {
|
|
63
62
|
readonly messageId: string;
|
|
64
63
|
readonly toJid: string;
|
|
65
|
-
readonly participantJid?: string;
|
|
66
|
-
readonly recipientJid?: string;
|
|
67
64
|
readonly eligibleRequesterDeviceJids?: readonly string[];
|
|
68
65
|
readonly deliveredRequesterDeviceJids?: readonly string[];
|
|
69
|
-
readonly messageType: string;
|
|
70
66
|
readonly replayMode: WaRetryOutboundMode;
|
|
71
67
|
readonly replayPayload: WaRetryStoredReplayPayload;
|
|
72
68
|
readonly state: WaRetryOutboundState;
|
|
73
|
-
readonly createdAtMs: number;
|
|
74
69
|
readonly updatedAtMs: number;
|
|
75
70
|
readonly expiresAtMs: number;
|
|
76
71
|
}
|
|
@@ -15,6 +15,10 @@ export interface SignalLidSyncResult {
|
|
|
15
15
|
readonly lidJid: string | null;
|
|
16
16
|
readonly exists: boolean;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolves the device list and LID mapping for a set of users via the `usync`
|
|
20
|
+
* protocol. Concurrent calls for the same JIDs are deduplicated.
|
|
21
|
+
*/
|
|
18
22
|
export declare class SignalDeviceSyncApi {
|
|
19
23
|
private readonly logger;
|
|
20
24
|
private readonly query;
|
|
@@ -24,12 +28,28 @@ export declare class SignalDeviceSyncApi {
|
|
|
24
28
|
private readonly generateSid;
|
|
25
29
|
private readonly syncDedup;
|
|
26
30
|
constructor(options: SignalDeviceSyncApiOptions);
|
|
31
|
+
/**
|
|
32
|
+
* Refreshes the device list for every JID in `userJids`. Returns the
|
|
33
|
+
* resolved per-user device JIDs (matches the on-store snapshot).
|
|
34
|
+
*/
|
|
27
35
|
syncDeviceList(userJids: readonly string[], timeoutMs?: number): Promise<readonly {
|
|
28
36
|
readonly jid: string;
|
|
29
37
|
readonly deviceJids: readonly string[];
|
|
30
38
|
}[]>;
|
|
31
39
|
private syncDeviceListInternal;
|
|
40
|
+
/**
|
|
41
|
+
* Looks up LIDs for a list of phone JIDs via a `lid` usync query. Returns
|
|
42
|
+
* one entry per input JID with `exists` indicating server-side presence.
|
|
43
|
+
*/
|
|
32
44
|
queryLidsByPhoneJids(phoneJids: readonly string[], timeoutMs?: number): Promise<readonly SignalLidSyncResult[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Enriches existing device-list snapshots with the resolved LID equivalents
|
|
47
|
+
* so {@link WaDeviceListStore.findByAnyUserJid} can later match a retry
|
|
48
|
+
* receipt arriving in LID form against an eligible list stored in PN form
|
|
49
|
+
* (and vice versa). Skips users with no cached snapshot — the alt gets
|
|
50
|
+
* recorded on the next {@link syncDeviceList} sweep.
|
|
51
|
+
*/
|
|
52
|
+
private propagateAltUserJids;
|
|
33
53
|
private collectUsersToQuery;
|
|
34
54
|
private makeDeviceSyncRequest;
|
|
35
55
|
private makeLidSyncRequest;
|
|
@@ -21,6 +21,11 @@ export interface SignalDigestPrefetchedLocalKeyBundle {
|
|
|
21
21
|
readonly registrationInfo: RegistrationInfo;
|
|
22
22
|
readonly signedPreKey: SignedPreKeyRecord;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Validates the local Signal key bundle (identity, signed prekey, one-time
|
|
26
|
+
* prekey ids) against the server-side digest. Used to detect drift after a
|
|
27
|
+
* crash or partial sync and decide whether to re-upload.
|
|
28
|
+
*/
|
|
24
29
|
export declare class SignalDigestSyncApi {
|
|
25
30
|
private readonly logger;
|
|
26
31
|
private readonly query;
|
|
@@ -29,6 +34,11 @@ export declare class SignalDigestSyncApi {
|
|
|
29
34
|
private readonly defaultTimeoutMs;
|
|
30
35
|
private readonly hostDomain;
|
|
31
36
|
constructor(options: SignalDigestSyncApiOptions);
|
|
37
|
+
/**
|
|
38
|
+
* Compares the local Signal key bundle digest with the server's. Returns
|
|
39
|
+
* a structured result describing whether anything diverged and which
|
|
40
|
+
* field caused the mismatch.
|
|
41
|
+
*/
|
|
32
42
|
validateLocalKeyBundle(timeoutMs?: number): Promise<SignalDigestValidationResult>;
|
|
33
43
|
validateLocalKeyBundle(prefetched?: SignalDigestPrefetchedLocalKeyBundle, timeoutMs?: number): Promise<SignalDigestValidationResult>;
|
|
34
44
|
private parseDigestPayload;
|
|
@@ -13,6 +13,11 @@ interface SignalIdentitySyncApiOptions {
|
|
|
13
13
|
readonly defaultTimeoutMs?: number;
|
|
14
14
|
readonly hostDomain?: string;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Fetches identity keys for a list of JIDs from the server and persists them
|
|
18
|
+
* into the identity store. Concurrent calls for the same JID set are
|
|
19
|
+
* deduplicated.
|
|
20
|
+
*/
|
|
16
21
|
export declare class SignalIdentitySyncApi {
|
|
17
22
|
private readonly logger;
|
|
18
23
|
private readonly query;
|
|
@@ -21,6 +26,10 @@ export declare class SignalIdentitySyncApi {
|
|
|
21
26
|
private readonly hostDomain;
|
|
22
27
|
private readonly syncDedup;
|
|
23
28
|
constructor(options: SignalIdentitySyncApiOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Fetches and persists identity keys for `targetJids`. Returns one entry
|
|
31
|
+
* per JID the server resolved; missing/erroring users are skipped.
|
|
32
|
+
*/
|
|
24
33
|
syncIdentityKeys(targetJids: readonly string[], timeoutMs?: number): Promise<readonly SignalIdentitySyncEntry[]>;
|
|
25
34
|
private syncIdentityKeysInternal;
|
|
26
35
|
private parseIdentitySyncResponse;
|
|
@@ -27,11 +27,19 @@ export type SignalMissingPreKeysUserResult = {
|
|
|
27
27
|
readonly errorCode?: number;
|
|
28
28
|
readonly errorText: string;
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Fetches missing prekey bundles for specific (user, device, registration id)
|
|
32
|
+
* triples – used during message encryption when a Signal session is missing.
|
|
33
|
+
*/
|
|
30
34
|
export declare class SignalMissingPreKeysSyncApi {
|
|
31
35
|
private readonly logger;
|
|
32
36
|
private readonly query;
|
|
33
37
|
private readonly defaultTimeoutMs;
|
|
34
38
|
constructor(options: SignalMissingPreKeysSyncApiOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Fetches prekey bundles for the requested `targets` in a single IQ.
|
|
41
|
+
* Returns either a per-device bundle list or an error envelope per user.
|
|
42
|
+
*/
|
|
35
43
|
fetchMissingPreKeys(targets: readonly SignalMissingPreKeysTarget[], timeoutMs?: number): Promise<readonly SignalMissingPreKeysUserResult[]>;
|
|
36
44
|
private parseFetchMissingPreKeysResponse;
|
|
37
45
|
private parseUserDevices;
|
|
@@ -7,12 +7,22 @@ interface SignalRotateKeyApiOptions {
|
|
|
7
7
|
readonly signalStore: WaSignalStore;
|
|
8
8
|
readonly defaultTimeoutMs?: number;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Generates a fresh signed prekey and uploads it to the server. Handles the
|
|
12
|
+
* `406`/`409`/`5xx` error codes by signaling whether a digest re-validation
|
|
13
|
+
* is required.
|
|
14
|
+
*/
|
|
10
15
|
export declare class SignalRotateKeyApi {
|
|
11
16
|
private readonly logger;
|
|
12
17
|
private readonly query;
|
|
13
18
|
private readonly signalStore;
|
|
14
19
|
private readonly defaultTimeoutMs;
|
|
15
20
|
constructor(options: SignalRotateKeyApiOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Rotates the signed prekey by generating a new one (next key id) and
|
|
23
|
+
* uploading it. Returns `shouldDigestKey: true` when the caller should
|
|
24
|
+
* re-run a digest validation after the rotation.
|
|
25
|
+
*/
|
|
16
26
|
rotateSignedPreKey(timeoutMs?: number): Promise<{
|
|
17
27
|
shouldDigestKey: boolean;
|
|
18
28
|
errorCode?: number;
|