zapo-js 0.2.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +103 -179
- package/dist/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +79 -62
- package/dist/appstate/index.js +8 -7
- package/dist/appstate/{encoding.js → parsers/encoding.js} +11 -4
- package/dist/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
- package/dist/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +246 -88
- package/dist/appstate/utils.js +16 -0
- package/dist/appstate-spec.js +89 -0
- package/dist/auth/WaAuthClient.js +117 -13
- package/dist/auth/credentials-flow.js +207 -0
- package/dist/auth/pairing/WaPairingFlow.js +53 -47
- package/dist/auth/pairing/pairing-code-crypto.js +91 -0
- package/dist/client/WaClient.js +369 -460
- package/dist/client/WaClientFactory.js +377 -93
- package/dist/client/connection/WaConnectionManager.js +31 -11
- package/dist/client/coordinators/WaAbPropsCoordinator.js +140 -0
- package/dist/client/coordinators/WaAppStateMutationCoordinator.js +663 -143
- package/dist/client/coordinators/WaBotCoordinator.js +345 -0
- package/dist/client/coordinators/WaBroadcastListCoordinator.js +20 -0
- package/dist/client/coordinators/WaBusinessCoordinator.js +81 -180
- package/dist/client/coordinators/WaEmailCoordinator.js +64 -0
- package/dist/client/coordinators/WaGroupCoordinator.js +529 -52
- package/dist/client/coordinators/WaIncomingNodeCoordinator.js +130 -20
- package/dist/client/coordinators/WaLowLevelCoordinator.js +41 -0
- package/dist/client/coordinators/WaMessageCoordinator.js +365 -0
- package/dist/client/coordinators/WaMessageDispatchCoordinator.js +724 -216
- package/dist/client/coordinators/WaNewsletterCoordinator.js +18 -0
- package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
- package/dist/client/coordinators/WaPassiveTasksCoordinator.js +53 -22
- package/dist/client/coordinators/WaPresenceCoordinator.js +21 -0
- package/dist/client/coordinators/WaPrivacyCoordinator.js +7 -5
- package/dist/client/coordinators/WaProfileCoordinator.js +223 -50
- package/dist/client/coordinators/WaRetryCoordinator.js +256 -123
- package/dist/client/coordinators/WaStatusCoordinator.js +49 -0
- package/dist/client/coordinators/WaStreamControlCoordinator.js +6 -6
- package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +29 -10
- package/dist/client/events/abprops.js +43 -0
- package/dist/client/events/appstate-mutation.js +133 -0
- package/dist/client/events/business.js +375 -0
- package/dist/client/events/call.js +58 -0
- package/dist/client/events/chatstate.js +23 -0
- package/dist/client/events/devices.js +15 -16
- package/dist/client/{dirty.js → events/dirty.js} +34 -20
- package/dist/client/events/group.js +13 -24
- package/dist/client/events/identity.js +2 -1
- package/dist/client/events/incoming.js +502 -0
- package/dist/client/events/mex-notification.js +181 -0
- package/dist/client/events/picture.js +33 -0
- package/dist/client/events/presence.js +44 -0
- package/dist/client/events/privacy-token.js +1 -2
- package/dist/client/events/receipt.js +26 -0
- package/dist/client/events/registration.js +42 -0
- package/dist/client/media.js +400 -0
- package/dist/client/messaging/fanout.js +9 -10
- package/dist/client/messaging/{participants.js → group-metadata.js} +73 -35
- package/dist/client/messaging/ignore-key.js +132 -0
- package/dist/client/messaging/key-protocol.js +3 -17
- package/dist/client/messaging/link-preview.js +159 -0
- package/dist/client/messaging/messages.js +671 -0
- package/dist/client/newsletter/admin.js +165 -0
- package/dist/client/newsletter/content.js +253 -0
- package/dist/client/newsletter/discovery.js +115 -0
- package/dist/client/newsletter/messaging.js +197 -0
- package/dist/client/newsletter/mex.js +41 -0
- package/dist/client/newsletter/parse.js +217 -0
- package/dist/client/persistence/WriteBehindPersistence.js +31 -4
- package/dist/client/{history-sync.js → persistence/history-sync.js} +125 -18
- package/dist/client/persistence/mailbox.js +104 -0
- package/dist/client/tokens/cs-token.js +11 -17
- package/dist/crypto/core/hkdf.js +12 -12
- package/dist/crypto/core/index.js +9 -8
- package/dist/crypto/core/keys.js +1 -8
- package/dist/crypto/core/nonce.js +12 -12
- package/dist/crypto/core/primitives.js +123 -93
- package/dist/crypto/core/random.js +9 -9
- package/dist/crypto/core/xeddsa.js +59 -0
- package/dist/crypto/curves/Ed25519.js +32 -21
- package/dist/crypto/curves/X25519.js +71 -17
- package/dist/crypto/curves/constants.js +3 -1
- package/dist/crypto/math/constants.js +1 -2
- package/dist/crypto/math/mod.js +0 -33
- package/dist/esm/appstate/{WaAppStateCrypto.js → crypto/WaAppStateCrypto.js} +72 -55
- package/dist/esm/appstate/index.js +5 -5
- package/dist/esm/appstate/{encoding.js → parsers/encoding.js} +11 -4
- package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → parsers/response-parser.js} +20 -8
- package/dist/esm/appstate/{WaAppStateSyncClient.js → sync/WaAppStateSyncClient.js} +235 -76
- package/dist/esm/appstate/utils.js +16 -0
- package/dist/esm/appstate-spec.js +79 -0
- package/dist/esm/auth/WaAuthClient.js +114 -10
- package/dist/esm/auth/credentials-flow.js +202 -0
- package/dist/esm/auth/pairing/WaPairingFlow.js +52 -46
- package/dist/esm/auth/pairing/pairing-code-crypto.js +85 -0
- package/dist/esm/client/WaClient.js +372 -463
- package/dist/esm/client/WaClientFactory.js +380 -96
- package/dist/esm/client/connection/WaConnectionManager.js +31 -11
- package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +136 -0
- package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +665 -145
- package/dist/esm/client/coordinators/WaBotCoordinator.js +342 -0
- package/dist/esm/client/coordinators/WaBroadcastListCoordinator.js +17 -0
- package/dist/esm/client/coordinators/WaBusinessCoordinator.js +78 -177
- package/dist/esm/client/coordinators/WaEmailCoordinator.js +61 -0
- package/dist/esm/client/coordinators/WaGroupCoordinator.js +532 -55
- package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +132 -22
- package/dist/esm/client/coordinators/WaLowLevelCoordinator.js +38 -0
- package/dist/esm/client/coordinators/WaMessageCoordinator.js +361 -0
- package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +719 -211
- package/dist/esm/client/coordinators/WaNewsletterCoordinator.js +13 -0
- package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
- package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +54 -23
- package/dist/esm/client/coordinators/WaPresenceCoordinator.js +18 -0
- package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +7 -5
- package/dist/esm/client/coordinators/WaProfileCoordinator.js +226 -53
- package/dist/esm/client/coordinators/WaRetryCoordinator.js +258 -125
- package/dist/esm/client/coordinators/WaStatusCoordinator.js +46 -0
- package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +6 -6
- package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +31 -12
- package/dist/esm/client/events/abprops.js +40 -0
- package/dist/esm/client/events/appstate-mutation.js +130 -0
- package/dist/esm/client/events/business.js +370 -0
- package/dist/esm/client/events/call.js +55 -0
- package/dist/esm/client/events/chatstate.js +20 -0
- package/dist/esm/client/events/devices.js +15 -16
- package/dist/esm/client/{dirty.js → events/dirty.js} +34 -20
- package/dist/esm/client/events/group.js +14 -25
- package/dist/esm/client/events/identity.js +2 -1
- package/dist/esm/client/events/incoming.js +487 -0
- package/dist/esm/client/events/mex-notification.js +178 -0
- package/dist/esm/client/events/picture.js +30 -0
- package/dist/esm/client/events/presence.js +41 -0
- package/dist/esm/client/events/privacy-token.js +1 -2
- package/dist/esm/client/events/receipt.js +23 -0
- package/dist/esm/client/events/registration.js +39 -0
- package/dist/esm/client/media.js +384 -0
- package/dist/esm/client/messaging/fanout.js +10 -11
- package/dist/esm/client/messaging/{participants.js → group-metadata.js} +72 -34
- package/dist/esm/client/messaging/ignore-key.js +126 -0
- package/dist/esm/client/messaging/key-protocol.js +3 -17
- package/dist/esm/client/messaging/link-preview.js +156 -0
- package/dist/esm/client/messaging/messages.js +667 -0
- package/dist/esm/client/newsletter/admin.js +162 -0
- package/dist/esm/client/newsletter/content.js +249 -0
- package/dist/esm/client/newsletter/discovery.js +112 -0
- package/dist/esm/client/newsletter/messaging.js +194 -0
- package/dist/esm/client/newsletter/mex.js +37 -0
- package/dist/esm/client/newsletter/parse.js +200 -0
- package/dist/esm/client/persistence/WriteBehindPersistence.js +31 -4
- package/dist/esm/client/{history-sync.js → persistence/history-sync.js} +124 -18
- package/dist/esm/client/persistence/mailbox.js +101 -0
- package/dist/esm/client/tokens/cs-token.js +12 -18
- package/dist/esm/crypto/core/hkdf.js +14 -14
- package/dist/esm/crypto/core/index.js +3 -2
- package/dist/esm/crypto/core/keys.js +1 -7
- package/dist/esm/crypto/core/nonce.js +11 -11
- package/dist/esm/crypto/core/primitives.js +121 -88
- package/dist/esm/crypto/core/random.js +8 -7
- package/dist/esm/crypto/core/xeddsa.js +55 -0
- package/dist/esm/crypto/curves/Ed25519.js +35 -24
- package/dist/esm/crypto/curves/X25519.js +74 -20
- package/dist/esm/crypto/curves/constants.js +2 -0
- package/dist/esm/crypto/math/constants.js +1 -2
- package/dist/esm/crypto/math/mod.js +0 -32
- package/dist/esm/index.js +7 -2
- package/dist/esm/infra/log/ConsoleLogger.js +30 -6
- package/dist/esm/infra/log/PinoLogger.js +64 -0
- package/dist/esm/infra/log/types.js +4 -2
- package/dist/esm/infra/perf/BackgroundQueue.js +55 -13
- package/dist/esm/infra/perf/StoreLock.js +7 -4
- package/dist/esm/media/constants.js +35 -2
- package/dist/esm/media/crypto/WaMediaCrypto.js +374 -0
- package/dist/esm/media/index.js +4 -3
- package/dist/esm/media/processor.js +1 -0
- package/dist/esm/media/sticker/sticker-pack.js +133 -0
- package/dist/esm/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +84 -196
- package/dist/esm/media/{conn.js → transfer/conn.js} +10 -5
- package/dist/esm/message/WaMessageClient.js +46 -15
- package/dist/esm/message/addons/link-preview/builder.js +36 -0
- package/dist/esm/message/addons/link-preview/detect.js +55 -0
- package/dist/esm/message/addons/link-preview/fetcher.js +391 -0
- package/dist/esm/message/addons/link-preview/types.js +1 -0
- package/dist/esm/message/context-info.js +123 -0
- package/dist/esm/message/crypto/addon-crypto.js +244 -0
- package/dist/esm/message/{icdc.js → crypto/icdc.js} +11 -13
- package/dist/esm/message/crypto/phash.js +133 -0
- package/dist/esm/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
- package/dist/esm/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
- package/dist/esm/message/{content.js → encode/content.js} +183 -8
- package/dist/esm/message/encode/media-payload.js +42 -0
- package/dist/esm/message/{padding.js → encode/padding.js} +9 -3
- package/dist/esm/message/index.js +2 -2
- package/dist/esm/message/kinds/bot.js +111 -0
- package/dist/esm/message/kinds/newsletter.js +244 -0
- package/dist/esm/message/kinds/sticker-pack.js +29 -0
- package/dist/esm/message/{ack.js → primitives/ack.js} +8 -1
- package/dist/esm/message/primitives/incoming.js +511 -0
- package/dist/esm/message/primitives/peer-data-operation.js +93 -0
- package/dist/esm/mex.js +1 -0
- package/dist/esm/protocol/abprops.js +169 -0
- package/dist/esm/protocol/appstate.js +6 -30
- package/dist/esm/protocol/auth.js +3 -2
- package/dist/esm/protocol/bot.js +77 -0
- package/dist/esm/protocol/browser.js +22 -0
- package/dist/esm/protocol/business.js +19 -0
- package/dist/esm/protocol/call.js +48 -0
- package/dist/esm/protocol/constants.js +10 -2
- package/dist/esm/protocol/defaults.js +3 -0
- package/dist/esm/protocol/email.js +30 -0
- package/dist/esm/protocol/index.js +1 -1
- package/dist/esm/protocol/jid.js +142 -11
- package/dist/esm/protocol/media.js +25 -12
- package/dist/esm/protocol/message.js +4 -1
- package/dist/esm/protocol/newsletter.js +61 -0
- package/dist/esm/protocol/nodes.js +26 -2
- package/dist/esm/protocol/notification.js +24 -2
- package/dist/esm/protocol/presence.js +13 -0
- package/dist/esm/protocol/status.js +6 -0
- package/dist/esm/retry/codec.js +5 -0
- package/dist/esm/retry/parse.js +20 -38
- package/dist/esm/retry/reason.js +6 -1
- package/dist/esm/retry/replay.js +131 -37
- package/dist/esm/retry/tracker.js +4 -8
- package/dist/esm/signal/api/SignalDeviceSyncApi.js +71 -21
- package/dist/esm/signal/api/SignalDigestSyncApi.js +15 -8
- package/dist/esm/signal/api/SignalIdentitySyncApi.js +13 -4
- package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +24 -63
- package/dist/esm/signal/api/SignalRotateKeyApi.js +10 -0
- package/dist/esm/signal/api/SignalSessionSyncApi.js +23 -51
- package/dist/esm/signal/api/codec.js +52 -1
- package/dist/esm/signal/api/prekeys.js +4 -0
- package/dist/esm/signal/attestation/WaAdvSignature.js +17 -0
- package/dist/esm/signal/{crypto → attestation}/constants.js +0 -4
- package/dist/esm/signal/constants.js +3 -0
- package/dist/esm/signal/encoding.js +6 -332
- package/dist/esm/signal/group/SenderKeyChain.js +20 -35
- package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
- package/dist/esm/signal/group/SenderKeyManager.js +37 -17
- package/dist/esm/signal/group/encoding.js +96 -0
- package/dist/esm/signal/index.js +4 -1
- package/dist/esm/signal/registration/encoding.js +34 -0
- package/dist/esm/signal/registration/keygen.js +12 -3
- package/dist/esm/signal/registration/utils.js +8 -2
- package/dist/esm/signal/session/SignalProtocol.js +129 -26
- package/dist/esm/signal/session/SignalRatchet.js +46 -64
- package/dist/esm/signal/session/SignalSerializer.js +5 -6
- package/dist/esm/signal/session/SignalSession.js +14 -19
- package/dist/esm/signal/session/encoding.js +173 -0
- package/dist/esm/signal/session/resolver.js +144 -35
- package/dist/esm/store/cache/identity.cache.js +75 -0
- package/dist/esm/store/cache/privacy-token.cache.js +57 -0
- package/dist/esm/store/cache/sender-key.cache.js +101 -0
- package/dist/esm/store/cache/session.cache.js +92 -0
- package/dist/esm/store/contracts/group-metadata.store.js +1 -0
- package/dist/esm/store/contracts/identity.store.js +1 -0
- package/dist/esm/store/contracts/message-secret.store.js +1 -0
- package/dist/esm/store/contracts/pre-key.store.js +1 -0
- package/dist/esm/store/contracts/session.store.js +1 -0
- package/dist/esm/store/createStore.js +129 -39
- package/dist/esm/store/index.js +15 -10
- package/dist/esm/store/locks/contact.lock.js +1 -0
- package/dist/esm/store/locks/device-list.lock.js +1 -0
- package/dist/esm/store/locks/group-metadata.lock.js +20 -0
- package/dist/esm/store/locks/identity.lock.js +16 -0
- package/dist/esm/store/locks/message-secret.lock.js +17 -0
- package/dist/esm/store/locks/pre-key.lock.js +27 -0
- package/dist/esm/store/locks/session.lock.js +19 -0
- package/dist/esm/store/locks/signal.lock.js +0 -24
- package/dist/esm/store/{providers/memory → memory}/appstate.store.js +5 -5
- package/dist/esm/store/memory/auth.store.js +24 -0
- package/dist/esm/store/memory/contact.store.js +79 -0
- package/dist/esm/store/memory/device-list.store.js +103 -0
- package/dist/esm/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +24 -12
- package/dist/esm/store/memory/identity.store.js +31 -0
- package/dist/esm/store/memory/message-secret.store.js +90 -0
- package/dist/esm/store/{providers/memory → memory}/message.store.js +2 -2
- package/dist/esm/store/memory/pre-key.store.js +97 -0
- package/dist/esm/store/{providers/memory → memory}/privacy-token.store.js +1 -1
- package/dist/esm/store/{providers/memory → memory}/retry.store.js +49 -14
- package/dist/esm/store/{providers/memory → memory}/sender-key.store.js +3 -3
- package/dist/esm/store/memory/session.store.js +45 -0
- package/dist/esm/store/memory/signal.store.js +36 -0
- package/dist/esm/store/{providers/memory → memory}/thread.store.js +2 -2
- package/dist/esm/store/noop.store.js +26 -4
- package/dist/esm/transport/WaComms.js +18 -8
- package/dist/esm/transport/WaWebSocket.js +41 -9
- package/dist/esm/transport/binary/constants.js +10 -4
- package/dist/esm/transport/binary/decoder.js +21 -15
- package/dist/esm/transport/binary/encoder.js +96 -21
- package/dist/esm/transport/binary/tokens.js +12 -12
- package/dist/esm/transport/index.js +7 -0
- package/dist/esm/transport/keepalive/WaKeepAlive.js +35 -12
- package/dist/esm/transport/node/WaMobileTcpSocket.js +120 -0
- package/dist/esm/transport/node/WaNodeOrchestrator.js +26 -13
- package/dist/esm/transport/node/WaNodeTransport.js +13 -0
- package/dist/esm/transport/node/builders/abprops.js +20 -0
- package/dist/esm/transport/node/builders/account-sync.js +7 -15
- package/dist/esm/transport/node/builders/bot.js +38 -0
- package/dist/esm/transport/node/builders/business.js +30 -30
- package/dist/esm/transport/node/builders/chatstate.js +28 -0
- package/dist/esm/transport/node/builders/community.js +53 -0
- package/dist/esm/transport/node/builders/device.js +11 -0
- package/dist/esm/transport/node/builders/email.js +66 -0
- package/dist/esm/transport/node/builders/global.js +1 -1
- package/dist/esm/transport/node/builders/group.js +114 -4
- package/dist/esm/transport/node/builders/media.js +2 -2
- package/dist/esm/transport/node/builders/message.js +83 -49
- package/dist/esm/transport/node/builders/newsletter.js +176 -0
- package/dist/esm/transport/node/builders/offline.js +14 -0
- package/dist/esm/transport/node/builders/passive.js +7 -0
- package/dist/esm/transport/node/builders/prekeys.js +40 -43
- package/dist/esm/transport/node/builders/presence.js +39 -0
- package/dist/esm/transport/node/builders/privacy-token.js +19 -23
- package/dist/esm/transport/node/builders/privacy.js +6 -6
- package/dist/esm/transport/node/builders/profile.js +28 -8
- package/dist/esm/transport/node/builders/retry.js +1 -1
- package/dist/esm/transport/node/builders/tos.js +58 -0
- package/dist/esm/transport/node/builders/usync.js +51 -2
- package/dist/esm/transport/node/helpers.js +27 -1
- package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
- package/dist/esm/transport/node/mex/client.js +105 -0
- package/dist/esm/transport/node/query.js +17 -0
- package/dist/esm/transport/node/usync.js +12 -0
- package/dist/esm/transport/noise/WaClientPayload.js +23 -18
- package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
- package/dist/esm/transport/noise/WaMobileClientPayload.js +58 -0
- package/dist/esm/transport/noise/WaNoiseCert.js +14 -27
- package/dist/esm/transport/noise/WaNoiseHandshake.js +27 -25
- package/dist/esm/transport/noise/WaNoiseSession.js +48 -67
- package/dist/esm/transport/noise/WaNoiseSocket.js +19 -13
- package/dist/esm/transport/noise/constants.js +0 -1
- package/dist/esm/transport/proxy.js +5 -0
- package/dist/esm/transport/stream/parse.js +3 -7
- package/dist/esm/transport/wa-web-version-fetcher.js +91 -0
- package/dist/esm/util/async.js +4 -0
- package/dist/esm/util/bytes.js +37 -2
- package/dist/esm/util/clock.js +15 -0
- package/dist/esm/util/coercion.js +45 -3
- package/dist/esm/util/collections.js +11 -0
- package/dist/esm/util/index.js +2 -2
- package/dist/esm/util/primitives.js +19 -0
- package/dist/esm/util/runtime.js +5 -0
- package/dist/esm/version-spec.js +1 -0
- package/dist/index.js +31 -1
- package/dist/infra/log/ConsoleLogger.js +30 -6
- package/dist/infra/log/PinoLogger.js +64 -0
- package/dist/infra/log/types.js +4 -2
- package/dist/infra/perf/BackgroundQueue.js +55 -13
- package/dist/infra/perf/StoreLock.js +7 -4
- package/dist/media/constants.js +36 -3
- package/dist/media/crypto/WaMediaCrypto.js +378 -0
- package/dist/media/index.js +9 -4
- package/dist/media/processor.js +2 -0
- package/dist/media/sticker/sticker-pack.js +136 -0
- package/dist/media/{WaMediaTransferClient.js → transfer/WaMediaTransferClient.js} +87 -229
- package/dist/media/{conn.js → transfer/conn.js} +10 -5
- package/dist/message/WaMessageClient.js +46 -15
- package/dist/message/addons/link-preview/builder.js +39 -0
- package/dist/message/addons/link-preview/detect.js +58 -0
- package/dist/message/addons/link-preview/fetcher.js +394 -0
- package/dist/message/addons/link-preview/types.js +2 -0
- package/dist/message/context-info.js +129 -0
- package/dist/message/crypto/addon-crypto.js +254 -0
- package/dist/message/{icdc.js → crypto/icdc.js} +11 -13
- package/dist/message/crypto/phash.js +136 -0
- package/dist/message/{reporting-token.js → crypto/reporting-token.js} +7 -7
- package/dist/message/{use-case-secret.js → crypto/use-case-secret.js} +21 -4
- package/dist/message/{content.js → encode/content.js} +200 -7
- package/dist/message/encode/media-payload.js +45 -0
- package/dist/message/{padding.js → encode/padding.js} +9 -3
- package/dist/message/index.js +2 -2
- package/dist/message/kinds/bot.js +120 -0
- package/dist/message/kinds/newsletter.js +248 -0
- package/dist/message/kinds/sticker-pack.js +34 -0
- package/dist/message/{ack.js → primitives/ack.js} +8 -1
- package/dist/message/{incoming.js → primitives/incoming.js} +225 -38
- package/dist/message/primitives/peer-data-operation.js +96 -0
- package/dist/mex.js +6 -0
- package/dist/proto.js +1 -1
- package/dist/protocol/abprops.js +173 -0
- package/dist/protocol/appstate.js +7 -31
- package/dist/protocol/auth.js +3 -2
- package/dist/protocol/bot.js +81 -0
- package/dist/protocol/browser.js +23 -0
- package/dist/protocol/business.js +22 -0
- package/dist/protocol/call.js +51 -0
- package/dist/protocol/constants.js +51 -3
- package/dist/protocol/defaults.js +3 -0
- package/dist/protocol/email.js +33 -0
- package/dist/protocol/index.js +12 -3
- package/dist/protocol/jid.js +148 -11
- package/dist/protocol/media.js +25 -12
- package/dist/protocol/message.js +4 -1
- package/dist/protocol/newsletter.js +64 -0
- package/dist/protocol/nodes.js +26 -2
- package/dist/protocol/notification.js +25 -3
- package/dist/protocol/presence.js +16 -0
- package/dist/protocol/status.js +9 -0
- package/dist/retry/codec.js +5 -0
- package/dist/retry/parse.js +16 -34
- package/dist/retry/reason.js +6 -1
- package/dist/retry/replay.js +129 -35
- package/dist/retry/tracker.js +3 -7
- package/dist/signal/api/SignalDeviceSyncApi.js +69 -19
- package/dist/signal/api/SignalDigestSyncApi.js +14 -7
- package/dist/signal/api/SignalIdentitySyncApi.js +13 -4
- package/dist/signal/api/SignalMissingPreKeysSyncApi.js +21 -60
- package/dist/signal/api/SignalRotateKeyApi.js +10 -0
- package/dist/signal/api/SignalSessionSyncApi.js +20 -48
- package/dist/signal/api/codec.js +52 -0
- package/dist/signal/api/prekeys.js +4 -0
- package/dist/signal/attestation/WaAdvSignature.js +26 -0
- package/dist/signal/{crypto → attestation}/constants.js +1 -5
- package/dist/signal/constants.js +4 -1
- package/dist/signal/encoding.js +5 -341
- package/dist/signal/group/SenderKeyChain.js +19 -34
- package/dist/signal/group/SenderKeyCodec.js +4 -5
- package/dist/signal/group/SenderKeyManager.js +36 -16
- package/dist/signal/group/encoding.js +101 -0
- package/dist/signal/index.js +13 -10
- package/dist/signal/registration/encoding.js +39 -0
- package/dist/signal/registration/keygen.js +11 -2
- package/dist/signal/registration/utils.js +8 -2
- package/dist/signal/session/SignalProtocol.js +128 -25
- package/dist/signal/session/SignalRatchet.js +41 -60
- package/dist/signal/session/SignalSerializer.js +5 -6
- package/dist/signal/session/SignalSession.js +13 -19
- package/dist/signal/session/encoding.js +183 -0
- package/dist/signal/session/resolver.js +144 -35
- package/dist/store/cache/identity.cache.js +78 -0
- package/dist/store/cache/privacy-token.cache.js +60 -0
- package/dist/store/cache/sender-key.cache.js +104 -0
- package/dist/store/cache/session.cache.js +95 -0
- package/dist/store/contracts/group-metadata.store.js +2 -0
- package/dist/store/contracts/identity.store.js +2 -0
- package/dist/store/contracts/message-secret.store.js +2 -0
- package/dist/store/contracts/pre-key.store.js +2 -0
- package/dist/store/contracts/session.store.js +2 -0
- package/dist/store/createStore.js +128 -38
- package/dist/store/index.js +22 -12
- package/dist/store/locks/contact.lock.js +1 -0
- package/dist/store/locks/device-list.lock.js +1 -0
- package/dist/store/locks/group-metadata.lock.js +23 -0
- package/dist/store/locks/identity.lock.js +19 -0
- package/dist/store/locks/message-secret.lock.js +20 -0
- package/dist/store/locks/pre-key.lock.js +30 -0
- package/dist/store/locks/session.lock.js +22 -0
- package/dist/store/locks/signal.lock.js +0 -24
- package/dist/store/{providers/memory → memory}/appstate.store.js +5 -5
- package/dist/store/memory/auth.store.js +28 -0
- package/dist/store/memory/contact.store.js +83 -0
- package/dist/store/memory/device-list.store.js +107 -0
- package/dist/store/{providers/memory/participants.store.js → memory/group-metadata.store.js} +26 -14
- package/dist/store/memory/identity.store.js +35 -0
- package/dist/store/memory/message-secret.store.js +94 -0
- package/dist/store/{providers/memory → memory}/message.store.js +2 -2
- package/dist/store/memory/pre-key.store.js +101 -0
- package/dist/store/{providers/memory → memory}/privacy-token.store.js +1 -1
- package/dist/store/{providers/memory → memory}/retry.store.js +49 -14
- package/dist/store/{providers/memory → memory}/sender-key.store.js +3 -3
- package/dist/store/memory/session.store.js +49 -0
- package/dist/store/memory/signal.store.js +40 -0
- package/dist/store/{providers/memory → memory}/thread.store.js +2 -2
- package/dist/store/noop.store.js +27 -5
- package/dist/transport/WaComms.js +18 -8
- package/dist/transport/WaWebSocket.js +41 -9
- package/dist/transport/binary/constants.js +11 -5
- package/dist/transport/binary/decoder.js +24 -18
- package/dist/transport/binary/encoder.js +109 -34
- package/dist/transport/binary/tokens.js +12 -12
- package/dist/transport/index.js +19 -1
- package/dist/transport/keepalive/WaKeepAlive.js +35 -12
- package/dist/transport/node/WaMobileTcpSocket.js +124 -0
- package/dist/transport/node/WaNodeOrchestrator.js +25 -12
- package/dist/transport/node/WaNodeTransport.js +13 -0
- package/dist/transport/node/builders/abprops.js +23 -0
- package/dist/transport/node/builders/account-sync.js +7 -16
- package/dist/transport/node/builders/bot.js +43 -0
- package/dist/transport/node/builders/business.js +31 -31
- package/dist/transport/node/builders/chatstate.js +31 -0
- package/dist/transport/node/builders/community.js +59 -0
- package/dist/transport/node/builders/device.js +14 -0
- package/dist/transport/node/builders/email.js +73 -0
- package/dist/transport/node/builders/global.js +1 -1
- package/dist/transport/node/builders/group.js +121 -3
- package/dist/transport/node/builders/media.js +1 -1
- package/dist/transport/node/builders/message.js +84 -49
- package/dist/transport/node/builders/newsletter.js +183 -0
- package/dist/transport/node/builders/offline.js +17 -0
- package/dist/transport/node/builders/passive.js +10 -0
- package/dist/transport/node/builders/prekeys.js +38 -41
- package/dist/transport/node/builders/presence.js +43 -0
- package/dist/transport/node/builders/privacy-token.js +18 -22
- package/dist/transport/node/builders/privacy.js +5 -5
- package/dist/transport/node/builders/profile.js +30 -7
- package/dist/transport/node/builders/retry.js +1 -1
- package/dist/transport/node/builders/tos.js +63 -0
- package/dist/transport/node/builders/usync.js +52 -1
- package/dist/transport/node/helpers.js +28 -1
- package/dist/transport/node/mex/argo-decoder.js +189 -0
- package/dist/transport/node/mex/client.js +109 -0
- package/dist/transport/node/query.js +17 -0
- package/dist/transport/node/usync.js +13 -0
- package/dist/transport/noise/WaClientPayload.js +22 -17
- package/dist/transport/noise/WaFrameCodec.js +1 -1
- package/dist/transport/noise/WaMobileClientPayload.js +61 -0
- package/dist/transport/noise/WaNoiseCert.js +13 -26
- package/dist/transport/noise/WaNoiseHandshake.js +25 -23
- package/dist/transport/noise/WaNoiseSession.js +47 -66
- package/dist/transport/noise/WaNoiseSocket.js +18 -12
- package/dist/transport/noise/constants.js +1 -2
- package/dist/transport/proxy.js +5 -0
- package/dist/transport/stream/parse.js +3 -7
- package/dist/transport/wa-web-version-fetcher.js +94 -0
- package/dist/types/appstate/constants.d.ts +1 -1
- package/dist/types/appstate/{WaAppStateCrypto.d.ts → crypto/WaAppStateCrypto.d.ts} +29 -9
- package/dist/types/appstate/index.d.ts +5 -5
- package/dist/types/appstate/{encoding.d.ts → parsers/encoding.d.ts} +8 -1
- package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → parsers/response-parser.d.ts} +13 -3
- package/dist/types/appstate/sync/WaAppStateSyncClient.d.ts +105 -0
- package/dist/types/appstate/types.d.ts +1 -1
- package/dist/types/appstate/utils.d.ts +17 -1
- package/dist/types/appstate-spec.d.ts +24 -0
- package/dist/types/auth/WaAuthClient.d.ts +95 -3
- package/dist/types/auth/credentials-flow.d.ts +21 -0
- package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
- package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +5 -1
- package/dist/types/auth/types.d.ts +88 -1
- package/dist/types/client/WaClient.d.ts +183 -65
- package/dist/types/client/WaClientFactory.d.ts +40 -9
- package/dist/types/client/connection/WaConnectionManager.d.ts +4 -2
- package/dist/types/client/connection/WaReceiptQueue.d.ts +1 -1
- package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
- package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +215 -5
- package/dist/types/client/coordinators/WaBotCoordinator.d.ts +117 -0
- package/dist/types/client/coordinators/WaBroadcastListCoordinator.d.ts +39 -0
- package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +45 -44
- package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +40 -0
- package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +311 -9
- package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +16 -4
- package/dist/types/client/coordinators/WaLowLevelCoordinator.d.ts +47 -0
- package/dist/types/client/coordinators/WaMessageCoordinator.d.ts +232 -0
- package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +65 -29
- package/dist/types/client/coordinators/WaNewsletterCoordinator.d.ts +13 -0
- package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
- package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +15 -3
- package/dist/types/client/coordinators/WaPresenceCoordinator.d.ts +27 -0
- package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +28 -1
- package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +117 -2
- package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +23 -15
- package/dist/types/client/coordinators/WaStatusCoordinator.d.ts +42 -0
- package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +16 -2
- package/dist/types/client/events/abprops.d.ts +15 -0
- package/dist/types/client/events/appstate-mutation.d.ts +3 -0
- package/dist/types/client/events/business.d.ts +10 -0
- package/dist/types/client/events/call.d.ts +31 -0
- package/dist/types/client/events/chatstate.d.ts +9 -0
- package/dist/types/client/events/devices.d.ts +5 -4
- package/dist/types/client/{dirty.d.ts → events/dirty.d.ts} +7 -4
- package/dist/types/client/events/group.d.ts +2 -1
- package/dist/types/client/events/identity.d.ts +2 -1
- package/dist/types/client/events/incoming.d.ts +65 -0
- package/dist/types/client/events/mex-notification.d.ts +6 -0
- package/dist/types/client/events/picture.d.ts +8 -0
- package/dist/types/client/events/presence.d.ts +28 -0
- package/dist/types/client/events/receipt.d.ts +14 -0
- package/dist/types/client/events/registration.d.ts +18 -0
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/media.d.ts +65 -0
- package/dist/types/client/messaging/fanout.d.ts +2 -2
- package/dist/types/client/messaging/group-metadata.d.ts +19 -0
- package/dist/types/client/messaging/ignore-key.d.ts +11 -0
- package/dist/types/client/messaging/key-protocol.d.ts +9 -7
- package/dist/types/client/messaging/link-preview.d.ts +19 -0
- package/dist/types/client/messaging/messages.d.ts +28 -0
- package/dist/types/client/newsletter/admin.d.ts +71 -0
- package/dist/types/client/newsletter/content.d.ts +42 -0
- package/dist/types/client/newsletter/discovery.d.ts +33 -0
- package/dist/types/client/newsletter/messaging.d.ts +66 -0
- package/dist/types/client/newsletter/mex.d.ts +14 -0
- package/dist/types/client/newsletter/parse.d.ts +19 -0
- package/dist/types/client/newsletter/types.d.ts +190 -0
- package/dist/types/client/persistence/WriteBehindPersistence.d.ts +13 -2
- package/dist/types/client/persistence/history-sync.d.ts +29 -0
- package/dist/types/client/persistence/mailbox.d.ts +12 -0
- package/dist/types/client/tokens/cs-token.d.ts +1 -3
- package/dist/types/client/types.d.ts +926 -55
- package/dist/types/crypto/core/hkdf.d.ts +10 -2
- package/dist/types/crypto/core/index.d.ts +3 -2
- package/dist/types/crypto/core/keys.d.ts +0 -4
- package/dist/types/crypto/core/nonce.d.ts +4 -5
- package/dist/types/crypto/core/primitives.d.ts +31 -20
- package/dist/types/crypto/core/random.d.ts +7 -1
- package/dist/types/crypto/core/xeddsa.d.ts +11 -0
- package/dist/types/crypto/curves/Ed25519.d.ts +7 -1
- package/dist/types/crypto/curves/X25519.d.ts +20 -1
- package/dist/types/crypto/curves/constants.d.ts +4 -2
- package/dist/types/crypto/curves/types.d.ts +0 -5
- package/dist/types/crypto/index.d.ts +1 -0
- package/dist/types/crypto/math/constants.d.ts +0 -1
- package/dist/types/crypto/math/mod.d.ts +0 -1
- package/dist/types/index.d.ts +32 -5
- package/dist/types/infra/log/ConsoleLogger.d.ts +19 -2
- package/dist/types/infra/log/PinoLogger.d.ts +56 -2
- package/dist/types/infra/log/types.d.ts +6 -0
- package/dist/types/infra/perf/BackgroundQueue.d.ts +19 -0
- package/dist/types/infra/perf/StoreLock.d.ts +1 -0
- package/dist/types/media/constants.d.ts +9 -2
- package/dist/types/media/crypto/WaMediaCrypto.d.ts +59 -0
- package/dist/types/media/index.d.ts +7 -4
- package/dist/types/media/processor.d.ts +50 -0
- package/dist/types/media/sticker/sticker-pack.d.ts +6 -0
- package/dist/types/media/{WaMediaTransferClient.d.ts → transfer/WaMediaTransferClient.d.ts} +33 -12
- package/dist/types/media/transfer/conn.d.ts +7 -0
- package/dist/types/media/types.d.ts +10 -5
- package/dist/types/message/WaMessageClient.d.ts +14 -0
- package/dist/types/message/addons/link-preview/builder.d.ts +13 -0
- package/dist/types/message/addons/link-preview/detect.d.ts +5 -0
- package/dist/types/message/addons/link-preview/fetcher.d.ts +13 -0
- package/dist/types/message/addons/link-preview/types.d.ts +51 -0
- package/dist/types/message/context-info.d.ts +66 -0
- package/dist/types/message/crypto/addon-crypto.d.ts +78 -0
- package/dist/types/message/{icdc.d.ts → crypto/icdc.d.ts} +6 -6
- package/dist/types/message/{phash.d.ts → crypto/phash.d.ts} +1 -1
- package/dist/types/message/{reporting-token.d.ts → crypto/reporting-token.d.ts} +2 -2
- package/dist/types/message/{use-case-secret.d.ts → crypto/use-case-secret.d.ts} +17 -1
- package/dist/types/message/encode/content.d.ts +43 -0
- package/dist/types/message/{device-sent.d.ts → encode/device-sent.d.ts} +1 -1
- package/dist/types/message/encode/media-payload.d.ts +12 -0
- package/dist/types/message/index.d.ts +2 -2
- package/dist/types/message/kinds/bot.d.ts +31 -0
- package/dist/types/message/kinds/newsletter.d.ts +12 -0
- package/dist/types/message/kinds/sticker-pack.d.ts +6 -0
- package/dist/types/message/{ack.d.ts → primitives/ack.d.ts} +1 -1
- package/dist/types/message/primitives/incoming.d.ts +21 -0
- package/dist/types/message/primitives/peer-data-operation.d.ts +23 -0
- package/dist/types/message/types.d.ts +218 -28
- package/dist/types/mex.d.ts +2 -0
- package/dist/types/proto.d.ts +2 -2
- package/dist/types/protocol/abprops.d.ts +151 -0
- package/dist/types/protocol/appstate.d.ts +4 -49
- package/dist/types/protocol/auth.d.ts +2 -2
- package/dist/types/protocol/bot.d.ts +45 -0
- package/dist/types/protocol/browser.d.ts +9 -0
- package/dist/types/protocol/business.d.ts +21 -0
- package/dist/types/protocol/call.d.ts +44 -0
- package/dist/types/protocol/constants.d.ts +20 -3
- package/dist/types/protocol/defaults.d.ts +3 -0
- package/dist/types/protocol/email.d.ts +32 -0
- package/dist/types/protocol/group.d.ts +1 -1
- package/dist/types/protocol/index.d.ts +2 -1
- package/dist/types/protocol/jid.d.ts +79 -0
- package/dist/types/protocol/media.d.ts +21 -13
- package/dist/types/protocol/message.d.ts +4 -0
- package/dist/types/protocol/newsletter.d.ts +65 -0
- package/dist/types/protocol/nodes.d.ts +24 -0
- package/dist/types/protocol/notification.d.ts +22 -0
- package/dist/types/protocol/presence.d.ts +16 -0
- package/dist/types/protocol/status.d.ts +7 -0
- package/dist/types/protocol/stream.d.ts +1 -0
- package/dist/types/retry/codec.d.ts +5 -0
- package/dist/types/retry/index.d.ts +1 -1
- package/dist/types/retry/parse.d.ts +9 -0
- package/dist/types/retry/reason.d.ts +6 -1
- package/dist/types/retry/replay.d.ts +19 -5
- package/dist/types/retry/tracker.d.ts +10 -3
- package/dist/types/retry/types.d.ts +3 -8
- package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +20 -0
- package/dist/types/signal/api/SignalDigestSyncApi.d.ts +13 -0
- package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +12 -3
- package/dist/types/signal/api/SignalMissingPreKeysSyncApi.d.ts +8 -0
- package/dist/types/signal/api/SignalRotateKeyApi.d.ts +10 -0
- package/dist/types/signal/api/SignalSessionSyncApi.d.ts +13 -0
- package/dist/types/signal/api/codec.d.ts +20 -0
- package/dist/types/signal/api/constants.d.ts +1 -1
- package/dist/types/signal/api/prekeys.d.ts +4 -0
- package/dist/types/signal/{crypto → attestation}/WaAdvSignature.d.ts +2 -4
- package/dist/types/signal/attestation/constants.d.ts +4 -0
- package/dist/types/signal/constants.d.ts +7 -4
- package/dist/types/signal/encoding.d.ts +6 -62
- package/dist/types/signal/group/SenderKeyChain.d.ts +2 -2
- package/dist/types/signal/group/SenderKeyManager.d.ts +24 -2
- package/dist/types/signal/group/encoding.d.ts +25 -0
- package/dist/types/signal/index.d.ts +4 -1
- package/dist/types/signal/registration/encoding.d.ts +30 -0
- package/dist/types/signal/registration/keygen.d.ts +10 -0
- package/dist/types/signal/registration/utils.d.ts +7 -1
- package/dist/types/signal/session/SignalProtocol.d.ts +66 -2
- package/dist/types/signal/session/SignalRatchet.d.ts +2 -3
- package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
- package/dist/types/signal/session/SignalSession.d.ts +0 -1
- package/dist/types/signal/session/encoding.d.ts +28 -0
- package/dist/types/signal/session/resolver.d.ts +18 -2
- package/dist/types/signal/types.d.ts +16 -4
- package/dist/types/store/cache/identity.cache.d.ts +15 -0
- package/dist/types/store/cache/privacy-token.cache.d.ts +15 -0
- package/dist/types/store/cache/sender-key.cache.d.ts +18 -0
- package/dist/types/store/cache/session.cache.d.ts +23 -0
- package/dist/types/store/contracts/contact.store.d.ts +14 -0
- package/dist/types/store/contracts/device-list.store.d.ts +13 -0
- package/dist/types/store/contracts/group-metadata.store.d.ts +14 -0
- package/dist/types/store/contracts/identity.store.d.ts +11 -0
- package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
- package/dist/types/store/contracts/message.store.d.ts +0 -2
- package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
- package/dist/types/store/contracts/session.store.d.ts +14 -0
- package/dist/types/store/contracts/signal.store.d.ts +1 -34
- package/dist/types/store/createStore.d.ts +54 -2
- package/dist/types/store/index.d.ts +22 -13
- package/dist/types/store/locks/group-metadata.lock.d.ts +2 -0
- package/dist/types/store/locks/identity.lock.d.ts +3 -0
- package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
- package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
- package/dist/types/store/locks/session.lock.d.ts +3 -0
- package/dist/types/store/{providers/memory → memory}/appstate.store.d.ts +2 -2
- package/dist/types/store/memory/auth.store.d.ts +18 -0
- package/dist/types/store/{providers/memory → memory}/contact.store.d.ts +6 -1
- package/dist/types/store/{providers/memory → memory}/device-list.store.d.ts +15 -2
- package/dist/types/store/memory/group-metadata.store.d.ts +27 -0
- package/dist/types/store/memory/identity.store.d.ts +18 -0
- package/dist/types/store/memory/message-secret.store.d.ts +31 -0
- package/dist/types/store/{providers/memory → memory}/message.store.d.ts +1 -1
- package/dist/types/store/memory/pre-key.store.d.ts +23 -0
- package/dist/types/store/{providers/memory → memory}/privacy-token.store.d.ts +1 -1
- package/dist/types/store/{providers/memory → memory}/retry.store.d.ts +23 -4
- package/dist/types/store/{providers/memory → memory}/sender-key.store.d.ts +2 -2
- package/dist/types/store/memory/session.store.d.ts +21 -0
- package/dist/types/store/memory/signal.store.d.ts +16 -0
- package/dist/types/store/{providers/memory → memory}/thread.store.d.ts +1 -1
- package/dist/types/store/noop.store.d.ts +6 -2
- package/dist/types/store/types.d.ts +271 -7
- package/dist/types/transport/WaComms.d.ts +5 -0
- package/dist/types/transport/WaWebSocket.d.ts +6 -0
- package/dist/types/transport/binary/constants.d.ts +8 -2
- package/dist/types/transport/binary/decoder.d.ts +5 -0
- package/dist/types/transport/binary/encoder.d.ts +5 -0
- package/dist/types/transport/binary/tokens.d.ts +6 -6
- package/dist/types/transport/index.d.ts +9 -0
- package/dist/types/transport/keepalive/WaKeepAlive.d.ts +11 -1
- package/dist/types/transport/node/WaMobileTcpSocket.d.ts +24 -0
- package/dist/types/transport/node/WaNodeOrchestrator.d.ts +11 -2
- package/dist/types/transport/node/WaNodeTransport.d.ts +13 -0
- package/dist/types/transport/node/builders/abprops.d.ts +5 -0
- package/dist/types/transport/node/builders/account-sync.d.ts +1 -2
- package/dist/types/transport/node/builders/bot.d.ts +4 -0
- package/dist/types/transport/node/builders/business.d.ts +21 -4
- package/dist/types/transport/node/builders/chatstate.d.ts +11 -0
- package/dist/types/transport/node/builders/community.d.ts +17 -0
- package/dist/types/transport/node/builders/device.d.ts +2 -0
- package/dist/types/transport/node/builders/email.d.ts +11 -0
- package/dist/types/transport/node/builders/group.d.ts +44 -2
- package/dist/types/transport/node/builders/message.d.ts +11 -6
- package/dist/types/transport/node/builders/newsletter.d.ts +73 -0
- package/dist/types/transport/node/builders/offline.d.ts +2 -0
- package/dist/types/transport/node/builders/passive.d.ts +3 -0
- package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
- package/dist/types/transport/node/builders/presence.d.ts +13 -0
- package/dist/types/transport/node/builders/profile.d.ts +3 -0
- package/dist/types/transport/node/builders/tos.d.ts +12 -0
- package/dist/types/transport/node/builders/usync.d.ts +16 -0
- package/dist/types/transport/node/helpers.d.ts +3 -1
- package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
- package/dist/types/transport/node/mex/client.d.ts +29 -0
- package/dist/types/transport/node/query.d.ts +19 -1
- package/dist/types/transport/node/usync.d.ts +3 -0
- package/dist/types/transport/noise/WaMobileClientPayload.d.ts +34 -0
- package/dist/types/transport/noise/WaNoiseCert.d.ts +12 -1
- package/dist/types/transport/noise/WaNoiseHandshake.d.ts +12 -6
- package/dist/types/transport/noise/WaNoiseSession.d.ts +1 -1
- package/dist/types/transport/noise/WaNoiseSocket.d.ts +12 -6
- package/dist/types/transport/noise/constants.d.ts +4 -5
- package/dist/types/transport/proxy.d.ts +5 -0
- package/dist/types/transport/types.d.ts +15 -0
- package/dist/types/transport/wa-web-version-fetcher.d.ts +44 -0
- package/dist/types/util/async.d.ts +4 -0
- package/dist/types/util/bytes.d.ts +36 -1
- package/dist/types/util/clock.d.ts +6 -0
- package/dist/types/util/coercion.d.ts +25 -0
- package/dist/types/util/collections.d.ts +8 -0
- package/dist/types/util/index.d.ts +2 -2
- package/dist/types/util/primitives.d.ts +11 -0
- package/dist/types/util/runtime.d.ts +5 -0
- package/dist/types/version-spec.d.ts +1 -0
- package/dist/util/async.js +4 -0
- package/dist/util/bytes.js +37 -2
- package/dist/util/clock.js +18 -0
- package/dist/util/coercion.js +48 -3
- package/dist/util/collections.js +12 -0
- package/dist/util/index.js +7 -1
- package/dist/util/primitives.js +20 -0
- package/dist/util/runtime.js +5 -0
- package/dist/version-spec.js +5 -0
- package/package.json +37 -11
- package/spec/appstate/index.d.ts +188 -0
- package/spec/appstate/index.js +850 -0
- package/spec/mex/index.d.ts +4172 -0
- package/spec/mex/index.js +261 -0
- package/spec/proto/index.d.ts +16305 -0
- package/spec/proto/index.js +1 -0
- package/spec/version/index.d.ts +4 -0
- package/spec/version/index.js +9 -0
- package/spec/version/version.json +3 -0
- package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
- package/dist/auth/pairing/WaPairingCodeCrypto.js +0 -77
- package/dist/auth/pairing/constants.js +0 -5
- package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
- package/dist/client/events/chat.js +0 -227
- package/dist/client/incoming.js +0 -269
- package/dist/client/mailbox.js +0 -50
- package/dist/client/messages.js +0 -228
- package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
- package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +0 -73
- package/dist/esm/auth/pairing/constants.js +0 -2
- package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
- package/dist/esm/client/events/chat.js +0 -224
- package/dist/esm/client/incoming.js +0 -260
- package/dist/esm/client/mailbox.js +0 -47
- package/dist/esm/client/messages.js +0 -224
- package/dist/esm/media/WaMediaCrypto.js +0 -304
- package/dist/esm/message/addon-crypto.js +0 -59
- package/dist/esm/message/incoming.js +0 -325
- package/dist/esm/message/phash.js +0 -27
- package/dist/esm/signal/crypto/WaAdvSignature.js +0 -64
- package/dist/esm/store/locks/participants.lock.js +0 -20
- package/dist/esm/store/providers/memory/contact.store.js +0 -28
- package/dist/esm/store/providers/memory/device-list.store.js +0 -64
- package/dist/esm/store/providers/memory/signal.store.js +0 -199
- package/dist/esm/transport/node/builders/index.js +0 -11
- package/dist/media/WaMediaCrypto.js +0 -308
- package/dist/message/addon-crypto.js +0 -65
- package/dist/message/phash.js +0 -30
- package/dist/signal/crypto/WaAdvSignature.js +0 -76
- package/dist/store/locks/participants.lock.js +0 -23
- package/dist/store/providers/memory/contact.store.js +0 -32
- package/dist/store/providers/memory/device-list.store.js +0 -68
- package/dist/store/providers/memory/signal.store.js +0 -203
- package/dist/transport/node/builders/index.js +0 -51
- package/dist/types/appstate/WaAppStateSyncClient.d.ts +0 -66
- package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
- package/dist/types/auth/pairing/constants.d.ts +0 -2
- package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
- package/dist/types/client/events/chat.d.ts +0 -3
- package/dist/types/client/history-sync.d.ts +0 -20
- package/dist/types/client/incoming.d.ts +0 -37
- package/dist/types/client/mailbox.d.ts +0 -10
- package/dist/types/client/messages.d.ts +0 -16
- package/dist/types/client/messaging/participants.d.ts +0 -13
- package/dist/types/media/WaMediaCrypto.d.ts +0 -13
- package/dist/types/media/conn.d.ts +0 -3
- package/dist/types/message/addon-crypto.d.ts +0 -25
- package/dist/types/message/content.d.ts +0 -12
- package/dist/types/message/incoming.d.ts +0 -18
- package/dist/types/signal/crypto/constants.d.ts +0 -5
- package/dist/types/store/contracts/participants.store.d.ts +0 -13
- package/dist/types/store/locks/participants.lock.d.ts +0 -2
- package/dist/types/store/providers/memory/participants.store.d.ts +0 -17
- package/dist/types/store/providers/memory/signal.store.d.ts +0 -58
- package/dist/types/transport/node/builders/index.d.ts +0 -11
- package/proto/index.d.ts +0 -10903
- package/proto/index.js +0 -1
- /package/dist/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
- /package/dist/esm/{store/contracts/participants.store.js → client/newsletter/types.js} +0 -0
- /package/dist/esm/message/{device-sent.js → encode/device-sent.js} +0 -0
- /package/dist/message/{device-sent.js → encode/device-sent.js} +0 -0
- /package/dist/types/message/{padding.d.ts → encode/padding.d.ts} +0 -0
|
@@ -8,11 +8,10 @@ export interface DecryptOutcome {
|
|
|
8
8
|
readonly usedPreKey: number | null;
|
|
9
9
|
} | null;
|
|
10
10
|
}
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function deriveMsgKey(index: number, chainKey: Uint8Array): Promise<{
|
|
11
|
+
export declare function deriveMsgKey(index: number, chainKey: Uint8Array): {
|
|
13
12
|
readonly nextChainKey: Uint8Array;
|
|
14
13
|
readonly messageKey: SignalMessageKey;
|
|
15
|
-
}
|
|
14
|
+
};
|
|
16
15
|
export declare function selectMessageKey(chain: SignalRecvChain, targetCounter: number): Promise<{
|
|
17
16
|
readonly messageKey: SignalMessageKey;
|
|
18
17
|
readonly updatedChain: SignalRecvChain;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ParsedPreKeySignalMessage, ParsedSignalMessage, PreKeyRecord, SignedPreKeyRecord } from '../types';
|
|
2
|
+
import type { WaPreKeyStore } from '../../store/contracts/pre-key.store';
|
|
2
3
|
import type { WaSignalStore } from '../../store/contracts/signal.store';
|
|
3
4
|
export declare function deserializeMsg(versionContentMac: Uint8Array): ParsedSignalMessage;
|
|
4
5
|
export declare function deserializePkMsg(versionContent: Uint8Array): ParsedPreKeySignalMessage;
|
|
5
6
|
export declare function requireSignedPreKey(store: WaSignalStore, id: number): Promise<SignedPreKeyRecord>;
|
|
6
|
-
export declare function requirePreKey(store:
|
|
7
|
+
export declare function requirePreKey(store: WaPreKeyStore, id: number): Promise<PreKeyRecord>;
|
|
@@ -10,7 +10,6 @@ interface IncomingRatchetKeys {
|
|
|
10
10
|
readonly ratchet: SignalSerializedKeyPair;
|
|
11
11
|
}
|
|
12
12
|
export declare function snapshotToRecord(snapshot: SignalSessionSnapshot): SignalSessionRecord;
|
|
13
|
-
export declare function detachSession(session: SignalSessionRecord): SignalSessionSnapshot;
|
|
14
13
|
export declare function findMatchingSession(session: SignalSessionRecord | null, sessionBaseKey: Uint8Array): SignalSessionRecord | null;
|
|
15
14
|
export declare function requireLocalIdentity(store: WaSignalStore): Promise<LocalIdentityContext>;
|
|
16
15
|
export declare function initiateSessionOutgoing(local: LocalIdentityContext, remoteBundle: {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Proto } from '../..';
|
|
2
|
+
import type { SignalMessageKey, SignalRecvChain, SignalSessionRecord, SignalSessionSnapshot } from '../types';
|
|
3
|
+
export interface SignalSessionRow extends Record<string, unknown> {
|
|
4
|
+
readonly user: unknown;
|
|
5
|
+
readonly server: unknown;
|
|
6
|
+
readonly device: unknown;
|
|
7
|
+
readonly record: unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface SignalIdentityRow extends Record<string, unknown> {
|
|
10
|
+
readonly identity_key: unknown;
|
|
11
|
+
}
|
|
12
|
+
export declare function encodeSignalSessionSnapshot(session: SignalSessionSnapshot): Proto.ISessionStructure;
|
|
13
|
+
export declare function encodeSignalRecvChain(chain: SignalRecvChain): Proto.SessionStructure.IChain;
|
|
14
|
+
export declare function decodeSignalMessageKey(messageKey: Proto.SessionStructure.Chain.IMessageKey, field: string): SignalMessageKey;
|
|
15
|
+
export declare function decodeSignalRecvChain(chain: Proto.SessionStructure.IChain, field: string): SignalRecvChain;
|
|
16
|
+
export declare function decodeSignalSessionSnapshot(session: Proto.ISessionStructure, field: string): SignalSessionSnapshot;
|
|
17
|
+
/**
|
|
18
|
+
* Serializes a {@link SignalSessionRecord} (current + previous sessions) into
|
|
19
|
+
* the Signal `RecordStructure` protobuf encoding used by the session stores.
|
|
20
|
+
*/
|
|
21
|
+
export declare function encodeSignalSessionRecord(record: SignalSessionRecord): Uint8Array;
|
|
22
|
+
/**
|
|
23
|
+
* Decodes a Signal `RecordStructure` payload (as stored on disk) back into a
|
|
24
|
+
* {@link SignalSessionRecord}. Throws when the current session is missing.
|
|
25
|
+
*/
|
|
26
|
+
export declare function decodeSignalSessionRecord(raw: unknown): SignalSessionRecord;
|
|
27
|
+
/** Reads a stored remote identity blob into a Uint8Array (validates byte-shape). */
|
|
28
|
+
export declare function decodeSignalRemoteIdentity(raw: unknown): Uint8Array;
|
|
@@ -3,19 +3,35 @@ import type { SignalIdentitySyncApi } from '../api/SignalIdentitySyncApi';
|
|
|
3
3
|
import type { SignalSessionSyncApi } from '../api/SignalSessionSyncApi';
|
|
4
4
|
import type { SignalProtocol } from '../session/SignalProtocol';
|
|
5
5
|
import type { SignalAddress, SignalSessionRecord } from '../types';
|
|
6
|
-
import type {
|
|
6
|
+
import type { WaIdentityStore } from '../../store/contracts/identity.store';
|
|
7
|
+
import type { WaSessionStore } from '../../store/contracts/session.store';
|
|
7
8
|
export interface SignalResolvedSessionTarget {
|
|
8
9
|
readonly jid: string;
|
|
9
10
|
readonly address: SignalAddress;
|
|
10
11
|
readonly session: SignalSessionRecord;
|
|
11
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolves Signal sessions for one or more JIDs, fetching missing prekey
|
|
15
|
+
* bundles, enforcing identity continuity, and deduplicating concurrent
|
|
16
|
+
* fetches for the same address.
|
|
17
|
+
*/
|
|
12
18
|
export type SignalSessionResolver = {
|
|
19
|
+
/**
|
|
20
|
+
* Ensures a session exists for `address` (fetching the prekey bundle if
|
|
21
|
+
* needed). `reasonIdentity` triggers a remote identity refresh first.
|
|
22
|
+
*/
|
|
13
23
|
ensureSession(address: SignalAddress, jid: string, expectedIdentity?: Uint8Array, reasonIdentity?: boolean): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Batched session resolver – issues a single key-bundle fetch for all
|
|
26
|
+
* missing JIDs. Returns the resolved targets that now have a session.
|
|
27
|
+
*/
|
|
14
28
|
ensureSessionsBatch(targetJids: readonly string[], expectedIdentityByJid?: ReadonlyMap<string, Uint8Array>): Promise<readonly SignalResolvedSessionTarget[]>;
|
|
15
29
|
};
|
|
30
|
+
/** Builds a {@link SignalSessionResolver} backed by the given Signal APIs and stores. */
|
|
16
31
|
export declare function createSignalSessionResolver(options: {
|
|
17
32
|
readonly signalProtocol: SignalProtocol;
|
|
18
|
-
readonly
|
|
33
|
+
readonly sessionStore: WaSessionStore;
|
|
34
|
+
readonly identityStore: WaIdentityStore;
|
|
19
35
|
readonly signalIdentitySync: SignalIdentitySyncApi;
|
|
20
36
|
readonly signalSessionSync: SignalSessionSyncApi;
|
|
21
37
|
readonly logger: Logger;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SignalKeyPair } from '../crypto/curves/types';
|
|
2
|
+
import type { Proto } from '..';
|
|
2
3
|
export interface RegistrationInfo {
|
|
3
4
|
readonly registrationId: number;
|
|
4
5
|
readonly identityKeyPair: SignalKeyPair;
|
|
@@ -37,8 +38,14 @@ export interface SignalRecvChain {
|
|
|
37
38
|
readonly ratchetPubKey: Uint8Array;
|
|
38
39
|
readonly nextMsgIndex: number;
|
|
39
40
|
readonly chainKey: Uint8Array;
|
|
40
|
-
readonly unusedMsgKeys: readonly
|
|
41
|
-
}
|
|
41
|
+
readonly unusedMsgKeys: readonly Proto.SessionStructure.Chain.IMessageKey[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Raw protobuf recv chain kept as-is to avoid eager decode.
|
|
45
|
+
* Use {@link decodeSignalRecvChain} only for the chain that
|
|
46
|
+
* actually needs to be read/modified.
|
|
47
|
+
*/
|
|
48
|
+
export type RawSignalRecvChain = Proto.SessionStructure.IChain;
|
|
42
49
|
export interface SignalSendChain {
|
|
43
50
|
readonly ratchetKey: SignalSerializedKeyPair;
|
|
44
51
|
readonly nextMsgIndex: number;
|
|
@@ -54,14 +61,19 @@ export interface SignalSessionSnapshot {
|
|
|
54
61
|
readonly remote: SignalPeer;
|
|
55
62
|
readonly rootKey: Uint8Array;
|
|
56
63
|
readonly sendChain: SignalSendChain;
|
|
57
|
-
readonly recvChains: readonly
|
|
64
|
+
readonly recvChains: readonly RawSignalRecvChain[];
|
|
58
65
|
readonly initialExchangeInfo: SignalInitialExchangeInfo | null;
|
|
59
66
|
readonly prevSendChainHighestIndex: number;
|
|
60
67
|
readonly aliceBaseKey: Uint8Array | null;
|
|
61
68
|
}
|
|
62
69
|
export interface SignalSessionRecord extends SignalSessionSnapshot {
|
|
63
|
-
readonly prevSessions: readonly
|
|
70
|
+
readonly prevSessions: readonly RawSignalSessionSnapshot[];
|
|
64
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Raw protobuf session snapshot kept as-is to avoid eager decode.
|
|
74
|
+
* Only decoded on demand in rare fallback paths (session mismatch).
|
|
75
|
+
*/
|
|
76
|
+
export type RawSignalSessionSnapshot = Proto.ISessionStructure;
|
|
65
77
|
export interface SignalPreKeyBundle {
|
|
66
78
|
readonly regId: number;
|
|
67
79
|
readonly identity: Uint8Array;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WaIdentityStore } from '../contracts/identity.store';
|
|
2
|
+
import type { WithDestroyLifecycle } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Read-through / write-through in-process cache for a persistent remote
|
|
5
|
+
* identity backend. Reuses {@link WaIdentityMemoryStore} as the bounded-LRU
|
|
6
|
+
* L1. Remote identities are read alongside sessions on the send path (the
|
|
7
|
+
* identity-mismatch guard), so caching them complements
|
|
8
|
+
* {@link withSessionCache}.
|
|
9
|
+
*
|
|
10
|
+
* The identity store has no per-key delete: identities are overwritten on
|
|
11
|
+
* re-establishment, so a peer's key change propagates through the
|
|
12
|
+
* write-through `setRemoteIdentity`. See {@link withSessionCache} for the
|
|
13
|
+
* shared coherence model and the single-writer-per-session assumption.
|
|
14
|
+
*/
|
|
15
|
+
export declare function withIdentityCache(backend: WaIdentityStore, maxEntries?: number): WithDestroyLifecycle<WaIdentityStore>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WaPrivacyTokenStore } from '../contracts/privacy-token.store';
|
|
2
|
+
import type { WithDestroyLifecycle } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Read-through cache for a persistent privacy-token backend. Reuses
|
|
5
|
+
* {@link WaPrivacyTokenMemoryStore} as the bounded-LRU L1.
|
|
6
|
+
*
|
|
7
|
+
* Unlike the signal caches this is **invalidate-on-write, not
|
|
8
|
+
* write-through**: `upsert` merges partial fields into the existing row on
|
|
9
|
+
* the backend, so caching the partial incoming record would diverge from the
|
|
10
|
+
* backend's merged result. Instead each upsert drops the L1 entry and the
|
|
11
|
+
* next read re-populates from the merged backend truth. See
|
|
12
|
+
* {@link withSessionCache} for the shared coherence model and the
|
|
13
|
+
* single-writer-per-session assumption.
|
|
14
|
+
*/
|
|
15
|
+
export declare function withPrivacyTokenCache(backend: WaPrivacyTokenStore, maxEntries?: number): WithDestroyLifecycle<WaPrivacyTokenStore>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WaSenderKeyStore } from '../contracts/sender-key.store';
|
|
2
|
+
import type { WithDestroyLifecycle } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Read-through / write-through in-process cache for a persistent sender-key
|
|
5
|
+
* backend. Reuses {@link SenderKeyMemoryStore} as the bounded-LRU L1 so the
|
|
6
|
+
* per-(group, sender) lookups repeated across a group fan-out skip the
|
|
7
|
+
* backend round-trip.
|
|
8
|
+
*
|
|
9
|
+
* Only the point reads are cached. `getGroupSenderKeyList` returns the
|
|
10
|
+
* *complete* set for a group, which a partial point cache would under-report,
|
|
11
|
+
* so it goes straight to the backend. Upserts replace the whole record (no
|
|
12
|
+
* merge), so they are write-through; the sweep deletes
|
|
13
|
+
* (`deleteDeviceSenderKey`/`markForgetSenderKey`) run on the backend for the
|
|
14
|
+
* authoritative count and then invalidate the matching L1 entries via the
|
|
15
|
+
* memory store's own sweep. See {@link withSessionCache} for the shared
|
|
16
|
+
* coherence model and the single-writer-per-session assumption.
|
|
17
|
+
*/
|
|
18
|
+
export declare function withSenderKeyCache(backend: WaSenderKeyStore, maxEntries?: number): WithDestroyLifecycle<WaSenderKeyStore>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { WaSessionStore } from '../contracts/session.store';
|
|
2
|
+
import type { WithDestroyLifecycle } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Read-through / write-through in-process cache for a persistent session
|
|
5
|
+
* backend. Reuses {@link WaSessionMemoryStore} as the bounded-LRU L1 so that
|
|
6
|
+
* repeated reads of the same peer on the send/recv path skip the backend
|
|
7
|
+
* round-trip.
|
|
8
|
+
*
|
|
9
|
+
* Coherence model (single process):
|
|
10
|
+
* - every mutation (set/delete/clear) writes the backend then the L1 in
|
|
11
|
+
* lock-step and bumps a generation counter;
|
|
12
|
+
* - a read only populates the L1 when no mutation interleaved its backend
|
|
13
|
+
* fetch (generation unchanged) and the slot is still empty, so an in-flight
|
|
14
|
+
* read can never resurrect a concurrently deleted entry nor overwrite a
|
|
15
|
+
* fresher concurrent write;
|
|
16
|
+
* - there is no negative caching: a miss always re-hits the backend.
|
|
17
|
+
*
|
|
18
|
+
* This cache assumes a single writer per `sessionId` (the library's
|
|
19
|
+
* connection model). Do not share one backend across processes for the same
|
|
20
|
+
* session with the cache enabled - there is no cross-process invalidation
|
|
21
|
+
* channel, so another process's writes would leave this L1 stale.
|
|
22
|
+
*/
|
|
23
|
+
export declare function withSessionCache(backend: WaSessionStore, maxEntries?: number): WithDestroyLifecycle<WaSessionStore>;
|
|
@@ -9,7 +9,21 @@ export interface WaStoredContactRecord {
|
|
|
9
9
|
export interface WaContactStore {
|
|
10
10
|
upsert(record: WaStoredContactRecord): Promise<void>;
|
|
11
11
|
upsertBatch(records: readonly WaStoredContactRecord[]): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Lookup by jid. Contacts are persisted in LID-canonical form when both
|
|
14
|
+
* LID and PN are known (one row, `jid=<lid>` + `phoneNumber=<pn>`), so
|
|
15
|
+
* passing the PN form falls through to {@link getByPhoneNumber} when no
|
|
16
|
+
* row matches the PN jid directly. Callers do not need to know which
|
|
17
|
+
* form was used to write the row.
|
|
18
|
+
*/
|
|
12
19
|
getByJid(jid: string): Promise<WaStoredContactRecord | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Lookup the contact whose `phoneNumber` field equals `pn`. Returns the
|
|
22
|
+
* LID-canonical row when the cross-reference is known, `null` otherwise.
|
|
23
|
+
* Used by {@link getByJid} for the PN-fallback path and exposed publicly
|
|
24
|
+
* for callers that already know the PN form.
|
|
25
|
+
*/
|
|
26
|
+
getByPhoneNumber(pn: string): Promise<WaStoredContactRecord | null>;
|
|
13
27
|
deleteByJid(jid: string): Promise<number>;
|
|
14
28
|
clear(): Promise<void>;
|
|
15
29
|
}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
export interface WaDeviceListSnapshot {
|
|
2
2
|
readonly userJid: string;
|
|
3
|
+
/**
|
|
4
|
+
* The equivalent user-base JID in the other addressing form (PN if `userJid`
|
|
5
|
+
* is LID and vice versa). Populated by the lid usync resolver at send time.
|
|
6
|
+
* Used by retry-receipt eligibility to match the same user across
|
|
7
|
+
* `@s.whatsapp.net` and `@lid` forms.
|
|
8
|
+
*/
|
|
9
|
+
readonly altUserJid?: string;
|
|
3
10
|
readonly deviceJids: readonly string[];
|
|
4
11
|
readonly updatedAtMs: number;
|
|
5
12
|
}
|
|
@@ -7,6 +14,12 @@ export interface WaDeviceListStore {
|
|
|
7
14
|
destroy?(): Promise<void>;
|
|
8
15
|
upsertUserDevicesBatch(snapshots: readonly WaDeviceListSnapshot[]): Promise<void>;
|
|
9
16
|
getUserDevicesBatch(userJids: readonly string[], nowMs?: number): Promise<readonly (WaDeviceListSnapshot | null)[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a snapshot by either `userJid` (primary) or `altUserJid`
|
|
19
|
+
* (alternate addressing). Returns the snapshot whose user matches `jid` in
|
|
20
|
+
* either form, or `null` when unknown / expired.
|
|
21
|
+
*/
|
|
22
|
+
findByAnyUserJid(jid: string, nowMs?: number): Promise<WaDeviceListSnapshot | null>;
|
|
10
23
|
deleteUserDevices(userJid: string): Promise<number>;
|
|
11
24
|
cleanupExpired(nowMs: number): Promise<number>;
|
|
12
25
|
clear(): Promise<void>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface WaGroupMetadataSnapshot {
|
|
2
|
+
readonly groupJid: string;
|
|
3
|
+
readonly participants: readonly string[];
|
|
4
|
+
readonly ephemeral?: number;
|
|
5
|
+
readonly updatedAtMs: number;
|
|
6
|
+
}
|
|
7
|
+
export interface WaGroupMetadataStore {
|
|
8
|
+
destroy?(): Promise<void>;
|
|
9
|
+
upsertGroupMetadata(snapshot: WaGroupMetadataSnapshot): Promise<void>;
|
|
10
|
+
getGroupMetadata(groupJid: string, nowMs?: number): Promise<WaGroupMetadataSnapshot | null>;
|
|
11
|
+
deleteGroupMetadata(groupJid: string): Promise<number>;
|
|
12
|
+
cleanupExpired(nowMs: number): Promise<number>;
|
|
13
|
+
clear(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SignalAddress } from '../../signal/types';
|
|
2
|
+
export interface WaIdentityStore {
|
|
3
|
+
getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
|
|
4
|
+
getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
|
|
5
|
+
setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
|
|
6
|
+
setRemoteIdentities(entries: readonly {
|
|
7
|
+
readonly address: SignalAddress;
|
|
8
|
+
readonly identityKey: Uint8Array;
|
|
9
|
+
}[]): Promise<void>;
|
|
10
|
+
clear(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface WaMessageSecretEntry {
|
|
2
|
+
readonly secret: Uint8Array;
|
|
3
|
+
readonly senderJid: string;
|
|
4
|
+
}
|
|
5
|
+
export interface WaMessageSecretStore {
|
|
6
|
+
get(messageId: string, nowMs?: number): Promise<WaMessageSecretEntry | null>;
|
|
7
|
+
getBatch(messageIds: readonly string[], nowMs?: number): Promise<readonly (WaMessageSecretEntry | null)[]>;
|
|
8
|
+
set(messageId: string, entry: WaMessageSecretEntry): Promise<void>;
|
|
9
|
+
setBatch(entries: readonly {
|
|
10
|
+
readonly messageId: string;
|
|
11
|
+
readonly entry: WaMessageSecretEntry;
|
|
12
|
+
}[]): Promise<void>;
|
|
13
|
+
cleanupExpired(nowMs: number): Promise<number>;
|
|
14
|
+
clear(): Promise<void>;
|
|
15
|
+
destroy?(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -5,8 +5,6 @@ export interface WaStoredMessageRecord {
|
|
|
5
5
|
readonly participantJid?: string;
|
|
6
6
|
readonly fromMe: boolean;
|
|
7
7
|
readonly timestampMs?: number;
|
|
8
|
-
readonly encType?: string;
|
|
9
|
-
readonly plaintext?: Uint8Array;
|
|
10
8
|
readonly messageBytes?: Uint8Array;
|
|
11
9
|
}
|
|
12
10
|
export interface WaMessageStore {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PreKeyRecord } from '../../signal/types';
|
|
2
|
+
export interface WaPreKeyStore {
|
|
3
|
+
putPreKey(record: PreKeyRecord): Promise<void>;
|
|
4
|
+
getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
|
|
5
|
+
getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
|
|
6
|
+
getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
|
|
7
|
+
consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
|
|
8
|
+
getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
|
|
9
|
+
markKeyAsUploaded(keyId: number): Promise<void>;
|
|
10
|
+
setServerHasPreKeys(value: boolean): Promise<void>;
|
|
11
|
+
getServerHasPreKeys(): Promise<boolean>;
|
|
12
|
+
clear(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SignalAddress, SignalSessionRecord } from '../../signal/types';
|
|
2
|
+
export interface WaSessionStore {
|
|
3
|
+
hasSession(address: SignalAddress): Promise<boolean>;
|
|
4
|
+
hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
|
|
5
|
+
getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
|
|
6
|
+
getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
|
|
7
|
+
setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
|
|
8
|
+
setSessionsBatch(entries: readonly {
|
|
9
|
+
readonly address: SignalAddress;
|
|
10
|
+
readonly session: SignalSessionRecord;
|
|
11
|
+
}[]): Promise<void>;
|
|
12
|
+
deleteSession(address: SignalAddress): Promise<void>;
|
|
13
|
+
clear(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export interface WaSignalMetaSnapshot {
|
|
3
|
-
readonly serverHasPreKeys: boolean;
|
|
4
|
-
readonly signedPreKeyRotationTs: number | null;
|
|
5
|
-
readonly registrationInfo: RegistrationInfo | null;
|
|
6
|
-
readonly signedPreKey: SignedPreKeyRecord | null;
|
|
7
|
-
}
|
|
1
|
+
import type { RegistrationInfo, SignedPreKeyRecord } from '../../signal/types';
|
|
8
2
|
export interface WaSignalStore {
|
|
9
3
|
getRegistrationInfo(): Promise<RegistrationInfo | null>;
|
|
10
4
|
setRegistrationInfo(info: RegistrationInfo): Promise<void>;
|
|
@@ -13,32 +7,5 @@ export interface WaSignalStore {
|
|
|
13
7
|
getSignedPreKeyById(keyId: number): Promise<SignedPreKeyRecord | null>;
|
|
14
8
|
setSignedPreKeyRotationTs(value: number | null): Promise<void>;
|
|
15
9
|
getSignedPreKeyRotationTs(): Promise<number | null>;
|
|
16
|
-
putPreKey(record: PreKeyRecord): Promise<void>;
|
|
17
|
-
getOrGenPreKeys(count: number, generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<readonly PreKeyRecord[]>;
|
|
18
|
-
getPreKeyById(keyId: number): Promise<PreKeyRecord | null>;
|
|
19
|
-
getPreKeysById(keyIds: readonly number[]): Promise<readonly (PreKeyRecord | null)[]>;
|
|
20
|
-
consumePreKeyById(keyId: number): Promise<PreKeyRecord | null>;
|
|
21
|
-
getOrGenSinglePreKey(generator: (keyId: number) => PreKeyRecord | Promise<PreKeyRecord>): Promise<PreKeyRecord>;
|
|
22
|
-
markKeyAsUploaded(keyId: number): Promise<void>;
|
|
23
|
-
setServerHasPreKeys(value: boolean): Promise<void>;
|
|
24
|
-
getServerHasPreKeys(): Promise<boolean>;
|
|
25
|
-
getSignalMeta(): Promise<WaSignalMetaSnapshot>;
|
|
26
|
-
hasSession(address: SignalAddress): Promise<boolean>;
|
|
27
|
-
hasSessions(addresses: readonly SignalAddress[]): Promise<readonly boolean[]>;
|
|
28
|
-
getSession(address: SignalAddress): Promise<SignalSessionRecord | null>;
|
|
29
|
-
getSessionsBatch(addresses: readonly SignalAddress[]): Promise<readonly (SignalSessionRecord | null)[]>;
|
|
30
|
-
setSession(address: SignalAddress, session: SignalSessionRecord): Promise<void>;
|
|
31
|
-
setSessionsBatch(entries: readonly {
|
|
32
|
-
readonly address: SignalAddress;
|
|
33
|
-
readonly session: SignalSessionRecord;
|
|
34
|
-
}[]): Promise<void>;
|
|
35
|
-
deleteSession(address: SignalAddress): Promise<void>;
|
|
36
|
-
getRemoteIdentity(address: SignalAddress): Promise<Uint8Array | null>;
|
|
37
|
-
getRemoteIdentities(addresses: readonly SignalAddress[]): Promise<readonly (Uint8Array | null)[]>;
|
|
38
|
-
setRemoteIdentity(address: SignalAddress, identityKey: Uint8Array): Promise<void>;
|
|
39
|
-
setRemoteIdentities(entries: readonly {
|
|
40
|
-
readonly address: SignalAddress;
|
|
41
|
-
readonly identityKey: Uint8Array;
|
|
42
|
-
}[]): Promise<void>;
|
|
43
10
|
clear(): Promise<void>;
|
|
44
11
|
}
|
|
@@ -1,2 +1,54 @@
|
|
|
1
|
-
import type { WaCreateStoreOptions, WaStore } from './types';
|
|
2
|
-
|
|
1
|
+
import type { WaCreateStoreOptions, WaCreateStoreOptionsStrict, WaStore } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a {@link WaStore} from the configured providers/backends. Each call
|
|
4
|
+
* to `store.session(sessionId)` returns a cached, lock-wrapped per-domain
|
|
5
|
+
* store bundle for that session. Cache domains default to bounded memory
|
|
6
|
+
* with the TTLs in `options.memory.cacheTtlMs`.
|
|
7
|
+
*
|
|
8
|
+
* **Defaults policy:**
|
|
9
|
+
* - With `backends` empty (or absent), every domain falls back to memory
|
|
10
|
+
* (mailbox domains to `'none'`). The session lives only in memory and the
|
|
11
|
+
* device re-pairs on every restart.
|
|
12
|
+
* - With `backends` set, **every persistence domain must be assigned
|
|
13
|
+
* explicitly** in `providers` (auth/signal/preKey/session/identity/
|
|
14
|
+
* senderKey/appState/privacyToken/messages/threads/contacts). The factory
|
|
15
|
+
* throws listing the missing keys. Pass `'memory'` to keep the in-tree
|
|
16
|
+
* memory provider for that domain, `'none'` to skip it, or the backend
|
|
17
|
+
* name to persist. Cache domains (retry/groupMetadata/deviceList/
|
|
18
|
+
* messageSecret) stay opt-in and default to memory - they are small,
|
|
19
|
+
* hot, and cheap to rebuild.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* // Persistent setup with @zapo-js/store-sqlite (recommended for production)
|
|
24
|
+
* import { createSqliteStore } from '@zapo-js/store-sqlite'
|
|
25
|
+
* import { createStore } from '..'
|
|
26
|
+
*
|
|
27
|
+
* const store = createStore({
|
|
28
|
+
* backends: { sqlite: createSqliteStore({ path: '.auth/state.sqlite' }) },
|
|
29
|
+
* providers: {
|
|
30
|
+
* auth: 'sqlite',
|
|
31
|
+
* signal: 'sqlite',
|
|
32
|
+
* preKey: 'sqlite',
|
|
33
|
+
* session: 'sqlite',
|
|
34
|
+
* identity: 'sqlite',
|
|
35
|
+
* senderKey: 'sqlite',
|
|
36
|
+
* appState: 'sqlite',
|
|
37
|
+
* privacyToken: 'sqlite',
|
|
38
|
+
* messages: 'sqlite', // 'none' to skip the message archive
|
|
39
|
+
* threads: 'sqlite', // 'none' to skip
|
|
40
|
+
* contacts: 'sqlite' // 'none' to skip
|
|
41
|
+
* }
|
|
42
|
+
* // cacheProviders omitted - retry/groupMetadata/deviceList/
|
|
43
|
+
* // messageSecret default to memory
|
|
44
|
+
* })
|
|
45
|
+
*
|
|
46
|
+
* // Memory-only (tests / ephemeral sessions - credentials lost on restart)
|
|
47
|
+
* const memStore = createStore({})
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function createStore(options?: Omit<WaCreateStoreOptions<never>, 'backends' | 'providers'> & {
|
|
51
|
+
readonly backends?: undefined;
|
|
52
|
+
readonly providers?: undefined;
|
|
53
|
+
}): WaStore;
|
|
54
|
+
export declare function createStore<B extends string>(options: WaCreateStoreOptionsStrict<B>): WaStore;
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
export type { WaCreateStoreOptions, WaStore, WaStoreBackend, WaCacheDomain, WaStoreDomain, WaStoreMemoryLimitSelection, WaStoreSession } from './types';
|
|
1
|
+
export type { WaCreateStoreOptions, WaCreateStoreOptionsStrict, WaStore, WaStoreBackend, WaCacheDomain, WaStoreDomain, WaStoreMemoryLimitSelection, WaStoreSession } from './types';
|
|
2
2
|
export { createStore } from './createStore';
|
|
3
3
|
export type { WaAuthStore } from './contracts/auth.store';
|
|
4
4
|
export type { WaContactStore, WaStoredContactRecord } from './contracts/contact.store';
|
|
5
5
|
export type { WaDeviceListSnapshot, WaDeviceListStore } from './contracts/device-list.store';
|
|
6
|
+
export type { WaMessageSecretEntry, WaMessageSecretStore } from './contracts/message-secret.store';
|
|
6
7
|
export type { WaMessageStore, WaStoredMessageRecord } from './contracts/message.store';
|
|
7
|
-
export type {
|
|
8
|
+
export type { WaGroupMetadataSnapshot, WaGroupMetadataStore } from './contracts/group-metadata.store';
|
|
8
9
|
export type { WaAppStateCollectionStateUpdate, WaAppStateCollectionStoreState, WaAppStateStore } from './contracts/appstate.store';
|
|
10
|
+
export type { WaIdentityStore } from './contracts/identity.store';
|
|
11
|
+
export type { WaPreKeyStore } from './contracts/pre-key.store';
|
|
9
12
|
export type { WaSenderKeyStore } from './contracts/sender-key.store';
|
|
10
|
-
export type {
|
|
13
|
+
export type { WaSessionStore } from './contracts/session.store';
|
|
14
|
+
export type { WaSignalStore } from './contracts/signal.store';
|
|
11
15
|
export type { WaRetryStore } from './contracts/retry.store';
|
|
12
16
|
export type { WaStoredThreadRecord, WaThreadStore } from './contracts/thread.store';
|
|
13
17
|
export type { WaPrivacyTokenStore, WaStoredPrivacyTokenRecord } from './contracts/privacy-token.store';
|
|
14
|
-
export { WaAppStateMemoryStore } from './
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
18
|
+
export { WaAppStateMemoryStore } from './memory/appstate.store';
|
|
19
|
+
export { WaAuthMemoryStore } from './memory/auth.store';
|
|
20
|
+
export { WaSignalMemoryStore } from './memory/signal.store';
|
|
21
|
+
export { WaPreKeyMemoryStore } from './memory/pre-key.store';
|
|
22
|
+
export { WaSessionMemoryStore } from './memory/session.store';
|
|
23
|
+
export { WaIdentityMemoryStore } from './memory/identity.store';
|
|
24
|
+
export { SenderKeyMemoryStore } from './memory/sender-key.store';
|
|
25
|
+
export { WaRetryMemoryStore } from './memory/retry.store';
|
|
26
|
+
export { WaGroupMetadataMemoryStore } from './memory/group-metadata.store';
|
|
27
|
+
export { WaDeviceListMemoryStore } from './memory/device-list.store';
|
|
28
|
+
export { WaContactMemoryStore } from './memory/contact.store';
|
|
29
|
+
export { WaMessageSecretMemoryStore } from './memory/message-secret.store';
|
|
30
|
+
export { WaMessageMemoryStore } from './memory/message.store';
|
|
31
|
+
export { WaThreadMemoryStore } from './memory/thread.store';
|
|
32
|
+
export { WaPrivacyTokenMemoryStore } from './memory/privacy-token.store';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AppStateCollectionName, WaAppStateStoreData, WaAppStateSyncKey } from '
|
|
2
|
-
import type { WaAppStateCollectionStateUpdate, WaAppStateCollectionStoreState, WaAppStateStore } from '
|
|
1
|
+
import type { AppStateCollectionName, WaAppStateStoreData, WaAppStateSyncKey } from '../../appstate/types';
|
|
2
|
+
import type { WaAppStateCollectionStateUpdate, WaAppStateCollectionStoreState, WaAppStateStore } from '../contracts/appstate.store';
|
|
3
3
|
export interface WaAppStateMemoryStoreOptions {
|
|
4
4
|
readonly maxSyncKeys?: number;
|
|
5
5
|
readonly maxCollectionEntries?: number;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WaAuthCredentials } from '../../auth/types';
|
|
2
|
+
import type { WaAuthStore } from '../contracts/auth.store';
|
|
3
|
+
/**
|
|
4
|
+
* In-memory {@link WaAuthStore} implementation. Holds a single
|
|
5
|
+
* {@link WaAuthCredentials} per instance in a field – nothing is persisted.
|
|
6
|
+
*
|
|
7
|
+
* @sensitive Holds private key material from {@link WaAuthCredentials} in
|
|
8
|
+
* RAM. Never log instances, never `JSON.stringify`. Pairing credentials are
|
|
9
|
+
* lost when the process exits, so the next connect will re-pair from scratch
|
|
10
|
+
* (QR/link-code). Prefer a persistent backend (e.g. `@zapo-js/store-sqlite`)
|
|
11
|
+
* for production.
|
|
12
|
+
*/
|
|
13
|
+
export declare class WaAuthMemoryStore implements WaAuthStore {
|
|
14
|
+
private credentials;
|
|
15
|
+
load(): Promise<WaAuthCredentials | null>;
|
|
16
|
+
save(credentials: WaAuthCredentials): Promise<void>;
|
|
17
|
+
clear(): Promise<void>;
|
|
18
|
+
}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import type { WaContactStore as Contract, WaStoredContactRecord } from '
|
|
1
|
+
import type { WaContactStore as Contract, WaStoredContactRecord } from '../contracts/contact.store';
|
|
2
2
|
export interface WaContactMemoryStoreOptions {
|
|
3
3
|
readonly maxContacts?: number;
|
|
4
4
|
}
|
|
5
5
|
export declare class WaContactMemoryStore implements Contract {
|
|
6
6
|
private readonly contacts;
|
|
7
|
+
/** Secondary index: phone_number -> primary jid (typically the LID form). */
|
|
8
|
+
private readonly phoneIndex;
|
|
7
9
|
private readonly maxContacts;
|
|
8
10
|
constructor(options?: WaContactMemoryStoreOptions);
|
|
11
|
+
private writeRecord;
|
|
9
12
|
upsert(record: WaStoredContactRecord): Promise<void>;
|
|
10
13
|
upsertBatch(records: readonly WaStoredContactRecord[]): Promise<void>;
|
|
11
14
|
getByJid(jid: string): Promise<WaStoredContactRecord | null>;
|
|
15
|
+
getByPhoneNumber(pn: string): Promise<WaStoredContactRecord | null>;
|
|
16
|
+
private getByPhoneNumberSync;
|
|
12
17
|
deleteByJid(jid: string): Promise<number>;
|
|
13
18
|
clear(): Promise<void>;
|
|
14
19
|
}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Logger } from '../../infra/log/types';
|
|
2
|
+
import type { WaDeviceListSnapshot, WaDeviceListStore } from '../contracts/device-list.store';
|
|
2
3
|
export interface WaDeviceListMemoryStoreOptions {
|
|
3
4
|
readonly maxUsers?: number;
|
|
5
|
+
/**
|
|
6
|
+
* Logger for capacity-saturation warnings. Emits a single `warn` the
|
|
7
|
+
* first time the bounded map evicts an entry; subsequent evictions are
|
|
8
|
+
* silent to avoid spam.
|
|
9
|
+
*/
|
|
10
|
+
readonly logger?: Logger;
|
|
4
11
|
}
|
|
5
12
|
export declare class WaDeviceListMemoryStore implements WaDeviceListStore {
|
|
6
13
|
private readonly records;
|
|
14
|
+
private readonly altIndex;
|
|
7
15
|
private readonly ttlMs;
|
|
8
16
|
private readonly maxUsers;
|
|
9
|
-
private readonly
|
|
17
|
+
private readonly cleanup;
|
|
18
|
+
private readonly logger;
|
|
19
|
+
private capacityWarned;
|
|
10
20
|
constructor(ttlMs?: number, options?: WaDeviceListMemoryStoreOptions);
|
|
21
|
+
private warnCapacity;
|
|
11
22
|
upsertUserDevicesBatch(snapshots: readonly WaDeviceListSnapshot[]): Promise<void>;
|
|
12
23
|
getUserDevicesBatch(userJids: readonly string[], nowMs?: number): Promise<readonly (WaDeviceListSnapshot | null)[]>;
|
|
24
|
+
findByAnyUserJid(jid: string, nowMs?: number): Promise<WaDeviceListSnapshot | null>;
|
|
13
25
|
deleteUserDevices(userJid: string): Promise<number>;
|
|
14
26
|
cleanupExpired(nowMs: number): Promise<number>;
|
|
15
27
|
clear(): Promise<void>;
|
|
16
28
|
destroy(): Promise<void>;
|
|
29
|
+
private readLive;
|
|
17
30
|
}
|