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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createServerClock = createServerClock;
|
|
4
|
+
function createServerClock(getClockSkewMs) {
|
|
5
|
+
return {
|
|
6
|
+
nowMs() {
|
|
7
|
+
const skewMs = getClockSkewMs();
|
|
8
|
+
const nowMs = Date.now();
|
|
9
|
+
return Number.isFinite(skewMs) ? nowMs + skewMs : nowMs;
|
|
10
|
+
},
|
|
11
|
+
nowSeconds() {
|
|
12
|
+
const skewMs = getClockSkewMs();
|
|
13
|
+
const nowMs = Date.now();
|
|
14
|
+
const correctedMs = Number.isFinite(skewMs) ? nowMs + skewMs : nowMs;
|
|
15
|
+
return Math.floor(correctedMs / 1000);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
package/dist/util/coercion.js
CHANGED
|
@@ -8,47 +8,67 @@ exports.asBytes = asBytes;
|
|
|
8
8
|
exports.asOptionalBytes = asOptionalBytes;
|
|
9
9
|
exports.toBoolOrUndef = toBoolOrUndef;
|
|
10
10
|
exports.resolvePositive = resolvePositive;
|
|
11
|
+
exports.tryAsString = tryAsString;
|
|
12
|
+
exports.tryAsNumber = tryAsNumber;
|
|
13
|
+
exports.tryAsRecord = tryAsRecord;
|
|
11
14
|
const bytes_1 = require("./bytes");
|
|
12
15
|
const primitives_1 = require("./primitives");
|
|
16
|
+
/**
|
|
17
|
+
* Coerces `value` to a safe-integer/finite number, accepting `number` and
|
|
18
|
+
* `bigint` inputs. Throws with a `${field}`-suffixed message on any other type.
|
|
19
|
+
*/
|
|
13
20
|
function asNumber(value, field) {
|
|
14
|
-
if (typeof value === 'bigint') {
|
|
15
|
-
return (0, primitives_1.toSafeNumber)(Number(value), field);
|
|
16
|
-
}
|
|
17
21
|
if (typeof value === 'number') {
|
|
18
22
|
return (0, primitives_1.toSafeNumber)(value, field);
|
|
19
23
|
}
|
|
24
|
+
if (typeof value === 'bigint') {
|
|
25
|
+
return (0, primitives_1.toSafeNumber)(Number(value), field);
|
|
26
|
+
}
|
|
20
27
|
throw new Error(`invalid number value for ${field}`);
|
|
21
28
|
}
|
|
29
|
+
/** Optional variant of {@link asNumber}; returns `undefined` when input is nullish. */
|
|
22
30
|
function asOptionalNumber(value, field = 'optional number') {
|
|
23
31
|
if (value === null || value === undefined)
|
|
24
32
|
return undefined;
|
|
25
33
|
return asNumber(value, field);
|
|
26
34
|
}
|
|
35
|
+
/** Asserts that `value` is a string. Throws with a `${field}`-suffixed message otherwise. */
|
|
27
36
|
function asString(value, field) {
|
|
28
37
|
if (typeof value === 'string') {
|
|
29
38
|
return value;
|
|
30
39
|
}
|
|
31
40
|
throw new Error(`invalid string value for ${field}`);
|
|
32
41
|
}
|
|
42
|
+
/** Optional variant of {@link asString}; returns `undefined` when input is nullish. */
|
|
33
43
|
function asOptionalString(value, field = 'optional string') {
|
|
34
44
|
if (value === null || value === undefined)
|
|
35
45
|
return undefined;
|
|
36
46
|
return asString(value, field);
|
|
37
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Coerces `value` to a Uint8Array view, accepting `Uint8Array`, `ArrayBuffer`,
|
|
50
|
+
* and any `ArrayBufferView`. Throws with a `${field}`-suffixed message otherwise.
|
|
51
|
+
*/
|
|
38
52
|
function asBytes(value, field) {
|
|
39
53
|
if (value instanceof Uint8Array || value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
40
54
|
return (0, bytes_1.toBytesView)(value);
|
|
41
55
|
}
|
|
42
56
|
throw new Error(`invalid bytes value for ${field}`);
|
|
43
57
|
}
|
|
58
|
+
/** Optional variant of {@link asBytes}; returns `undefined` when input is nullish. */
|
|
44
59
|
function asOptionalBytes(value, field = 'optional bytes') {
|
|
45
60
|
if (value === null || value === undefined)
|
|
46
61
|
return undefined;
|
|
47
62
|
return asBytes(value, field);
|
|
48
63
|
}
|
|
64
|
+
/** Returns `undefined` when `value` is nullish, otherwise `Boolean(value)`. */
|
|
49
65
|
function toBoolOrUndef(value) {
|
|
50
66
|
return value === null || value === undefined ? undefined : Boolean(value);
|
|
51
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Returns `value` when it is a positive safe-integer, `fallback` when it is
|
|
70
|
+
* undefined, and throws otherwise.
|
|
71
|
+
*/
|
|
52
72
|
function resolvePositive(value, fallback, name) {
|
|
53
73
|
if (value === undefined)
|
|
54
74
|
return fallback;
|
|
@@ -56,3 +76,28 @@ function resolvePositive(value, fallback, name) {
|
|
|
56
76
|
return value;
|
|
57
77
|
throw new Error(`${name} must be a positive safe integer`);
|
|
58
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Lenient variants for parsing external JSON payloads (GraphQL responses,
|
|
81
|
+
* Mex notifications) where fields may be missing, empty, or arrive as the
|
|
82
|
+
* wrong primitive. Return null instead of throwing.
|
|
83
|
+
*/
|
|
84
|
+
function tryAsString(value) {
|
|
85
|
+
return typeof value === 'string' && value.length > 0 ? value : null;
|
|
86
|
+
}
|
|
87
|
+
function tryAsNumber(value) {
|
|
88
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
89
|
+
return value;
|
|
90
|
+
if (typeof value === 'string') {
|
|
91
|
+
const normalized = value.trim();
|
|
92
|
+
if (normalized.length === 0)
|
|
93
|
+
return null;
|
|
94
|
+
const parsed = Number(normalized);
|
|
95
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
function tryAsRecord(value) {
|
|
100
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
101
|
+
? value
|
|
102
|
+
: null;
|
|
103
|
+
}
|
package/dist/util/collections.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveCleanupIntervalMs = resolveCleanupIntervalMs;
|
|
4
|
+
exports.createPeriodicCleanup = createPeriodicCleanup;
|
|
4
5
|
exports.normalizeQueryLimit = normalizeQueryLimit;
|
|
5
6
|
exports.setBoundedMapEntry = setBoundedMapEntry;
|
|
6
7
|
function resolveCleanupIntervalMs(ttlMs, maxIntervalMs = 60000) {
|
|
@@ -9,6 +10,17 @@ function resolveCleanupIntervalMs(ttlMs, maxIntervalMs = 60000) {
|
|
|
9
10
|
}
|
|
10
11
|
return Math.min(maxIntervalMs, Math.floor(ttlMs / 2));
|
|
11
12
|
}
|
|
13
|
+
function createPeriodicCleanup(ttlMs, run) {
|
|
14
|
+
const timer = setInterval(run, resolveCleanupIntervalMs(ttlMs));
|
|
15
|
+
timer.unref?.();
|
|
16
|
+
return {
|
|
17
|
+
destroy: () => clearInterval(timer)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns a validated positive-safe-integer query limit, falling back to
|
|
22
|
+
* `defaultLimit` when `limit` is undefined. Throws on invalid input.
|
|
23
|
+
*/
|
|
12
24
|
function normalizeQueryLimit(limit, defaultLimit) {
|
|
13
25
|
if (limit === undefined) {
|
|
14
26
|
return defaultLimit;
|
package/dist/util/index.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isBunRuntime = exports.toSafeNumber = exports.normalizeQueryLimit = exports.toBoolOrUndef = exports.resolvePositive = exports.asString = exports.asOptionalString = exports.asOptionalNumber = exports.asOptionalBytes = exports.asNumber = exports.asBytes = exports.uint8Equal = exports.toBytesView = exports.hexToBytes = exports.bytesToHex = void 0;
|
|
3
|
+
exports.isBunRuntime = exports.toSafeNumber = exports.toError = exports.normalizeQueryLimit = exports.toBoolOrUndef = exports.resolvePositive = exports.asString = exports.asOptionalString = exports.asOptionalNumber = exports.asOptionalBytes = exports.asNumber = exports.asBytes = exports.uint8Equal = exports.toBytesView = exports.TEXT_DECODER = exports.hexToBytes = exports.decodeBase64Url = exports.bytesToHex = exports.bytesToBase64UrlSafe = exports.bytesToBase64 = exports.base64ToBytes = void 0;
|
|
4
4
|
var bytes_1 = require("./bytes");
|
|
5
|
+
Object.defineProperty(exports, "base64ToBytes", { enumerable: true, get: function () { return bytes_1.base64ToBytes; } });
|
|
6
|
+
Object.defineProperty(exports, "bytesToBase64", { enumerable: true, get: function () { return bytes_1.bytesToBase64; } });
|
|
7
|
+
Object.defineProperty(exports, "bytesToBase64UrlSafe", { enumerable: true, get: function () { return bytes_1.bytesToBase64UrlSafe; } });
|
|
5
8
|
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return bytes_1.bytesToHex; } });
|
|
9
|
+
Object.defineProperty(exports, "decodeBase64Url", { enumerable: true, get: function () { return bytes_1.decodeBase64Url; } });
|
|
6
10
|
Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return bytes_1.hexToBytes; } });
|
|
11
|
+
Object.defineProperty(exports, "TEXT_DECODER", { enumerable: true, get: function () { return bytes_1.TEXT_DECODER; } });
|
|
7
12
|
Object.defineProperty(exports, "toBytesView", { enumerable: true, get: function () { return bytes_1.toBytesView; } });
|
|
8
13
|
Object.defineProperty(exports, "uint8Equal", { enumerable: true, get: function () { return bytes_1.uint8Equal; } });
|
|
9
14
|
var coercion_1 = require("./coercion");
|
|
@@ -18,6 +23,7 @@ Object.defineProperty(exports, "toBoolOrUndef", { enumerable: true, get: functio
|
|
|
18
23
|
var collections_1 = require("./collections");
|
|
19
24
|
Object.defineProperty(exports, "normalizeQueryLimit", { enumerable: true, get: function () { return collections_1.normalizeQueryLimit; } });
|
|
20
25
|
var primitives_1 = require("./primitives");
|
|
26
|
+
Object.defineProperty(exports, "toError", { enumerable: true, get: function () { return primitives_1.toError; } });
|
|
21
27
|
Object.defineProperty(exports, "toSafeNumber", { enumerable: true, get: function () { return primitives_1.toSafeNumber; } });
|
|
22
28
|
var runtime_1 = require("./runtime");
|
|
23
29
|
Object.defineProperty(exports, "isBunRuntime", { enumerable: true, get: function () { return runtime_1.isBunRuntime; } });
|
package/dist/util/primitives.js
CHANGED
|
@@ -5,7 +5,15 @@ exports.toSafeNumber = toSafeNumber;
|
|
|
5
5
|
exports.longToNumber = longToNumber;
|
|
6
6
|
exports.normalizeNonNegativeInteger = normalizeNonNegativeInteger;
|
|
7
7
|
exports.parseOptionalInt = parseOptionalInt;
|
|
8
|
+
exports.parseOptionalSignedInt = parseOptionalSignedInt;
|
|
8
9
|
const DIGITS_ONLY_RE = /^\d+$/;
|
|
10
|
+
const SIGNED_DIGITS_RE = /^-?\d+$/;
|
|
11
|
+
/**
|
|
12
|
+
* Normalizes an unknown thrown value into an `Error` – `Error` instances are
|
|
13
|
+
* returned unchanged, strings/numbers are wrapped, and objects with `message`
|
|
14
|
+
* or `code` fields are mapped to readable messages. Use in `catch` blocks
|
|
15
|
+
* before logging.
|
|
16
|
+
*/
|
|
9
17
|
function toError(value) {
|
|
10
18
|
if (value instanceof Error)
|
|
11
19
|
return value;
|
|
@@ -32,6 +40,10 @@ function assertSafeInteger(value, field, nullishBehavior) {
|
|
|
32
40
|
const prefix = nullishBehavior === 'throw' ? `invalid ${field}` : 'invalid long numeric value';
|
|
33
41
|
throw new Error(`${prefix}: ${value}`);
|
|
34
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Coerces a `number` or `{ toNumber() }` (protobufjs `Long`) to a finite
|
|
45
|
+
* safe-integer. Throws on missing/non-numeric/out-of-range inputs.
|
|
46
|
+
*/
|
|
35
47
|
function toSafeNumber(value, field) {
|
|
36
48
|
if (value === null || value === undefined)
|
|
37
49
|
throw new Error(`missing ${field}`);
|
|
@@ -63,3 +75,11 @@ function parseOptionalInt(value) {
|
|
|
63
75
|
return undefined;
|
|
64
76
|
return parseStrictUnsignedInt(value);
|
|
65
77
|
}
|
|
78
|
+
function parseOptionalSignedInt(value) {
|
|
79
|
+
if (!value)
|
|
80
|
+
return undefined;
|
|
81
|
+
if (!SIGNED_DIGITS_RE.test(value))
|
|
82
|
+
return undefined;
|
|
83
|
+
const parsed = Number(value);
|
|
84
|
+
return Number.isSafeInteger(parsed) ? parsed : undefined;
|
|
85
|
+
}
|
package/dist/util/runtime.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getRuntimeOsDisplayName = getRuntimeOsDisplayName;
|
|
4
4
|
exports.isBunRuntime = isBunRuntime;
|
|
5
|
+
/**
|
|
6
|
+
* Returns a human-friendly OS name (`Windows` / `Mac OS` / `Linux`) for the
|
|
7
|
+
* current process, falling back to `process.platform` for other OSes.
|
|
8
|
+
*/
|
|
5
9
|
function getRuntimeOsDisplayName() {
|
|
6
10
|
switch (process.platform) {
|
|
7
11
|
case 'win32':
|
|
@@ -14,6 +18,7 @@ function getRuntimeOsDisplayName() {
|
|
|
14
18
|
return process.platform;
|
|
15
19
|
}
|
|
16
20
|
}
|
|
21
|
+
/** Returns `true` when running under the Bun runtime. */
|
|
17
22
|
function isBunRuntime() {
|
|
18
23
|
return typeof globalThis.Bun !== 'undefined';
|
|
19
24
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WA_VERSION = void 0;
|
|
4
|
+
var version_1 = require("../spec/version");
|
|
5
|
+
Object.defineProperty(exports, "WA_VERSION", { enumerable: true, get: function () { return version_1.WA_VERSION; } });
|
package/package.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zapo-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "High-performance WhatsApp Web TypeScript library",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "vinikjkkj <contact@vinicius.email> (https://github.com/vinikjkkj)",
|
|
5
7
|
"funding": {
|
|
6
8
|
"type": "github",
|
|
7
9
|
"url": "https://github.com/sponsors/vinikjkkj"
|
|
@@ -99,8 +101,15 @@
|
|
|
99
101
|
},
|
|
100
102
|
"files": [
|
|
101
103
|
"dist",
|
|
102
|
-
"proto/index.js",
|
|
103
|
-
"proto/index.d.ts",
|
|
104
|
+
"spec/proto/index.js",
|
|
105
|
+
"spec/proto/index.d.ts",
|
|
106
|
+
"spec/mex/index.js",
|
|
107
|
+
"spec/mex/index.d.ts",
|
|
108
|
+
"spec/appstate/index.js",
|
|
109
|
+
"spec/appstate/index.d.ts",
|
|
110
|
+
"spec/version/version.json",
|
|
111
|
+
"spec/version/index.js",
|
|
112
|
+
"spec/version/index.d.ts",
|
|
104
113
|
"scripts/check-node-version.cjs"
|
|
105
114
|
],
|
|
106
115
|
"workspaces": [
|
|
@@ -111,6 +120,7 @@
|
|
|
111
120
|
},
|
|
112
121
|
"scripts": {
|
|
113
122
|
"preinstall": "node ./scripts/check-node-version.cjs",
|
|
123
|
+
"prepack": "npm run build",
|
|
114
124
|
"changeset": "changeset",
|
|
115
125
|
"changeset:status": "changeset status --verbose",
|
|
116
126
|
"version:packages": "changeset version",
|
|
@@ -119,7 +129,7 @@
|
|
|
119
129
|
"build:cjs": "tsc -p tsconfig.build.cjs.json && tsc-alias -p tsconfig.build.cjs.json",
|
|
120
130
|
"build:esm": "tsc -p tsconfig.build.esm.json && tsc-alias -p tsconfig.build.esm.json",
|
|
121
131
|
"build:types": "tsc -p tsconfig.build.types.json && tsc-alias -p tsconfig.build.types.json",
|
|
122
|
-
"build:esm:finalize": "node ./scripts/finalize-esm-build.cjs",
|
|
132
|
+
"build:esm:finalize": "node ./scripts/finalize-esm-build.cjs --proto-bridge",
|
|
123
133
|
"build": "npm run clean && npm run build:cjs && npm run build:esm && npm run build:types && npm run build:esm:finalize",
|
|
124
134
|
"build:packages": "turbo run build",
|
|
125
135
|
"proto:generate": "node ./scripts/generate-proto.cjs",
|
|
@@ -140,20 +150,23 @@
|
|
|
140
150
|
"test:coverage": "npm run test:structure && c8 --all --include \"src/**/*.ts\" --exclude \"src/**/*.d.ts\" --exclude \"src/**/__tests__/**\" --exclude \"src/**/types.ts\" --exclude \"src/store/contracts/**/*.ts\" --reporter text --reporter html --reporter lcov node --import tsx --test --test-skip-pattern \"\\\\[flow\\\\]\" \"src/**/__tests__/**/*.test.ts\"",
|
|
141
151
|
"test:coverage:open": "node -e \"require('node:child_process').execSync(process.platform === 'win32' ? 'start coverage\\\\index.html' : process.platform === 'darwin' ? 'open coverage/index.html' : 'xdg-open coverage/index.html', { stdio: 'inherit' })\"",
|
|
142
152
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
153
|
+
"typecheck:examples": "tsc -p examples/tsconfig.json",
|
|
154
|
+
"typecheck:bench": "tsc -p bench/tsconfig.json",
|
|
143
155
|
"typecheck:packages": "turbo run typecheck",
|
|
156
|
+
"typecheck:all": "npm run typecheck && npm run typecheck:examples && npm run typecheck:bench && npm run typecheck:packages",
|
|
144
157
|
"lint": "eslint . --ext .ts,.js,.cjs",
|
|
145
158
|
"lint:fix": "eslint . --ext .ts,.js,.cjs --fix",
|
|
146
159
|
"format": "prettier . --write",
|
|
147
160
|
"format:check": "prettier . --check"
|
|
148
161
|
},
|
|
149
162
|
"peerDependencies": {
|
|
150
|
-
"
|
|
163
|
+
"argo-codec": "^0.2.1",
|
|
151
164
|
"pino": "^9.0.0",
|
|
152
165
|
"pino-pretty": "^13.0.0",
|
|
153
|
-
"ws": "^8.
|
|
166
|
+
"ws": "^8.20.1"
|
|
154
167
|
},
|
|
155
168
|
"peerDependenciesMeta": {
|
|
156
|
-
"
|
|
169
|
+
"argo-codec": {
|
|
157
170
|
"optional": true
|
|
158
171
|
},
|
|
159
172
|
"pino": {
|
|
@@ -171,20 +184,33 @@
|
|
|
171
184
|
"@types/node": "^22.13.14",
|
|
172
185
|
"@types/ws": "^8.18.1",
|
|
173
186
|
"@typescript-eslint/parser": "^8.56.1",
|
|
174
|
-
"@vinikjkkj/eslint-config": "
|
|
187
|
+
"@vinikjkkj/eslint-config": "1.0.2",
|
|
188
|
+
"argo-codec": "^0.2.1",
|
|
175
189
|
"better-sqlite3": "^12.6.2",
|
|
176
190
|
"c8": "^11.0.0",
|
|
177
191
|
"eslint": "^9.39.4",
|
|
192
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
178
193
|
"eslint-plugin-import": "^2.32.0",
|
|
179
|
-
"
|
|
194
|
+
"eslint-plugin-n": "^17.24.0",
|
|
180
195
|
"pino": "^10.3.1",
|
|
181
196
|
"pino-pretty": "^13.1.3",
|
|
182
197
|
"prettier": "^3.8.1",
|
|
183
198
|
"tsc-alias": "^1.8.16",
|
|
184
199
|
"tsx": "^4.20.6",
|
|
185
|
-
"turbo": "^2.
|
|
200
|
+
"turbo": "^2.9.14",
|
|
186
201
|
"typescript": "^5.7.3",
|
|
187
202
|
"typescript-eslint": "^8.56.1",
|
|
188
|
-
"ws": "^8.
|
|
203
|
+
"ws": "^8.20.1"
|
|
204
|
+
},
|
|
205
|
+
"overrides": {
|
|
206
|
+
"ws": "^8.20.1",
|
|
207
|
+
"qs": "6.15.2",
|
|
208
|
+
"flatted": "^3.4.2",
|
|
209
|
+
"picomatch@<2.3.2": "2.3.2",
|
|
210
|
+
"picomatch@4": "^4.0.4",
|
|
211
|
+
"brace-expansion@1": "1.1.13",
|
|
212
|
+
"brace-expansion@2": "^2.0.3",
|
|
213
|
+
"brace-expansion@4": "^4.0.2",
|
|
214
|
+
"brace-expansion@5": "^5.0.6"
|
|
189
215
|
}
|
|
190
216
|
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
// AUTO-GENERATED — do not edit. Regenerated daily by wa-spec.
|
|
2
|
+
// WhatsApp Version: 2.3000.1040072419
|
|
3
|
+
|
|
4
|
+
export type WaAppstateCollection = 'regular' | 'regular_low' | 'regular_high' | 'critical_block' | 'critical_unblock_low'
|
|
5
|
+
|
|
6
|
+
export type WaAppstateScope =
|
|
7
|
+
| 'account'
|
|
8
|
+
| 'chat'
|
|
9
|
+
| 'chatOrContact'
|
|
10
|
+
| 'message'
|
|
11
|
+
| 'chatMessageRange'
|
|
12
|
+
|
|
13
|
+
// Discriminated union — `type` narrows the shape:
|
|
14
|
+
// - 'literal' fixed `value` (the action wire name, position 0)
|
|
15
|
+
// - 'jid' WhatsApp JID string (`<user>@<domain>`, legacy-encoded)
|
|
16
|
+
// - 'boolString' '0' or '1' — WA's mutation-index bool encoding
|
|
17
|
+
// - 'jidOrZero' participant slot in message scope — JID, or literal '0'
|
|
18
|
+
// when fromMe is true or participant is null
|
|
19
|
+
// - 'enum' stringified protobuf-enum integer; `protoEnum` is the
|
|
20
|
+
// enum's nested path inside SyncActionValue (e.g.
|
|
21
|
+
// `SettingsSyncAction.SettingKey`), look it up in
|
|
22
|
+
// @vinikjkkj/wa-proto for the value set.
|
|
23
|
+
// - 'string' opaque identifier (msg id, label id, agent id, etc.)
|
|
24
|
+
// - 'unknown' unrecognised slot (fallback)
|
|
25
|
+
export type WaAppstateIndexPart =
|
|
26
|
+
| { readonly type: 'literal'; readonly value: string }
|
|
27
|
+
| { readonly type: 'jid'; readonly name: string }
|
|
28
|
+
| { readonly type: 'boolString'; readonly name: string }
|
|
29
|
+
| { readonly type: 'jidOrZero'; readonly name: string }
|
|
30
|
+
| { readonly type: 'enum'; readonly name: string; readonly protoEnum: string }
|
|
31
|
+
| { readonly type: 'string'; readonly name: string }
|
|
32
|
+
| { readonly type: 'unknown'; readonly name: string }
|
|
33
|
+
|
|
34
|
+
export type WaAppstateValueEnumFields = Readonly<Record<string, string>>
|
|
35
|
+
|
|
36
|
+
export interface WaAppstateSchema<
|
|
37
|
+
Name extends string = string,
|
|
38
|
+
Collection extends WaAppstateCollection = WaAppstateCollection,
|
|
39
|
+
Scope extends WaAppstateScope = WaAppstateScope,
|
|
40
|
+
ValueField extends string | null = string | null,
|
|
41
|
+
ValueProtoType extends string | null = string | null,
|
|
42
|
+
ValueEnumFields extends WaAppstateValueEnumFields | null = WaAppstateValueEnumFields | null,
|
|
43
|
+
IndexParts extends ReadonlyArray<WaAppstateIndexPart> = ReadonlyArray<WaAppstateIndexPart>
|
|
44
|
+
> {
|
|
45
|
+
readonly name: Name
|
|
46
|
+
readonly collection: Collection
|
|
47
|
+
readonly version: number
|
|
48
|
+
readonly scope: Scope
|
|
49
|
+
readonly valueField: ValueField
|
|
50
|
+
// Dotted path to the value's protobuf message inside @vinikjkkj/wa-proto's
|
|
51
|
+
// `waproto` namespace. Nested types under SyncActionValue read as
|
|
52
|
+
// `SyncActionValue.<X>` (most actions); top-level types (e.g.
|
|
53
|
+
// `ChatLockSettings`, `DeviceCapabilities`) read as just `<X>`.
|
|
54
|
+
// Resolve with a `GetByPath`-style helper to obtain the typed value.
|
|
55
|
+
readonly valueProtoType: ValueProtoType
|
|
56
|
+
// For every enum-typed field inside the value message, a dotted path to
|
|
57
|
+
// the enum inside `waproto.SyncActionValue` (e.g. `StatusPrivacyAction.
|
|
58
|
+
// StatusDistributionMode`). Lets a typed-mutation API surface enum
|
|
59
|
+
// string literals (`'ALLOW_LIST'`) instead of magic integers (`1`).
|
|
60
|
+
// `null` when the value message has no enum fields.
|
|
61
|
+
readonly valueEnumFields: ValueEnumFields
|
|
62
|
+
readonly indexParts: IndexParts
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export declare const WA_APPSTATE_COLLECTIONS: ReadonlyArray<WaAppstateCollection>
|
|
66
|
+
|
|
67
|
+
export declare const WA_APPSTATE_SCHEMAS: {
|
|
68
|
+
readonly AdsCtwaPerCustomerDataSharing: WaAppstateSchema<'ctwaPerCustomerDataSharing', 'regular_high', 'account', 'ctwaPerCustomerDataSharingAction', 'SyncActionValue.CtwaPerCustomerDataSharingAction', null, readonly [{ readonly type: 'literal'; readonly value: 'ctwaPerCustomerDataSharing' }, { readonly type: 'string'; readonly name: 'accountLid' }]>
|
|
69
|
+
readonly Agent: WaAppstateSchema<'deviceAgent', 'regular', 'account', 'agentAction', 'SyncActionValue.AgentAction', null, readonly [{ readonly type: 'literal'; readonly value: 'deviceAgent' }, { readonly type: 'string'; readonly name: 'agentId' }]>
|
|
70
|
+
readonly AiThreadDelete: WaAppstateSchema<'ai_thread_delete', 'regular_high', 'chat', null, null, null, readonly [{ readonly type: 'literal'; readonly value: 'ai_thread_delete' }, { readonly type: 'jid'; readonly name: 'chatJid' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
71
|
+
readonly AiThreadPin: WaAppstateSchema<'thread_pin', 'regular_low', 'chat', 'threadPinAction', 'SyncActionValue.ThreadPinAction', null, readonly [{ readonly type: 'literal'; readonly value: 'thread_pin' }, { readonly type: 'jid'; readonly name: 'chatJid' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
72
|
+
readonly AiThreadRename: WaAppstateSchema<'ai_thread_rename', 'regular_low', 'chat', 'aiThreadRenameAction', 'SyncActionValue.AiThreadRenameAction', null, readonly [{ readonly type: 'literal'; readonly value: 'ai_thread_rename' }, { readonly type: 'jid'; readonly name: 'chatJid' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
73
|
+
readonly AndroidUnsupportedActions: WaAppstateSchema<'android_unsupported_actions', 'regular_low', 'account', 'androidUnsupportedActions', 'SyncActionValue.AndroidUnsupportedActions', null, readonly [{ readonly type: 'literal'; readonly value: 'android_unsupported_actions' }]>
|
|
74
|
+
readonly Archive: WaAppstateSchema<'archive', 'regular_low', 'chatMessageRange', 'archiveChatAction', 'SyncActionValue.ArchiveChatAction', null, readonly [{ readonly type: 'literal'; readonly value: 'archive' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
75
|
+
readonly AvatarUpdated: WaAppstateSchema<'avatar_updated_action', 'regular', 'account', 'avatarUpdatedAction', 'SyncActionValue.AvatarUpdatedAction', { readonly 'eventType': 'AvatarUpdatedAction.AvatarEventType' }, readonly [{ readonly type: 'literal'; readonly value: 'avatar_updated_action' }]>
|
|
76
|
+
readonly BizAiSettingsNudge: WaAppstateSchema<'biz_ai_settings_nudge', 'regular_high', 'account', 'bizAiSettingsNudgeAction', 'SyncActionValue.BizAISettingsNudgeAction', { readonly 'category': 'BizAISettingsNudgeAction.BizAISettingsCategory' }, readonly [{ readonly type: 'literal'; readonly value: 'biz_ai_settings_nudge' }]>
|
|
77
|
+
readonly BotWelcomeRequest: WaAppstateSchema<'bot_welcome_request', 'regular_low', 'chat', 'botWelcomeRequestAction', 'SyncActionValue.BotWelcomeRequestAction', null, readonly [{ readonly type: 'literal'; readonly value: 'bot_welcome_request' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
78
|
+
readonly BusinessBroadcastCampaign: WaAppstateSchema<'business_broadcast_campaign', 'regular', 'account', 'businessBroadcastCampaignAction', 'SyncActionValue.BusinessBroadcastCampaignAction', { readonly 'status': 'BusinessBroadcastCampaignStatus' }, readonly [{ readonly type: 'literal'; readonly value: 'business_broadcast_campaign' }, { readonly type: 'string'; readonly name: 'campaign' }]>
|
|
79
|
+
readonly BusinessBroadcastInsights: WaAppstateSchema<'business_broadcast_insights_sync', 'regular', 'account', 'businessBroadcastInsightsAction', 'SyncActionValue.BusinessBroadcastInsightsAction', null, readonly [{ readonly type: 'literal'; readonly value: 'business_broadcast_insights_sync' }, { readonly type: 'string'; readonly name: 'campaign' }]>
|
|
80
|
+
readonly BusinessBroadcastList: WaAppstateSchema<'business_broadcast_list', 'regular', 'account', 'businessBroadcastListAction', 'SyncActionValue.BusinessBroadcastListAction', null, readonly [{ readonly type: 'literal'; readonly value: 'business_broadcast_list' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
81
|
+
readonly CallLog: WaAppstateSchema<'call_log', 'regular', 'account', 'callLogAction', 'SyncActionValue.CallLogAction', { readonly 'callLogRecord.callResult': 'CallLogRecord.CallResult'; readonly 'callLogRecord.silenceReason': 'CallLogRecord.SilenceReason'; readonly 'callLogRecord.participants.callResult': 'CallLogRecord.CallResult'; readonly 'callLogRecord.callType': 'CallLogRecord.CallType' }, readonly [{ readonly type: 'literal'; readonly value: 'call_log' }]>
|
|
82
|
+
readonly ChatAssignment: WaAppstateSchema<'agentChatAssignment', 'regular', 'chat', 'chatAssignment', 'SyncActionValue.ChatAssignmentAction', null, readonly [{ readonly type: 'literal'; readonly value: 'agentChatAssignment' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
83
|
+
readonly ChatAssignmentOpenedStatus: WaAppstateSchema<'agentChatAssignmentOpenedStatus', 'regular', 'chat', 'chatAssignmentOpenedStatus', 'SyncActionValue.ChatAssignmentOpenedStatusAction', null, readonly [{ readonly type: 'literal'; readonly value: 'agentChatAssignmentOpenedStatus' }, { readonly type: 'jid'; readonly name: 'chatJid' }, { readonly type: 'string'; readonly name: 'agentId' }]>
|
|
84
|
+
readonly ChatLockSettings: WaAppstateSchema<'setting_chatLock', 'regular_low', 'account', 'chatLockSettings', 'ChatLockSettings', null, readonly [{ readonly type: 'literal'; readonly value: 'setting_chatLock' }]>
|
|
85
|
+
readonly ClearChat: WaAppstateSchema<'clearChat', 'regular_high', 'chatMessageRange', 'clearChatAction', 'SyncActionValue.ClearChatAction', null, readonly [{ readonly type: 'literal'; readonly value: 'clearChat' }, { readonly type: 'jid'; readonly name: 'chatJid' }, { readonly type: 'string'; readonly name: 'deleteStarred' }, { readonly type: 'string'; readonly name: 'deleteMedia' }]>
|
|
86
|
+
readonly Contact: WaAppstateSchema<'contact', 'critical_unblock_low', 'account', 'contactAction', 'SyncActionValue.ContactAction', null, readonly [{ readonly type: 'literal'; readonly value: 'contact' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
87
|
+
readonly CustomPaymentMethods: WaAppstateSchema<'custom_payment_methods', 'regular_low', 'account', 'customPaymentMethodsAction', 'SyncActionValue.CustomPaymentMethodsAction', null, readonly [{ readonly type: 'literal'; readonly value: 'custom_payment_methods' }]>
|
|
88
|
+
readonly CustomerData: WaAppstateSchema<'customer_data', 'regular_low', 'account', 'customerDataAction', 'SyncActionValue.CustomerDataAction', null, readonly [{ readonly type: 'literal'; readonly value: 'customer_data' }, { readonly type: 'string'; readonly name: 'chatJid' }]>
|
|
89
|
+
readonly DeleteChat: WaAppstateSchema<'deleteChat', 'regular_high', 'chatMessageRange', 'deleteChatAction', 'SyncActionValue.DeleteChatAction', null, readonly [{ readonly type: 'literal'; readonly value: 'deleteChat' }, { readonly type: 'jid'; readonly name: 'chatJid' }, { readonly type: 'string'; readonly name: 'deleteMedia' }]>
|
|
90
|
+
readonly DeleteMessageForMe: WaAppstateSchema<'deleteMessageForMe', 'regular_high', 'message', 'deleteMessageForMeAction', 'SyncActionValue.DeleteMessageForMeAction', null, readonly [{ readonly type: 'literal'; readonly value: 'deleteMessageForMe' }, { readonly type: 'jid'; readonly name: 'remote' }, { readonly type: 'string'; readonly name: 'id' }, { readonly type: 'boolString'; readonly name: 'fromMe' }, { readonly type: 'jidOrZero'; readonly name: 'participant' }]>
|
|
91
|
+
readonly DetectedOutcomeStatus: WaAppstateSchema<'detected_outcomes_status_action', 'regular', 'account', 'detectedOutcomesStatusAction', 'SyncActionValue.DetectedOutcomesStatusAction', null, readonly [{ readonly type: 'literal'; readonly value: 'detected_outcomes_status_action' }]>
|
|
92
|
+
readonly DeviceCapabilities: WaAppstateSchema<'device_capabilities', 'regular_low', 'account', 'deviceCapabilities', 'DeviceCapabilities', null, readonly [{ readonly type: 'literal'; readonly value: 'device_capabilities' }]>
|
|
93
|
+
readonly DisableLinkPreviews: WaAppstateSchema<'setting_disableLinkPreviews', 'regular', 'account', 'privacySettingDisableLinkPreviewsAction', 'SyncActionValue.PrivacySettingDisableLinkPreviewsAction', null, readonly [{ readonly type: 'literal'; readonly value: 'setting_disableLinkPreviews' }]>
|
|
94
|
+
readonly ExternalWebBeta: WaAppstateSchema<'external_web_beta', 'regular', 'account', 'externalWebBetaAction', 'SyncActionValue.ExternalWebBetaAction', null, readonly [{ readonly type: 'literal'; readonly value: 'external_web_beta' }]>
|
|
95
|
+
readonly FavoriteSticker: WaAppstateSchema<'favoriteSticker', 'regular_low', 'account', 'stickerAction', 'SyncActionValue.StickerAction', null, readonly [{ readonly type: 'literal'; readonly value: 'favoriteSticker' }, { readonly type: 'string'; readonly name: 'filehash' }]>
|
|
96
|
+
readonly Favorites: WaAppstateSchema<'favorites', 'regular_high', 'account', 'favoritesAction', 'SyncActionValue.FavoritesAction', null, readonly [{ readonly type: 'literal'; readonly value: 'favorites' }]>
|
|
97
|
+
readonly InteractiveMessageAction: WaAppstateSchema<'interactive_message_action', 'regular_low', 'message', 'interactiveMessageAction', 'SyncActionValue.InteractiveMessageAction', { readonly 'type': 'InteractiveMessageAction.InteractiveMessageActionMode' }, readonly [{ readonly type: 'literal'; readonly value: 'interactive_message_action' }, { readonly type: 'jid'; readonly name: 'remote' }, { readonly type: 'string'; readonly name: 'id' }, { readonly type: 'boolString'; readonly name: 'fromMe' }, { readonly type: 'jidOrZero'; readonly name: 'participant' }, { readonly type: 'string'; readonly name: 'arg5' }]>
|
|
98
|
+
readonly LabelEdit: WaAppstateSchema<'label_edit', 'regular', 'account', 'labelEditAction', 'SyncActionValue.LabelEditAction', { readonly 'type': 'LabelEditAction.ListType' }, readonly [{ readonly type: 'literal'; readonly value: 'label_edit' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
99
|
+
readonly LabelJid: WaAppstateSchema<'label_jid', 'regular', 'chatOrContact', 'labelAssociationAction', 'SyncActionValue.LabelAssociationAction', null, readonly [{ readonly type: 'literal'; readonly value: 'label_jid' }, { readonly type: 'string'; readonly name: 'labelId' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
100
|
+
readonly LabelReordering: WaAppstateSchema<'label_reordering', 'regular', 'account', 'labelReorderingAction', 'SyncActionValue.LabelReorderingAction', null, readonly [{ readonly type: 'literal'; readonly value: 'label_reordering' }]>
|
|
101
|
+
readonly LidContact: WaAppstateSchema<'lid_contact', 'critical_unblock_low', 'account', 'lidContactAction', 'SyncActionValue.LidContactAction', null, readonly [{ readonly type: 'literal'; readonly value: 'lid_contact' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
102
|
+
readonly LocaleSetting: WaAppstateSchema<'setting_locale', 'critical_block', 'account', 'localeSetting', 'SyncActionValue.LocaleSetting', null, readonly [{ readonly type: 'literal'; readonly value: 'setting_locale' }]>
|
|
103
|
+
readonly LockChat: WaAppstateSchema<'lock', 'regular_low', 'chat', 'lockChatAction', 'SyncActionValue.LockChatAction', null, readonly [{ readonly type: 'literal'; readonly value: 'lock' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
104
|
+
readonly MarkChatAsRead: WaAppstateSchema<'markChatAsRead', 'regular_low', 'chatMessageRange', 'markChatAsReadAction', 'SyncActionValue.MarkChatAsReadAction', null, readonly [{ readonly type: 'literal'; readonly value: 'markChatAsRead' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
105
|
+
readonly MarketingMessage: WaAppstateSchema<'marketingMessage', 'regular', 'account', 'marketingMessageAction', 'SyncActionValue.MarketingMessageAction', { readonly 'type': 'MarketingMessageAction.MarketingMessagePrototypeType' }, readonly [{ readonly type: 'literal'; readonly value: 'marketingMessage' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
106
|
+
readonly MarketingMessageBroadcast: WaAppstateSchema<'marketingMessageBroadcast', 'regular', 'account', null, null, null, readonly [{ readonly type: 'literal'; readonly value: 'marketingMessageBroadcast' }, { readonly type: 'string'; readonly name: 'premiumMessageId' }, { readonly type: 'string'; readonly name: 'messageId' }]>
|
|
107
|
+
readonly MerchantPaymentPartner: WaAppstateSchema<'merchant_payment_partner', 'regular_low', 'account', 'merchantPaymentPartnerAction', 'SyncActionValue.MerchantPaymentPartnerAction', { readonly 'status': 'MerchantPaymentPartnerAction.Status' }, readonly [{ readonly type: 'literal'; readonly value: 'merchant_payment_partner' }]>
|
|
108
|
+
readonly Mute: WaAppstateSchema<'mute', 'regular_high', 'chat', 'muteAction', 'SyncActionValue.MuteAction', null, readonly [{ readonly type: 'literal'; readonly value: 'mute' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
109
|
+
readonly NctSaltSync: WaAppstateSchema<'nct_salt_sync', 'regular_high', 'account', 'nctSaltSyncAction', 'SyncActionValue.NctSaltSyncAction', null, readonly [{ readonly type: 'literal'; readonly value: 'nct_salt_sync' }]>
|
|
110
|
+
readonly NoteEdit: WaAppstateSchema<'note_edit', 'regular_low', 'account', 'noteEditAction', 'SyncActionValue.NoteEditAction', { readonly 'type': 'NoteEditAction.NoteType' }, readonly [{ readonly type: 'literal'; readonly value: 'note_edit' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
111
|
+
readonly Nux: WaAppstateSchema<'nux', 'regular_low', 'account', 'nuxAction', 'SyncActionValue.NuxAction', null, readonly [{ readonly type: 'literal'; readonly value: 'nux' }, { readonly type: 'string'; readonly name: 'nuxKey' }]>
|
|
112
|
+
readonly OutContact: WaAppstateSchema<'out_contact', 'regular_low', 'account', 'outContactAction', 'SyncActionValue.OutContactAction', null, readonly [{ readonly type: 'literal'; readonly value: 'out_contact' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
113
|
+
readonly PaymentInfo: WaAppstateSchema<'payment_info', 'regular_low', 'account', 'paymentInfoAction', 'SyncActionValue.PaymentInfoAction', null, readonly [{ readonly type: 'literal'; readonly value: 'payment_info' }]>
|
|
114
|
+
readonly PaymentTos: WaAppstateSchema<'payment_tos', 'regular_low', 'account', 'paymentTosAction', 'SyncActionValue.PaymentTosAction', { readonly 'paymentNotice': 'PaymentTosAction.PaymentNotice' }, readonly [{ readonly type: 'literal'; readonly value: 'payment_tos' }]>
|
|
115
|
+
readonly Pin: WaAppstateSchema<'pin_v1', 'regular_low', 'chat', 'pinAction', 'SyncActionValue.PinAction', null, readonly [{ readonly type: 'literal'; readonly value: 'pin_v1' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
116
|
+
readonly PnForLidChat: WaAppstateSchema<'pnForLidChat', 'regular', 'account', 'pnForLidChatAction', 'SyncActionValue.PnForLidChatAction', null, readonly [{ readonly type: 'literal'; readonly value: 'pnForLidChat' }, { readonly type: 'string'; readonly name: 'lid' }]>
|
|
117
|
+
readonly PrimaryFeature: WaAppstateSchema<'primary_feature', 'regular', 'account', 'primaryFeature', 'SyncActionValue.PrimaryFeature', null, readonly [{ readonly type: 'literal'; readonly value: 'primary_feature' }]>
|
|
118
|
+
readonly PrimaryVersion: WaAppstateSchema<'primary_version', 'regular_low', 'account', 'primaryVersionAction', 'SyncActionValue.PrimaryVersionAction', null, readonly [{ readonly type: 'literal'; readonly value: 'primary_version' }, { readonly type: 'string'; readonly name: 'key1' }]>
|
|
119
|
+
readonly QuickReply: WaAppstateSchema<'quick_reply', 'regular', 'account', 'quickReplyAction', 'SyncActionValue.QuickReplyAction', null, readonly [{ readonly type: 'literal'; readonly value: 'quick_reply' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
120
|
+
readonly RemoveRecentSticker: WaAppstateSchema<'removeRecentSticker', 'regular_low', 'account', 'removeRecentStickerAction', 'SyncActionValue.RemoveRecentStickerAction', null, readonly [{ readonly type: 'literal'; readonly value: 'removeRecentSticker' }, { readonly type: 'string'; readonly name: 'filehash' }]>
|
|
121
|
+
readonly Sentinel: WaAppstateSchema<'sentinel', 'regular_low', 'account', 'keyExpiration', 'SyncActionValue.KeyExpiration', null, readonly [{ readonly type: 'literal'; readonly value: 'sentinel' }]>
|
|
122
|
+
readonly SettingPushName: WaAppstateSchema<'setting_pushName', 'critical_block', 'account', 'pushNameSetting', 'SyncActionValue.PushNameSetting', null, readonly [{ readonly type: 'literal'; readonly value: 'setting_pushName' }]>
|
|
123
|
+
readonly SettingsSync: WaAppstateSchema<'settings_sync', 'regular_low', 'account', 'settingsSyncAction', 'SyncActionValue.SettingsSyncAction', { readonly 'bannerNotificationDisplayMode': 'SettingsSyncAction.DisplayMode'; readonly 'unreadCounterBadgeDisplayMode': 'SettingsSyncAction.DisplayMode'; readonly 'mediaUploadQuality': 'SettingsSyncAction.MediaQualitySetting' }, readonly [{ readonly type: 'literal'; readonly value: 'settings_sync' }, { readonly type: 'enum'; readonly name: 'settingPlatform'; readonly protoEnum: 'SettingsSyncAction.SettingPlatform' }, { readonly type: 'enum'; readonly name: 'settingKey'; readonly protoEnum: 'SettingsSyncAction.SettingKey' }, { readonly type: 'jid'; readonly name: 'chatJid' }]>
|
|
124
|
+
readonly ShareOwnPn: WaAppstateSchema<'shareOwnPn', 'regular', 'account', null, null, null, readonly [{ readonly type: 'literal'; readonly value: 'shareOwnPn' }, { readonly type: 'string'; readonly name: 'lid' }]>
|
|
125
|
+
readonly Star: WaAppstateSchema<'star', 'regular_high', 'message', 'starAction', 'SyncActionValue.StarAction', null, readonly [{ readonly type: 'literal'; readonly value: 'star' }, { readonly type: 'jid'; readonly name: 'remote' }, { readonly type: 'string'; readonly name: 'id' }, { readonly type: 'boolString'; readonly name: 'fromMe' }, { readonly type: 'jidOrZero'; readonly name: 'participant' }]>
|
|
126
|
+
readonly StatusPrivacy: WaAppstateSchema<'status_privacy', 'regular_high', 'account', 'statusPrivacy', 'SyncActionValue.StatusPrivacyAction', { readonly 'mode': 'StatusPrivacyAction.StatusDistributionMode'; readonly 'modes': 'StatusPrivacyAction.StatusDistributionMode' }, readonly [{ readonly type: 'literal'; readonly value: 'status_privacy' }]>
|
|
127
|
+
readonly SubscriptionsSyncV2: WaAppstateSchema<'subscriptions_sync_v2', 'regular', 'account', 'subscriptionsSyncV2Action', 'SyncActionValue.SubscriptionsSyncV2Action', null, readonly [{ readonly type: 'literal'; readonly value: 'subscriptions_sync_v2' }]>
|
|
128
|
+
readonly TimeFormat: WaAppstateSchema<'time_format', 'regular_low', 'account', 'timeFormatAction', 'SyncActionValue.TimeFormatAction', null, readonly [{ readonly type: 'literal'; readonly value: 'time_format' }]>
|
|
129
|
+
readonly UnarchiveChatsSetting: WaAppstateSchema<'setting_unarchiveChats', 'regular_low', 'account', 'unarchiveChatsSetting', 'SyncActionValue.UnarchiveChatsSetting', null, readonly [{ readonly type: 'literal'; readonly value: 'setting_unarchiveChats' }]>
|
|
130
|
+
readonly UserStatusMute: WaAppstateSchema<'userStatusMute', 'regular_high', 'account', 'userStatusMuteAction', 'SyncActionValue.UserStatusMuteAction', null, readonly [{ readonly type: 'literal'; readonly value: 'userStatusMute' }, { readonly type: 'string'; readonly name: 'id' }]>
|
|
131
|
+
readonly VoipRelayAllCalls: WaAppstateSchema<'setting_relayAllCalls', 'regular', 'account', 'privacySettingRelayAllCalls', 'SyncActionValue.PrivacySettingRelayAllCalls', null, readonly [{ readonly type: 'literal'; readonly value: 'setting_relayAllCalls' }]>
|
|
132
|
+
readonly WaffleAccountLinkState: WaAppstateSchema<'waffle_account_link_state', 'regular_high', 'account', 'waffleAccountLinkStateAction', 'SyncActionValue.WaffleAccountLinkStateAction', { readonly 'linkState': 'WaffleAccountLinkStateAction.AccountLinkState' }, readonly [{ readonly type: 'literal'; readonly value: 'waffle_account_link_state' }]>
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export type WaAppstateActionKey = keyof typeof WA_APPSTATE_SCHEMAS
|
|
136
|
+
|
|
137
|
+
// --- Derived helpers ------------------------------------------------------
|
|
138
|
+
|
|
139
|
+
// Turn a schema's `indexParts` tuple into the runtime value tuple — the
|
|
140
|
+
// array you'd `JSON.stringify` to produce the wire-level index string.
|
|
141
|
+
// Literals are pinned to their constant value; boolString slots widen to
|
|
142
|
+
// '0' | '1' (WA encodes mutation-index booleans this way — see
|
|
143
|
+
// WAWebSyncdUtils.constructMsgKeySegments). The wire format on the bus
|
|
144
|
+
// is `JSON.stringify(WaAppstateIndexValueOf<S>)`.
|
|
145
|
+
//
|
|
146
|
+
// WaAppstateIndexValueOf<typeof WA_APPSTATE_SCHEMAS.Mute>
|
|
147
|
+
// → readonly ['mute', string]
|
|
148
|
+
// WaAppstateIndexValueOf<typeof WA_APPSTATE_SCHEMAS.Star>
|
|
149
|
+
// → readonly ['star', string, string, '0' | '1', string]
|
|
150
|
+
export type WaAppstateIndexValueOf<S> = S extends {
|
|
151
|
+
indexParts: infer P extends ReadonlyArray<WaAppstateIndexPart>
|
|
152
|
+
}
|
|
153
|
+
? {
|
|
154
|
+
readonly [K in keyof P]: P[K] extends { type: 'literal'; value: infer V }
|
|
155
|
+
? V
|
|
156
|
+
: P[K] extends { type: 'boolString' }
|
|
157
|
+
? '0' | '1'
|
|
158
|
+
: string
|
|
159
|
+
}
|
|
160
|
+
: never
|
|
161
|
+
|
|
162
|
+
// Turn a schema's `indexParts` tuple into the keyword args object — what
|
|
163
|
+
// a typed builder would accept. Literal slots are auto-filled by the
|
|
164
|
+
// builder and dropped from the args; non-literals contribute their `name`.
|
|
165
|
+
// boolString slots take a JS boolean (encoder writes '0'/'1'); jidOrZero
|
|
166
|
+
// slots take `string | null` (encoder writes '0' when null or when
|
|
167
|
+
// fromMe is true).
|
|
168
|
+
//
|
|
169
|
+
// WaAppstateIndexArgs<'Mute'> → { readonly chatJid: string }
|
|
170
|
+
// WaAppstateIndexArgs<'Star'> → {
|
|
171
|
+
// readonly remote: string
|
|
172
|
+
// readonly id: string
|
|
173
|
+
// readonly fromMe: boolean
|
|
174
|
+
// readonly participant: string | null
|
|
175
|
+
// }
|
|
176
|
+
export type WaAppstateIndexArgs<K extends WaAppstateActionKey> = {
|
|
177
|
+
readonly [Part in (typeof WA_APPSTATE_SCHEMAS)[K]['indexParts'][number] as Part extends {
|
|
178
|
+
type: 'literal'
|
|
179
|
+
}
|
|
180
|
+
? never
|
|
181
|
+
: Part extends { name: infer N extends string }
|
|
182
|
+
? N
|
|
183
|
+
: never]: Part extends { type: 'boolString' }
|
|
184
|
+
? boolean
|
|
185
|
+
: Part extends { type: 'jidOrZero' }
|
|
186
|
+
? string | null
|
|
187
|
+
: string
|
|
188
|
+
}
|