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
package/dist/esm/protocol/jid.js
CHANGED
|
@@ -7,7 +7,9 @@ const KNOWN_SERVERS = {
|
|
|
7
7
|
[WA_DEFAULTS.HOSTED_SERVER]: WA_DEFAULTS.HOSTED_SERVER,
|
|
8
8
|
[WA_DEFAULTS.HOSTED_LID_SERVER]: WA_DEFAULTS.HOSTED_LID_SERVER,
|
|
9
9
|
[WA_DEFAULTS.MSGR_SERVER]: WA_DEFAULTS.MSGR_SERVER,
|
|
10
|
-
[WA_DEFAULTS.INTEROP_SERVER]: WA_DEFAULTS.INTEROP_SERVER
|
|
10
|
+
[WA_DEFAULTS.INTEROP_SERVER]: WA_DEFAULTS.INTEROP_SERVER,
|
|
11
|
+
[WA_DEFAULTS.NEWSLETTER_SERVER]: WA_DEFAULTS.NEWSLETTER_SERVER,
|
|
12
|
+
[WA_DEFAULTS.BOT_SERVER]: WA_DEFAULTS.BOT_SERVER
|
|
11
13
|
};
|
|
12
14
|
/**
|
|
13
15
|
* Returns the canonical reference for known server strings, avoiding
|
|
@@ -32,10 +34,20 @@ function findAtIndex(jid) {
|
|
|
32
34
|
throw new Error(`invalid jid: ${jid}`);
|
|
33
35
|
return atIndex;
|
|
34
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Splits a JID into `user` and `server` parts at the `@` separator.
|
|
39
|
+
* Throws if the input does not contain a valid `user@server` shape.
|
|
40
|
+
*/
|
|
35
41
|
export function splitJid(jid) {
|
|
36
42
|
const atIndex = findAtIndex(jid);
|
|
37
43
|
return { user: jid.slice(0, atIndex), server: internServer(jid.slice(atIndex + 1)) };
|
|
38
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Normalizes a user-supplied recipient (phone number, group id, or full JID)
|
|
47
|
+
* into a canonical JID. Strings already containing `@` are returned as-is;
|
|
48
|
+
* dashed inputs map to `<input>@g.us` (group); pure-digit inputs map to
|
|
49
|
+
* `<digits>@s.whatsapp.net`.
|
|
50
|
+
*/
|
|
39
51
|
export function normalizeRecipientJid(to) {
|
|
40
52
|
const input = to.trim();
|
|
41
53
|
if (input.length === 0)
|
|
@@ -58,17 +70,51 @@ export function normalizeRecipientJid(to) {
|
|
|
58
70
|
}
|
|
59
71
|
function isJidType(jid, type) {
|
|
60
72
|
const atIndex = jid.length - type.length - 1;
|
|
61
|
-
|
|
73
|
+
if (atIndex < 1 || jid.charCodeAt(atIndex) !== 64 || !jid.endsWith(type))
|
|
74
|
+
return false;
|
|
75
|
+
// Reject multi-@ JIDs (consistency with splitJid). Manual loop beats indexOf.
|
|
76
|
+
for (let i = 0; i < atIndex; i += 1) {
|
|
77
|
+
if (jid.charCodeAt(i) === 64)
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
62
81
|
}
|
|
82
|
+
/** Returns `true` for JIDs in the `@lid` server (linked-device identity). */
|
|
83
|
+
export function isLidJid(jid) {
|
|
84
|
+
return isJidType(jid, WA_DEFAULTS.LID_SERVER);
|
|
85
|
+
}
|
|
86
|
+
/** Returns `true` for JIDs in the `@s.whatsapp.net` server (phone-number user JIDs). */
|
|
87
|
+
export function isUserJid(jid) {
|
|
88
|
+
return isJidType(jid, WA_DEFAULTS.HOST_DOMAIN);
|
|
89
|
+
}
|
|
90
|
+
/** Returns `true` for JIDs in the `@bot` server. */
|
|
91
|
+
export function isBotJid(jid) {
|
|
92
|
+
return isJidType(jid, WA_DEFAULTS.BOT_SERVER);
|
|
93
|
+
}
|
|
94
|
+
/** Returns `true` for JIDs in the `@g.us` server (groups). */
|
|
63
95
|
export function isGroupJid(jid) {
|
|
64
96
|
return isJidType(jid, WA_DEFAULTS.GROUP_SERVER);
|
|
65
97
|
}
|
|
98
|
+
/** Returns `true` for JIDs in the `@broadcast` server (broadcast lists). */
|
|
66
99
|
export function isBroadcastJid(jid) {
|
|
67
100
|
return isJidType(jid, WA_DEFAULTS.BROADCAST_SERVER);
|
|
68
101
|
}
|
|
102
|
+
/** Returns `true` for the special `status@broadcast` JID. */
|
|
103
|
+
export function isStatusBroadcastJid(jid) {
|
|
104
|
+
return jid === WA_DEFAULTS.STATUS_BROADCAST_JID;
|
|
105
|
+
}
|
|
106
|
+
/** Returns `true` for JIDs in the `@newsletter` server. */
|
|
107
|
+
export function isNewsletterJid(jid) {
|
|
108
|
+
return isJidType(jid, WA_DEFAULTS.NEWSLETTER_SERVER);
|
|
109
|
+
}
|
|
110
|
+
/** Returns `true` for any group or broadcast JID. */
|
|
69
111
|
export function isGroupOrBroadcastJid(jid) {
|
|
70
112
|
return isGroupJid(jid) || isBroadcastJid(jid);
|
|
71
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Parses a JID into a Signal-style `{ user, server, device }` address.
|
|
116
|
+
* `device` is `0` when the JID has no `:device` segment.
|
|
117
|
+
*/
|
|
72
118
|
export function parseSignalAddressFromJid(jid) {
|
|
73
119
|
const atIndex = findAtIndex(jid);
|
|
74
120
|
const colonIndex = jid.indexOf(':', 0);
|
|
@@ -76,17 +122,34 @@ export function parseSignalAddressFromJid(jid) {
|
|
|
76
122
|
if (colonIndex === -1 || colonIndex > atIndex) {
|
|
77
123
|
return { user: jid.slice(0, atIndex), server, device: 0 };
|
|
78
124
|
}
|
|
79
|
-
|
|
80
|
-
if (!Number.isFinite(device) || device < 0)
|
|
125
|
+
if (colonIndex >= atIndex - 1)
|
|
81
126
|
throw new Error(`invalid jid device: ${jid}`);
|
|
127
|
+
let device = 0;
|
|
128
|
+
for (let i = colonIndex + 1; i < atIndex; i += 1) {
|
|
129
|
+
const digit = jid.charCodeAt(i) - 48;
|
|
130
|
+
if (digit < 0 || digit > 9)
|
|
131
|
+
throw new Error(`invalid jid device: ${jid}`);
|
|
132
|
+
device = device * 10 + digit;
|
|
133
|
+
if (device > Number.MAX_SAFE_INTEGER)
|
|
134
|
+
throw new Error(`invalid jid device: ${jid}`);
|
|
135
|
+
}
|
|
82
136
|
return { user: jid.slice(0, colonIndex), server, device };
|
|
83
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Parses a JID and returns the Signal address plus the user-only and
|
|
140
|
+
* fully-normalized device JID forms in a single pass.
|
|
141
|
+
*/
|
|
84
142
|
export function parseJidFull(jid) {
|
|
85
143
|
const address = parseSignalAddressFromJid(jid);
|
|
86
144
|
const userJid = `${address.user}@${address.server}`;
|
|
87
145
|
const normalizedJid = address.device === 0 ? userJid : `${address.user}:${address.device}@${address.server}`;
|
|
88
146
|
return { address, userJid, normalizedJid };
|
|
89
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Maps the hosted-account server variants (`hosted` / `hosted.lid`) back to
|
|
150
|
+
* their canonical Signal server (`hostDomain` / `lid`). Other servers are
|
|
151
|
+
* returned unchanged.
|
|
152
|
+
*/
|
|
90
153
|
export function canonicalizeSignalServer(server, hostDomain = WA_DEFAULTS.HOST_DOMAIN) {
|
|
91
154
|
if (server === WA_DEFAULTS.HOSTED_SERVER)
|
|
92
155
|
return hostDomain;
|
|
@@ -94,6 +157,11 @@ export function canonicalizeSignalServer(server, hostDomain = WA_DEFAULTS.HOST_D
|
|
|
94
157
|
return WA_DEFAULTS.LID_SERVER;
|
|
95
158
|
return server;
|
|
96
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Returns the JID rewritten with its server canonicalized via
|
|
162
|
+
* {@link canonicalizeSignalServer} – used to derive the address Signal
|
|
163
|
+
* sessions are keyed by.
|
|
164
|
+
*/
|
|
97
165
|
export function canonicalizeSignalJid(jid, hostDomain = WA_DEFAULTS.HOST_DOMAIN) {
|
|
98
166
|
const address = parseSignalAddressFromJid(jid);
|
|
99
167
|
const server = canonicalizeSignalServer(address.server ?? WA_DEFAULTS.HOST_DOMAIN, hostDomain);
|
|
@@ -101,37 +169,87 @@ export function canonicalizeSignalJid(jid, hostDomain = WA_DEFAULTS.HOST_DOMAIN)
|
|
|
101
169
|
return `${address.user}@${server}`;
|
|
102
170
|
return `${address.user}:${address.device}@${server}`;
|
|
103
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Strips the `:device` segment from a JID, returning the bare `user@server`
|
|
174
|
+
* form. Set `options.canonicalizeSignalServer` to also rewrite hosted servers
|
|
175
|
+
* via {@link canonicalizeSignalServer}.
|
|
176
|
+
*/
|
|
104
177
|
export function toUserJid(jid, options = {}) {
|
|
178
|
+
const canonicalize = options.canonicalizeSignalServer === true;
|
|
179
|
+
if (!canonicalize) {
|
|
180
|
+
const atIndex = jid.indexOf('@');
|
|
181
|
+
if (atIndex >= 1 && atIndex < jid.length - 1) {
|
|
182
|
+
const colonIndex = jid.indexOf(':', 0);
|
|
183
|
+
if (colonIndex === -1 || colonIndex > atIndex) {
|
|
184
|
+
return jid;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
105
188
|
const address = parseSignalAddressFromJid(jid);
|
|
106
|
-
const server =
|
|
189
|
+
const server = canonicalize
|
|
107
190
|
? canonicalizeSignalServer(address.server ?? WA_DEFAULTS.HOST_DOMAIN, options.hostDomain ?? WA_DEFAULTS.HOST_DOMAIN)
|
|
108
191
|
: address.server;
|
|
109
192
|
return `${address.user}@${server}`;
|
|
110
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Returns the JID in its full device form. JIDs with `device === 0` lose the
|
|
196
|
+
* device segment (`user@server`); all others keep `user:device@server`.
|
|
197
|
+
*/
|
|
111
198
|
export function normalizeDeviceJid(jid) {
|
|
112
199
|
const address = parseSignalAddressFromJid(jid);
|
|
113
200
|
if (address.device === 0)
|
|
114
201
|
return `${address.user}@${address.server}`;
|
|
115
202
|
return `${address.user}:${address.device}@${address.server}`;
|
|
116
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Appends `:device` to a bare user JID. A falsy `device` returns the input
|
|
206
|
+
* unchanged.
|
|
207
|
+
*/
|
|
208
|
+
export function applyDeviceToJid(userJid, device) {
|
|
209
|
+
if (!device)
|
|
210
|
+
return userJid;
|
|
211
|
+
const address = parseSignalAddressFromJid(userJid);
|
|
212
|
+
return buildDeviceJid(address.user, address.server ?? WA_DEFAULTS.HOST_DOMAIN, device);
|
|
213
|
+
}
|
|
214
|
+
/** Returns `true` when `deviceId` matches the WhatsApp hosted-device id. */
|
|
117
215
|
export function isHostedDeviceId(deviceId) {
|
|
118
216
|
return deviceId === WA_DEFAULTS.HOSTED_DEVICE_ID;
|
|
119
217
|
}
|
|
218
|
+
/** Returns `true` for the hosted server variants (`hosted` and `hosted.lid`). */
|
|
120
219
|
export function isHostedServer(server) {
|
|
121
220
|
return server === WA_DEFAULTS.HOSTED_SERVER || server === WA_DEFAULTS.HOSTED_LID_SERVER;
|
|
122
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Returns `true` when the JID refers to a hosted device – either by server
|
|
224
|
+
* (`@hosted` / `@hosted.lid`) or by a `:HOSTED_DEVICE_ID@…` device segment.
|
|
225
|
+
*/
|
|
123
226
|
export function isHostedDeviceJid(jid) {
|
|
124
|
-
|
|
125
|
-
|
|
227
|
+
if (isJidType(jid, WA_DEFAULTS.HOSTED_SERVER) ||
|
|
228
|
+
isJidType(jid, WA_DEFAULTS.HOSTED_LID_SERVER)) {
|
|
126
229
|
return true;
|
|
127
230
|
}
|
|
128
|
-
const
|
|
129
|
-
if (
|
|
231
|
+
const atIndex = jid.indexOf('@');
|
|
232
|
+
if (atIndex < 1 || atIndex >= jid.length - 1)
|
|
233
|
+
return false;
|
|
234
|
+
const colonIndex = jid.indexOf(':');
|
|
235
|
+
if (colonIndex < 0 || colonIndex >= atIndex - 1)
|
|
130
236
|
return false;
|
|
237
|
+
let deviceId = 0;
|
|
238
|
+
for (let i = colonIndex + 1; i < atIndex; i += 1) {
|
|
239
|
+
const digit = jid.charCodeAt(i) - 48;
|
|
240
|
+
if (digit < 0 || digit > 9)
|
|
241
|
+
return false;
|
|
242
|
+
deviceId = deviceId * 10 + digit;
|
|
243
|
+
if (deviceId > Number.MAX_SAFE_INTEGER)
|
|
244
|
+
return false;
|
|
131
245
|
}
|
|
132
|
-
|
|
133
|
-
return Number.isSafeInteger(deviceId) && isHostedDeviceId(deviceId);
|
|
246
|
+
return isHostedDeviceId(deviceId);
|
|
134
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Builds a device JID from its parts. When `options.isHosted` is set, the
|
|
250
|
+
* hosted-server variant is selected (preserving LID vs phone) and the canonical
|
|
251
|
+
* hosted device id is used.
|
|
252
|
+
*/
|
|
135
253
|
export function buildDeviceJid(user, normalizedServer, deviceId, options = {}) {
|
|
136
254
|
if (options.isHosted === true) {
|
|
137
255
|
if (!isHostedDeviceId(deviceId)) {
|
|
@@ -148,6 +266,11 @@ export function buildDeviceJid(user, normalizedServer, deviceId, options = {}) {
|
|
|
148
266
|
}
|
|
149
267
|
return `${user}:${deviceId}@${normalizedServer}`;
|
|
150
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Extracts the numeric username and device id from the authenticated user's
|
|
271
|
+
* own JID. Throws when either segment is missing, non-numeric, or out of the
|
|
272
|
+
* safe-integer range.
|
|
273
|
+
*/
|
|
151
274
|
export function getLoginIdentity(meJid) {
|
|
152
275
|
const atIndex = findAtIndex(meJid);
|
|
153
276
|
const colonIndex = meJid.indexOf(':', 0);
|
|
@@ -163,12 +286,20 @@ export function getLoginIdentity(meJid) {
|
|
|
163
286
|
throw new Error(`invalid device from ${meJid}`);
|
|
164
287
|
return { username, device };
|
|
165
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Builds a `<digits>@s.whatsapp.net` JID from a free-form phone number,
|
|
291
|
+
* stripping non-digit characters. Throws when no digits are found.
|
|
292
|
+
*/
|
|
166
293
|
export function parsePhoneJid(input) {
|
|
167
294
|
const digits = extractDigits(input);
|
|
168
295
|
if (!digits)
|
|
169
296
|
throw new Error('phone number is empty after normalization');
|
|
170
297
|
return `${digits}@${WA_DEFAULTS.HOST_DOMAIN}`;
|
|
171
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Returns a stable `user|server|device` key for a Signal address, suitable
|
|
301
|
+
* as a Map/Set key.
|
|
302
|
+
*/
|
|
172
303
|
export function signalAddressKey(address) {
|
|
173
304
|
const server = address.server ?? WA_DEFAULTS.HOST_DOMAIN;
|
|
174
305
|
return `${address.user}|${server}|${address.device}`;
|
|
@@ -1,17 +1,30 @@
|
|
|
1
|
+
import { TEXT_ENCODER } from '../util/bytes.js';
|
|
2
|
+
const IMAGE_KEYS = TEXT_ENCODER.encode('WhatsApp Image Keys');
|
|
3
|
+
const VIDEO_KEYS = TEXT_ENCODER.encode('WhatsApp Video Keys');
|
|
4
|
+
const AUDIO_KEYS = TEXT_ENCODER.encode('WhatsApp Audio Keys');
|
|
5
|
+
const HISTORY_KEYS = TEXT_ENCODER.encode('WhatsApp History Keys');
|
|
1
6
|
export const WA_MEDIA_HKDF_INFO = Object.freeze({
|
|
2
|
-
document: 'WhatsApp Document Keys',
|
|
3
|
-
image:
|
|
4
|
-
sticker:
|
|
5
|
-
'xma-image':
|
|
6
|
-
video:
|
|
7
|
-
gif:
|
|
8
|
-
audio:
|
|
9
|
-
ptt:
|
|
10
|
-
'md-app-state': 'WhatsApp App State Keys',
|
|
11
|
-
'md-msg-hist':
|
|
12
|
-
history:
|
|
7
|
+
document: TEXT_ENCODER.encode('WhatsApp Document Keys'),
|
|
8
|
+
image: IMAGE_KEYS,
|
|
9
|
+
sticker: IMAGE_KEYS,
|
|
10
|
+
'xma-image': IMAGE_KEYS,
|
|
11
|
+
video: VIDEO_KEYS,
|
|
12
|
+
gif: VIDEO_KEYS,
|
|
13
|
+
audio: AUDIO_KEYS,
|
|
14
|
+
ptt: AUDIO_KEYS,
|
|
15
|
+
'md-app-state': TEXT_ENCODER.encode('WhatsApp App State Keys'),
|
|
16
|
+
'md-msg-hist': HISTORY_KEYS,
|
|
17
|
+
history: HISTORY_KEYS,
|
|
18
|
+
'sticker-pack': TEXT_ENCODER.encode('WhatsApp Sticker Pack Keys'),
|
|
19
|
+
'thumbnail-sticker-pack': TEXT_ENCODER.encode('WhatsApp Sticker Pack Thumbnail Keys'),
|
|
20
|
+
'thumbnail-link': TEXT_ENCODER.encode('WhatsApp Link Thumbnail Keys')
|
|
13
21
|
});
|
|
14
|
-
export const WA_PREVIEW_MEDIA_HKDF_INFO = 'Messenger Preview Keys';
|
|
22
|
+
export const WA_PREVIEW_MEDIA_HKDF_INFO = TEXT_ENCODER.encode('Messenger Preview Keys');
|
|
23
|
+
/**
|
|
24
|
+
* Returns the HKDF `info` bytes used to derive per-media keys for a given
|
|
25
|
+
* media type. Throws for unsupported types – see {@link WA_MEDIA_HKDF_INFO}
|
|
26
|
+
* for the supported set.
|
|
27
|
+
*/
|
|
15
28
|
export function getWaMediaHkdfInfo(mediaType) {
|
|
16
29
|
const info = WA_MEDIA_HKDF_INFO[mediaType];
|
|
17
30
|
if (info !== undefined)
|
|
@@ -11,6 +11,7 @@ export const WA_MESSAGE_TYPES = Object.freeze({
|
|
|
11
11
|
ACK_TYPE_ERROR: 'error',
|
|
12
12
|
ACK_CLASS_ERROR: 'error',
|
|
13
13
|
ACK_CLASS_MESSAGE: 'message',
|
|
14
|
+
ACK_CLASS_CALL: 'call',
|
|
14
15
|
RECEIPT_TYPE_DELIVERY: 'delivery',
|
|
15
16
|
RECEIPT_TYPE_SENDER: 'sender',
|
|
16
17
|
RECEIPT_TYPE_INACTIVE: 'inactive',
|
|
@@ -21,7 +22,8 @@ export const WA_MESSAGE_TYPES = Object.freeze({
|
|
|
21
22
|
RECEIPT_TYPE_HISTORY_SYNC: 'hist_sync',
|
|
22
23
|
RECEIPT_TYPE_PEER: 'peer_msg',
|
|
23
24
|
RECEIPT_TYPE_SERVER_ERROR: 'server-error',
|
|
24
|
-
RECEIPT_TYPE_RETRY: 'retry'
|
|
25
|
+
RECEIPT_TYPE_RETRY: 'retry',
|
|
26
|
+
RECEIPT_TYPE_ENC_REKEY_RETRY: 'enc_rekey_retry'
|
|
25
27
|
});
|
|
26
28
|
export const WA_RETRYABLE_ACK_CODES = Object.freeze(['408', '429', '500', '503']);
|
|
27
29
|
export const WA_STANZA_MSG_TYPES = Object.freeze({
|
|
@@ -36,6 +38,7 @@ export const WA_STANZA_MSG_TYPES = Object.freeze({
|
|
|
36
38
|
export const WA_EDIT_ATTRS = Object.freeze({
|
|
37
39
|
MESSAGE_EDIT: '1',
|
|
38
40
|
PIN_IN_CHAT: '2',
|
|
41
|
+
NEWSLETTER_EDIT: '3',
|
|
39
42
|
SENDER_REVOKE: '7',
|
|
40
43
|
ADMIN_REVOKE: '8'
|
|
41
44
|
});
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export const WA_NEWSLETTER_ROLES = Object.freeze({
|
|
2
|
+
SUBSCRIBER: 'SUBSCRIBER',
|
|
3
|
+
GUEST: 'GUEST',
|
|
4
|
+
ADMIN: 'ADMIN',
|
|
5
|
+
OWNER: 'OWNER'
|
|
6
|
+
});
|
|
7
|
+
export const WA_NEWSLETTER_STATE_TYPES = Object.freeze({
|
|
8
|
+
ACTIVE: 'ACTIVE',
|
|
9
|
+
SUSPENDED: 'SUSPENDED',
|
|
10
|
+
GEOSUSPENDED: 'GEOSUSPENDED',
|
|
11
|
+
DELETED: 'DELETED',
|
|
12
|
+
NON_EXISTING: 'NON_EXISTING'
|
|
13
|
+
});
|
|
14
|
+
export const WA_NEWSLETTER_PICTURE_TYPES = Object.freeze({
|
|
15
|
+
IMAGE: 'IMAGE',
|
|
16
|
+
PREVIEW: 'PREVIEW'
|
|
17
|
+
});
|
|
18
|
+
export const WA_NEWSLETTER_FETCH_KEY_TYPES = Object.freeze({
|
|
19
|
+
JID: 'JID',
|
|
20
|
+
INVITE: 'INVITE'
|
|
21
|
+
});
|
|
22
|
+
export const WA_NEWSLETTER_VIEW_ROLES = Object.freeze({
|
|
23
|
+
GUEST: 'GUEST',
|
|
24
|
+
SUBSCRIBER: 'SUBSCRIBER',
|
|
25
|
+
ADMIN: 'ADMIN',
|
|
26
|
+
OWNER: 'OWNER'
|
|
27
|
+
});
|
|
28
|
+
export const WA_NEWSLETTER_MUTE_TYPES = Object.freeze({
|
|
29
|
+
ADMIN_ACTIVITY: 'MUTE_ADMIN_ACTIVITY',
|
|
30
|
+
FOLLOWER_ACTIVITY: 'MUTE_FOLLOWER_ACTIVITY'
|
|
31
|
+
});
|
|
32
|
+
export const WA_NEWSLETTER_MUTE_VALUES = Object.freeze({
|
|
33
|
+
ON: 'ON',
|
|
34
|
+
OFF: 'OFF'
|
|
35
|
+
});
|
|
36
|
+
export const WA_NEWSLETTER_SEND_TYPES = Object.freeze({
|
|
37
|
+
TEXT: 'text',
|
|
38
|
+
MEDIA: 'media',
|
|
39
|
+
REACTION: 'reaction',
|
|
40
|
+
REVOKE: 'revoke'
|
|
41
|
+
});
|
|
42
|
+
export const WA_NEWSLETTER_RECEIVE_TYPES = Object.freeze({
|
|
43
|
+
TEXT: 'NewsletterText',
|
|
44
|
+
MEDIA: 'NewsletterMedia',
|
|
45
|
+
REACTION: 'NewsletterReaction',
|
|
46
|
+
REACTION_REVOKE: 'NewsletterReactionRevoke',
|
|
47
|
+
REVOKE: 'NewsletterRevoke',
|
|
48
|
+
EDIT: 'NewsletterEdit',
|
|
49
|
+
POLL_CREATION: 'NewsletterPollCreation',
|
|
50
|
+
POLL_VOTE: 'NewsletterPollVote',
|
|
51
|
+
POLL_RESULT_SNAPSHOT: 'NewsletterPollResultSnapshot',
|
|
52
|
+
QUIZ_CREATION: 'NewsletterQuizCreation',
|
|
53
|
+
QUESTION: 'NewsletterQuestion',
|
|
54
|
+
QUESTION_REPLY: 'NewsletterQuestionReply',
|
|
55
|
+
QUESTION_RESPONSE: 'NewsletterQuestionResponse',
|
|
56
|
+
WAMO_EMPTY: 'NewsletterWAMOEmpty'
|
|
57
|
+
});
|
|
58
|
+
export const WA_NEWSLETTER_VERIFICATION_STATES = Object.freeze({
|
|
59
|
+
VERIFIED: 'VERIFIED',
|
|
60
|
+
UNVERIFIED: 'UNVERIFIED'
|
|
61
|
+
});
|
|
@@ -32,6 +32,7 @@ export const WA_NODE_TAGS = Object.freeze({
|
|
|
32
32
|
DESCRIPTION: 'description',
|
|
33
33
|
MY_ADDONS: 'my_addons',
|
|
34
34
|
KEY: 'key',
|
|
35
|
+
OP: 'op',
|
|
35
36
|
REGISTRATION: 'registration',
|
|
36
37
|
TYPE: 'type',
|
|
37
38
|
IDENTITY: 'identity',
|
|
@@ -60,7 +61,24 @@ export const WA_NODE_TAGS = Object.freeze({
|
|
|
60
61
|
ANNOUNCEMENT: 'announcement',
|
|
61
62
|
EPHEMERAL: 'ephemeral',
|
|
62
63
|
MEMBERSHIP_APPROVAL_MODE: 'membership_approval_mode',
|
|
63
|
-
GROUP_JOIN: 'group_join'
|
|
64
|
+
GROUP_JOIN: 'group_join',
|
|
65
|
+
ABPROPS: 'abprops',
|
|
66
|
+
PLAINTEXT: 'plaintext',
|
|
67
|
+
PRESENCE: 'presence',
|
|
68
|
+
CHATSTATE: 'chatstate',
|
|
69
|
+
CALL: 'call',
|
|
70
|
+
COMPOSING: 'composing',
|
|
71
|
+
PAUSED: 'paused',
|
|
72
|
+
BIZ: 'biz',
|
|
73
|
+
INTERACTIVE: 'interactive',
|
|
74
|
+
NATIVE_FLOW: 'native_flow',
|
|
75
|
+
BOT: 'bot',
|
|
76
|
+
META: 'meta',
|
|
77
|
+
STATUS: 'status',
|
|
78
|
+
USERNAME: 'username',
|
|
79
|
+
TEXT_STATUS: 'text_status',
|
|
80
|
+
DISAPPEARING_MODE: 'disappearing_mode',
|
|
81
|
+
BUSINESS: 'business'
|
|
64
82
|
});
|
|
65
83
|
export const WA_IQ_TYPES = Object.freeze({
|
|
66
84
|
GET: 'get',
|
|
@@ -82,6 +100,12 @@ export const WA_XMLNS = Object.freeze({
|
|
|
82
100
|
STATUS: 'status',
|
|
83
101
|
GROUPS: 'w:g2',
|
|
84
102
|
NEWSLETTER: 'newsletter',
|
|
103
|
+
TOS: 'tos',
|
|
85
104
|
XMPP_PING: 'urn:xmpp:ping',
|
|
86
|
-
WHATSAPP_PING: 'w:p'
|
|
105
|
+
WHATSAPP_PING: 'w:p',
|
|
106
|
+
ABPROPS: 'abt',
|
|
107
|
+
MEX: 'w:mex',
|
|
108
|
+
BOT: 'bot',
|
|
109
|
+
DISAPPEARING_MODE: 'disappearing_mode',
|
|
110
|
+
PASSIVE: 'passive'
|
|
87
111
|
});
|
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
export const WA_NOTIFICATION_TYPES = Object.freeze({
|
|
2
2
|
GROUP: 'w:gp2',
|
|
3
3
|
ENCRYPT: 'encrypt',
|
|
4
|
-
DEVICES: 'devices'
|
|
4
|
+
DEVICES: 'devices',
|
|
5
|
+
SERVER: 'server',
|
|
6
|
+
REGISTRATION: 'registration',
|
|
7
|
+
NEWSLETTER: 'newsletter',
|
|
8
|
+
BUSINESS: 'business',
|
|
9
|
+
PICTURE: 'picture'
|
|
10
|
+
});
|
|
11
|
+
export const WA_BUSINESS_NOTIFICATION_TAGS = Object.freeze({
|
|
12
|
+
VERIFIED_NAME: 'verified_name',
|
|
13
|
+
REMOVE: 'remove',
|
|
14
|
+
PROFILE: 'profile',
|
|
15
|
+
PRODUCT_CATALOG: 'product_catalog',
|
|
16
|
+
SUBSCRIPTIONS: 'subscriptions',
|
|
17
|
+
FEATURE_FLAGS: 'feature_flags'
|
|
18
|
+
});
|
|
19
|
+
export const WA_NEWSLETTER_NOTIFICATION_TAGS = Object.freeze({
|
|
20
|
+
LIVE_UPDATES: 'live_updates'
|
|
21
|
+
});
|
|
22
|
+
export const WA_REGISTRATION_NOTIFICATION_TAGS = Object.freeze({
|
|
23
|
+
WA_OLD_REGISTRATION: 'wa_old_registration',
|
|
24
|
+
DEVICE_LOGOUT: 'device_logout'
|
|
5
25
|
});
|
|
6
26
|
export const WA_GROUP_NOTIFICATION_TAGS = Object.freeze({
|
|
7
27
|
REMOVE: 'remove',
|
|
@@ -48,5 +68,7 @@ export const WA_GROUP_NOTIFICATION_TAGS = Object.freeze({
|
|
|
48
68
|
IS_CAPI_HOSTED_GROUP: 'is_capi_hosted_group',
|
|
49
69
|
GROUP_SAFETY_CHECK: 'group_safety_check',
|
|
50
70
|
LIMIT_SHARING_ENABLED: 'limit_sharing_enabled',
|
|
51
|
-
MISSING_PARTICIPANT_IDENTIFICATION: 'missing_participant_identification'
|
|
71
|
+
MISSING_PARTICIPANT_IDENTIFICATION: 'missing_participant_identification',
|
|
72
|
+
GROUP_HISTORY: 'group_history',
|
|
73
|
+
NO_GROUP_HISTORY: 'no_group_history'
|
|
52
74
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const WA_PRESENCE_TYPES = Object.freeze({
|
|
2
|
+
AVAILABLE: 'available',
|
|
3
|
+
UNAVAILABLE: 'unavailable',
|
|
4
|
+
SUBSCRIBE: 'subscribe'
|
|
5
|
+
});
|
|
6
|
+
export const WA_PRESENCE_LAST_SENTINELS = Object.freeze({
|
|
7
|
+
DENY: 'deny',
|
|
8
|
+
NONE: 'none',
|
|
9
|
+
ERROR: 'error'
|
|
10
|
+
});
|
|
11
|
+
export const WA_CHATSTATE_MEDIA = Object.freeze({
|
|
12
|
+
AUDIO: 'audio'
|
|
13
|
+
});
|
package/dist/esm/retry/codec.js
CHANGED
|
@@ -16,6 +16,10 @@ const RETRY_PAYLOAD_ENC_TYPE_REVERSE = Object.freeze({
|
|
|
16
16
|
2: 'pkmsg',
|
|
17
17
|
3: 'skmsg'
|
|
18
18
|
});
|
|
19
|
+
/**
|
|
20
|
+
* Encodes a {@link WaRetryReplayPayload} into the on-disk codec format used
|
|
21
|
+
* by the retry store. Supports the `plaintext`/`encrypted`/`opaque_node` modes.
|
|
22
|
+
*/
|
|
19
23
|
export function encodeRetryReplayPayload(payload) {
|
|
20
24
|
const chunks = [];
|
|
21
25
|
if (payload.mode === 'plaintext') {
|
|
@@ -56,6 +60,7 @@ export function encodeRetryReplayPayload(payload) {
|
|
|
56
60
|
pushBytesField(chunks, payload.node, 'node');
|
|
57
61
|
return concatBytes(chunks);
|
|
58
62
|
}
|
|
63
|
+
/** Inverse of {@link encodeRetryReplayPayload}. Throws on bad magic/version. */
|
|
59
64
|
export function decodeRetryReplayPayload(raw) {
|
|
60
65
|
if (raw.byteLength < 3) {
|
|
61
66
|
throw new Error('invalid retry replay payload: unsupported codec version');
|
package/dist/esm/retry/parse.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { WA_MESSAGE_TAGS, WA_NODE_TAGS } from '../protocol/constants.js';
|
|
1
|
+
import { WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_NODE_TAGS } from '../protocol/constants.js';
|
|
2
2
|
import { normalizeDeviceJid } from '../protocol/jid.js';
|
|
3
|
-
import { decodeExactLength, parseUint } from '../signal/api/codec.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { decodeExactLength, parseSignalKeyBundleFromNode, parseUint } from '../signal/api/codec.js';
|
|
4
|
+
import { SIGNAL_REGISTRATION_ID_LENGTH } from '../signal/api/constants.js';
|
|
5
|
+
import { findNodeChildrenByTags } from '../transport/node/helpers.js';
|
|
6
6
|
import { parseOptionalInt } from '../util/primitives.js';
|
|
7
7
|
const RETRY_STATE_RANK = {
|
|
8
8
|
pending: 0,
|
|
@@ -47,47 +47,25 @@ function parseRetryKeyBundle(node) {
|
|
|
47
47
|
if (!node) {
|
|
48
48
|
return undefined;
|
|
49
49
|
}
|
|
50
|
-
const
|
|
51
|
-
const identity = requireNode(identityNode, 'retry keys section missing identity or skey');
|
|
52
|
-
const signedKey = requireNode(signedKeyNode, 'retry keys section missing identity or skey');
|
|
53
|
-
const [signedKeyIdNode, signedKeyValueNode, signedKeySignatureNode] = findNodeChildrenByTags(signedKey, [WA_NODE_TAGS.ID, WA_NODE_TAGS.VALUE, WA_NODE_TAGS.SIGNATURE]);
|
|
54
|
-
const signedKeyId = requireNode(signedKeyIdNode, 'retry keys section has incomplete skey');
|
|
55
|
-
const signedKeyValue = requireNode(signedKeyValueNode, 'retry keys section has incomplete skey');
|
|
56
|
-
const signedKeySignature = requireNode(signedKeySignatureNode, 'retry keys section has incomplete skey');
|
|
57
|
-
let keyIdNode;
|
|
58
|
-
let keyValueNode;
|
|
59
|
-
if (keyNode) {
|
|
60
|
-
const keyNodes = findNodeChildrenByTags(keyNode, [WA_NODE_TAGS.ID, WA_NODE_TAGS.VALUE]);
|
|
61
|
-
keyIdNode = keyNodes[0];
|
|
62
|
-
keyValueNode = keyNodes[1];
|
|
63
|
-
}
|
|
64
|
-
const keyId = keyNode ? requireNode(keyIdNode, 'retry keys section has incomplete key') : null;
|
|
65
|
-
const keyValue = keyNode
|
|
66
|
-
? requireNode(keyValueNode, 'retry keys section has incomplete key')
|
|
67
|
-
: null;
|
|
50
|
+
const parsed = parseSignalKeyBundleFromNode(node, 'retry.keys');
|
|
68
51
|
return {
|
|
69
|
-
identity:
|
|
70
|
-
deviceIdentity:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
key: keyId && keyValue
|
|
74
|
-
? {
|
|
75
|
-
id: parseUint(decodeExactLength(keyId.content, 'retry.keys.key.id', SIGNAL_KEY_ID_LENGTH), 'retry.keys.key.id'),
|
|
76
|
-
publicKey: decodeExactLength(keyValue.content, 'retry.keys.key.value', SIGNAL_KEY_DATA_LENGTH)
|
|
77
|
-
}
|
|
78
|
-
: undefined,
|
|
79
|
-
skey: {
|
|
80
|
-
id: parseUint(decodeExactLength(signedKeyId.content, 'retry.keys.skey.id', SIGNAL_KEY_ID_LENGTH), 'retry.keys.skey.id'),
|
|
81
|
-
publicKey: decodeExactLength(signedKeyValue.content, 'retry.keys.skey.value', SIGNAL_KEY_DATA_LENGTH),
|
|
82
|
-
signature: decodeExactLength(signedKeySignature.content, 'retry.keys.skey.signature', SIGNAL_SIGNATURE_LENGTH)
|
|
83
|
-
}
|
|
52
|
+
identity: parsed.identity,
|
|
53
|
+
...(parsed.deviceIdentity ? { deviceIdentity: parsed.deviceIdentity } : {}),
|
|
54
|
+
...(parsed.oneTimeKey ? { key: parsed.oneTimeKey } : {}),
|
|
55
|
+
skey: parsed.signedKey
|
|
84
56
|
};
|
|
85
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Parses an incoming `receipt` stanza into a {@link WaParsedRetryRequest}.
|
|
60
|
+
* Returns `null` when the stanza is not a retry/rekey-retry receipt; throws
|
|
61
|
+
* when required attrs/children are missing.
|
|
62
|
+
*/
|
|
86
63
|
export function parseRetryReceiptRequest(node, options) {
|
|
87
64
|
if (node.tag !== WA_MESSAGE_TAGS.RECEIPT) {
|
|
88
65
|
return null;
|
|
89
66
|
}
|
|
90
|
-
const receiptType = node.attrs.type ===
|
|
67
|
+
const receiptType = node.attrs.type === WA_MESSAGE_TYPES.RECEIPT_TYPE_RETRY ||
|
|
68
|
+
node.attrs.type === WA_MESSAGE_TYPES.RECEIPT_TYPE_ENC_REKEY_RETRY
|
|
91
69
|
? node.attrs.type
|
|
92
70
|
: null;
|
|
93
71
|
if (!receiptType) {
|
|
@@ -127,6 +105,10 @@ export function parseRetryReceiptRequest(node, options) {
|
|
|
127
105
|
keyBundle: parseRetryKeyBundle(keysNode)
|
|
128
106
|
};
|
|
129
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Returns whichever of `left`/`right` represents the more advanced retry
|
|
110
|
+
* state (according to the internal precedence rank).
|
|
111
|
+
*/
|
|
130
112
|
export function pickRetryStateMax(left, right) {
|
|
131
113
|
return RETRY_STATE_RANK[left] >= RETRY_STATE_RANK[right] ? left : right;
|
|
132
114
|
}
|
package/dist/esm/retry/reason.js
CHANGED
|
@@ -37,6 +37,11 @@ const RETRY_REASON_MATCHERS = [
|
|
|
37
37
|
code: RETRY_REASON.StatusRevokeDelay
|
|
38
38
|
}
|
|
39
39
|
];
|
|
40
|
+
/**
|
|
41
|
+
* Maps a decryption/Signal error to the appropriate {@link WaRetryReasonCode}
|
|
42
|
+
* so an outbound retry receipt carries the correct `error` attribute.
|
|
43
|
+
* Returns `undefined` when no known reason matches.
|
|
44
|
+
*/
|
|
40
45
|
export function mapRetryReasonFromError(error) {
|
|
41
46
|
const message = toError(error).message.toLowerCase();
|
|
42
47
|
for (const matcher of RETRY_REASON_MATCHERS) {
|
|
@@ -46,5 +51,5 @@ export function mapRetryReasonFromError(error) {
|
|
|
46
51
|
return matcher.code;
|
|
47
52
|
}
|
|
48
53
|
}
|
|
49
|
-
return
|
|
54
|
+
return undefined;
|
|
50
55
|
}
|