zapo-js 0.1.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/README.md +235 -0
- package/dist/appstate/WaAppStateCrypto.js +202 -0
- package/dist/appstate/WaAppStateSyncClient.js +808 -0
- package/dist/appstate/WaAppStateSyncResponseParser.js +71 -0
- package/dist/appstate/constants.js +23 -0
- package/dist/appstate/index.js +28 -0
- package/dist/appstate/store/sqlite.js +55 -0
- package/dist/appstate/types.js +2 -0
- package/dist/appstate/utils.js +84 -0
- package/dist/auth/WaAuthClient.js +266 -0
- package/dist/auth/flow/WaAuthCredentialsFlow.js +123 -0
- package/dist/auth/index.js +27 -0
- package/dist/auth/pairing/WaPairingCodeCrypto.js +75 -0
- package/dist/auth/pairing/WaPairingFlow.js +328 -0
- package/dist/auth/pairing/WaQrFlow.js +86 -0
- package/dist/auth/pairing/constants.js +5 -0
- package/dist/auth/types.js +2 -0
- package/dist/client/WaClient.js +749 -0
- package/dist/client/WaClientFactory.js +381 -0
- package/dist/client/coordinators/WaGroupCoordinator.js +191 -0
- package/dist/client/coordinators/WaIncomingNodeCoordinator.js +315 -0
- package/dist/client/coordinators/WaMessageDispatchCoordinator.js +1061 -0
- package/dist/client/coordinators/WaPassiveTasksCoordinator.js +200 -0
- package/dist/client/coordinators/WaRetryCoordinator.js +494 -0
- package/dist/client/coordinators/WaStreamControlCoordinator.js +123 -0
- package/dist/client/dirty.js +254 -0
- package/dist/client/events/chat.js +226 -0
- package/dist/client/events/group.js +410 -0
- package/dist/client/history-sync.js +122 -0
- package/dist/client/incoming.js +236 -0
- package/dist/client/index.js +5 -0
- package/dist/client/mailbox.js +49 -0
- package/dist/client/messages.js +152 -0
- package/dist/client/types.js +2 -0
- package/dist/crypto/core/constants.js +4 -0
- package/dist/crypto/core/encoding.js +29 -0
- package/dist/crypto/core/hkdf.js +26 -0
- package/dist/crypto/core/index.js +43 -0
- package/dist/crypto/core/keys.js +73 -0
- package/dist/crypto/core/nonce.js +18 -0
- package/dist/crypto/core/primitives.js +121 -0
- package/dist/crypto/core/random.js +32 -0
- package/dist/crypto/curves/Ed25519.js +42 -0
- package/dist/crypto/curves/X25519.js +64 -0
- package/dist/crypto/curves/constants.js +6 -0
- package/dist/crypto/curves/types.js +9 -0
- package/dist/crypto/index.js +22 -0
- package/dist/crypto/math/constants.js +44 -0
- package/dist/crypto/math/edwards.js +64 -0
- package/dist/crypto/math/le.js +20 -0
- package/dist/crypto/math/mod.js +38 -0
- package/dist/crypto/math/types.js +2 -0
- package/dist/esm/appstate/WaAppStateCrypto.js +198 -0
- package/dist/esm/appstate/WaAppStateSyncClient.js +803 -0
- package/dist/esm/appstate/WaAppStateSyncResponseParser.js +67 -0
- package/dist/esm/appstate/constants.js +20 -0
- package/dist/esm/appstate/index.js +6 -0
- package/dist/esm/appstate/store/sqlite.js +49 -0
- package/dist/esm/appstate/types.js +1 -0
- package/dist/esm/appstate/utils.js +75 -0
- package/dist/esm/auth/WaAuthClient.js +262 -0
- package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +118 -0
- package/dist/esm/auth/index.js +5 -0
- package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +71 -0
- package/dist/esm/auth/pairing/WaPairingFlow.js +324 -0
- package/dist/esm/auth/pairing/WaQrFlow.js +82 -0
- package/dist/esm/auth/pairing/constants.js +2 -0
- package/dist/esm/auth/types.js +1 -0
- package/dist/esm/client/WaClient.js +745 -0
- package/dist/esm/client/WaClientFactory.js +377 -0
- package/dist/esm/client/coordinators/WaGroupCoordinator.js +188 -0
- package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +311 -0
- package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +1057 -0
- package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +196 -0
- package/dist/esm/client/coordinators/WaRetryCoordinator.js +490 -0
- package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +120 -0
- package/dist/esm/client/dirty.js +250 -0
- package/dist/esm/client/events/chat.js +223 -0
- package/dist/esm/client/events/group.js +407 -0
- package/dist/esm/client/history-sync.js +119 -0
- package/dist/esm/client/incoming.js +227 -0
- package/dist/esm/client/index.js +1 -0
- package/dist/esm/client/mailbox.js +46 -0
- package/dist/esm/client/messages.js +148 -0
- package/dist/esm/client/types.js +1 -0
- package/dist/esm/crypto/core/constants.js +1 -0
- package/dist/esm/crypto/core/encoding.js +25 -0
- package/dist/esm/crypto/core/hkdf.js +22 -0
- package/dist/esm/crypto/core/index.js +11 -0
- package/dist/esm/crypto/core/keys.js +66 -0
- package/dist/esm/crypto/core/nonce.js +15 -0
- package/dist/esm/crypto/core/primitives.js +102 -0
- package/dist/esm/crypto/core/random.js +28 -0
- package/dist/esm/crypto/curves/Ed25519.js +38 -0
- package/dist/esm/crypto/curves/X25519.js +58 -0
- package/dist/esm/crypto/curves/constants.js +3 -0
- package/dist/esm/crypto/curves/types.js +6 -0
- package/dist/esm/crypto/index.js +3 -0
- package/dist/esm/crypto/math/constants.js +41 -0
- package/dist/esm/crypto/math/edwards.js +60 -0
- package/dist/esm/crypto/math/le.js +16 -0
- package/dist/esm/crypto/math/mod.js +31 -0
- package/dist/esm/crypto/math/types.js +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/infra/log/ConsoleLogger.js +40 -0
- package/dist/esm/infra/log/PinoLogger.js +73 -0
- package/dist/esm/infra/log/types.js +1 -0
- package/dist/esm/infra/perf/BoundedTaskQueue.js +62 -0
- package/dist/esm/media/WaMediaCrypto.js +224 -0
- package/dist/esm/media/WaMediaTransferClient.js +361 -0
- package/dist/esm/media/conn.js +33 -0
- package/dist/esm/media/constants.js +18 -0
- package/dist/esm/media/index.js +3 -0
- package/dist/esm/media/types.js +1 -0
- package/dist/esm/message/WaMessageClient.js +210 -0
- package/dist/esm/message/ack.js +46 -0
- package/dist/esm/message/content.js +20 -0
- package/dist/esm/message/device-sent.js +49 -0
- package/dist/esm/message/incoming.js +318 -0
- package/dist/esm/message/index.js +2 -0
- package/dist/esm/message/padding.js +20 -0
- package/dist/esm/message/phash.js +25 -0
- package/dist/esm/message/types.js +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/proto.js +3 -0
- package/dist/esm/protocol/appstate.js +34 -0
- package/dist/esm/protocol/auth.js +12 -0
- package/dist/esm/protocol/browser.js +41 -0
- package/dist/esm/protocol/constants.js +11 -0
- package/dist/esm/protocol/defaults.js +27 -0
- package/dist/esm/protocol/dirty.js +26 -0
- package/dist/esm/protocol/group.js +5 -0
- package/dist/esm/protocol/index.js +11 -0
- package/dist/esm/protocol/jid.js +94 -0
- package/dist/esm/protocol/media.js +20 -0
- package/dist/esm/protocol/message.js +16 -0
- package/dist/esm/protocol/nodes.js +83 -0
- package/dist/esm/protocol/notification.js +50 -0
- package/dist/esm/protocol/stream.js +60 -0
- package/dist/esm/retry/constants.js +20 -0
- package/dist/esm/retry/index.js +5 -0
- package/dist/esm/retry/outbound.js +83 -0
- package/dist/esm/retry/parse.js +130 -0
- package/dist/esm/retry/reason.js +50 -0
- package/dist/esm/retry/replay.js +177 -0
- package/dist/esm/retry/types.js +1 -0
- package/dist/esm/signal/api/SignalDeviceSyncApi.js +185 -0
- package/dist/esm/signal/api/SignalDigestSyncApi.js +179 -0
- package/dist/esm/signal/api/SignalIdentitySyncApi.js +111 -0
- package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +141 -0
- package/dist/esm/signal/api/SignalRotateKeyApi.js +59 -0
- package/dist/esm/signal/api/SignalSessionSyncApi.js +187 -0
- package/dist/esm/signal/api/codec.js +23 -0
- package/dist/esm/signal/api/constants.js +9 -0
- package/dist/esm/signal/api/prekeys.js +9 -0
- package/dist/esm/signal/constants.js +16 -0
- package/dist/esm/signal/crypto/WaAdvSignature.js +60 -0
- package/dist/esm/signal/crypto/constants.js +8 -0
- package/dist/esm/signal/group/SenderKeyChain.js +97 -0
- package/dist/esm/signal/group/SenderKeyCodec.js +46 -0
- package/dist/esm/signal/group/SenderKeyManager.js +176 -0
- package/dist/esm/signal/index.js +11 -0
- package/dist/esm/signal/registration/keygen.js +31 -0
- package/dist/esm/signal/registration/utils.js +16 -0
- package/dist/esm/signal/session/SignalProtocol.js +122 -0
- package/dist/esm/signal/session/SignalRatchet.js +260 -0
- package/dist/esm/signal/session/SignalSerializer.js +63 -0
- package/dist/esm/signal/session/SignalSession.js +153 -0
- package/dist/esm/signal/store/sqlite.js +310 -0
- package/dist/esm/signal/types.js +1 -0
- package/dist/esm/store/contracts/appstate.store.js +1 -0
- package/dist/esm/store/contracts/auth.store.js +1 -0
- package/dist/esm/store/contracts/contact.store.js +1 -0
- package/dist/esm/store/contracts/device-list.store.js +1 -0
- package/dist/esm/store/contracts/message.store.js +1 -0
- package/dist/esm/store/contracts/participants.store.js +1 -0
- package/dist/esm/store/contracts/retry.store.js +1 -0
- package/dist/esm/store/contracts/sender-key.store.js +1 -0
- package/dist/esm/store/contracts/signal.store.js +1 -0
- package/dist/esm/store/contracts/thread.store.js +1 -0
- package/dist/esm/store/createStore.js +278 -0
- package/dist/esm/store/index.js +20 -0
- package/dist/esm/store/noop.store.js +43 -0
- package/dist/esm/store/providers/memory/appstate.store.js +101 -0
- package/dist/esm/store/providers/memory/contact.store.js +23 -0
- package/dist/esm/store/providers/memory/device-list.store.js +86 -0
- package/dist/esm/store/providers/memory/message.store.js +40 -0
- package/dist/esm/store/providers/memory/participants.store.js +61 -0
- package/dist/esm/store/providers/memory/retry.store.js +71 -0
- package/dist/esm/store/providers/memory/sender-key.store.js +88 -0
- package/dist/esm/store/providers/memory/signal.store.js +170 -0
- package/dist/esm/store/providers/memory/thread.store.js +34 -0
- package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +37 -0
- package/dist/esm/store/providers/sqlite/appstate.store.js +169 -0
- package/dist/esm/store/providers/sqlite/auth.store.js +176 -0
- package/dist/esm/store/providers/sqlite/connection.js +240 -0
- package/dist/esm/store/providers/sqlite/contact.store.js +61 -0
- package/dist/esm/store/providers/sqlite/device-list.store.js +155 -0
- package/dist/esm/store/providers/sqlite/message.store.js +119 -0
- package/dist/esm/store/providers/sqlite/migrations.js +347 -0
- package/dist/esm/store/providers/sqlite/participants.store.js +85 -0
- package/dist/esm/store/providers/sqlite/retry.store.js +144 -0
- package/dist/esm/store/providers/sqlite/sender-key.store.js +203 -0
- package/dist/esm/store/providers/sqlite/signal.store.js +353 -0
- package/dist/esm/store/providers/sqlite/thread.store.js +72 -0
- package/dist/esm/store/types.js +1 -0
- package/dist/esm/transport/WaComms.js +527 -0
- package/dist/esm/transport/WaWebSocket.js +361 -0
- package/dist/esm/transport/binary/constants.js +96 -0
- package/dist/esm/transport/binary/decoder.js +275 -0
- package/dist/esm/transport/binary/encoder.js +210 -0
- package/dist/esm/transport/binary/index.js +4 -0
- package/dist/esm/transport/binary/tokens.js +1280 -0
- package/dist/esm/transport/index.js +6 -0
- package/dist/esm/transport/keepalive/WaKeepAlive.js +141 -0
- package/dist/esm/transport/node/WaNodeOrchestrator.js +143 -0
- package/dist/esm/transport/node/WaNodeTransport.js +64 -0
- package/dist/esm/transport/node/builders/accountSync.js +101 -0
- package/dist/esm/transport/node/builders/group.js +47 -0
- package/dist/esm/transport/node/builders/index.js +7 -0
- package/dist/esm/transport/node/builders/media.js +10 -0
- package/dist/esm/transport/node/builders/message.js +317 -0
- package/dist/esm/transport/node/builders/pairing.js +130 -0
- package/dist/esm/transport/node/builders/prekeys.js +102 -0
- package/dist/esm/transport/node/builders/retry.js +116 -0
- package/dist/esm/transport/node/helpers.js +37 -0
- package/dist/esm/transport/node/query.js +53 -0
- package/dist/esm/transport/node/xml.js +39 -0
- package/dist/esm/transport/noise/WaClientPayload.js +162 -0
- package/dist/esm/transport/noise/WaFrameCodec.js +121 -0
- package/dist/esm/transport/noise/WaNoiseCert.js +74 -0
- package/dist/esm/transport/noise/WaNoiseHandshake.js +57 -0
- package/dist/esm/transport/noise/WaNoiseSession.js +322 -0
- package/dist/esm/transport/noise/WaNoiseSocket.js +17 -0
- package/dist/esm/transport/noise/constants.js +8 -0
- package/dist/esm/transport/noise/types.js +1 -0
- package/dist/esm/transport/stream/parse.js +91 -0
- package/dist/esm/transport/types.js +1 -0
- package/dist/esm/util/async.js +5 -0
- package/dist/esm/util/base64.js +18 -0
- package/dist/esm/util/bytes.js +275 -0
- package/dist/esm/util/coercion.js +56 -0
- package/dist/esm/util/collections.js +27 -0
- package/dist/esm/util/primitives.js +32 -0
- package/dist/esm/util/runtime.js +15 -0
- package/dist/esm/util/signal-address.js +5 -0
- package/dist/index.js +52 -0
- package/dist/infra/log/ConsoleLogger.js +44 -0
- package/dist/infra/log/PinoLogger.js +111 -0
- package/dist/infra/log/types.js +2 -0
- package/dist/infra/perf/BoundedTaskQueue.js +67 -0
- package/dist/media/WaMediaCrypto.js +228 -0
- package/dist/media/WaMediaTransferClient.js +365 -0
- package/dist/media/conn.js +36 -0
- package/dist/media/constants.js +21 -0
- package/dist/media/index.js +9 -0
- package/dist/media/types.js +2 -0
- package/dist/message/WaMessageClient.js +214 -0
- package/dist/message/ack.js +52 -0
- package/dist/message/content.js +24 -0
- package/dist/message/device-sent.js +53 -0
- package/dist/message/incoming.js +321 -0
- package/dist/message/index.js +20 -0
- package/dist/message/padding.js +24 -0
- package/dist/message/phash.js +28 -0
- package/dist/message/types.js +2 -0
- package/dist/proto.js +5 -0
- package/dist/protocol/appstate.js +37 -0
- package/dist/protocol/auth.js +15 -0
- package/dist/protocol/browser.js +45 -0
- package/dist/protocol/constants.js +46 -0
- package/dist/protocol/defaults.js +30 -0
- package/dist/protocol/dirty.js +29 -0
- package/dist/protocol/group.js +8 -0
- package/dist/protocol/index.js +53 -0
- package/dist/protocol/jid.js +107 -0
- package/dist/protocol/media.js +24 -0
- package/dist/protocol/message.js +19 -0
- package/dist/protocol/nodes.js +86 -0
- package/dist/protocol/notification.js +53 -0
- package/dist/protocol/stream.js +63 -0
- package/dist/retry/constants.js +23 -0
- package/dist/retry/index.js +19 -0
- package/dist/retry/outbound.js +88 -0
- package/dist/retry/parse.js +133 -0
- package/dist/retry/reason.js +53 -0
- package/dist/retry/replay.js +181 -0
- package/dist/retry/types.js +2 -0
- package/dist/signal/api/SignalDeviceSyncApi.js +189 -0
- package/dist/signal/api/SignalDigestSyncApi.js +183 -0
- package/dist/signal/api/SignalIdentitySyncApi.js +115 -0
- package/dist/signal/api/SignalMissingPreKeysSyncApi.js +145 -0
- package/dist/signal/api/SignalRotateKeyApi.js +63 -0
- package/dist/signal/api/SignalSessionSyncApi.js +191 -0
- package/dist/signal/api/codec.js +27 -0
- package/dist/signal/api/constants.js +12 -0
- package/dist/signal/api/prekeys.js +16 -0
- package/dist/signal/constants.js +19 -0
- package/dist/signal/crypto/WaAdvSignature.js +72 -0
- package/dist/signal/crypto/constants.js +11 -0
- package/dist/signal/group/SenderKeyChain.js +101 -0
- package/dist/signal/group/SenderKeyCodec.js +50 -0
- package/dist/signal/group/SenderKeyManager.js +180 -0
- package/dist/signal/index.js +29 -0
- package/dist/signal/registration/keygen.js +37 -0
- package/dist/signal/registration/utils.js +19 -0
- package/dist/signal/session/SignalProtocol.js +126 -0
- package/dist/signal/session/SignalRatchet.js +268 -0
- package/dist/signal/session/SignalSerializer.js +69 -0
- package/dist/signal/session/SignalSession.js +165 -0
- package/dist/signal/store/sqlite.js +324 -0
- package/dist/signal/types.js +2 -0
- package/dist/store/contracts/appstate.store.js +2 -0
- package/dist/store/contracts/auth.store.js +2 -0
- package/dist/store/contracts/contact.store.js +2 -0
- package/dist/store/contracts/device-list.store.js +2 -0
- package/dist/store/contracts/message.store.js +2 -0
- package/dist/store/contracts/participants.store.js +2 -0
- package/dist/store/contracts/retry.store.js +2 -0
- package/dist/store/contracts/sender-key.store.js +2 -0
- package/dist/store/contracts/signal.store.js +2 -0
- package/dist/store/contracts/thread.store.js +2 -0
- package/dist/store/createStore.js +281 -0
- package/dist/store/index.js +43 -0
- package/dist/store/noop.store.js +46 -0
- package/dist/store/providers/memory/appstate.store.js +105 -0
- package/dist/store/providers/memory/contact.store.js +27 -0
- package/dist/store/providers/memory/device-list.store.js +90 -0
- package/dist/store/providers/memory/message.store.js +44 -0
- package/dist/store/providers/memory/participants.store.js +65 -0
- package/dist/store/providers/memory/retry.store.js +75 -0
- package/dist/store/providers/memory/sender-key.store.js +92 -0
- package/dist/store/providers/memory/signal.store.js +174 -0
- package/dist/store/providers/memory/thread.store.js +38 -0
- package/dist/store/providers/sqlite/BaseSqliteStore.js +41 -0
- package/dist/store/providers/sqlite/appstate.store.js +173 -0
- package/dist/store/providers/sqlite/auth.store.js +180 -0
- package/dist/store/providers/sqlite/connection.js +276 -0
- package/dist/store/providers/sqlite/contact.store.js +65 -0
- package/dist/store/providers/sqlite/device-list.store.js +159 -0
- package/dist/store/providers/sqlite/message.store.js +123 -0
- package/dist/store/providers/sqlite/migrations.js +350 -0
- package/dist/store/providers/sqlite/participants.store.js +89 -0
- package/dist/store/providers/sqlite/retry.store.js +148 -0
- package/dist/store/providers/sqlite/sender-key.store.js +207 -0
- package/dist/store/providers/sqlite/signal.store.js +357 -0
- package/dist/store/providers/sqlite/thread.store.js +76 -0
- package/dist/store/types.js +2 -0
- package/dist/transport/WaComms.js +531 -0
- package/dist/transport/WaWebSocket.js +365 -0
- package/dist/transport/binary/constants.js +99 -0
- package/dist/transport/binary/decoder.js +279 -0
- package/dist/transport/binary/encoder.js +214 -0
- package/dist/transport/binary/index.js +23 -0
- package/dist/transport/binary/tokens.js +1283 -0
- package/dist/transport/index.js +18 -0
- package/dist/transport/keepalive/WaKeepAlive.js +145 -0
- package/dist/transport/node/WaNodeOrchestrator.js +147 -0
- package/dist/transport/node/WaNodeTransport.js +68 -0
- package/dist/transport/node/builders/accountSync.js +110 -0
- package/dist/transport/node/builders/group.js +52 -0
- package/dist/transport/node/builders/index.js +39 -0
- package/dist/transport/node/builders/media.js +13 -0
- package/dist/transport/node/builders/message.js +328 -0
- package/dist/transport/node/builders/pairing.js +137 -0
- package/dist/transport/node/builders/prekeys.js +107 -0
- package/dist/transport/node/builders/retry.js +119 -0
- package/dist/transport/node/helpers.js +46 -0
- package/dist/transport/node/query.js +59 -0
- package/dist/transport/node/xml.js +42 -0
- package/dist/transport/noise/WaClientPayload.js +166 -0
- package/dist/transport/noise/WaFrameCodec.js +125 -0
- package/dist/transport/noise/WaNoiseCert.js +77 -0
- package/dist/transport/noise/WaNoiseHandshake.js +61 -0
- package/dist/transport/noise/WaNoiseSession.js +326 -0
- package/dist/transport/noise/WaNoiseSocket.js +21 -0
- package/dist/transport/noise/constants.js +11 -0
- package/dist/transport/noise/types.js +2 -0
- package/dist/transport/stream/parse.js +97 -0
- package/dist/transport/types.js +2 -0
- package/dist/types/appstate/WaAppStateCrypto.d.ts +59 -0
- package/dist/types/appstate/WaAppStateSyncClient.d.ts +63 -0
- package/dist/types/appstate/WaAppStateSyncResponseParser.d.ts +12 -0
- package/dist/types/appstate/constants.d.ts +14 -0
- package/dist/types/appstate/index.d.ts +7 -0
- package/dist/types/appstate/store/sqlite.d.ts +21 -0
- package/dist/types/appstate/types.d.ts +66 -0
- package/dist/types/appstate/utils.d.ts +10 -0
- package/dist/types/auth/WaAuthClient.d.ts +61 -0
- package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +14 -0
- package/dist/types/auth/index.d.ts +6 -0
- package/dist/types/auth/pairing/WaPairingCodeCrypto.d.ts +17 -0
- package/dist/types/auth/pairing/WaPairingFlow.d.ts +48 -0
- package/dist/types/auth/pairing/WaQrFlow.d.ts +23 -0
- package/dist/types/auth/pairing/constants.d.ts +2 -0
- package/dist/types/auth/types.d.ts +48 -0
- package/dist/types/client/WaClient.d.ts +97 -0
- package/dist/types/client/WaClientFactory.d.ts +83 -0
- package/dist/types/client/coordinators/WaGroupCoordinator.d.ts +48 -0
- package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +60 -0
- package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +90 -0
- package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +43 -0
- package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +61 -0
- package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +17 -0
- package/dist/types/client/dirty.d.ts +17 -0
- package/dist/types/client/events/chat.d.ts +3 -0
- package/dist/types/client/events/group.d.ts +7 -0
- package/dist/types/client/history-sync.d.ts +17 -0
- package/dist/types/client/incoming.d.ts +35 -0
- package/dist/types/client/index.d.ts +2 -0
- package/dist/types/client/mailbox.d.ts +12 -0
- package/dist/types/client/messages.d.ts +17 -0
- package/dist/types/client/types.d.ts +235 -0
- package/dist/types/crypto/core/constants.d.ts +1 -0
- package/dist/types/crypto/core/encoding.d.ts +11 -0
- package/dist/types/crypto/core/hkdf.d.ts +8 -0
- package/dist/types/crypto/core/index.d.ts +11 -0
- package/dist/types/crypto/core/keys.d.ts +20 -0
- package/dist/types/crypto/core/nonce.d.ts +5 -0
- package/dist/types/crypto/core/primitives.d.ts +25 -0
- package/dist/types/crypto/core/random.d.ts +8 -0
- package/dist/types/crypto/curves/Ed25519.d.ts +7 -0
- package/dist/types/crypto/curves/X25519.d.ts +8 -0
- package/dist/types/crypto/curves/constants.d.ts +2 -0
- package/dist/types/crypto/curves/types.d.ts +10 -0
- package/dist/types/crypto/index.d.ts +3 -0
- package/dist/types/crypto/math/constants.d.ts +7 -0
- package/dist/types/crypto/math/edwards.d.ts +3 -0
- package/dist/types/crypto/math/le.d.ts +2 -0
- package/dist/types/crypto/math/mod.d.ts +5 -0
- package/dist/types/crypto/math/types.d.ts +6 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/infra/log/ConsoleLogger.d.ts +11 -0
- package/dist/types/infra/log/PinoLogger.d.ts +30 -0
- package/dist/types/infra/log/types.d.ts +9 -0
- package/dist/types/infra/perf/BoundedTaskQueue.d.ts +19 -0
- package/dist/types/media/WaMediaCrypto.d.ts +12 -0
- package/dist/types/media/WaMediaTransferClient.d.ts +81 -0
- package/dist/types/media/conn.d.ts +3 -0
- package/dist/types/media/constants.d.ts +10 -0
- package/dist/types/media/index.d.ts +4 -0
- package/dist/types/media/types.d.ts +56 -0
- package/dist/types/message/WaMessageClient.d.ts +29 -0
- package/dist/types/message/ack.d.ts +5 -0
- package/dist/types/message/content.d.ts +4 -0
- package/dist/types/message/device-sent.d.ts +3 -0
- package/dist/types/message/incoming.d.ts +18 -0
- package/dist/types/message/index.d.ts +2 -0
- package/dist/types/message/padding.d.ts +2 -0
- package/dist/types/message/phash.d.ts +1 -0
- package/dist/types/message/types.d.ts +58 -0
- package/dist/types/proto.d.ts +2 -0
- package/dist/types/protocol/appstate.d.ts +34 -0
- package/dist/types/protocol/auth.d.ts +12 -0
- package/dist/types/protocol/browser.d.ts +22 -0
- package/dist/types/protocol/constants.d.ts +11 -0
- package/dist/types/protocol/defaults.d.ts +26 -0
- package/dist/types/protocol/dirty.d.ts +15 -0
- package/dist/types/protocol/group.d.ts +6 -0
- package/dist/types/protocol/index.d.ts +11 -0
- package/dist/types/protocol/jid.d.ts +19 -0
- package/dist/types/protocol/media.d.ts +15 -0
- package/dist/types/protocol/message.d.ts +16 -0
- package/dist/types/protocol/nodes.d.ts +83 -0
- package/dist/types/protocol/notification.d.ts +50 -0
- package/dist/types/protocol/stream.d.ts +60 -0
- package/dist/types/retry/constants.d.ts +21 -0
- package/dist/types/retry/index.d.ts +7 -0
- package/dist/types/retry/outbound.d.ts +4 -0
- package/dist/types/retry/parse.d.ts +3 -0
- package/dist/types/retry/reason.d.ts +2 -0
- package/dist/types/retry/replay.d.ts +30 -0
- package/dist/types/retry/types.d.ts +70 -0
- package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +31 -0
- package/dist/types/signal/api/SignalDigestSyncApi.d.ts +27 -0
- package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +26 -0
- package/dist/types/signal/api/SignalMissingPreKeysSyncApi.d.ts +39 -0
- package/dist/types/signal/api/SignalRotateKeyApi.d.ts +22 -0
- package/dist/types/signal/api/SignalSessionSyncApi.d.ts +38 -0
- package/dist/types/signal/api/codec.d.ts +3 -0
- package/dist/types/signal/api/constants.d.ts +9 -0
- package/dist/types/signal/api/prekeys.d.ts +6 -0
- package/dist/types/signal/constants.d.ts +14 -0
- package/dist/types/signal/crypto/WaAdvSignature.d.ts +7 -0
- package/dist/types/signal/crypto/constants.d.ts +5 -0
- package/dist/types/signal/group/SenderKeyChain.d.ts +11 -0
- package/dist/types/signal/group/SenderKeyCodec.d.ts +14 -0
- package/dist/types/signal/group/SenderKeyManager.d.ts +22 -0
- package/dist/types/signal/index.d.ts +12 -0
- package/dist/types/signal/registration/keygen.d.ts +5 -0
- package/dist/types/signal/registration/utils.d.ts +9 -0
- package/dist/types/signal/session/SignalProtocol.d.ts +22 -0
- package/dist/types/signal/session/SignalRatchet.d.ts +25 -0
- package/dist/types/signal/session/SignalSerializer.d.ts +6 -0
- package/dist/types/signal/session/SignalSession.d.ts +43 -0
- package/dist/types/signal/store/sqlite.d.ts +72 -0
- package/dist/types/signal/types.d.ts +110 -0
- package/dist/types/store/contracts/appstate.store.d.ts +22 -0
- package/dist/types/store/contracts/auth.store.d.ts +6 -0
- package/dist/types/store/contracts/contact.store.d.ts +14 -0
- package/dist/types/store/contracts/device-list.store.d.ts +16 -0
- package/dist/types/store/contracts/message.store.d.ts +18 -0
- package/dist/types/store/contracts/participants.store.d.ts +14 -0
- package/dist/types/store/contracts/retry.store.d.ts +11 -0
- package/dist/types/store/contracts/sender-key.store.d.ts +16 -0
- package/dist/types/store/contracts/signal.store.d.ts +31 -0
- package/dist/types/store/contracts/thread.store.d.ts +17 -0
- package/dist/types/store/createStore.d.ts +2 -0
- package/dist/types/store/index.d.ts +31 -0
- package/dist/types/store/noop.store.d.ts +10 -0
- package/dist/types/store/providers/memory/appstate.store.d.ts +21 -0
- package/dist/types/store/providers/memory/contact.store.d.ts +13 -0
- package/dist/types/store/providers/memory/device-list.store.d.ts +20 -0
- package/dist/types/store/providers/memory/message.store.d.ts +14 -0
- package/dist/types/store/providers/memory/participants.store.d.ts +18 -0
- package/dist/types/store/providers/memory/retry.store.d.ts +18 -0
- package/dist/types/store/providers/memory/sender-key.store.d.ts +28 -0
- package/dist/types/store/providers/memory/signal.store.d.ts +51 -0
- package/dist/types/store/providers/memory/thread.store.d.ts +14 -0
- package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +12 -0
- package/dist/types/store/providers/sqlite/appstate.store.d.ts +15 -0
- package/dist/types/store/providers/sqlite/auth.store.d.ts +10 -0
- package/dist/types/store/providers/sqlite/connection.d.ts +10 -0
- package/dist/types/store/providers/sqlite/contact.store.d.ts +10 -0
- package/dist/types/store/providers/sqlite/device-list.store.d.ts +18 -0
- package/dist/types/store/providers/sqlite/message.store.d.ts +11 -0
- package/dist/types/store/providers/sqlite/migrations.d.ts +3 -0
- package/dist/types/store/providers/sqlite/participants.store.d.ts +13 -0
- package/dist/types/store/providers/sqlite/retry.store.d.ts +16 -0
- package/dist/types/store/providers/sqlite/sender-key.store.d.ts +25 -0
- package/dist/types/store/providers/sqlite/signal.store.d.ts +46 -0
- package/dist/types/store/providers/sqlite/thread.store.d.ts +11 -0
- package/dist/types/store/types.d.ts +103 -0
- package/dist/types/transport/WaComms.d.ts +61 -0
- package/dist/types/transport/WaWebSocket.d.ts +36 -0
- package/dist/types/transport/binary/constants.d.ts +49 -0
- package/dist/types/transport/binary/decoder.d.ts +3 -0
- package/dist/types/transport/binary/encoder.d.ts +3 -0
- package/dist/types/transport/binary/index.d.ts +4 -0
- package/dist/types/transport/binary/tokens.d.ts +11 -0
- package/dist/types/transport/index.d.ts +7 -0
- package/dist/types/transport/keepalive/WaKeepAlive.d.ts +39 -0
- package/dist/types/transport/node/WaNodeOrchestrator.d.ts +28 -0
- package/dist/types/transport/node/WaNodeTransport.d.ts +22 -0
- package/dist/types/transport/node/builders/accountSync.d.ts +11 -0
- package/dist/types/transport/node/builders/group.d.ts +16 -0
- package/dist/types/transport/node/builders/index.d.ts +7 -0
- package/dist/types/transport/node/builders/media.d.ts +2 -0
- package/dist/types/transport/node/builders/message.d.ts +52 -0
- package/dist/types/transport/node/builders/pairing.d.ts +18 -0
- package/dist/types/transport/node/builders/prekeys.d.ts +5 -0
- package/dist/types/transport/node/builders/retry.d.ts +18 -0
- package/dist/types/transport/node/helpers.d.ts +8 -0
- package/dist/types/transport/node/query.d.ts +10 -0
- package/dist/types/transport/node/xml.d.ts +2 -0
- package/dist/types/transport/noise/WaClientPayload.d.ts +3 -0
- package/dist/types/transport/noise/WaFrameCodec.d.ts +9 -0
- package/dist/types/transport/noise/WaNoiseCert.d.ts +1 -0
- package/dist/types/transport/noise/WaNoiseHandshake.d.ts +14 -0
- package/dist/types/transport/noise/WaNoiseSession.d.ts +33 -0
- package/dist/types/transport/noise/WaNoiseSocket.d.ts +10 -0
- package/dist/types/transport/noise/constants.d.ts +7 -0
- package/dist/types/transport/noise/types.d.ts +23 -0
- package/dist/types/transport/stream/parse.d.ts +23 -0
- package/dist/types/transport/types.d.ts +71 -0
- package/dist/types/util/async.d.ts +1 -0
- package/dist/types/util/base64.d.ts +4 -0
- package/dist/types/util/bytes.d.ts +28 -0
- package/dist/types/util/coercion.d.ts +8 -0
- package/dist/types/util/collections.d.ts +3 -0
- package/dist/types/util/primitives.d.ts +7 -0
- package/dist/types/util/runtime.d.ts +2 -0
- package/dist/types/util/signal-address.d.ts +2 -0
- package/dist/util/async.js +8 -0
- package/dist/util/base64.js +24 -0
- package/dist/util/bytes.js +291 -0
- package/dist/util/coercion.js +66 -0
- package/dist/util/collections.js +32 -0
- package/dist/util/primitives.js +37 -0
- package/dist/util/runtime.js +19 -0
- package/dist/util/signal-address.js +8 -0
- package/package.json +150 -0
- package/proto/index.d.ts +10861 -0
- package/proto/index.js +1 -0
- package/scripts/check-node-version.cjs +55 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { Proto } from '..';
|
|
2
|
+
import type { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES } from '../protocol/constants';
|
|
3
|
+
export type AppStateCollectionName = (typeof WA_APP_STATE_COLLECTIONS)[keyof typeof WA_APP_STATE_COLLECTIONS];
|
|
4
|
+
export type AppStateCollectionState = (typeof WA_APP_STATE_COLLECTION_STATES)[keyof typeof WA_APP_STATE_COLLECTION_STATES];
|
|
5
|
+
export interface WaAppStateSyncKey {
|
|
6
|
+
readonly keyId: Uint8Array;
|
|
7
|
+
readonly keyData: Uint8Array;
|
|
8
|
+
readonly timestamp: number;
|
|
9
|
+
readonly fingerprint?: Proto.Message.IAppStateSyncKeyFingerprint;
|
|
10
|
+
}
|
|
11
|
+
export interface WaAppStateCollectionVersion {
|
|
12
|
+
readonly version: number;
|
|
13
|
+
readonly hash: Uint8Array;
|
|
14
|
+
readonly indexValueMap: Readonly<Record<string, Uint8Array>>;
|
|
15
|
+
}
|
|
16
|
+
export interface WaAppStateStoreData {
|
|
17
|
+
readonly keys: readonly WaAppStateSyncKey[];
|
|
18
|
+
readonly collections: Partial<Record<AppStateCollectionName, WaAppStateCollectionVersion>>;
|
|
19
|
+
}
|
|
20
|
+
export type WaAppStateMutationInput = {
|
|
21
|
+
readonly collection: AppStateCollectionName;
|
|
22
|
+
readonly operation: 'set';
|
|
23
|
+
readonly index: string;
|
|
24
|
+
readonly value: Proto.ISyncActionValue;
|
|
25
|
+
readonly version: number;
|
|
26
|
+
readonly timestamp: number;
|
|
27
|
+
} | {
|
|
28
|
+
readonly collection: AppStateCollectionName;
|
|
29
|
+
readonly operation: 'remove';
|
|
30
|
+
readonly index: string;
|
|
31
|
+
readonly previousValue: Proto.ISyncActionValue;
|
|
32
|
+
readonly version: number;
|
|
33
|
+
readonly timestamp: number;
|
|
34
|
+
};
|
|
35
|
+
export interface WaAppStateMutation {
|
|
36
|
+
readonly collection: AppStateCollectionName;
|
|
37
|
+
readonly operation: 'set' | 'remove';
|
|
38
|
+
readonly source: 'snapshot' | 'patch';
|
|
39
|
+
readonly index: string;
|
|
40
|
+
readonly value: Proto.ISyncActionValue | null;
|
|
41
|
+
readonly version: number;
|
|
42
|
+
readonly indexMac: Uint8Array;
|
|
43
|
+
readonly valueMac: Uint8Array;
|
|
44
|
+
readonly keyId: Uint8Array;
|
|
45
|
+
readonly timestamp: number;
|
|
46
|
+
}
|
|
47
|
+
export interface WaAppStateCollectionSyncResult {
|
|
48
|
+
readonly collection: AppStateCollectionName;
|
|
49
|
+
readonly state: AppStateCollectionState;
|
|
50
|
+
readonly version?: number;
|
|
51
|
+
readonly mutations?: readonly WaAppStateMutation[];
|
|
52
|
+
}
|
|
53
|
+
export interface WaAppStateSyncResult {
|
|
54
|
+
readonly collections: readonly WaAppStateCollectionSyncResult[];
|
|
55
|
+
}
|
|
56
|
+
export interface WaAppStateMissingKeysEvent {
|
|
57
|
+
readonly keyIds: readonly Uint8Array[];
|
|
58
|
+
readonly collections: readonly AppStateCollectionName[];
|
|
59
|
+
}
|
|
60
|
+
export interface WaAppStateSyncOptions {
|
|
61
|
+
readonly collections?: readonly AppStateCollectionName[];
|
|
62
|
+
readonly pendingMutations?: readonly WaAppStateMutationInput[];
|
|
63
|
+
readonly downloadExternalBlob?: (collection: AppStateCollectionName, kind: 'snapshot' | 'patch', reference: Proto.IExternalBlobReference) => Promise<Uint8Array>;
|
|
64
|
+
readonly timeoutMs?: number;
|
|
65
|
+
readonly onMissingKeys?: (event: WaAppStateMissingKeysEvent) => Promise<void>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AppStateCollectionName, WaAppStateSyncKey } from './types';
|
|
2
|
+
import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
3
|
+
import type { Proto } from '..';
|
|
4
|
+
export declare function keyIdToHex(keyId: Uint8Array): string;
|
|
5
|
+
export declare function parseCollectionName(value: string | undefined): AppStateCollectionName | null;
|
|
6
|
+
export declare function keyDeviceId(keyId: Uint8Array): number | null;
|
|
7
|
+
export declare function keyEpoch(keyId: Uint8Array): number;
|
|
8
|
+
export declare function pickActiveSyncKey(keys: Iterable<WaAppStateSyncKey>): WaAppStateSyncKey | null;
|
|
9
|
+
export declare function toNetworkOrder64(value: number): Uint8Array;
|
|
10
|
+
export declare function downloadExternalBlobReference(mediaTransfer: WaMediaTransferClient, reference: Proto.IExternalBlobReference): Promise<Uint8Array>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { WaAuthClientOptions, WaAuthCredentials, WaAuthSocketOptions, WaSuccessPersistAttributes } from './types';
|
|
2
|
+
import type { Logger } from '../infra/log/types';
|
|
3
|
+
import type { WaAuthStore } from '../store/contracts/auth.store';
|
|
4
|
+
import type { WaSignalStore } from '../store/contracts/signal.store';
|
|
5
|
+
import type { BinaryNode } from '../transport/types';
|
|
6
|
+
interface WaAuthClientCallbacks {
|
|
7
|
+
readonly onQr?: (qr: string, ttlMs: number) => void;
|
|
8
|
+
readonly onPairingCode?: (code: string) => void;
|
|
9
|
+
readonly onPairingRefresh?: (forceManual: boolean) => void;
|
|
10
|
+
readonly onPaired?: (credentials: WaAuthCredentials) => void;
|
|
11
|
+
readonly onError?: (error: Error) => void;
|
|
12
|
+
}
|
|
13
|
+
interface WaAuthClientDependencies {
|
|
14
|
+
readonly logger: Logger;
|
|
15
|
+
readonly authStore: WaAuthStore;
|
|
16
|
+
readonly signalStore: WaSignalStore;
|
|
17
|
+
readonly socket: {
|
|
18
|
+
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
19
|
+
readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
|
|
20
|
+
};
|
|
21
|
+
readonly callbacks?: WaAuthClientCallbacks;
|
|
22
|
+
}
|
|
23
|
+
export declare class WaAuthClient {
|
|
24
|
+
private readonly options;
|
|
25
|
+
private readonly logger;
|
|
26
|
+
private readonly callbacks;
|
|
27
|
+
private readonly authStore;
|
|
28
|
+
private readonly signalStore;
|
|
29
|
+
private readonly qrFlow;
|
|
30
|
+
private readonly pairingFlow;
|
|
31
|
+
private credentials;
|
|
32
|
+
constructor(options: WaAuthClientOptions, deps: WaAuthClientDependencies);
|
|
33
|
+
getState(connected?: boolean): {
|
|
34
|
+
connected: boolean;
|
|
35
|
+
registered: boolean;
|
|
36
|
+
hasQr: boolean;
|
|
37
|
+
hasPairingCode: boolean;
|
|
38
|
+
};
|
|
39
|
+
getCurrentCredentials(): WaAuthCredentials | null;
|
|
40
|
+
loadOrCreateCredentials(): Promise<WaAuthCredentials>;
|
|
41
|
+
buildCommsConfig(socketOptions: WaAuthSocketOptions): import("../transport/types").WaCommsConfig;
|
|
42
|
+
clearTransientState(): Promise<void>;
|
|
43
|
+
clearStoredCredentials(): Promise<void>;
|
|
44
|
+
persistServerStaticKey(serverStaticKey: Uint8Array): Promise<void>;
|
|
45
|
+
persistServerHasPreKeys(serverHasPreKeys: boolean): Promise<void>;
|
|
46
|
+
persistRoutingInfo(routingInfo: Uint8Array): Promise<void>;
|
|
47
|
+
clearRoutingInfo(): Promise<WaAuthCredentials>;
|
|
48
|
+
persistMeLid(meLid: string): Promise<void>;
|
|
49
|
+
persistSuccessAttributes(attributes: WaSuccessPersistAttributes): Promise<void>;
|
|
50
|
+
requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
|
|
51
|
+
fetchPairingCountryCodeIso(): Promise<string>;
|
|
52
|
+
handleIncomingIqSet(node: BinaryNode): Promise<boolean>;
|
|
53
|
+
handleLinkCodeNotification(node: BinaryNode): Promise<boolean>;
|
|
54
|
+
handleCompanionRegRefreshNotification(node: BinaryNode): Promise<boolean>;
|
|
55
|
+
private patchCredentials;
|
|
56
|
+
private runHandled;
|
|
57
|
+
private updateCredentials;
|
|
58
|
+
private requireCredentials;
|
|
59
|
+
private handleError;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { WaAuthClientOptions, WaAuthCredentials, WaAuthSocketOptions } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import type { WaAuthStore } from '../../store/contracts/auth.store';
|
|
4
|
+
import type { WaSignalStore } from '../../store/contracts/signal.store';
|
|
5
|
+
import type { WaCommsConfig } from '../../transport/types';
|
|
6
|
+
interface WaAuthCredentialsFlowArgs {
|
|
7
|
+
readonly logger: Logger;
|
|
8
|
+
readonly authStore: WaAuthStore;
|
|
9
|
+
readonly signalStore: WaSignalStore;
|
|
10
|
+
}
|
|
11
|
+
export declare function loadOrCreateCredentials(args: WaAuthCredentialsFlowArgs): Promise<WaAuthCredentials>;
|
|
12
|
+
export declare function persistCredentials(args: WaAuthCredentialsFlowArgs, credentials: WaAuthCredentials): Promise<void>;
|
|
13
|
+
export declare function buildCommsConfig(logger: Logger, credentials: WaAuthCredentials, socketOptions: WaAuthSocketOptions, clientOptions: Pick<WaAuthClientOptions, 'deviceBrowser' | 'deviceOsDisplayName' | 'requireFullSync'>): WaCommsConfig;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export { getLoginIdentity } from '../protocol/jid';
|
|
3
|
+
export { WaAuthClient } from './WaAuthClient';
|
|
4
|
+
export { completeCompanionFinish, createCompanionHello } from './pairing/WaPairingCodeCrypto';
|
|
5
|
+
export { WaAuthSqliteStore } from '../store/providers/sqlite/auth.store';
|
|
6
|
+
export type { WaAuthStore } from '../store/contracts/auth.store';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SignalKeyPair } from '../../crypto/curves/types';
|
|
2
|
+
export declare function createCompanionHello(): Promise<{
|
|
3
|
+
readonly pairingCode: string;
|
|
4
|
+
readonly companionEphemeralKeyPair: SignalKeyPair;
|
|
5
|
+
readonly wrappedCompanionEphemeralPub: Uint8Array;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function completeCompanionFinish(args: {
|
|
8
|
+
readonly pairingCode: string;
|
|
9
|
+
readonly wrappedPrimaryEphemeralPub: Uint8Array;
|
|
10
|
+
readonly primaryIdentityPub: Uint8Array;
|
|
11
|
+
readonly companionEphemeralPrivKey: Uint8Array;
|
|
12
|
+
readonly registrationIdentityKeyPair: SignalKeyPair;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
readonly wrappedKeyBundle: Uint8Array;
|
|
15
|
+
readonly companionIdentityPublic: Uint8Array;
|
|
16
|
+
readonly advSecret: Uint8Array;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { WaAuthCredentials } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import type { BinaryNode } from '../../transport/types';
|
|
4
|
+
interface WaPairingFlowOptions {
|
|
5
|
+
readonly logger: Logger;
|
|
6
|
+
readonly auth: {
|
|
7
|
+
readonly getCredentials: () => WaAuthCredentials | null;
|
|
8
|
+
readonly updateCredentials: (credentials: WaAuthCredentials) => Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
readonly socket: {
|
|
11
|
+
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
12
|
+
readonly query: (node: BinaryNode, timeoutMs: number) => Promise<BinaryNode>;
|
|
13
|
+
};
|
|
14
|
+
readonly qrFlow: {
|
|
15
|
+
readonly setRefs: (refs: readonly string[]) => void;
|
|
16
|
+
readonly clear: () => void;
|
|
17
|
+
readonly refreshCurrentQr: () => boolean;
|
|
18
|
+
};
|
|
19
|
+
readonly device: {
|
|
20
|
+
readonly browser: string;
|
|
21
|
+
readonly osDisplayName: string;
|
|
22
|
+
readonly platform: string;
|
|
23
|
+
};
|
|
24
|
+
readonly callbacks: {
|
|
25
|
+
readonly emitPairingCode: (code: string) => void;
|
|
26
|
+
readonly emitPairingRefresh: (forceManual: boolean) => void;
|
|
27
|
+
readonly emitPaired: (credentials: WaAuthCredentials) => void;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare class WaPairingFlow {
|
|
31
|
+
private readonly opts;
|
|
32
|
+
private pairingSession;
|
|
33
|
+
constructor(options: WaPairingFlowOptions);
|
|
34
|
+
hasPairingSession(): boolean;
|
|
35
|
+
clearSession(): void;
|
|
36
|
+
requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
|
|
37
|
+
fetchPairingCountryCodeIso(): Promise<string>;
|
|
38
|
+
handleIncomingIqSet(node: BinaryNode): Promise<boolean>;
|
|
39
|
+
handleLinkCodeNotification(node: BinaryNode): Promise<boolean>;
|
|
40
|
+
handleCompanionRegRefreshNotification(node: BinaryNode): Promise<boolean>;
|
|
41
|
+
private handlePairDevice;
|
|
42
|
+
private handlePairSuccess;
|
|
43
|
+
private buildPairSuccessResponseIdentity;
|
|
44
|
+
private handlePrimaryHello;
|
|
45
|
+
private rotateAdvSecret;
|
|
46
|
+
private requireCredentials;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { WaAuthCredentials } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
export declare class WaQrFlow {
|
|
4
|
+
private readonly logger;
|
|
5
|
+
private readonly getCredentials;
|
|
6
|
+
private readonly getDevicePlatform;
|
|
7
|
+
private readonly emitQr;
|
|
8
|
+
private qrRefs;
|
|
9
|
+
private currentRef;
|
|
10
|
+
private currentQrTimer;
|
|
11
|
+
constructor(args: {
|
|
12
|
+
readonly logger: Logger;
|
|
13
|
+
readonly getCredentials: () => WaAuthCredentials | null;
|
|
14
|
+
readonly getDevicePlatform: () => string;
|
|
15
|
+
readonly emitQr: (qr: string, ttlMs: number) => void;
|
|
16
|
+
});
|
|
17
|
+
hasQr(): boolean;
|
|
18
|
+
clear(): void;
|
|
19
|
+
refreshCurrentQr(): boolean;
|
|
20
|
+
setRefs(refs: readonly string[]): void;
|
|
21
|
+
private rotateRef;
|
|
22
|
+
private buildQr;
|
|
23
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SignalKeyPair } from '../crypto/curves/types';
|
|
2
|
+
import type { Proto } from '..';
|
|
3
|
+
import type { RegistrationInfo, SignedPreKeyRecord } from '../signal/types';
|
|
4
|
+
export interface WaAuthCredentials {
|
|
5
|
+
readonly noiseKeyPair: SignalKeyPair;
|
|
6
|
+
readonly registrationInfo: RegistrationInfo;
|
|
7
|
+
readonly signedPreKey: SignedPreKeyRecord;
|
|
8
|
+
readonly advSecretKey: Uint8Array;
|
|
9
|
+
readonly signedIdentity?: Proto.IADVSignedDeviceIdentity;
|
|
10
|
+
readonly meJid?: string;
|
|
11
|
+
readonly meLid?: string;
|
|
12
|
+
readonly meDisplayName?: string;
|
|
13
|
+
readonly companionEncStatic?: Uint8Array;
|
|
14
|
+
readonly platform?: string;
|
|
15
|
+
readonly serverStaticKey?: Uint8Array;
|
|
16
|
+
readonly serverHasPreKeys?: boolean;
|
|
17
|
+
readonly routingInfo?: Uint8Array;
|
|
18
|
+
readonly lastSuccessTs?: number;
|
|
19
|
+
readonly propsVersion?: number;
|
|
20
|
+
readonly abPropsVersion?: number;
|
|
21
|
+
readonly connectionLocation?: string;
|
|
22
|
+
readonly accountCreationTs?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface WaAuthSocketOptions {
|
|
25
|
+
readonly url?: string;
|
|
26
|
+
readonly urls?: readonly string[];
|
|
27
|
+
readonly protocols?: readonly string[];
|
|
28
|
+
readonly connectTimeoutMs?: number;
|
|
29
|
+
readonly reconnectIntervalMs?: number;
|
|
30
|
+
readonly timeoutIntervalMs?: number;
|
|
31
|
+
readonly maxReconnectAttempts?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface WaAuthClientOptions {
|
|
34
|
+
readonly deviceBrowser?: string;
|
|
35
|
+
readonly devicePlatform?: string;
|
|
36
|
+
readonly deviceOsDisplayName?: string;
|
|
37
|
+
readonly requireFullSync?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface WaSuccessPersistAttributes {
|
|
40
|
+
readonly meLid?: string;
|
|
41
|
+
readonly meDisplayName?: string;
|
|
42
|
+
readonly companionEncStatic?: Uint8Array;
|
|
43
|
+
readonly lastSuccessTs?: number;
|
|
44
|
+
readonly propsVersion?: number;
|
|
45
|
+
readonly abPropsVersion?: number;
|
|
46
|
+
readonly connectionLocation?: string;
|
|
47
|
+
readonly accountCreationTs?: number;
|
|
48
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import type { WaAppStateStoreData, WaAppStateSyncResult } from '../appstate/types';
|
|
3
|
+
import type { WaAppStateSyncOptions } from '../appstate/types';
|
|
4
|
+
import type { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
|
|
5
|
+
import type { WaAuthCredentials } from '../auth/types';
|
|
6
|
+
import type { WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
|
|
7
|
+
import type { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
|
|
8
|
+
import type { WaClientEventMap, WaClientOptions, WaSendMessageOptions, WaIncomingNodeHandlerRegistration } from './types';
|
|
9
|
+
import type { Logger } from '../infra/log/types';
|
|
10
|
+
import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
11
|
+
import type { WaMessagePublishResult, WaSendMessageContent, WaSendReceiptInput } from '../message/types';
|
|
12
|
+
import type { WaMessageClient } from '../message/WaMessageClient';
|
|
13
|
+
import type { BinaryNode } from '../transport/types';
|
|
14
|
+
export declare class WaClient extends EventEmitter {
|
|
15
|
+
private readonly options;
|
|
16
|
+
private readonly logger;
|
|
17
|
+
private readonly appStateStore;
|
|
18
|
+
private readonly contactStore;
|
|
19
|
+
private readonly messageStore;
|
|
20
|
+
private readonly participantsStore;
|
|
21
|
+
private readonly deviceListStore;
|
|
22
|
+
private readonly retryStore;
|
|
23
|
+
private readonly signalStore;
|
|
24
|
+
private readonly senderKeyStore;
|
|
25
|
+
private readonly threadStore;
|
|
26
|
+
private readonly authClient;
|
|
27
|
+
private readonly nodeOrchestrator;
|
|
28
|
+
private readonly keepAlive;
|
|
29
|
+
private readonly nodeTransport;
|
|
30
|
+
readonly appStateSync: WaAppStateSyncClient;
|
|
31
|
+
private readonly incomingNode;
|
|
32
|
+
private readonly passiveTasks;
|
|
33
|
+
readonly mediaTransfer: WaMediaTransferClient;
|
|
34
|
+
readonly messageDispatch: WaMessageDispatchCoordinator;
|
|
35
|
+
readonly messageClient: WaMessageClient;
|
|
36
|
+
readonly groupCoordinator: WaGroupCoordinator;
|
|
37
|
+
private clockSkewMs;
|
|
38
|
+
private mediaConnCache;
|
|
39
|
+
private comms;
|
|
40
|
+
private pairingReconnectPromise;
|
|
41
|
+
private connectPromise;
|
|
42
|
+
private readonly danglingReceipts;
|
|
43
|
+
private readonly appStateKeyShareWaiters;
|
|
44
|
+
private appStateKeyShareVersion;
|
|
45
|
+
private appStateBootstrapKeyShareWaitDone;
|
|
46
|
+
constructor(options: WaClientOptions, logger?: Logger);
|
|
47
|
+
on<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
48
|
+
once<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
49
|
+
off<K extends keyof WaClientEventMap>(event: K, listener: WaClientEventMap[K]): this;
|
|
50
|
+
emit<K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>): boolean;
|
|
51
|
+
getState(): {
|
|
52
|
+
connected: boolean;
|
|
53
|
+
registered: boolean;
|
|
54
|
+
hasQr: boolean;
|
|
55
|
+
hasPairingCode: boolean;
|
|
56
|
+
};
|
|
57
|
+
getCredentials(): WaAuthCredentials | null;
|
|
58
|
+
getClockSkewMs(): number | null;
|
|
59
|
+
sendNode(node: BinaryNode): Promise<void>;
|
|
60
|
+
query(node: BinaryNode, timeoutMs?: number): Promise<BinaryNode>;
|
|
61
|
+
registerIncomingHandler(registration: WaIncomingNodeHandlerRegistration): () => void;
|
|
62
|
+
unregisterIncomingHandler(registration: WaIncomingNodeHandlerRegistration): boolean;
|
|
63
|
+
private bindNodeTransportEvents;
|
|
64
|
+
private handleIncomingMessageEvent;
|
|
65
|
+
private handleIncomingAppStateSyncKeyShare;
|
|
66
|
+
private handleIncomingAppStateSyncKeyRequest;
|
|
67
|
+
private extractAppStateSyncKeyRequestIds;
|
|
68
|
+
private isOwnAccountDeviceJid;
|
|
69
|
+
private handleHistorySyncNotification;
|
|
70
|
+
private queryWithContext;
|
|
71
|
+
private handleIncomingFrame;
|
|
72
|
+
connect(): Promise<void>;
|
|
73
|
+
private connectInternal;
|
|
74
|
+
private scheduleReconnectAfterPairing;
|
|
75
|
+
private reconnectAsRegisteredAfterPairing;
|
|
76
|
+
private reconnectAsRegisteredAfterPairingInternal;
|
|
77
|
+
disconnect(): Promise<void>;
|
|
78
|
+
requestPairingCode(phoneNumber: string, shouldShowPushNotification?: boolean): Promise<string>;
|
|
79
|
+
fetchPairingCountryCodeIso(): Promise<string>;
|
|
80
|
+
sendMessage(to: string, content: WaSendMessageContent, options?: WaSendMessageOptions): Promise<WaMessagePublishResult>;
|
|
81
|
+
syncSignalSession(jid: string, reasonIdentity?: boolean): Promise<void>;
|
|
82
|
+
sendReceipt(input: WaSendReceiptInput): Promise<void>;
|
|
83
|
+
exportAppState(): Promise<WaAppStateStoreData>;
|
|
84
|
+
syncAppState(options?: WaAppStateSyncOptions): Promise<WaAppStateSyncResult>;
|
|
85
|
+
private executeAppStateSync;
|
|
86
|
+
private getBlockedAppStateCollections;
|
|
87
|
+
private waitForAppStateKeyShare;
|
|
88
|
+
private notifyAppStateKeyShareWaiters;
|
|
89
|
+
private emitChatEventsFromAppStateSyncResult;
|
|
90
|
+
private startCommsWithCredentials;
|
|
91
|
+
private shouldQueueDanglingReceipt;
|
|
92
|
+
private enqueueDanglingReceipt;
|
|
93
|
+
private clearStoredState;
|
|
94
|
+
private handleError;
|
|
95
|
+
private clearCommsBinding;
|
|
96
|
+
private updateClockSkewFromSuccess;
|
|
97
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { WaAppStateSyncClient } from '../appstate/WaAppStateSyncClient';
|
|
2
|
+
import { WaAuthClient } from '../auth/WaAuthClient';
|
|
3
|
+
import { type WaGroupCoordinator } from './coordinators/WaGroupCoordinator';
|
|
4
|
+
import { WaIncomingNodeCoordinator } from './coordinators/WaIncomingNodeCoordinator';
|
|
5
|
+
import { WaMessageDispatchCoordinator } from './coordinators/WaMessageDispatchCoordinator';
|
|
6
|
+
import { WaPassiveTasksCoordinator } from './coordinators/WaPassiveTasksCoordinator';
|
|
7
|
+
import { WaRetryCoordinator } from './coordinators/WaRetryCoordinator';
|
|
8
|
+
import { type WaStreamControlHandler } from './coordinators/WaStreamControlCoordinator';
|
|
9
|
+
import { buildMediaMessageContent } from './messages';
|
|
10
|
+
import type { WaClientEventMap, WaClientOptions, WaIncomingMessageEvent } from './types';
|
|
11
|
+
import type { Logger } from '../infra/log/types';
|
|
12
|
+
import type { WaMediaConn } from '../media/types';
|
|
13
|
+
import { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
14
|
+
import { WaMessageClient } from '../message/WaMessageClient';
|
|
15
|
+
import { SignalDeviceSyncApi } from '../signal/api/SignalDeviceSyncApi';
|
|
16
|
+
import { SignalDigestSyncApi } from '../signal/api/SignalDigestSyncApi';
|
|
17
|
+
import { SignalIdentitySyncApi } from '../signal/api/SignalIdentitySyncApi';
|
|
18
|
+
import { SignalMissingPreKeysSyncApi } from '../signal/api/SignalMissingPreKeysSyncApi';
|
|
19
|
+
import { SignalRotateKeyApi } from '../signal/api/SignalRotateKeyApi';
|
|
20
|
+
import { SignalSessionSyncApi } from '../signal/api/SignalSessionSyncApi';
|
|
21
|
+
import { SenderKeyManager } from '../signal/group/SenderKeyManager';
|
|
22
|
+
import { SignalProtocol } from '../signal/session/SignalProtocol';
|
|
23
|
+
import { WaKeepAlive } from '../transport/keepalive/WaKeepAlive';
|
|
24
|
+
import { WaNodeOrchestrator } from '../transport/node/WaNodeOrchestrator';
|
|
25
|
+
import { WaNodeTransport } from '../transport/node/WaNodeTransport';
|
|
26
|
+
import type { BinaryNode } from '../transport/types';
|
|
27
|
+
import type { WaComms } from '../transport/WaComms';
|
|
28
|
+
type WaMediaMessageBuildOptions = Parameters<typeof buildMediaMessageContent>[0];
|
|
29
|
+
interface WaClientBase {
|
|
30
|
+
readonly options: Readonly<WaClientOptions>;
|
|
31
|
+
readonly logger: Logger;
|
|
32
|
+
readonly sessionStore: ReturnType<WaClientOptions['store']['session']>;
|
|
33
|
+
}
|
|
34
|
+
interface WaClientDependencies {
|
|
35
|
+
readonly nodeTransport: WaNodeTransport;
|
|
36
|
+
readonly nodeOrchestrator: WaNodeOrchestrator;
|
|
37
|
+
readonly keepAlive: WaKeepAlive;
|
|
38
|
+
readonly mediaTransfer: WaMediaTransferClient;
|
|
39
|
+
readonly mediaMessageBuildOptions: WaMediaMessageBuildOptions;
|
|
40
|
+
readonly messageClient: WaMessageClient;
|
|
41
|
+
readonly senderKeyManager: SenderKeyManager;
|
|
42
|
+
readonly signalProtocol: SignalProtocol;
|
|
43
|
+
readonly signalDigestSync: SignalDigestSyncApi;
|
|
44
|
+
readonly signalDeviceSync: SignalDeviceSyncApi;
|
|
45
|
+
readonly signalIdentitySync: SignalIdentitySyncApi;
|
|
46
|
+
readonly signalMissingPreKeysSync: SignalMissingPreKeysSyncApi;
|
|
47
|
+
readonly signalRotateKey: SignalRotateKeyApi;
|
|
48
|
+
readonly signalSessionSync: SignalSessionSyncApi;
|
|
49
|
+
readonly authClient: WaAuthClient;
|
|
50
|
+
readonly messageDispatch: WaMessageDispatchCoordinator;
|
|
51
|
+
readonly retryCoordinator: WaRetryCoordinator;
|
|
52
|
+
readonly appStateSync: WaAppStateSyncClient;
|
|
53
|
+
readonly streamControl: WaStreamControlHandler;
|
|
54
|
+
readonly incomingNode: WaIncomingNodeCoordinator;
|
|
55
|
+
readonly passiveTasks: WaPassiveTasksCoordinator;
|
|
56
|
+
readonly groupCoordinator: WaGroupCoordinator;
|
|
57
|
+
}
|
|
58
|
+
export interface WaClientDependencyHost {
|
|
59
|
+
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
60
|
+
readonly query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
|
|
61
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
62
|
+
readonly syncAppState: () => Promise<void>;
|
|
63
|
+
readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
|
|
64
|
+
readonly handleIncomingMessageEvent: (event: WaIncomingMessageEvent) => Promise<void>;
|
|
65
|
+
readonly handleError: (error: Error) => void;
|
|
66
|
+
readonly scheduleReconnectAfterPairing: () => void;
|
|
67
|
+
readonly updateClockSkewFromSuccess: (serverUnixSeconds: number) => void;
|
|
68
|
+
readonly getComms: () => WaComms | null;
|
|
69
|
+
readonly getMediaConnCache: () => WaMediaConn | null;
|
|
70
|
+
readonly setMediaConnCache: (mediaConn: WaMediaConn | null) => void;
|
|
71
|
+
readonly disconnect: () => Promise<void>;
|
|
72
|
+
readonly clearStoredState: () => Promise<void>;
|
|
73
|
+
readonly connect: () => Promise<void>;
|
|
74
|
+
readonly shouldQueueDanglingReceipt: (node: BinaryNode, error: Error) => boolean;
|
|
75
|
+
readonly enqueueDanglingReceipt: (node: BinaryNode) => void;
|
|
76
|
+
readonly takeDanglingReceipts: () => BinaryNode[];
|
|
77
|
+
}
|
|
78
|
+
export declare function resolveWaClientBase(options: WaClientOptions, logger: Logger): WaClientBase;
|
|
79
|
+
export declare function buildWaClientDependencies(input: {
|
|
80
|
+
readonly base: WaClientBase;
|
|
81
|
+
readonly host: WaClientDependencyHost;
|
|
82
|
+
}): WaClientDependencies;
|
|
83
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type WaGroupSetting } from '../../protocol/group';
|
|
2
|
+
import type { BinaryNode } from '../../transport/types';
|
|
3
|
+
export interface WaGroupParticipant {
|
|
4
|
+
readonly jid: string;
|
|
5
|
+
readonly type: string;
|
|
6
|
+
readonly isAdmin: boolean;
|
|
7
|
+
readonly isSuperAdmin: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface WaGroupMetadata {
|
|
10
|
+
readonly jid: string;
|
|
11
|
+
readonly subject: string;
|
|
12
|
+
readonly subjectOwner?: string;
|
|
13
|
+
readonly subjectTime?: number;
|
|
14
|
+
readonly owner?: string;
|
|
15
|
+
readonly creation?: number;
|
|
16
|
+
readonly desc?: string;
|
|
17
|
+
readonly descId?: string;
|
|
18
|
+
readonly descOwner?: string;
|
|
19
|
+
readonly restrict: boolean;
|
|
20
|
+
readonly announce: boolean;
|
|
21
|
+
readonly ephemeral?: number;
|
|
22
|
+
readonly size?: number;
|
|
23
|
+
readonly participants: readonly WaGroupParticipant[];
|
|
24
|
+
}
|
|
25
|
+
export interface WaGroupCreateOptions {
|
|
26
|
+
readonly description?: string;
|
|
27
|
+
}
|
|
28
|
+
interface WaGroupCoordinatorOptions {
|
|
29
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
30
|
+
}
|
|
31
|
+
export interface WaGroupCoordinator {
|
|
32
|
+
readonly queryGroupMetadata: (groupJid: string) => Promise<WaGroupMetadata>;
|
|
33
|
+
readonly queryAllGroups: () => Promise<readonly WaGroupMetadata[]>;
|
|
34
|
+
readonly queryGroupInviteInfo: (code: string) => Promise<BinaryNode>;
|
|
35
|
+
readonly createGroup: (subject: string, participants: readonly string[], options?: WaGroupCreateOptions) => Promise<BinaryNode>;
|
|
36
|
+
readonly setSubject: (groupJid: string, subject: string) => Promise<void>;
|
|
37
|
+
readonly setDescription: (groupJid: string, description: string | null, prevDescId?: string) => Promise<void>;
|
|
38
|
+
readonly setSetting: (groupJid: string, setting: WaGroupSetting, enabled: boolean) => Promise<void>;
|
|
39
|
+
readonly addParticipants: (groupJid: string, participants: readonly string[]) => Promise<BinaryNode>;
|
|
40
|
+
readonly removeParticipants: (groupJid: string, participants: readonly string[]) => Promise<BinaryNode>;
|
|
41
|
+
readonly promoteParticipants: (groupJid: string, participants: readonly string[]) => Promise<BinaryNode>;
|
|
42
|
+
readonly demoteParticipants: (groupJid: string, participants: readonly string[]) => Promise<BinaryNode>;
|
|
43
|
+
readonly leaveGroup: (groupJids: readonly string[]) => Promise<BinaryNode>;
|
|
44
|
+
readonly revokeInvite: (groupJid: string) => Promise<BinaryNode>;
|
|
45
|
+
readonly joinGroupViaInvite: (code: string) => Promise<BinaryNode>;
|
|
46
|
+
}
|
|
47
|
+
export declare function createGroupCoordinator(options: WaGroupCoordinatorOptions): WaGroupCoordinator;
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { WaSuccessPersistAttributes } from '../../auth/types';
|
|
2
|
+
import type { WaDirtyBit } from '../dirty';
|
|
3
|
+
import type { WaIncomingBaseEvent, WaIncomingCallEvent, WaIncomingChatstateEvent, WaIncomingFailureEvent, WaGroupEvent, WaIncomingNodeHandlerRegistration, WaIncomingNotificationEvent, WaIncomingPresenceEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent } from '../types';
|
|
4
|
+
import type { Logger } from '../../infra/log/types';
|
|
5
|
+
import { type WaStreamControlNodeResult } from '../../transport/stream/parse';
|
|
6
|
+
import type { BinaryNode } from '../../transport/types';
|
|
7
|
+
interface WaIncomingNodeRuntime {
|
|
8
|
+
readonly handleStreamControlResult: (result: WaStreamControlNodeResult) => Promise<void>;
|
|
9
|
+
readonly persistSuccessAttributes: (attributes: WaSuccessPersistAttributes) => Promise<void>;
|
|
10
|
+
readonly emitSuccessNode: (node: BinaryNode) => void;
|
|
11
|
+
readonly updateClockSkewFromSuccess: (serverUnixSeconds: number) => void;
|
|
12
|
+
readonly shouldWarmupMediaConn: () => boolean;
|
|
13
|
+
readonly warmupMediaConn: () => Promise<void>;
|
|
14
|
+
readonly persistRoutingInfo: (routingInfo: Uint8Array) => Promise<void>;
|
|
15
|
+
readonly tryResolvePendingNode: (node: BinaryNode) => boolean;
|
|
16
|
+
readonly handleGenericIncomingNode: (node: BinaryNode) => Promise<boolean>;
|
|
17
|
+
readonly handleIncomingIqSetNode: (node: BinaryNode) => Promise<boolean>;
|
|
18
|
+
readonly handleLinkCodeNotificationNode: (node: BinaryNode) => Promise<boolean>;
|
|
19
|
+
readonly handleCompanionRegRefreshNotificationNode: (node: BinaryNode) => Promise<boolean>;
|
|
20
|
+
readonly handleIncomingMessageNode: (node: BinaryNode) => Promise<boolean>;
|
|
21
|
+
readonly sendNode: (node: BinaryNode) => Promise<void>;
|
|
22
|
+
readonly handleIncomingRetryReceipt: (node: BinaryNode) => Promise<void>;
|
|
23
|
+
readonly trackOutboundReceipt: (node: BinaryNode) => Promise<void>;
|
|
24
|
+
readonly emitIncomingReceipt: (event: WaIncomingReceiptEvent) => void;
|
|
25
|
+
readonly emitIncomingPresence: (event: WaIncomingPresenceEvent) => void;
|
|
26
|
+
readonly emitIncomingChatstate: (event: WaIncomingChatstateEvent) => void;
|
|
27
|
+
readonly emitIncomingCall: (event: WaIncomingCallEvent) => void;
|
|
28
|
+
readonly emitIncomingFailure: (event: WaIncomingFailureEvent) => void;
|
|
29
|
+
readonly emitIncomingErrorStanza: (event: WaIncomingBaseEvent) => void;
|
|
30
|
+
readonly emitIncomingNotification: (event: WaIncomingNotificationEvent) => void;
|
|
31
|
+
readonly emitGroupEvent: (event: WaGroupEvent) => void;
|
|
32
|
+
readonly emitUnhandledIncomingNode: (event: WaIncomingUnhandledStanzaEvent) => void;
|
|
33
|
+
readonly syncAppState: () => Promise<void>;
|
|
34
|
+
readonly disconnect: () => Promise<void>;
|
|
35
|
+
readonly clearStoredCredentials: () => Promise<void>;
|
|
36
|
+
readonly parseDirtyBits: (nodes: readonly BinaryNode[]) => readonly WaDirtyBit[];
|
|
37
|
+
readonly handleDirtyBits: (dirtyBits: readonly WaDirtyBit[]) => Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
interface WaIncomingNodeCoordinatorOptions {
|
|
40
|
+
readonly logger: Logger;
|
|
41
|
+
readonly runtime: WaIncomingNodeRuntime;
|
|
42
|
+
}
|
|
43
|
+
export declare class WaIncomingNodeCoordinator {
|
|
44
|
+
private readonly logger;
|
|
45
|
+
private readonly runtime;
|
|
46
|
+
private readonly nodeHandlerRegistry;
|
|
47
|
+
private mediaConnWarmupPromise;
|
|
48
|
+
constructor(options: WaIncomingNodeCoordinatorOptions);
|
|
49
|
+
handleIncomingNode(node: BinaryNode): Promise<void>;
|
|
50
|
+
registerIncomingHandler(registration: WaIncomingNodeHandlerRegistration): () => void;
|
|
51
|
+
unregisterIncomingHandler(registration: WaIncomingNodeHandlerRegistration): boolean;
|
|
52
|
+
private dispatchIncomingNode;
|
|
53
|
+
private isRetryReceiptType;
|
|
54
|
+
private getHandlersForNode;
|
|
55
|
+
private registerDefaultIncomingHandlers;
|
|
56
|
+
private handleSuccessNode;
|
|
57
|
+
private scheduleMediaConnWarmup;
|
|
58
|
+
private handleInfoBulletinNode;
|
|
59
|
+
}
|
|
60
|
+
export {};
|