zapo-js 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -4
- package/dist/appstate/WaAppStateCrypto.js +19 -26
- package/dist/appstate/WaAppStateSyncClient.js +293 -181
- package/dist/appstate/WaAppStateSyncResponseParser.js +16 -5
- package/dist/appstate/constants.js +4 -3
- package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
- package/dist/appstate/index.js +8 -6
- package/dist/appstate/utils.js +9 -34
- package/dist/auth/WaAuthClient.js +43 -61
- package/dist/auth/flow/WaAuthCredentialsFlow.js +22 -15
- package/dist/auth/index.js +1 -8
- package/dist/auth/pairing/WaPairingCodeCrypto.js +6 -4
- package/dist/auth/pairing/WaPairingFlow.js +34 -26
- package/dist/auth/pairing/WaQrFlow.js +37 -24
- package/dist/client/WaClient.js +275 -324
- package/dist/client/WaClientFactory.js +500 -133
- package/dist/client/connection/WaConnectionManager.js +301 -0
- package/dist/client/connection/WaKeyShareCoordinator.js +63 -0
- package/dist/client/connection/WaReceiptQueue.js +51 -0
- package/dist/client/coordinators/WaAppStateMutationCoordinator.js +471 -0
- package/dist/client/coordinators/WaBusinessCoordinator.js +241 -0
- package/dist/client/coordinators/WaGroupCoordinator.js +30 -16
- package/dist/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
- package/dist/client/coordinators/WaMessageDispatchCoordinator.js +439 -701
- package/dist/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
- package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
- package/dist/client/coordinators/WaProfileCoordinator.js +212 -0
- package/dist/client/coordinators/WaRetryCoordinator.js +242 -57
- package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
- package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +166 -0
- package/dist/client/dirty.js +74 -48
- package/dist/client/events/chat.js +4 -3
- package/dist/client/events/devices.js +72 -0
- package/dist/client/events/group.js +62 -47
- package/dist/client/events/identity.js +22 -0
- package/dist/client/events/privacy-token.js +39 -0
- package/dist/client/history-sync.js +94 -63
- package/dist/client/incoming.js +60 -27
- package/dist/client/mailbox.js +24 -23
- package/dist/client/messages.js +107 -31
- package/dist/client/messaging/fanout.js +199 -0
- package/dist/client/messaging/key-protocol.js +130 -0
- package/dist/client/messaging/participants.js +193 -0
- package/dist/client/persistence/WriteBehindPersistence.js +129 -0
- package/dist/client/tokens/cs-token.js +50 -0
- package/dist/client/tokens/tc-token.js +25 -0
- package/dist/crypto/core/hkdf.js +3 -8
- package/dist/crypto/core/index.js +2 -5
- package/dist/crypto/core/keys.js +6 -7
- package/dist/crypto/core/nonce.js +2 -0
- package/dist/crypto/core/primitives.js +12 -23
- package/dist/crypto/core/random.js +26 -23
- package/dist/crypto/curves/Ed25519.js +7 -8
- package/dist/crypto/curves/X25519.js +38 -22
- package/dist/crypto/index.js +1 -3
- package/dist/crypto/math/constants.js +13 -36
- package/dist/crypto/math/edwards.js +171 -44
- package/dist/crypto/math/fe.js +706 -0
- package/dist/crypto/math/mod.js +10 -3
- package/dist/esm/appstate/WaAppStateCrypto.js +7 -14
- package/dist/esm/appstate/WaAppStateSyncClient.js +284 -172
- package/dist/esm/appstate/WaAppStateSyncResponseParser.js +17 -6
- package/dist/esm/appstate/constants.js +3 -2
- package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
- package/dist/esm/appstate/index.js +2 -2
- package/dist/esm/appstate/utils.js +8 -30
- package/dist/esm/auth/WaAuthClient.js +43 -61
- package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +22 -15
- package/dist/esm/auth/index.js +0 -3
- package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +6 -4
- package/dist/esm/auth/pairing/WaPairingFlow.js +28 -20
- package/dist/esm/auth/pairing/WaQrFlow.js +37 -24
- package/dist/esm/client/WaClient.js +275 -324
- package/dist/esm/client/WaClientFactory.js +501 -134
- package/dist/esm/client/connection/WaConnectionManager.js +297 -0
- package/dist/esm/client/connection/WaKeyShareCoordinator.js +59 -0
- package/dist/esm/client/connection/WaReceiptQueue.js +47 -0
- package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +467 -0
- package/dist/esm/client/coordinators/WaBusinessCoordinator.js +238 -0
- package/dist/esm/client/coordinators/WaGroupCoordinator.js +23 -9
- package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
- package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +443 -705
- package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
- package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
- package/dist/esm/client/coordinators/WaProfileCoordinator.js +209 -0
- package/dist/esm/client/coordinators/WaRetryCoordinator.js +244 -59
- package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
- package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +162 -0
- package/dist/esm/client/dirty.js +69 -43
- package/dist/esm/client/events/chat.js +4 -3
- package/dist/esm/client/events/devices.js +68 -0
- package/dist/esm/client/events/group.js +53 -39
- package/dist/esm/client/events/identity.js +19 -0
- package/dist/esm/client/events/privacy-token.js +36 -0
- package/dist/esm/client/history-sync.js +91 -60
- package/dist/esm/client/incoming.js +61 -28
- package/dist/esm/client/mailbox.js +24 -23
- package/dist/esm/client/messages.js +108 -32
- package/dist/esm/client/messaging/fanout.js +196 -0
- package/dist/esm/client/messaging/key-protocol.js +127 -0
- package/dist/esm/client/messaging/participants.js +190 -0
- package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
- package/dist/esm/client/tokens/cs-token.js +46 -0
- package/dist/esm/client/tokens/tc-token.js +18 -0
- package/dist/esm/crypto/core/hkdf.js +3 -8
- package/dist/esm/crypto/core/index.js +2 -3
- package/dist/esm/crypto/core/keys.js +3 -4
- package/dist/esm/crypto/core/nonce.js +2 -0
- package/dist/esm/crypto/core/primitives.js +12 -22
- package/dist/esm/crypto/core/random.js +25 -23
- package/dist/esm/crypto/curves/Ed25519.js +4 -5
- package/dist/esm/crypto/curves/X25519.js +35 -19
- package/dist/esm/crypto/index.js +0 -1
- package/dist/esm/crypto/math/constants.js +12 -35
- package/dist/esm/crypto/math/edwards.js +174 -47
- package/dist/esm/crypto/math/fe.js +691 -0
- package/dist/esm/crypto/math/mod.js +10 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/infra/log/ConsoleLogger.js +18 -17
- package/dist/esm/infra/log/PinoLogger.js +15 -9
- package/dist/esm/infra/log/types.js +11 -1
- package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
- package/dist/esm/infra/perf/BoundedTaskQueue.js +16 -18
- package/dist/esm/infra/perf/PromiseDedup.js +20 -0
- package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
- package/dist/esm/infra/perf/StoreLock.js +77 -0
- package/dist/esm/media/WaMediaCrypto.js +96 -16
- package/dist/esm/media/WaMediaTransferClient.js +251 -91
- package/dist/esm/media/conn.js +10 -6
- package/dist/esm/media/constants.js +6 -2
- package/dist/esm/message/WaMessageClient.js +30 -32
- package/dist/esm/message/ack.js +6 -6
- package/dist/esm/message/addon-crypto.js +59 -0
- package/dist/esm/message/content.js +195 -9
- package/dist/esm/message/icdc.js +76 -0
- package/dist/esm/message/incoming.js +129 -122
- package/dist/esm/message/index.js +2 -0
- package/dist/esm/message/phash.js +3 -1
- package/dist/esm/message/reporting-token.js +425 -0
- package/dist/esm/message/use-case-secret.js +49 -0
- package/dist/esm/protocol/appstate.js +27 -0
- package/dist/esm/protocol/browser.js +10 -18
- package/dist/esm/protocol/constants.js +6 -3
- package/dist/esm/protocol/defaults.js +6 -0
- package/dist/esm/protocol/index.js +2 -11
- package/dist/esm/protocol/jid.js +133 -52
- package/dist/esm/protocol/media.js +3 -3
- package/dist/esm/protocol/message.js +61 -1
- package/dist/esm/protocol/nodes.js +4 -0
- package/dist/esm/protocol/notification.js +3 -1
- package/dist/esm/protocol/privacy-token.js +17 -0
- package/dist/esm/protocol/privacy.js +55 -0
- package/dist/esm/protocol/stream.js +26 -1
- package/dist/esm/protocol/usync.js +11 -0
- package/dist/esm/retry/codec.js +216 -0
- package/dist/esm/retry/constants.js +1 -1
- package/dist/esm/retry/index.js +3 -2
- package/dist/esm/retry/parse.js +88 -86
- package/dist/esm/retry/replay.js +54 -51
- package/dist/esm/retry/tracker.js +94 -0
- package/dist/esm/signal/api/SignalDeviceSyncApi.js +276 -92
- package/dist/esm/signal/api/SignalDigestSyncApi.js +17 -8
- package/dist/esm/signal/api/SignalIdentitySyncApi.js +67 -37
- package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +86 -67
- package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
- package/dist/esm/signal/api/SignalSessionSyncApi.js +36 -34
- package/dist/esm/signal/api/result-map.js +10 -0
- package/dist/esm/signal/constants.js +0 -4
- package/dist/esm/signal/crypto/WaAdvSignature.js +13 -9
- package/dist/esm/signal/{store/sqlite.js → encoding.js} +93 -60
- package/dist/esm/signal/group/SenderKeyChain.js +28 -23
- package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
- package/dist/esm/signal/group/SenderKeyManager.js +144 -115
- package/dist/esm/signal/index.js +2 -0
- package/dist/esm/signal/registration/keygen.js +6 -2
- package/dist/esm/signal/registration/utils.js +1 -0
- package/dist/esm/signal/session/SignalProtocol.js +164 -53
- package/dist/esm/signal/session/SignalRatchet.js +24 -15
- package/dist/esm/signal/session/SignalSession.js +14 -9
- package/dist/esm/signal/session/resolver.js +221 -0
- package/dist/esm/store/contracts/privacy-token.store.js +1 -0
- package/dist/esm/store/createStore.js +100 -188
- package/dist/esm/store/index.js +1 -10
- package/dist/esm/store/locks/appstate.lock.js +26 -0
- package/dist/esm/store/locks/auth.lock.js +15 -0
- package/dist/esm/store/locks/contact.lock.js +20 -0
- package/dist/esm/store/locks/device-list.lock.js +20 -0
- package/dist/esm/store/locks/message.lock.js +21 -0
- package/dist/esm/store/locks/participants.lock.js +20 -0
- package/dist/esm/store/locks/privacy-token.lock.js +18 -0
- package/dist/esm/store/locks/retry.lock.js +29 -0
- package/dist/esm/store/locks/sender-key.lock.js +52 -0
- package/dist/esm/store/locks/signal.lock.js +63 -0
- package/dist/esm/store/locks/thread.lock.js +21 -0
- package/dist/esm/store/noop.store.js +4 -7
- package/dist/esm/store/providers/memory/appstate.store.js +38 -16
- package/dist/esm/store/providers/memory/contact.store.js +5 -0
- package/dist/esm/store/providers/memory/device-list.store.js +12 -34
- package/dist/esm/store/providers/memory/message.store.js +11 -5
- package/dist/esm/store/providers/memory/participants.store.js +1 -8
- package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
- package/dist/esm/store/providers/memory/retry.store.js +77 -2
- package/dist/esm/store/providers/memory/sender-key.store.js +11 -8
- package/dist/esm/store/providers/memory/signal.store.js +47 -18
- package/dist/esm/store/providers/memory/thread.store.js +5 -0
- package/dist/esm/transport/WaComms.js +28 -24
- package/dist/esm/transport/WaWebSocket.js +115 -18
- package/dist/esm/transport/binary/constants.js +0 -30
- package/dist/esm/transport/binary/decoder.js +8 -8
- package/dist/esm/transport/binary/encoder.js +10 -9
- package/dist/esm/transport/binary/index.js +0 -1
- package/dist/esm/transport/index.js +1 -0
- package/dist/esm/transport/keepalive/WaKeepAlive.js +2 -8
- package/dist/esm/transport/node/WaNodeOrchestrator.js +25 -21
- package/dist/esm/transport/node/WaNodeTransport.js +0 -3
- package/dist/esm/transport/node/builders/{accountSync.js → account-sync.js} +16 -36
- package/dist/esm/transport/node/builders/business.js +129 -0
- package/dist/esm/transport/node/builders/global.js +370 -0
- package/dist/esm/transport/node/builders/index.js +7 -3
- package/dist/esm/transport/node/builders/message.js +63 -230
- package/dist/esm/transport/node/builders/pairing.js +2 -27
- package/dist/esm/transport/node/builders/privacy-token.js +41 -0
- package/dist/esm/transport/node/builders/privacy.js +48 -0
- package/dist/esm/transport/node/builders/profile.js +70 -0
- package/dist/esm/transport/node/builders/retry.js +10 -22
- package/dist/esm/transport/node/builders/usync.js +45 -0
- package/dist/esm/transport/node/helpers.js +125 -5
- package/dist/esm/transport/node/usync.js +5 -0
- package/dist/esm/transport/node/xml.js +35 -14
- package/dist/esm/transport/noise/WaClientPayload.js +10 -10
- package/dist/esm/transport/noise/WaFrameCodec.js +48 -33
- package/dist/esm/transport/noise/WaNoiseCert.js +4 -7
- package/dist/esm/transport/noise/WaNoiseSession.js +77 -29
- package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
- package/dist/esm/transport/proxy.js +27 -0
- package/dist/esm/transport/stream/parse.js +17 -48
- package/dist/esm/util/bytes.js +67 -45
- package/dist/esm/util/coercion.js +6 -14
- package/dist/esm/util/index.js +5 -0
- package/dist/esm/util/primitives.js +40 -14
- package/dist/index.js +7 -1
- package/dist/infra/log/ConsoleLogger.js +18 -17
- package/dist/infra/log/PinoLogger.js +15 -9
- package/dist/infra/log/types.js +12 -0
- package/dist/infra/perf/BackgroundQueue.js +482 -0
- package/dist/infra/perf/BoundedTaskQueue.js +16 -18
- package/dist/infra/perf/PromiseDedup.js +24 -0
- package/dist/infra/perf/SharedExclusiveGate.js +113 -0
- package/dist/infra/perf/StoreLock.js +81 -0
- package/dist/media/WaMediaCrypto.js +95 -15
- package/dist/media/WaMediaTransferClient.js +284 -91
- package/dist/media/conn.js +10 -6
- package/dist/media/constants.js +6 -2
- package/dist/message/WaMessageClient.js +31 -33
- package/dist/message/ack.js +6 -6
- package/dist/message/addon-crypto.js +65 -0
- package/dist/message/content.js +198 -9
- package/dist/message/icdc.js +81 -0
- package/dist/message/incoming.js +127 -120
- package/dist/message/index.js +2 -0
- package/dist/message/phash.js +3 -1
- package/dist/message/reporting-token.js +429 -0
- package/dist/message/use-case-secret.js +55 -0
- package/dist/protocol/appstate.js +28 -1
- package/dist/protocol/browser.js +10 -18
- package/dist/protocol/constants.js +26 -1
- package/dist/protocol/defaults.js +6 -0
- package/dist/protocol/index.js +23 -42
- package/dist/protocol/jid.js +140 -52
- package/dist/protocol/media.js +3 -3
- package/dist/protocol/message.js +62 -2
- package/dist/protocol/nodes.js +4 -0
- package/dist/protocol/notification.js +3 -1
- package/dist/protocol/privacy-token.js +20 -0
- package/dist/protocol/privacy.js +58 -0
- package/dist/protocol/stream.js +27 -2
- package/dist/protocol/usync.js +14 -0
- package/dist/retry/codec.js +220 -0
- package/dist/retry/constants.js +1 -1
- package/dist/retry/index.js +7 -5
- package/dist/retry/parse.js +88 -85
- package/dist/retry/replay.js +52 -49
- package/dist/retry/tracker.js +97 -0
- package/dist/signal/api/SignalDeviceSyncApi.js +273 -89
- package/dist/signal/api/SignalDigestSyncApi.js +17 -8
- package/dist/signal/api/SignalIdentitySyncApi.js +66 -36
- package/dist/signal/api/SignalMissingPreKeysSyncApi.js +82 -63
- package/dist/signal/api/SignalRotateKeyApi.js +4 -2
- package/dist/signal/api/SignalSessionSyncApi.js +36 -34
- package/dist/signal/api/result-map.js +13 -0
- package/dist/signal/constants.js +1 -5
- package/dist/signal/crypto/WaAdvSignature.js +11 -7
- package/dist/signal/{store/sqlite.js → encoding.js} +94 -61
- package/dist/signal/group/SenderKeyChain.js +27 -22
- package/dist/signal/group/SenderKeyCodec.js +5 -6
- package/dist/signal/group/SenderKeyManager.js +144 -115
- package/dist/signal/index.js +15 -1
- package/dist/signal/registration/keygen.js +6 -2
- package/dist/signal/registration/utils.js +1 -0
- package/dist/signal/session/SignalProtocol.js +164 -53
- package/dist/signal/session/SignalRatchet.js +24 -15
- package/dist/signal/session/SignalSession.js +14 -9
- package/dist/signal/session/resolver.js +224 -0
- package/dist/store/contracts/privacy-token.store.js +2 -0
- package/dist/store/createStore.js +100 -188
- package/dist/store/index.js +15 -33
- package/dist/store/locks/appstate.lock.js +29 -0
- package/dist/store/locks/auth.lock.js +18 -0
- package/dist/store/locks/contact.lock.js +23 -0
- package/dist/store/locks/device-list.lock.js +23 -0
- package/dist/store/locks/message.lock.js +24 -0
- package/dist/store/locks/participants.lock.js +23 -0
- package/dist/store/locks/privacy-token.lock.js +21 -0
- package/dist/store/locks/retry.lock.js +32 -0
- package/dist/store/locks/sender-key.lock.js +55 -0
- package/dist/store/locks/signal.lock.js +66 -0
- package/dist/store/locks/thread.lock.js +24 -0
- package/dist/store/noop.store.js +4 -7
- package/dist/store/providers/memory/appstate.store.js +36 -14
- package/dist/store/providers/memory/contact.store.js +5 -0
- package/dist/store/providers/memory/device-list.store.js +12 -34
- package/dist/store/providers/memory/message.store.js +11 -5
- package/dist/store/providers/memory/participants.store.js +1 -8
- package/dist/store/providers/memory/privacy-token.store.js +47 -0
- package/dist/store/providers/memory/retry.store.js +77 -2
- package/dist/store/providers/memory/sender-key.store.js +14 -11
- package/dist/store/providers/memory/signal.store.js +54 -25
- package/dist/store/providers/memory/thread.store.js +5 -0
- package/dist/transport/WaComms.js +30 -26
- package/dist/transport/WaWebSocket.js +148 -18
- package/dist/transport/binary/constants.js +1 -31
- package/dist/transport/binary/decoder.js +8 -8
- package/dist/transport/binary/encoder.js +10 -9
- package/dist/transport/binary/index.js +0 -4
- package/dist/transport/index.js +7 -1
- package/dist/transport/keepalive/WaKeepAlive.js +1 -7
- package/dist/transport/node/WaNodeOrchestrator.js +25 -21
- package/dist/transport/node/WaNodeTransport.js +0 -3
- package/dist/transport/node/builders/{accountSync.js → account-sync.js} +15 -35
- package/dist/transport/node/builders/business.js +137 -0
- package/dist/transport/node/builders/global.js +375 -0
- package/dist/transport/node/builders/index.js +29 -17
- package/dist/transport/node/builders/message.js +64 -236
- package/dist/transport/node/builders/pairing.js +2 -29
- package/dist/transport/node/builders/privacy-token.js +46 -0
- package/dist/transport/node/builders/privacy.js +55 -0
- package/dist/transport/node/builders/profile.js +78 -0
- package/dist/transport/node/builders/retry.js +9 -21
- package/dist/transport/node/builders/usync.js +49 -0
- package/dist/transport/node/helpers.js +131 -4
- package/dist/transport/node/usync.js +8 -0
- package/dist/transport/node/xml.js +35 -14
- package/dist/transport/noise/WaClientPayload.js +13 -13
- package/dist/transport/noise/WaFrameCodec.js +47 -32
- package/dist/transport/noise/WaNoiseCert.js +5 -8
- package/dist/transport/noise/WaNoiseSession.js +77 -29
- package/dist/transport/noise/WaNoiseSocket.js +8 -4
- package/dist/transport/proxy.js +34 -0
- package/dist/transport/stream/parse.js +20 -52
- package/dist/types/appstate/WaAppStateCrypto.d.ts +0 -1
- package/dist/types/appstate/WaAppStateSyncClient.d.ts +5 -2
- package/dist/types/appstate/constants.d.ts +1 -0
- package/dist/types/appstate/encoding.d.ts +7 -0
- package/dist/types/appstate/index.d.ts +3 -3
- package/dist/types/appstate/utils.d.ts +0 -3
- package/dist/types/auth/WaAuthClient.d.ts +10 -12
- package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +1 -1
- package/dist/types/auth/index.d.ts +0 -4
- package/dist/types/auth/pairing/WaQrFlow.d.ts +1 -1
- package/dist/types/auth/types.d.ts +7 -9
- package/dist/types/client/WaClient.d.ts +42 -25
- package/dist/types/client/WaClientFactory.d.ts +33 -26
- package/dist/types/client/connection/WaConnectionManager.d.ts +66 -0
- package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +14 -0
- package/dist/types/client/connection/WaReceiptQueue.d.ts +13 -0
- package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +46 -0
- package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
- package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +3 -2
- package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -38
- package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -0
- package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
- package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +36 -0
- package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +8 -0
- package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
- package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +45 -0
- package/dist/types/client/dirty.d.ts +1 -0
- package/dist/types/client/events/devices.d.ts +20 -0
- package/dist/types/client/events/group.d.ts +2 -1
- package/dist/types/client/events/identity.d.ts +9 -0
- package/dist/types/client/events/privacy-token.d.ts +7 -0
- package/dist/types/client/history-sync.d.ts +9 -6
- package/dist/types/client/incoming.d.ts +3 -1
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/mailbox.d.ts +3 -5
- package/dist/types/client/messages.d.ts +1 -2
- package/dist/types/client/messaging/fanout.d.ts +14 -0
- package/dist/types/client/messaging/key-protocol.d.ts +18 -0
- package/dist/types/client/messaging/participants.d.ts +13 -0
- package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
- package/dist/types/client/tokens/cs-token.d.ts +10 -0
- package/dist/types/client/tokens/tc-token.d.ts +5 -0
- package/dist/types/client/types.d.ts +75 -4
- package/dist/types/crypto/core/hkdf.d.ts +0 -6
- package/dist/types/crypto/core/index.d.ts +2 -3
- package/dist/types/crypto/core/nonce.d.ts +2 -0
- package/dist/types/crypto/core/primitives.d.ts +0 -1
- package/dist/types/crypto/core/random.d.ts +2 -7
- package/dist/types/crypto/index.d.ts +0 -1
- package/dist/types/crypto/math/constants.d.ts +4 -2
- package/dist/types/crypto/math/fe.d.ts +30 -0
- package/dist/types/crypto/math/mod.d.ts +0 -2
- package/dist/types/crypto/math/types.d.ts +11 -4
- package/dist/types/index.d.ts +5 -3
- package/dist/types/infra/log/ConsoleLogger.d.ts +2 -1
- package/dist/types/infra/log/PinoLogger.d.ts +1 -1
- package/dist/types/infra/log/types.d.ts +1 -0
- package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
- package/dist/types/infra/perf/BoundedTaskQueue.d.ts +1 -1
- package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
- package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
- package/dist/types/infra/perf/StoreLock.d.ts +10 -0
- package/dist/types/media/WaMediaCrypto.d.ts +3 -2
- package/dist/types/media/WaMediaTransferClient.d.ts +16 -15
- package/dist/types/media/constants.d.ts +1 -1
- package/dist/types/media/index.d.ts +1 -1
- package/dist/types/media/types.d.ts +15 -2
- package/dist/types/message/addon-crypto.d.ts +25 -0
- package/dist/types/message/content.d.ts +8 -0
- package/dist/types/message/icdc.d.ts +13 -0
- package/dist/types/message/index.d.ts +2 -0
- package/dist/types/message/reporting-token.d.ts +18 -0
- package/dist/types/message/types.d.ts +45 -6
- package/dist/types/message/use-case-secret.d.ts +20 -0
- package/dist/types/protocol/appstate.d.ts +47 -0
- package/dist/types/protocol/constants.d.ts +8 -3
- package/dist/types/protocol/defaults.d.ts +6 -0
- package/dist/types/protocol/index.d.ts +2 -11
- package/dist/types/protocol/jid.d.ts +22 -5
- package/dist/types/protocol/message.d.ts +60 -0
- package/dist/types/protocol/nodes.d.ts +4 -0
- package/dist/types/protocol/notification.d.ts +2 -0
- package/dist/types/protocol/privacy-token.d.ts +17 -0
- package/dist/types/protocol/privacy.d.ts +75 -0
- package/dist/types/protocol/stream.d.ts +30 -0
- package/dist/types/protocol/usync.d.ts +11 -0
- package/dist/types/retry/codec.d.ts +3 -0
- package/dist/types/retry/index.d.ts +4 -3
- package/dist/types/retry/parse.d.ts +5 -2
- package/dist/types/retry/replay.d.ts +0 -4
- package/dist/types/retry/tracker.d.ts +20 -0
- package/dist/types/retry/types.d.ts +10 -4
- package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +15 -2
- package/dist/types/signal/api/SignalDigestSyncApi.d.ts +6 -0
- package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +2 -0
- package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
- package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
- package/dist/types/signal/api/result-map.d.ts +1 -0
- package/dist/types/signal/constants.d.ts +0 -3
- package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +3 -3
- package/dist/types/signal/group/SenderKeyCodec.d.ts +4 -6
- package/dist/types/signal/group/SenderKeyManager.d.ts +10 -5
- package/dist/types/signal/index.d.ts +3 -0
- package/dist/types/signal/session/SignalProtocol.d.ts +19 -4
- package/dist/types/signal/session/resolver.d.ts +22 -0
- package/dist/types/store/contracts/appstate.store.d.ts +4 -1
- package/dist/types/store/contracts/contact.store.d.ts +1 -0
- package/dist/types/store/contracts/device-list.store.d.ts +0 -3
- package/dist/types/store/contracts/message.store.d.ts +1 -0
- package/dist/types/store/contracts/participants.store.d.ts +0 -1
- package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
- package/dist/types/store/contracts/retry.store.d.ts +7 -0
- package/dist/types/store/contracts/sender-key.store.d.ts +0 -1
- package/dist/types/store/contracts/signal.store.d.ts +13 -0
- package/dist/types/store/contracts/thread.store.d.ts +1 -0
- package/dist/types/store/createStore.d.ts +1 -1
- package/dist/types/store/index.d.ts +5 -13
- package/dist/types/store/locks/appstate.lock.d.ts +3 -0
- package/dist/types/store/locks/auth.lock.d.ts +3 -0
- package/dist/types/store/locks/contact.lock.d.ts +3 -0
- package/dist/types/store/locks/device-list.lock.d.ts +2 -0
- package/dist/types/store/locks/message.lock.d.ts +3 -0
- package/dist/types/store/locks/participants.lock.d.ts +2 -0
- package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
- package/dist/types/store/locks/retry.lock.d.ts +2 -0
- package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
- package/dist/types/store/locks/signal.lock.d.ts +3 -0
- package/dist/types/store/locks/thread.lock.d.ts +3 -0
- package/dist/types/store/providers/memory/appstate.store.d.ts +3 -1
- package/dist/types/store/providers/memory/contact.store.d.ts +1 -0
- package/dist/types/store/providers/memory/device-list.store.d.ts +0 -3
- package/dist/types/store/providers/memory/message.store.d.ts +1 -0
- package/dist/types/store/providers/memory/participants.store.d.ts +0 -1
- package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
- package/dist/types/store/providers/memory/retry.store.d.ts +8 -0
- package/dist/types/store/providers/memory/sender-key.store.d.ts +0 -1
- package/dist/types/store/providers/memory/signal.store.d.ts +8 -1
- package/dist/types/store/providers/memory/thread.store.d.ts +1 -0
- package/dist/types/store/types.d.ts +49 -58
- package/dist/types/transport/WaWebSocket.d.ts +3 -1
- package/dist/types/transport/binary/constants.d.ts +0 -30
- package/dist/types/transport/binary/index.d.ts +0 -1
- package/dist/types/transport/index.d.ts +2 -1
- package/dist/types/transport/keepalive/WaKeepAlive.d.ts +0 -1
- package/dist/types/transport/node/WaNodeOrchestrator.d.ts +3 -4
- package/dist/types/transport/node/WaNodeTransport.d.ts +0 -9
- package/dist/types/transport/node/builders/business.d.ts +29 -0
- package/dist/types/transport/node/builders/global.d.ts +102 -0
- package/dist/types/transport/node/builders/group.d.ts +4 -6
- package/dist/types/transport/node/builders/index.d.ts +7 -3
- package/dist/types/transport/node/builders/message.d.ts +20 -30
- package/dist/types/transport/node/builders/pairing.d.ts +0 -2
- package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
- package/dist/types/transport/node/builders/privacy.d.ts +7 -0
- package/dist/types/transport/node/builders/profile.d.ts +8 -0
- package/dist/types/transport/node/builders/retry.d.ts +2 -5
- package/dist/types/transport/node/builders/usync.d.ts +21 -0
- package/dist/types/transport/node/helpers.d.ts +13 -0
- package/dist/types/transport/node/usync.d.ts +2 -0
- package/dist/types/transport/noise/WaFrameCodec.d.ts +3 -0
- package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
- package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
- package/dist/types/transport/proxy.d.ts +6 -0
- package/dist/types/transport/stream/parse.d.ts +0 -1
- package/dist/types/transport/types.d.ts +18 -1
- package/dist/types/util/bytes.d.ts +5 -0
- package/dist/types/util/index.d.ts +5 -0
- package/dist/types/util/primitives.d.ts +2 -0
- package/dist/util/bytes.js +72 -46
- package/dist/util/coercion.js +6 -14
- package/dist/util/index.js +23 -0
- package/dist/util/primitives.js +42 -14
- package/package.json +52 -9
- package/proto/index.js +1 -1
- package/dist/crypto/core/constants.js +0 -4
- package/dist/crypto/core/encoding.js +0 -29
- package/dist/esm/crypto/core/constants.js +0 -1
- package/dist/esm/crypto/core/encoding.js +0 -25
- package/dist/esm/retry/outbound.js +0 -83
- package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
- package/dist/esm/store/providers/sqlite/appstate.store.js +0 -169
- package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
- package/dist/esm/store/providers/sqlite/connection.js +0 -240
- package/dist/esm/store/providers/sqlite/contact.store.js +0 -61
- package/dist/esm/store/providers/sqlite/device-list.store.js +0 -155
- package/dist/esm/store/providers/sqlite/message.store.js +0 -119
- package/dist/esm/store/providers/sqlite/migrations.js +0 -347
- package/dist/esm/store/providers/sqlite/participants.store.js +0 -85
- package/dist/esm/store/providers/sqlite/retry.store.js +0 -144
- package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -203
- package/dist/esm/store/providers/sqlite/signal.store.js +0 -353
- package/dist/esm/store/providers/sqlite/thread.store.js +0 -72
- package/dist/esm/util/base64.js +0 -18
- package/dist/esm/util/signal-address.js +0 -5
- package/dist/retry/outbound.js +0 -88
- package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
- package/dist/store/providers/sqlite/appstate.store.js +0 -173
- package/dist/store/providers/sqlite/auth.store.js +0 -180
- package/dist/store/providers/sqlite/connection.js +0 -276
- package/dist/store/providers/sqlite/contact.store.js +0 -65
- package/dist/store/providers/sqlite/device-list.store.js +0 -159
- package/dist/store/providers/sqlite/message.store.js +0 -123
- package/dist/store/providers/sqlite/migrations.js +0 -350
- package/dist/store/providers/sqlite/participants.store.js +0 -89
- package/dist/store/providers/sqlite/retry.store.js +0 -148
- package/dist/store/providers/sqlite/sender-key.store.js +0 -207
- package/dist/store/providers/sqlite/signal.store.js +0 -357
- package/dist/store/providers/sqlite/thread.store.js +0 -76
- package/dist/types/appstate/store/sqlite.d.ts +0 -21
- package/dist/types/crypto/core/constants.d.ts +0 -1
- package/dist/types/crypto/core/encoding.d.ts +0 -11
- package/dist/types/retry/outbound.d.ts +0 -4
- package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
- package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -15
- package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
- package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
- package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -10
- package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -18
- package/dist/types/store/providers/sqlite/message.store.d.ts +0 -11
- package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
- package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -13
- package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -16
- package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -25
- package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -46
- package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -11
- package/dist/types/util/base64.d.ts +0 -4
- package/dist/types/util/signal-address.d.ts +0 -2
- package/dist/util/base64.js +0 -24
- package/dist/util/signal-address.js +0 -8
- /package/dist/types/transport/node/builders/{accountSync.d.ts → account-sync.d.ts} +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { WaProfilePictureType } from '../../transport/node/builders/profile';
|
|
2
|
+
import type { BinaryNode } from '../../transport/types';
|
|
3
|
+
export interface WaProfilePictureResult {
|
|
4
|
+
readonly url?: string;
|
|
5
|
+
readonly directPath?: string;
|
|
6
|
+
readonly id?: string;
|
|
7
|
+
readonly type?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface WaProfileStatusResult {
|
|
10
|
+
readonly status: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface WaProfileInfo {
|
|
13
|
+
readonly jid: string;
|
|
14
|
+
readonly pictureId?: number;
|
|
15
|
+
readonly status?: string | null;
|
|
16
|
+
}
|
|
17
|
+
export interface WaDisappearingModeResult {
|
|
18
|
+
readonly duration: number;
|
|
19
|
+
readonly timestamp: number;
|
|
20
|
+
readonly ephemeralityDisabled?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface WaProfileCoordinator {
|
|
23
|
+
readonly getProfilePicture: (jid: string, type?: WaProfilePictureType, existingId?: string) => Promise<WaProfilePictureResult>;
|
|
24
|
+
readonly setProfilePicture: (imageBytes: Uint8Array, targetJid?: string) => Promise<string | null>;
|
|
25
|
+
readonly deleteProfilePicture: (targetJid?: string) => Promise<void>;
|
|
26
|
+
readonly getStatus: (jid: string) => Promise<WaProfileStatusResult>;
|
|
27
|
+
readonly setStatus: (text: string) => Promise<void>;
|
|
28
|
+
readonly getProfiles: (jids: readonly string[]) => Promise<readonly WaProfileInfo[]>;
|
|
29
|
+
readonly getDisappearingMode: (jids: readonly string[]) => Promise<readonly WaDisappearingModeResult[]>;
|
|
30
|
+
}
|
|
31
|
+
interface WaProfileCoordinatorOptions {
|
|
32
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
33
|
+
readonly generateSid: () => Promise<string>;
|
|
34
|
+
}
|
|
35
|
+
export declare function createProfileCoordinator(options: WaProfileCoordinatorOptions): WaProfileCoordinator;
|
|
36
|
+
export {};
|
|
@@ -38,6 +38,8 @@ export declare class WaRetryCoordinator {
|
|
|
38
38
|
private readonly getCurrentMeLid;
|
|
39
39
|
private readonly getCurrentSignedIdentity;
|
|
40
40
|
private readonly retryProcessingByMessageId;
|
|
41
|
+
private readonly retrySessionBaseKeys;
|
|
42
|
+
private nextRetryCleanupAtMs;
|
|
41
43
|
constructor(options: WaRetryCoordinatorOptions);
|
|
42
44
|
onDecryptFailure(context: WaRetryDecryptFailureContext, error: unknown): Promise<boolean>;
|
|
43
45
|
handleIncomingRetryReceipt(receiptNode: BinaryNode): Promise<void>;
|
|
@@ -51,11 +53,17 @@ export declare class WaRetryCoordinator {
|
|
|
51
53
|
private runRetryTaskSerialized;
|
|
52
54
|
private buildRetryKeysSection;
|
|
53
55
|
private updateLocalSessionFromRetryRequest;
|
|
56
|
+
private applySessionBaseKeyPolicy;
|
|
54
57
|
private markRetryRequesterSenderKeyAsStale;
|
|
55
58
|
private fetchMissingPreKeysSession;
|
|
56
59
|
private authorizeRetryRequest;
|
|
57
60
|
private isRequesterAuthorizedDevice;
|
|
58
61
|
private mapOutboundStateFromReceiptType;
|
|
59
62
|
private sendRetryAckSafe;
|
|
63
|
+
private maybeCleanupRetryStore;
|
|
64
|
+
private retrySessionBaseKeyMapKey;
|
|
65
|
+
private setRetrySessionBaseKey;
|
|
66
|
+
private getRetrySessionBaseKey;
|
|
67
|
+
private cleanupRetrySessionBaseKeys;
|
|
60
68
|
}
|
|
61
69
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Logger } from '../../infra/log/types';
|
|
2
|
+
import type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason } from '../../protocol/stream';
|
|
2
3
|
import type { WaStreamControlNodeResult } from '../../transport/stream/parse';
|
|
3
4
|
import type { WaComms } from '../../transport/WaComms';
|
|
4
5
|
interface WaStreamControlCoordinatorOptions {
|
|
@@ -6,9 +7,9 @@ interface WaStreamControlCoordinatorOptions {
|
|
|
6
7
|
readonly getComms: () => WaComms | null;
|
|
7
8
|
readonly clearPendingQueries: (error: Error) => void;
|
|
8
9
|
readonly clearMediaConnCache: () => void;
|
|
9
|
-
readonly disconnect: () => Promise<void>;
|
|
10
|
+
readonly disconnect: (reason: WaDisconnectReason, isLogout: boolean, code: WaConnectionCode | null) => Promise<void>;
|
|
10
11
|
readonly clearStoredCredentials: () => Promise<void>;
|
|
11
|
-
readonly connect: () => Promise<void>;
|
|
12
|
+
readonly connect: (reason: WaConnectionOpenReason) => Promise<void>;
|
|
12
13
|
}
|
|
13
14
|
export interface WaStreamControlHandler {
|
|
14
15
|
readonly handleStreamControlResult: (result: WaStreamControlNodeResult) => Promise<void>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ParsedPrivacyToken } from '../events/privacy-token';
|
|
2
|
+
import type { WaClientEventMap } from '../types';
|
|
3
|
+
import type { Logger } from '../../infra/log/types';
|
|
4
|
+
import type { WaPrivacyTokenStore } from '../../store/contracts/privacy-token.store';
|
|
5
|
+
import type { BinaryNode } from '../../transport/types';
|
|
6
|
+
type WaTrustedContactTokenRuntime = {
|
|
7
|
+
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
8
|
+
readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
|
|
9
|
+
readonly getCurrentMeLid: () => string | null;
|
|
10
|
+
};
|
|
11
|
+
export declare class WaTrustedContactTokenCoordinator {
|
|
12
|
+
private readonly logger;
|
|
13
|
+
private readonly store;
|
|
14
|
+
private readonly runtime;
|
|
15
|
+
private readonly config;
|
|
16
|
+
private readonly csTokenGenerator;
|
|
17
|
+
private readonly senderTokenDedup;
|
|
18
|
+
private cachedNctSalt;
|
|
19
|
+
private nctSaltHydrated;
|
|
20
|
+
constructor(options: {
|
|
21
|
+
readonly logger: Logger;
|
|
22
|
+
readonly store: WaPrivacyTokenStore;
|
|
23
|
+
readonly runtime: WaTrustedContactTokenRuntime;
|
|
24
|
+
readonly durationS?: number;
|
|
25
|
+
readonly numBuckets?: number;
|
|
26
|
+
readonly senderDurationS?: number;
|
|
27
|
+
readonly senderNumBuckets?: number;
|
|
28
|
+
readonly maxDurationS?: number;
|
|
29
|
+
});
|
|
30
|
+
resolveTokenForMessage(recipientJid: string): Promise<BinaryNode | null>;
|
|
31
|
+
handleIncomingToken(fromJid: string, tokens: readonly ParsedPrivacyToken[]): Promise<void>;
|
|
32
|
+
maybeIssueSenderToken(recipientJid: string): Promise<void>;
|
|
33
|
+
reissueOnIdentityChange(jid: string): Promise<void>;
|
|
34
|
+
hydrateFromHistorySync(conversations: readonly {
|
|
35
|
+
readonly jid: string;
|
|
36
|
+
readonly tcToken?: Uint8Array | null;
|
|
37
|
+
readonly tcTokenTimestamp?: number | null;
|
|
38
|
+
readonly tcTokenSenderTimestamp?: number | null;
|
|
39
|
+
}[]): Promise<void>;
|
|
40
|
+
handleNctSaltSync(salt: Uint8Array | null): Promise<void>;
|
|
41
|
+
hydrateNctSaltFromHistorySync(salt: Uint8Array): Promise<void>;
|
|
42
|
+
private getNctSalt;
|
|
43
|
+
private issuePrivacyToken;
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
@@ -11,6 +11,7 @@ interface WaDirtySyncRuntime {
|
|
|
11
11
|
readonly queryWithContext: (context: string, node: BinaryNode, timeoutMs?: number, contextData?: Readonly<Record<string, unknown>>) => Promise<BinaryNode>;
|
|
12
12
|
readonly getCurrentCredentials: () => WaAuthCredentials | null;
|
|
13
13
|
readonly syncAppState: () => Promise<void>;
|
|
14
|
+
readonly generateUsyncSid: () => Promise<string>;
|
|
14
15
|
}
|
|
15
16
|
export declare function parseDirtyBits(nodes: readonly BinaryNode[], logger: Logger): readonly WaDirtyBit[];
|
|
16
17
|
export declare function handleDirtyBits(runtime: WaDirtySyncRuntime, dirtyBits: readonly WaDirtyBit[]): Promise<void>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export declare const DEVICE_NOTIFICATION_ACTIONS: Readonly<{
|
|
3
|
+
readonly ADD: "add";
|
|
4
|
+
readonly REMOVE: "remove";
|
|
5
|
+
readonly UPDATE: "update";
|
|
6
|
+
}>;
|
|
7
|
+
export type DeviceNotificationAction = (typeof DEVICE_NOTIFICATION_ACTIONS)[keyof typeof DEVICE_NOTIFICATION_ACTIONS];
|
|
8
|
+
export interface DeviceNotificationDevice {
|
|
9
|
+
readonly deviceId: number;
|
|
10
|
+
readonly keyIndex: number | null;
|
|
11
|
+
}
|
|
12
|
+
export interface DeviceNotification {
|
|
13
|
+
readonly action: DeviceNotificationAction;
|
|
14
|
+
readonly stanzaId: string;
|
|
15
|
+
readonly fromJid: string;
|
|
16
|
+
readonly lid: string | undefined;
|
|
17
|
+
readonly hash: string | undefined;
|
|
18
|
+
readonly devices: readonly DeviceNotificationDevice[];
|
|
19
|
+
}
|
|
20
|
+
export declare function parseDeviceNotification(node: BinaryNode): DeviceNotification | null;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { WaGroupEvent, WaIncomingUnhandledStanzaEvent } from '../types';
|
|
1
|
+
import type { WaGroupEvent, WaGroupEventParticipant, WaIncomingUnhandledStanzaEvent } from '../types';
|
|
2
2
|
import type { BinaryNode } from '../../transport/types';
|
|
3
3
|
export interface WaParseGroupNotificationResult {
|
|
4
4
|
readonly events: readonly WaGroupEvent[];
|
|
5
5
|
readonly unhandled: readonly WaIncomingUnhandledStanzaEvent[];
|
|
6
6
|
}
|
|
7
|
+
export declare function parseParticipants(node: BinaryNode): readonly WaGroupEventParticipant[];
|
|
7
8
|
export declare function parseGroupNotificationEvents(notificationNode: BinaryNode): WaParseGroupNotificationResult;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export interface IdentityChangeNotification {
|
|
3
|
+
readonly fromJid: string;
|
|
4
|
+
readonly stanzaId: string;
|
|
5
|
+
readonly displayName: string | undefined;
|
|
6
|
+
readonly lid: string | undefined;
|
|
7
|
+
readonly offline: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function parseIdentityChangeNotification(node: BinaryNode): IdentityChangeNotification | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BinaryNode } from '../../transport/types';
|
|
2
|
+
export interface ParsedPrivacyToken {
|
|
3
|
+
readonly type: string;
|
|
4
|
+
readonly tokenBytes: Uint8Array;
|
|
5
|
+
readonly timestampS: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function parsePrivacyTokenNotification(node: BinaryNode): readonly ParsedPrivacyToken[];
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
+
import type { WriteBehindPersistence } from './persistence/WriteBehindPersistence';
|
|
1
2
|
import type { WaClientEventMap } from './types';
|
|
2
3
|
import type { Logger } from '../infra/log/types';
|
|
3
4
|
import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
4
5
|
import { type Proto } from '..';
|
|
5
|
-
import type { WaContactStore } from '../store/contracts/contact.store';
|
|
6
|
-
import type { WaMessageStore } from '../store/contracts/message.store';
|
|
7
|
-
import type { WaThreadStore } from '../store/contracts/thread.store';
|
|
8
6
|
interface WaHistorySyncDeps {
|
|
9
7
|
readonly logger: Logger;
|
|
10
8
|
readonly mediaTransfer: WaMediaTransferClient;
|
|
11
|
-
readonly
|
|
12
|
-
readonly messageStore: WaMessageStore;
|
|
13
|
-
readonly threadStore: WaThreadStore;
|
|
9
|
+
readonly writeBehind: WriteBehindPersistence;
|
|
14
10
|
readonly emitEvent: <K extends keyof WaClientEventMap>(event: K, ...args: Parameters<WaClientEventMap[K]>) => void;
|
|
11
|
+
readonly onPrivacyTokens?: (conversations: readonly {
|
|
12
|
+
readonly jid: string;
|
|
13
|
+
readonly tcToken?: Uint8Array | null;
|
|
14
|
+
readonly tcTokenTimestamp?: number | null;
|
|
15
|
+
readonly tcTokenSenderTimestamp?: number | null;
|
|
16
|
+
}[]) => Promise<void>;
|
|
17
|
+
readonly onNctSalt?: (salt: Uint8Array) => Promise<void>;
|
|
15
18
|
}
|
|
16
19
|
export declare function processHistorySyncNotification(deps: WaHistorySyncDeps, notification: Proto.Message.IHistorySyncNotification): Promise<void>;
|
|
17
20
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { WaIncomingBaseEvent, WaIncomingFailureEvent, WaIncomingNotificationEvent, WaIncomingReceiptEvent, WaIncomingUnhandledStanzaEvent, WaGroupEvent } from './types';
|
|
2
2
|
import type { Logger } from '../infra/log/types';
|
|
3
|
+
import type { WaConnectionCode, WaDisconnectReason } from '../protocol/stream';
|
|
3
4
|
import type { BinaryNode } from '../transport/types';
|
|
4
5
|
interface IncomingAckRuntime {
|
|
5
6
|
readonly logger: Logger;
|
|
@@ -13,7 +14,8 @@ type IncomingReceiptHandlerOptions = IncomingAckRuntime & {
|
|
|
13
14
|
type IncomingFailureHandlerOptions = {
|
|
14
15
|
readonly logger: Logger;
|
|
15
16
|
readonly emitIncomingFailure: (event: WaIncomingFailureEvent) => void;
|
|
16
|
-
readonly
|
|
17
|
+
readonly stopComms: () => void;
|
|
18
|
+
readonly disconnect: (reason: WaDisconnectReason, isLogout: boolean, code: WaConnectionCode | null) => Promise<void>;
|
|
17
19
|
readonly clearStoredCredentials: () => Promise<void>;
|
|
18
20
|
};
|
|
19
21
|
type IncomingNotificationHandlerOptions = IncomingAckRuntime & {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { WaClient } from './WaClient';
|
|
2
|
-
export type { WaChatEvent, WaChatEventAction, WaChatEventSource, WaClientEventMap, WaClientOptions, WaHistorySyncChunkEvent, WaHistorySyncOptions } from './types';
|
|
2
|
+
export type { WaAppStateMessageKey, WaClientProxyOptions, WaClearChatOptions, WaChatEvent, WaChatEventAction, WaChatEventSource, WaClientEventMap, WaClientOptions, WaConnectionEvent, WaDeleteChatOptions, WaDeleteMessageForMeOptions, WaHistorySyncChunkEvent, WaHistorySyncOptions, WaLogoutStoreClearOptions, WaWriteBehindOptions } from './types';
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
+
import type { WriteBehindPersistence } from './persistence/WriteBehindPersistence';
|
|
1
2
|
import type { WaIncomingMessageEvent } from './types';
|
|
2
3
|
import type { Logger } from '../infra/log/types';
|
|
3
|
-
import type { WaContactStore } from '../store/contracts/contact.store';
|
|
4
|
-
import type { WaMessageStore } from '../store/contracts/message.store';
|
|
5
4
|
interface WaPersistIncomingMailboxOptions {
|
|
6
5
|
readonly logger: Logger;
|
|
7
|
-
readonly
|
|
8
|
-
readonly messageStore: WaMessageStore;
|
|
6
|
+
readonly writeBehind: WriteBehindPersistence;
|
|
9
7
|
readonly event: WaIncomingMessageEvent;
|
|
10
8
|
}
|
|
11
|
-
export declare function persistIncomingMailboxEntities(options: WaPersistIncomingMailboxOptions):
|
|
9
|
+
export declare function persistIncomingMailboxEntities(options: WaPersistIncomingMailboxOptions): void;
|
|
12
10
|
export {};
|
|
@@ -4,7 +4,7 @@ import type { WaMediaTransferClient } from '../media/WaMediaTransferClient';
|
|
|
4
4
|
import type { WaSendMessageContent } from '../message/types';
|
|
5
5
|
import type { Proto } from '..';
|
|
6
6
|
import type { BinaryNode } from '../transport/types';
|
|
7
|
-
interface WaMediaMessageOptions {
|
|
7
|
+
export interface WaMediaMessageOptions {
|
|
8
8
|
readonly logger: Logger;
|
|
9
9
|
readonly mediaTransfer: WaMediaTransferClient;
|
|
10
10
|
readonly iqTimeoutMs?: number;
|
|
@@ -14,4 +14,3 @@ interface WaMediaMessageOptions {
|
|
|
14
14
|
}
|
|
15
15
|
export declare function buildMediaMessageContent(options: WaMediaMessageOptions, content: WaSendMessageContent): Promise<Proto.IMessage>;
|
|
16
16
|
export declare function getMediaConn(options: WaMediaMessageOptions, forceRefresh?: boolean): Promise<WaMediaConn>;
|
|
17
|
-
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Logger } from '../../infra/log/types';
|
|
2
|
+
import type { SignalDeviceSyncApi } from '../../signal/api/SignalDeviceSyncApi';
|
|
3
|
+
export type DeviceFanoutResolver = {
|
|
4
|
+
resolveDirectFanoutDeviceJids(recipientJid: string, selfDeviceJid: string): Promise<readonly string[]>;
|
|
5
|
+
resolveGroupParticipantDeviceJids(participantUserJids: readonly string[]): Promise<readonly string[]>;
|
|
6
|
+
resolveOwnPeerDeviceJids(): Promise<readonly string[]>;
|
|
7
|
+
resolveSelfDeviceJidForRecipient(recipientJid: string, meJid: string, meLid: string | null | undefined): string;
|
|
8
|
+
};
|
|
9
|
+
export declare function createDeviceFanoutResolver(options: {
|
|
10
|
+
readonly signalDeviceSync: SignalDeviceSyncApi;
|
|
11
|
+
readonly getCurrentMeJid: () => string | null | undefined;
|
|
12
|
+
readonly getCurrentMeLid: () => string | null | undefined;
|
|
13
|
+
readonly logger: Logger;
|
|
14
|
+
}): DeviceFanoutResolver;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WaAppStateSyncKey } from '../../appstate/types';
|
|
2
|
+
import type { DeviceFanoutResolver } from '../messaging/fanout';
|
|
3
|
+
import type { WaSignalMessagePublishInput } from '../types';
|
|
4
|
+
import type { Logger } from '../../infra/log/types';
|
|
5
|
+
import type { WaMessagePublishOptions, WaMessagePublishResult } from '../../message/types';
|
|
6
|
+
type PublishSignalMessageFn = (input: WaSignalMessagePublishInput, options?: WaMessagePublishOptions) => Promise<WaMessagePublishResult>;
|
|
7
|
+
export type AppStateSyncKeyProtocol = {
|
|
8
|
+
requestKeys(keyIds: readonly Uint8Array[]): Promise<readonly string[]>;
|
|
9
|
+
sendKeyShare(toDeviceJid: string, keys: readonly WaAppStateSyncKey[], missingKeyIds?: readonly Uint8Array[]): Promise<void>;
|
|
10
|
+
};
|
|
11
|
+
export declare function createAppStateSyncKeyProtocol(options: {
|
|
12
|
+
readonly publishSignalMessage: PublishSignalMessageFn;
|
|
13
|
+
readonly fanoutResolver: DeviceFanoutResolver;
|
|
14
|
+
readonly getCurrentMeJid: () => string | null | undefined;
|
|
15
|
+
readonly getCurrentMeLid: () => string | null | undefined;
|
|
16
|
+
readonly logger: Logger;
|
|
17
|
+
}): AppStateSyncKeyProtocol;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WaGroupEvent } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import type { WaParticipantsStore } from '../../store/contracts/participants.store';
|
|
4
|
+
export type GroupParticipantsCache = {
|
|
5
|
+
resolveParticipantUsers(groupJid: string): Promise<readonly string[]>;
|
|
6
|
+
refreshParticipantUsers(groupJid: string): Promise<readonly string[]>;
|
|
7
|
+
mutateFromGroupEvent(event: WaGroupEvent): Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
export declare function createGroupParticipantsCache(options: {
|
|
10
|
+
readonly participantsStore: WaParticipantsStore;
|
|
11
|
+
readonly queryGroupParticipantJids: (groupJid: string) => Promise<readonly string[]>;
|
|
12
|
+
readonly logger: Logger;
|
|
13
|
+
}): GroupParticipantsCache;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WaWriteBehindOptions } from '../types';
|
|
2
|
+
import type { Logger } from '../../infra/log/types';
|
|
3
|
+
import type { BackgroundQueueFlushResult } from '../../infra/perf/BackgroundQueue';
|
|
4
|
+
import type { WaContactStore, WaStoredContactRecord } from '../../store/contracts/contact.store';
|
|
5
|
+
import type { WaMessageStore, WaStoredMessageRecord } from '../../store/contracts/message.store';
|
|
6
|
+
import type { WaStoredThreadRecord, WaThreadStore } from '../../store/contracts/thread.store';
|
|
7
|
+
interface WriteBehindStores {
|
|
8
|
+
readonly messageStore: WaMessageStore;
|
|
9
|
+
readonly threadStore: WaThreadStore;
|
|
10
|
+
readonly contactStore: WaContactStore;
|
|
11
|
+
}
|
|
12
|
+
export interface WriteBehindDrainResult {
|
|
13
|
+
readonly messages: BackgroundQueueFlushResult;
|
|
14
|
+
readonly threads: BackgroundQueueFlushResult;
|
|
15
|
+
readonly contacts: BackgroundQueueFlushResult;
|
|
16
|
+
readonly flushed: number;
|
|
17
|
+
readonly remaining: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class WriteBehindPersistence {
|
|
20
|
+
private readonly logger;
|
|
21
|
+
private readonly queues;
|
|
22
|
+
private readonly flushTimeoutMs;
|
|
23
|
+
constructor(stores: WriteBehindStores, logger: Logger, options?: WaWriteBehindOptions);
|
|
24
|
+
persistMessage(record: WaStoredMessageRecord): void;
|
|
25
|
+
persistMessageAsync(record: WaStoredMessageRecord): Promise<void>;
|
|
26
|
+
persistThread(record: WaStoredThreadRecord): void;
|
|
27
|
+
persistThreadAsync(record: WaStoredThreadRecord): Promise<void>;
|
|
28
|
+
persistContact(record: WaStoredContactRecord): void;
|
|
29
|
+
persistContactAsync(record: WaStoredContactRecord): Promise<void>;
|
|
30
|
+
flush(timeoutMs?: number): Promise<WriteBehindDrainResult>;
|
|
31
|
+
destroy(timeoutMs?: number): Promise<WriteBehindDrainResult>;
|
|
32
|
+
private toDrainResult;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class CsTokenGenerator {
|
|
2
|
+
private cachedKey;
|
|
3
|
+
private cachedSalt;
|
|
4
|
+
private readonly cache;
|
|
5
|
+
constructor();
|
|
6
|
+
generate(nctSalt: Uint8Array, accountLid: string): Promise<Uint8Array>;
|
|
7
|
+
invalidate(): void;
|
|
8
|
+
private isSameSalt;
|
|
9
|
+
private resolveKey;
|
|
10
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function computeBucket(unixTimeS: number, durationS: number): number;
|
|
2
|
+
export declare function tokenExpirationCutoffS(nowS: number, durationS: number, numBuckets: number): number;
|
|
3
|
+
export declare function isTokenExpired(tokenTimestampS: number, nowS: number, durationS: number, numBuckets: number): boolean;
|
|
4
|
+
export declare function shouldSendNewToken(senderTimestampS: number, nowS: number, senderDurationS: number): boolean;
|
|
5
|
+
export declare function clampDuration(durationS: number, maxDurationS: number): number;
|
|
@@ -2,11 +2,31 @@ import type { AppStateCollectionName } from '../appstate/types';
|
|
|
2
2
|
import type { WaAuthClientOptions, WaAuthCredentials, WaAuthSocketOptions } from '../auth/types';
|
|
3
3
|
import type { WaMessagePublishOptions } from '../message/types';
|
|
4
4
|
import type { Proto } from '..';
|
|
5
|
+
import type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason } from '../protocol/stream';
|
|
5
6
|
import type { WaStore } from '../store/types';
|
|
6
|
-
import type { BinaryNode } from '../transport/types';
|
|
7
|
+
import type { BinaryNode, WaProxyTransport } from '../transport/types';
|
|
8
|
+
export interface WaClientProxyOptions {
|
|
9
|
+
readonly ws?: WaProxyTransport;
|
|
10
|
+
readonly mediaUpload?: WaProxyTransport;
|
|
11
|
+
readonly mediaDownload?: WaProxyTransport;
|
|
12
|
+
}
|
|
13
|
+
export interface WaLogoutStoreClearOptions {
|
|
14
|
+
readonly auth?: boolean;
|
|
15
|
+
readonly signal?: boolean;
|
|
16
|
+
readonly senderKey?: boolean;
|
|
17
|
+
readonly appState?: boolean;
|
|
18
|
+
readonly retry?: boolean;
|
|
19
|
+
readonly participants?: boolean;
|
|
20
|
+
readonly deviceList?: boolean;
|
|
21
|
+
readonly messages?: boolean;
|
|
22
|
+
readonly threads?: boolean;
|
|
23
|
+
readonly contacts?: boolean;
|
|
24
|
+
readonly privacyToken?: boolean;
|
|
25
|
+
}
|
|
7
26
|
export interface WaClientOptions extends WaAuthClientOptions, WaAuthSocketOptions {
|
|
8
27
|
readonly store: WaStore;
|
|
9
28
|
readonly sessionId: string;
|
|
29
|
+
readonly proxy?: WaClientProxyOptions;
|
|
10
30
|
readonly chatSocketUrls?: readonly string[];
|
|
11
31
|
readonly iqTimeoutMs?: number;
|
|
12
32
|
readonly nodeQueryTimeoutMs?: number;
|
|
@@ -18,10 +38,25 @@ export interface WaClientOptions extends WaAuthClientOptions, WaAuthSocketOption
|
|
|
18
38
|
readonly messageAckTimeoutMs?: number;
|
|
19
39
|
readonly messageMaxAttempts?: number;
|
|
20
40
|
readonly messageRetryDelayMs?: number;
|
|
41
|
+
readonly writeBehind?: WaWriteBehindOptions;
|
|
21
42
|
readonly history?: WaHistorySyncOptions;
|
|
22
43
|
readonly chatEvents?: {
|
|
23
44
|
readonly emitSnapshotMutations?: boolean;
|
|
24
45
|
};
|
|
46
|
+
readonly privacyToken?: WaPrivacyTokenOptions;
|
|
47
|
+
readonly logoutStoreClear?: WaLogoutStoreClearOptions;
|
|
48
|
+
}
|
|
49
|
+
export interface WaPrivacyTokenOptions {
|
|
50
|
+
readonly tcTokenDurationS?: number;
|
|
51
|
+
readonly tcTokenNumBuckets?: number;
|
|
52
|
+
readonly tcTokenSenderDurationS?: number;
|
|
53
|
+
readonly tcTokenSenderNumBuckets?: number;
|
|
54
|
+
readonly tcTokenMaxDurationS?: number;
|
|
55
|
+
}
|
|
56
|
+
export interface WaWriteBehindOptions {
|
|
57
|
+
readonly maxPendingKeys?: number;
|
|
58
|
+
readonly maxWriteConcurrency?: number;
|
|
59
|
+
readonly flushTimeoutMs?: number;
|
|
25
60
|
}
|
|
26
61
|
export interface WaHistorySyncOptions {
|
|
27
62
|
readonly enabled?: boolean;
|
|
@@ -41,6 +76,24 @@ export interface WaSignalMessagePublishInput {
|
|
|
41
76
|
export interface WaSendMessageOptions extends WaMessagePublishOptions {
|
|
42
77
|
readonly id?: string;
|
|
43
78
|
readonly expectedIdentity?: Uint8Array;
|
|
79
|
+
readonly subtype?: string;
|
|
80
|
+
}
|
|
81
|
+
export interface WaClearChatOptions {
|
|
82
|
+
readonly deleteStarred?: boolean;
|
|
83
|
+
readonly deleteMedia?: boolean;
|
|
84
|
+
}
|
|
85
|
+
export interface WaDeleteChatOptions {
|
|
86
|
+
readonly deleteMedia?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface WaAppStateMessageKey {
|
|
89
|
+
readonly chatJid: string;
|
|
90
|
+
readonly id: string;
|
|
91
|
+
readonly fromMe: boolean;
|
|
92
|
+
readonly participantJid?: string;
|
|
93
|
+
}
|
|
94
|
+
export interface WaDeleteMessageForMeOptions {
|
|
95
|
+
readonly deleteMedia?: boolean;
|
|
96
|
+
readonly messageTimestampMs?: number;
|
|
44
97
|
}
|
|
45
98
|
export type WaIncomingNodeHandler = (node: BinaryNode) => Promise<boolean>;
|
|
46
99
|
export interface WaIncomingNodeHandlerRegistration {
|
|
@@ -178,7 +231,19 @@ export interface WaChatEvent {
|
|
|
178
231
|
readonly locked?: boolean;
|
|
179
232
|
readonly deviceAgentId?: string;
|
|
180
233
|
}
|
|
181
|
-
export type
|
|
234
|
+
export type WaConnectionEvent = {
|
|
235
|
+
readonly status: 'open';
|
|
236
|
+
readonly reason: WaConnectionOpenReason;
|
|
237
|
+
readonly code: null;
|
|
238
|
+
readonly isLogout: false;
|
|
239
|
+
readonly isNewLogin: boolean;
|
|
240
|
+
} | {
|
|
241
|
+
readonly status: 'close';
|
|
242
|
+
readonly reason: WaDisconnectReason;
|
|
243
|
+
readonly code: WaConnectionCode | null;
|
|
244
|
+
readonly isLogout: boolean;
|
|
245
|
+
readonly isNewLogin: false;
|
|
246
|
+
};
|
|
182
247
|
export interface WaClientEventMap {
|
|
183
248
|
readonly auth_qr: (event: {
|
|
184
249
|
readonly qr: string;
|
|
@@ -199,8 +264,7 @@ export interface WaClientEventMap {
|
|
|
199
264
|
readonly client_error: (event: {
|
|
200
265
|
readonly error: Error;
|
|
201
266
|
}) => void;
|
|
202
|
-
readonly
|
|
203
|
-
readonly connection_close: (event: WaEmptyEvent) => void;
|
|
267
|
+
readonly connection: (event: WaConnectionEvent) => void;
|
|
204
268
|
readonly transport_frame_in: (event: {
|
|
205
269
|
readonly frame: Uint8Array;
|
|
206
270
|
}) => void;
|
|
@@ -232,4 +296,11 @@ export interface WaClientEventMap {
|
|
|
232
296
|
readonly group_event: (event: WaGroupEvent) => void;
|
|
233
297
|
readonly chat_event: (event: WaChatEvent) => void;
|
|
234
298
|
readonly history_sync_chunk: (event: WaHistorySyncChunkEvent) => void;
|
|
299
|
+
readonly privacy_token_update: (event: WaPrivacyTokenUpdateEvent) => void;
|
|
300
|
+
}
|
|
301
|
+
export interface WaPrivacyTokenUpdateEvent {
|
|
302
|
+
readonly jid: string;
|
|
303
|
+
readonly timestampS: number;
|
|
304
|
+
readonly type: string;
|
|
305
|
+
readonly source: 'notification' | 'history_sync';
|
|
235
306
|
}
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HKDF key derivation using SHA-256
|
|
3
|
-
*/
|
|
4
1
|
export declare function hkdf(ikm: Uint8Array, salt: Uint8Array | null, info: Uint8Array | string, outLength: number): Promise<Uint8Array>;
|
|
5
|
-
/**
|
|
6
|
-
* HKDF key derivation that outputs two 32-byte keys
|
|
7
|
-
*/
|
|
8
2
|
export declare function hkdfSplit(ikm: Uint8Array, salt: Uint8Array | null, info: string): Promise<readonly [Uint8Array, Uint8Array]>;
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { Ed25519 } from '../curves/Ed25519';
|
|
5
5
|
export { X25519 } from '../curves/X25519';
|
|
6
|
-
export { decodeBase64Url, assert32 } from '../core/encoding';
|
|
7
6
|
export { hkdf, hkdfSplit } from '../core/hkdf';
|
|
8
7
|
export { toSerializedPubKey, toRawPubKey, prependVersion, readVersionedContent } from '../core/keys';
|
|
9
8
|
export { buildNonce } from '../core/nonce';
|
|
10
|
-
export { randomBytesAsync, randomIntAsync } from '../core/random';
|
|
11
|
-
export { type CryptoKey, sha1, sha256, sha512, importAesGcmKey, aesGcmEncrypt, aesGcmDecrypt, importAesCbcKey, aesCbcEncrypt, aesCbcDecrypt, importHmacKey, importHmacSha512Key, hmacSign, pbkdf2DeriveAesCtrKey, aesCtrEncrypt, aesCtrDecrypt
|
|
9
|
+
export { randomBytesAsync, randomFillAsync, randomIntAsync } from '../core/random';
|
|
10
|
+
export { type CryptoKey, sha1, sha256, sha512, importAesGcmKey, aesGcmEncrypt, aesGcmDecrypt, importAesCbcKey, aesCbcEncrypt, aesCbcDecrypt, importHmacKey, importHmacSha512Key, hmacSign, pbkdf2DeriveAesCtrKey, aesCtrEncrypt, aesCtrDecrypt } from '../core/primitives';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Builds a 12-byte nonce for AES-GCM encryption with counter in the last 4 bytes.
|
|
3
|
+
* Allocates a new buffer per call because concurrent Noise encrypt/decrypt operations
|
|
4
|
+
* may hold references to different nonces simultaneously.
|
|
3
5
|
* Throws if counter exceeds uint32 range to prevent nonce reuse.
|
|
4
6
|
*/
|
|
5
7
|
export declare function buildNonce(counter: number): Uint8Array;
|
|
@@ -22,4 +22,3 @@ export declare function hmacSign(key: webcrypto.CryptoKey, data: Uint8Array): Pr
|
|
|
22
22
|
export declare function pbkdf2DeriveAesCtrKey(password: Uint8Array, salt: Uint8Array, iterations: number): Promise<CryptoKey>;
|
|
23
23
|
export declare function aesCtrEncrypt(key: CryptoKey, counter: Uint8Array, plaintext: Uint8Array): Promise<Uint8Array>;
|
|
24
24
|
export declare function aesCtrDecrypt(key: CryptoKey, counter: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
25
|
-
export declare function ed25519VerifyRaw(publicKey: Uint8Array, signature: Uint8Array, message: Uint8Array): Promise<boolean>;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates cryptographically secure random bytes
|
|
3
|
-
*/
|
|
4
1
|
export declare function randomBytesAsync(size: number): Promise<Uint8Array>;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*/
|
|
8
|
-
export declare function randomIntAsync(min: number, max: number): Promise<number>;
|
|
2
|
+
export declare function randomFillAsync(target: Uint8Array, offset?: number, size?: number): Promise<Uint8Array>;
|
|
3
|
+
export declare const randomIntAsync: (min: number, max: number) => Promise<number>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type Fe } from '../math/fe';
|
|
1
2
|
import type { ExtendedPoint } from '../math/types';
|
|
2
3
|
export declare const FIELD_P: bigint;
|
|
3
4
|
export declare const GROUP_L: bigint;
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const FE_TWO_D: Fe;
|
|
6
|
+
export declare const FE_ZERO: Fe;
|
|
7
|
+
export declare const FE_ONE: Fe;
|
|
6
8
|
export declare const BASE_POINT: ExtendedPoint;
|
|
7
9
|
export declare const IDENTITY_POINT: ExtendedPoint;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field element arithmetic for GF(2^255-19).
|
|
3
|
+
* Representation: 16 limbs of 16 bits in Float64Array (tweetnacl style).
|
|
4
|
+
* Hot-path operations are allocation-free using pre-allocated temporaries.
|
|
5
|
+
*/
|
|
6
|
+
export type Fe = Float64Array;
|
|
7
|
+
export declare function fe(): Fe;
|
|
8
|
+
export declare function feCopy(o: Fe, a: Fe): void;
|
|
9
|
+
export declare function feFromBigInt(n: bigint): Fe;
|
|
10
|
+
export declare function feToBigInt(a: Fe): bigint;
|
|
11
|
+
export declare function feFromBytes(o: Fe, s: Uint8Array): void;
|
|
12
|
+
export declare function fePack(o: Uint8Array, n: Fe): void;
|
|
13
|
+
export declare function feAdd(o: Fe, a: Fe, b: Fe): void;
|
|
14
|
+
export declare function feSub(o: Fe, a: Fe, b: Fe): void;
|
|
15
|
+
export declare function feNeg(o: Fe, a: Fe): void;
|
|
16
|
+
/**
|
|
17
|
+
* Fully unrolled field multiplication with folded reduction.
|
|
18
|
+
* Computes o = a * b mod (2^255-19) using negacyclic convolution:
|
|
19
|
+
* t[i] = Σ a[j]*b[i-j] (direct) + 38 * Σ a[j]*b[i+16-j] (wrapped)
|
|
20
|
+
* All values in local variables for register allocation.
|
|
21
|
+
*/
|
|
22
|
+
export declare function feMul(o: Fe, a: Fe, b: Fe): void;
|
|
23
|
+
/**
|
|
24
|
+
* Fully unrolled field squaring with folded reduction and symmetry.
|
|
25
|
+
* Exploits a[j]*a[k] == a[k]*a[j] to halve off-diagonal multiplications.
|
|
26
|
+
* Combined with negacyclic reduction: wrapped terms use a38[k] = 38*a[k].
|
|
27
|
+
*/
|
|
28
|
+
export declare function feSqr(o: Fe, a: Fe): void;
|
|
29
|
+
export declare function feSqrN(o: Fe, a: Fe, n: number): void;
|
|
30
|
+
export declare function feInv(o: Fe, a: Fe): void;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { FIELD_P, GROUP_L } from '../math/constants';
|
|
2
|
-
export { FIELD_P, GROUP_L };
|
|
3
1
|
export declare function mod(value: bigint, modulus?: bigint): bigint;
|
|
4
2
|
export declare function modGroup(value: bigint): bigint;
|
|
5
3
|
export declare function modInv(value: bigint, modulus?: bigint): bigint;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import type { Fe } from '../math/fe';
|
|
1
2
|
export interface ExtendedPoint {
|
|
2
|
-
readonly x:
|
|
3
|
-
readonly y:
|
|
4
|
-
readonly z:
|
|
5
|
-
readonly t:
|
|
3
|
+
readonly x: Fe;
|
|
4
|
+
readonly y: Fe;
|
|
5
|
+
readonly z: Fe;
|
|
6
|
+
readonly t: Fe;
|
|
7
|
+
}
|
|
8
|
+
export interface MutablePoint {
|
|
9
|
+
x: Fe;
|
|
10
|
+
y: Fe;
|
|
11
|
+
z: Fe;
|
|
12
|
+
t: Fe;
|
|
6
13
|
}
|