zapo-js 0.1.1 → 0.1.2

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.
Files changed (363) hide show
  1. package/README.md +8 -0
  2. package/dist/appstate/WaAppStateCrypto.js +18 -25
  3. package/dist/appstate/WaAppStateSyncClient.js +181 -114
  4. package/dist/appstate/WaAppStateSyncResponseParser.js +16 -5
  5. package/dist/appstate/constants.js +4 -3
  6. package/dist/appstate/utils.js +10 -30
  7. package/dist/auth/WaAuthClient.js +48 -55
  8. package/dist/auth/flow/WaAuthCredentialsFlow.js +21 -14
  9. package/dist/auth/index.js +1 -3
  10. package/dist/auth/pairing/WaPairingFlow.js +21 -23
  11. package/dist/auth/pairing/WaQrFlow.js +37 -24
  12. package/dist/client/WaClient.js +103 -276
  13. package/dist/client/WaClientFactory.js +227 -110
  14. package/dist/client/connection/WaConnectionManager.js +292 -0
  15. package/dist/client/connection/WaKeyShareCoordinator.js +63 -0
  16. package/dist/client/connection/WaReceiptQueue.js +51 -0
  17. package/dist/client/coordinators/WaAppStateMutationCoordinator.js +471 -0
  18. package/dist/client/coordinators/WaGroupCoordinator.js +27 -17
  19. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +20 -27
  20. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +231 -686
  21. package/dist/client/coordinators/WaRetryCoordinator.js +70 -37
  22. package/dist/client/dirty.js +35 -29
  23. package/dist/client/events/chat.js +4 -3
  24. package/dist/client/events/group.js +59 -36
  25. package/dist/client/history-sync.js +53 -63
  26. package/dist/client/incoming.js +23 -20
  27. package/dist/client/mailbox.js +8 -8
  28. package/dist/client/messages.js +4 -4
  29. package/dist/client/messaging/fanout.js +189 -0
  30. package/dist/client/messaging/key-protocol.js +130 -0
  31. package/dist/client/messaging/participants.js +191 -0
  32. package/dist/crypto/core/hkdf.js +3 -8
  33. package/dist/crypto/core/index.js +1 -4
  34. package/dist/crypto/core/keys.js +2 -3
  35. package/dist/crypto/core/primitives.js +12 -15
  36. package/dist/crypto/core/random.js +7 -26
  37. package/dist/crypto/curves/Ed25519.js +7 -8
  38. package/dist/crypto/curves/X25519.js +13 -16
  39. package/dist/crypto/index.js +0 -5
  40. package/dist/esm/appstate/WaAppStateCrypto.js +6 -13
  41. package/dist/esm/appstate/WaAppStateSyncClient.js +174 -107
  42. package/dist/esm/appstate/WaAppStateSyncResponseParser.js +17 -6
  43. package/dist/esm/appstate/constants.js +3 -2
  44. package/dist/esm/appstate/utils.js +8 -27
  45. package/dist/esm/auth/WaAuthClient.js +48 -55
  46. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +21 -14
  47. package/dist/esm/auth/index.js +0 -1
  48. package/dist/esm/auth/pairing/WaPairingFlow.js +14 -16
  49. package/dist/esm/auth/pairing/WaQrFlow.js +37 -24
  50. package/dist/esm/client/WaClient.js +103 -276
  51. package/dist/esm/client/WaClientFactory.js +227 -110
  52. package/dist/esm/client/connection/WaConnectionManager.js +288 -0
  53. package/dist/esm/client/connection/WaKeyShareCoordinator.js +59 -0
  54. package/dist/esm/client/connection/WaReceiptQueue.js +47 -0
  55. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +467 -0
  56. package/dist/esm/client/coordinators/WaGroupCoordinator.js +20 -10
  57. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +20 -27
  58. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +232 -687
  59. package/dist/esm/client/coordinators/WaRetryCoordinator.js +71 -38
  60. package/dist/esm/client/dirty.js +30 -24
  61. package/dist/esm/client/events/chat.js +4 -3
  62. package/dist/esm/client/events/group.js +50 -28
  63. package/dist/esm/client/history-sync.js +50 -60
  64. package/dist/esm/client/incoming.js +23 -20
  65. package/dist/esm/client/mailbox.js +8 -8
  66. package/dist/esm/client/messages.js +1 -1
  67. package/dist/esm/client/messaging/fanout.js +186 -0
  68. package/dist/esm/client/messaging/key-protocol.js +127 -0
  69. package/dist/esm/client/messaging/participants.js +188 -0
  70. package/dist/esm/crypto/core/hkdf.js +3 -8
  71. package/dist/esm/crypto/core/index.js +0 -1
  72. package/dist/esm/crypto/core/keys.js +2 -3
  73. package/dist/esm/crypto/core/primitives.js +12 -15
  74. package/dist/esm/crypto/core/random.js +6 -25
  75. package/dist/esm/crypto/curves/Ed25519.js +4 -5
  76. package/dist/esm/crypto/curves/X25519.js +10 -13
  77. package/dist/esm/crypto/index.js +0 -2
  78. package/dist/esm/infra/log/ConsoleLogger.js +18 -17
  79. package/dist/esm/infra/log/PinoLogger.js +15 -9
  80. package/dist/esm/infra/log/types.js +11 -1
  81. package/dist/esm/infra/perf/BoundedTaskQueue.js +13 -17
  82. package/dist/esm/media/WaMediaCrypto.js +2 -4
  83. package/dist/esm/media/WaMediaTransferClient.js +226 -58
  84. package/dist/esm/media/conn.js +10 -6
  85. package/dist/esm/media/constants.js +4 -1
  86. package/dist/esm/message/WaMessageClient.js +4 -13
  87. package/dist/esm/message/ack.js +6 -6
  88. package/dist/esm/message/addon-crypto.js +59 -0
  89. package/dist/esm/message/incoming.js +106 -111
  90. package/dist/esm/message/index.js +2 -0
  91. package/dist/esm/message/reporting-token.js +438 -0
  92. package/dist/esm/message/use-case-secret.js +49 -0
  93. package/dist/esm/protocol/appstate.js +58 -0
  94. package/dist/esm/protocol/constants.js +2 -1
  95. package/dist/esm/protocol/index.js +2 -10
  96. package/dist/esm/protocol/jid.js +63 -51
  97. package/dist/esm/protocol/media.js +3 -3
  98. package/dist/esm/protocol/nodes.js +2 -0
  99. package/dist/esm/protocol/usync.js +11 -0
  100. package/dist/esm/retry/index.js +1 -0
  101. package/dist/esm/retry/outbound.js +4 -5
  102. package/dist/esm/retry/parse.js +58 -76
  103. package/dist/esm/retry/replay.js +48 -49
  104. package/dist/esm/retry/tracker.js +56 -0
  105. package/dist/esm/signal/api/SignalDeviceSyncApi.js +249 -82
  106. package/dist/esm/signal/api/SignalDigestSyncApi.js +6 -1
  107. package/dist/esm/signal/api/SignalIdentitySyncApi.js +49 -34
  108. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +70 -62
  109. package/dist/esm/signal/api/SignalSessionSyncApi.js +23 -30
  110. package/dist/esm/signal/crypto/WaAdvSignature.js +3 -5
  111. package/dist/esm/signal/group/SenderKeyChain.js +28 -23
  112. package/dist/esm/signal/group/SenderKeyCodec.js +2 -4
  113. package/dist/esm/signal/group/SenderKeyManager.js +26 -16
  114. package/dist/esm/signal/index.js +1 -0
  115. package/dist/esm/signal/session/SignalProtocol.js +49 -14
  116. package/dist/esm/signal/session/SignalRatchet.js +24 -15
  117. package/dist/esm/signal/session/SignalSession.js +14 -9
  118. package/dist/esm/signal/session/resolver.js +186 -0
  119. package/dist/esm/signal/store/sqlite.js +16 -37
  120. package/dist/esm/store/createStore.js +16 -18
  121. package/dist/esm/store/noop.store.js +3 -6
  122. package/dist/esm/store/providers/memory/appstate.store.js +30 -6
  123. package/dist/esm/store/providers/memory/contact.store.js +5 -0
  124. package/dist/esm/store/providers/memory/device-list.store.js +3 -30
  125. package/dist/esm/store/providers/memory/message.store.js +11 -5
  126. package/dist/esm/store/providers/memory/participants.store.js +1 -8
  127. package/dist/esm/store/providers/memory/sender-key.store.js +5 -7
  128. package/dist/esm/store/providers/memory/signal.store.js +13 -1
  129. package/dist/esm/store/providers/memory/thread.store.js +5 -0
  130. package/dist/esm/store/providers/sqlite/appstate.store.js +82 -1
  131. package/dist/esm/store/providers/sqlite/connection.js +18 -13
  132. package/dist/esm/store/providers/sqlite/contact.store.js +31 -18
  133. package/dist/esm/store/providers/sqlite/device-list.store.js +7 -35
  134. package/dist/esm/store/providers/sqlite/message.store.js +45 -32
  135. package/dist/esm/store/providers/sqlite/migrations.js +1 -1
  136. package/dist/esm/store/providers/sqlite/participants.store.js +1 -9
  137. package/dist/esm/store/providers/sqlite/retry.store.js +8 -11
  138. package/dist/esm/store/providers/sqlite/sender-key.store.js +25 -30
  139. package/dist/esm/store/providers/sqlite/signal.store.js +104 -22
  140. package/dist/esm/store/providers/sqlite/table-names.js +107 -0
  141. package/dist/esm/store/providers/sqlite/thread.store.js +35 -22
  142. package/dist/esm/transport/WaComms.js +25 -23
  143. package/dist/esm/transport/WaWebSocket.js +115 -12
  144. package/dist/esm/transport/binary/decoder.js +4 -4
  145. package/dist/esm/transport/binary/encoder.js +12 -4
  146. package/dist/esm/transport/index.js +1 -0
  147. package/dist/esm/transport/keepalive/WaKeepAlive.js +2 -8
  148. package/dist/esm/transport/node/WaNodeOrchestrator.js +2 -4
  149. package/dist/esm/transport/node/WaNodeTransport.js +0 -3
  150. package/dist/esm/transport/node/builders/{accountSync.js → account-sync.js} +16 -36
  151. package/dist/esm/transport/node/builders/index.js +2 -1
  152. package/dist/esm/transport/node/builders/message.js +9 -0
  153. package/dist/esm/transport/node/builders/pairing.js +4 -5
  154. package/dist/esm/transport/node/builders/usync.js +41 -0
  155. package/dist/esm/transport/node/helpers.js +107 -5
  156. package/dist/esm/transport/node/usync.js +35 -0
  157. package/dist/esm/transport/noise/WaFrameCodec.js +48 -33
  158. package/dist/esm/transport/noise/WaNoiseCert.js +3 -6
  159. package/dist/esm/transport/noise/WaNoiseSession.js +17 -10
  160. package/dist/esm/transport/proxy.js +27 -0
  161. package/dist/esm/transport/stream/parse.js +13 -48
  162. package/dist/esm/util/bytes.js +50 -32
  163. package/dist/esm/util/coercion.js +6 -14
  164. package/dist/esm/util/primitives.js +39 -14
  165. package/dist/infra/log/ConsoleLogger.js +18 -17
  166. package/dist/infra/log/PinoLogger.js +15 -9
  167. package/dist/infra/log/types.js +12 -0
  168. package/dist/infra/perf/BoundedTaskQueue.js +13 -17
  169. package/dist/media/WaMediaCrypto.js +1 -3
  170. package/dist/media/WaMediaTransferClient.js +259 -58
  171. package/dist/media/conn.js +10 -6
  172. package/dist/media/constants.js +4 -1
  173. package/dist/message/WaMessageClient.js +5 -14
  174. package/dist/message/ack.js +6 -6
  175. package/dist/message/addon-crypto.js +65 -0
  176. package/dist/message/incoming.js +104 -109
  177. package/dist/message/index.js +2 -0
  178. package/dist/message/reporting-token.js +443 -0
  179. package/dist/message/use-case-secret.js +55 -0
  180. package/dist/protocol/appstate.js +59 -1
  181. package/dist/protocol/constants.js +7 -1
  182. package/dist/protocol/index.js +20 -42
  183. package/dist/protocol/jid.js +64 -51
  184. package/dist/protocol/media.js +3 -3
  185. package/dist/protocol/nodes.js +2 -0
  186. package/dist/protocol/usync.js +14 -0
  187. package/dist/retry/index.js +3 -1
  188. package/dist/retry/outbound.js +6 -7
  189. package/dist/retry/parse.js +57 -75
  190. package/dist/retry/replay.js +46 -47
  191. package/dist/retry/tracker.js +59 -0
  192. package/dist/signal/api/SignalDeviceSyncApi.js +247 -80
  193. package/dist/signal/api/SignalDigestSyncApi.js +6 -1
  194. package/dist/signal/api/SignalIdentitySyncApi.js +49 -34
  195. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +67 -59
  196. package/dist/signal/api/SignalSessionSyncApi.js +23 -30
  197. package/dist/signal/crypto/WaAdvSignature.js +2 -4
  198. package/dist/signal/group/SenderKeyChain.js +27 -22
  199. package/dist/signal/group/SenderKeyCodec.js +1 -3
  200. package/dist/signal/group/SenderKeyManager.js +26 -16
  201. package/dist/signal/index.js +3 -1
  202. package/dist/signal/session/SignalProtocol.js +49 -14
  203. package/dist/signal/session/SignalRatchet.js +24 -15
  204. package/dist/signal/session/SignalSession.js +14 -9
  205. package/dist/signal/session/resolver.js +189 -0
  206. package/dist/signal/store/sqlite.js +16 -37
  207. package/dist/store/createStore.js +16 -18
  208. package/dist/store/noop.store.js +3 -6
  209. package/dist/store/providers/memory/appstate.store.js +28 -4
  210. package/dist/store/providers/memory/contact.store.js +5 -0
  211. package/dist/store/providers/memory/device-list.store.js +3 -30
  212. package/dist/store/providers/memory/message.store.js +11 -5
  213. package/dist/store/providers/memory/participants.store.js +1 -8
  214. package/dist/store/providers/memory/sender-key.store.js +8 -10
  215. package/dist/store/providers/memory/signal.store.js +21 -9
  216. package/dist/store/providers/memory/thread.store.js +5 -0
  217. package/dist/store/providers/sqlite/appstate.store.js +81 -0
  218. package/dist/store/providers/sqlite/connection.js +18 -13
  219. package/dist/store/providers/sqlite/contact.store.js +31 -18
  220. package/dist/store/providers/sqlite/device-list.store.js +7 -35
  221. package/dist/store/providers/sqlite/message.store.js +45 -32
  222. package/dist/store/providers/sqlite/migrations.js +1 -1
  223. package/dist/store/providers/sqlite/participants.store.js +1 -9
  224. package/dist/store/providers/sqlite/retry.store.js +8 -11
  225. package/dist/store/providers/sqlite/sender-key.store.js +24 -29
  226. package/dist/store/providers/sqlite/signal.store.js +105 -23
  227. package/dist/store/providers/sqlite/table-names.js +113 -0
  228. package/dist/store/providers/sqlite/thread.store.js +35 -22
  229. package/dist/transport/WaComms.js +27 -25
  230. package/dist/transport/WaWebSocket.js +148 -12
  231. package/dist/transport/binary/decoder.js +4 -4
  232. package/dist/transport/binary/encoder.js +12 -4
  233. package/dist/transport/index.js +7 -1
  234. package/dist/transport/keepalive/WaKeepAlive.js +1 -7
  235. package/dist/transport/node/WaNodeOrchestrator.js +2 -4
  236. package/dist/transport/node/WaNodeTransport.js +0 -3
  237. package/dist/transport/node/builders/{accountSync.js → account-sync.js} +15 -35
  238. package/dist/transport/node/builders/index.js +12 -9
  239. package/dist/transport/node/builders/message.js +9 -0
  240. package/dist/transport/node/builders/pairing.js +4 -5
  241. package/dist/transport/node/builders/usync.js +45 -0
  242. package/dist/transport/node/helpers.js +112 -4
  243. package/dist/transport/node/usync.js +38 -0
  244. package/dist/transport/noise/WaFrameCodec.js +47 -32
  245. package/dist/transport/noise/WaNoiseCert.js +5 -8
  246. package/dist/transport/noise/WaNoiseSession.js +17 -10
  247. package/dist/transport/proxy.js +34 -0
  248. package/dist/transport/stream/parse.js +17 -53
  249. package/dist/types/appstate/WaAppStateCrypto.d.ts +0 -1
  250. package/dist/types/appstate/WaAppStateSyncClient.d.ts +5 -2
  251. package/dist/types/appstate/constants.d.ts +1 -0
  252. package/dist/types/appstate/store/sqlite.d.ts +4 -18
  253. package/dist/types/appstate/utils.d.ts +0 -1
  254. package/dist/types/auth/WaAuthClient.d.ts +10 -12
  255. package/dist/types/auth/index.d.ts +0 -2
  256. package/dist/types/auth/pairing/WaQrFlow.d.ts +1 -1
  257. package/dist/types/auth/types.d.ts +6 -9
  258. package/dist/types/client/WaClient.d.ts +27 -25
  259. package/dist/types/client/WaClientFactory.d.ts +22 -23
  260. package/dist/types/client/connection/WaConnectionManager.d.ts +64 -0
  261. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +14 -0
  262. package/dist/types/client/connection/WaReceiptQueue.d.ts +13 -0
  263. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +46 -0
  264. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +0 -1
  265. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +18 -41
  266. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +2 -0
  267. package/dist/types/client/dirty.d.ts +1 -0
  268. package/dist/types/client/events/group.d.ts +2 -1
  269. package/dist/types/client/index.d.ts +1 -1
  270. package/dist/types/client/messaging/fanout.d.ts +14 -0
  271. package/dist/types/client/messaging/key-protocol.d.ts +18 -0
  272. package/dist/types/client/messaging/participants.d.ts +13 -0
  273. package/dist/types/client/types.d.ts +24 -1
  274. package/dist/types/crypto/core/hkdf.d.ts +0 -6
  275. package/dist/types/crypto/core/index.d.ts +0 -1
  276. package/dist/types/crypto/core/random.d.ts +1 -7
  277. package/dist/types/crypto/index.d.ts +0 -2
  278. package/dist/types/index.d.ts +1 -1
  279. package/dist/types/infra/log/ConsoleLogger.d.ts +2 -1
  280. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  281. package/dist/types/infra/log/types.d.ts +1 -0
  282. package/dist/types/infra/perf/BoundedTaskQueue.d.ts +1 -1
  283. package/dist/types/media/WaMediaTransferClient.d.ts +13 -3
  284. package/dist/types/media/types.d.ts +5 -0
  285. package/dist/types/message/addon-crypto.d.ts +25 -0
  286. package/dist/types/message/index.d.ts +2 -0
  287. package/dist/types/message/reporting-token.d.ts +19 -0
  288. package/dist/types/message/use-case-secret.d.ts +20 -0
  289. package/dist/types/protocol/appstate.d.ts +58 -0
  290. package/dist/types/protocol/constants.d.ts +2 -1
  291. package/dist/types/protocol/index.d.ts +2 -10
  292. package/dist/types/protocol/jid.d.ts +3 -3
  293. package/dist/types/protocol/nodes.d.ts +2 -0
  294. package/dist/types/protocol/usync.d.ts +11 -0
  295. package/dist/types/retry/index.d.ts +1 -0
  296. package/dist/types/retry/replay.d.ts +0 -4
  297. package/dist/types/retry/tracker.d.ts +19 -0
  298. package/dist/types/retry/types.d.ts +4 -3
  299. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +13 -1
  300. package/dist/types/signal/group/SenderKeyCodec.d.ts +4 -6
  301. package/dist/types/signal/index.d.ts +1 -0
  302. package/dist/types/signal/session/SignalProtocol.d.ts +9 -0
  303. package/dist/types/signal/session/resolver.d.ts +17 -0
  304. package/dist/types/store/contracts/appstate.store.d.ts +3 -0
  305. package/dist/types/store/contracts/contact.store.d.ts +1 -0
  306. package/dist/types/store/contracts/device-list.store.d.ts +0 -3
  307. package/dist/types/store/contracts/message.store.d.ts +1 -0
  308. package/dist/types/store/contracts/participants.store.d.ts +0 -1
  309. package/dist/types/store/contracts/sender-key.store.d.ts +0 -1
  310. package/dist/types/store/contracts/signal.store.d.ts +6 -0
  311. package/dist/types/store/contracts/thread.store.d.ts +1 -0
  312. package/dist/types/store/index.d.ts +1 -1
  313. package/dist/types/store/providers/memory/appstate.store.d.ts +2 -0
  314. package/dist/types/store/providers/memory/contact.store.d.ts +1 -0
  315. package/dist/types/store/providers/memory/device-list.store.d.ts +0 -3
  316. package/dist/types/store/providers/memory/message.store.d.ts +1 -0
  317. package/dist/types/store/providers/memory/participants.store.d.ts +0 -1
  318. package/dist/types/store/providers/memory/sender-key.store.d.ts +0 -1
  319. package/dist/types/store/providers/memory/signal.store.d.ts +6 -0
  320. package/dist/types/store/providers/memory/thread.store.d.ts +1 -0
  321. package/dist/types/store/providers/sqlite/appstate.store.d.ts +2 -0
  322. package/dist/types/store/providers/sqlite/contact.store.d.ts +2 -0
  323. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -3
  324. package/dist/types/store/providers/sqlite/message.store.d.ts +2 -0
  325. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -1
  326. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -1
  327. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -1
  328. package/dist/types/store/providers/sqlite/signal.store.d.ts +7 -0
  329. package/dist/types/store/providers/sqlite/table-names.d.ts +5 -0
  330. package/dist/types/store/providers/sqlite/thread.store.d.ts +2 -0
  331. package/dist/types/store/types.d.ts +3 -0
  332. package/dist/types/transport/WaWebSocket.d.ts +3 -0
  333. package/dist/types/transport/index.d.ts +2 -1
  334. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +0 -1
  335. package/dist/types/transport/node/WaNodeTransport.d.ts +0 -9
  336. package/dist/types/transport/node/builders/group.d.ts +4 -6
  337. package/dist/types/transport/node/builders/index.d.ts +2 -1
  338. package/dist/types/transport/node/builders/message.d.ts +14 -25
  339. package/dist/types/transport/node/builders/retry.d.ts +2 -4
  340. package/dist/types/transport/node/builders/usync.d.ts +21 -0
  341. package/dist/types/transport/node/helpers.d.ts +8 -0
  342. package/dist/types/transport/node/usync.d.ts +2 -0
  343. package/dist/types/transport/noise/WaFrameCodec.d.ts +3 -0
  344. package/dist/types/transport/noise/WaNoiseSession.d.ts +1 -0
  345. package/dist/types/transport/proxy.d.ts +6 -0
  346. package/dist/types/transport/stream/parse.d.ts +0 -1
  347. package/dist/types/transport/types.d.ts +18 -1
  348. package/dist/types/util/bytes.d.ts +5 -0
  349. package/dist/types/util/primitives.d.ts +3 -0
  350. package/dist/util/bytes.js +55 -33
  351. package/dist/util/coercion.js +6 -14
  352. package/dist/util/primitives.js +42 -14
  353. package/package.json +26 -5
  354. package/dist/crypto/core/encoding.js +0 -29
  355. package/dist/esm/crypto/core/encoding.js +0 -25
  356. package/dist/esm/util/base64.js +0 -18
  357. package/dist/esm/util/signal-address.js +0 -5
  358. package/dist/types/crypto/core/encoding.d.ts +0 -11
  359. package/dist/types/util/base64.d.ts +0 -4
  360. package/dist/types/util/signal-address.d.ts +0 -2
  361. package/dist/util/base64.js +0 -24
  362. package/dist/util/signal-address.js +0 -8
  363. /package/dist/types/transport/node/builders/{accountSync.d.ts → account-sync.d.ts} +0 -0
@@ -12,9 +12,8 @@ const _proto_1 = require("../proto.js");
12
12
  const constants_1 = require("../protocol/constants");
13
13
  const jid_1 = require("../protocol/jid");
14
14
  const query_1 = require("../transport/node/query");
15
- const WaComms_1 = require("../transport/WaComms");
16
- const base64_1 = require("../util/base64");
17
15
  const bytes_1 = require("../util/bytes");
16
+ const bytes_2 = require("../util/bytes");
18
17
  const primitives_1 = require("../util/primitives");
19
18
  const SYNC_RELATED_PROTOCOL_TYPES = new Set([
20
19
  _proto_1.proto.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_REQUEST,
@@ -27,15 +26,7 @@ const WA_APP_STATE_KEY_SHARE_MAX_RETRIES = 2;
27
26
  class WaClient extends node_events_1.EventEmitter {
28
27
  constructor(options, logger = new ConsoleLogger_1.ConsoleLogger('info')) {
29
28
  super();
30
- this.clockSkewMs = null;
31
- this.mediaConnCache = null;
32
- this.comms = null;
33
- this.pairingReconnectPromise = null;
34
29
  this.connectPromise = null;
35
- this.danglingReceipts = [];
36
- this.appStateKeyShareWaiters = new Set();
37
- this.appStateKeyShareVersion = 0;
38
- this.appStateBootstrapKeyShareWaitDone = false;
39
30
  const base = (0, WaClientFactory_1.resolveWaClientBase)(options, logger);
40
31
  this.options = base.options;
41
32
  this.logger = base.logger;
@@ -48,31 +39,20 @@ class WaClient extends node_events_1.EventEmitter {
48
39
  this.signalStore = base.sessionStore.signal;
49
40
  this.senderKeyStore = base.sessionStore.senderKey;
50
41
  this.threadStore = base.sessionStore.threads;
51
- const host = {
52
- sendNode: (node) => this.sendNode(node),
53
- query: (node, timeoutMs) => this.query(node, timeoutMs),
54
- queryWithContext: this.queryWithContext.bind(this),
55
- syncAppState: () => this.syncAppState().then(() => { }),
56
- emitEvent: this.emit.bind(this),
57
- handleIncomingMessageEvent: this.handleIncomingMessageEvent.bind(this),
58
- handleError: this.handleError.bind(this),
59
- scheduleReconnectAfterPairing: this.scheduleReconnectAfterPairing.bind(this),
60
- updateClockSkewFromSuccess: this.updateClockSkewFromSuccess.bind(this),
61
- getComms: () => this.comms,
62
- getMediaConnCache: () => this.mediaConnCache,
63
- setMediaConnCache: (mediaConn) => {
64
- this.mediaConnCache = mediaConn;
65
- },
66
- disconnect: this.disconnect.bind(this),
67
- clearStoredState: this.clearStoredState.bind(this),
68
- connect: this.connect.bind(this),
69
- shouldQueueDanglingReceipt: (node, error) => this.shouldQueueDanglingReceipt(node, error),
70
- enqueueDanglingReceipt: this.enqueueDanglingReceipt.bind(this),
71
- takeDanglingReceipts: () => this.danglingReceipts.splice(0)
72
- };
73
42
  const dependencies = (0, WaClientFactory_1.buildWaClientDependencies)({
74
43
  base,
75
- host
44
+ runtime: {
45
+ sendNode: (node) => this.sendNode(node),
46
+ query: (node, timeoutMs) => this.query(node, timeoutMs),
47
+ queryWithContext: this.queryWithContext.bind(this),
48
+ syncAppState: () => this.syncAppState().then(() => { }),
49
+ syncAppStateWithOptions: (syncOptions) => this.syncAppState(syncOptions),
50
+ emitEvent: this.emit.bind(this),
51
+ handleIncomingMessageEvent: this.handleIncomingMessageEvent.bind(this),
52
+ handleError: this.handleError.bind(this),
53
+ handleIncomingFrame: this.handleIncomingFrame.bind(this),
54
+ clearStoredState: this.clearStoredState.bind(this)
55
+ }
76
56
  });
77
57
  Object.assign(this, dependencies);
78
58
  this.bindNodeTransportEvents();
@@ -90,7 +70,7 @@ class WaClient extends node_events_1.EventEmitter {
90
70
  return super.emit(event, ...args);
91
71
  }
92
72
  getState() {
93
- const connected = this.comms !== null && this.comms.getCommsState().connected;
73
+ const connected = this.connectionManager.isConnected();
94
74
  this.logger.trace('wa client state requested', { connected });
95
75
  return this.authClient.getState(connected);
96
76
  }
@@ -98,7 +78,7 @@ class WaClient extends node_events_1.EventEmitter {
98
78
  return this.authClient.getCurrentCredentials();
99
79
  }
100
80
  getClockSkewMs() {
101
- return this.clockSkewMs;
81
+ return this.connectionManager.getClockSkewMs();
102
82
  }
103
83
  async sendNode(node) {
104
84
  try {
@@ -106,13 +86,13 @@ class WaClient extends node_events_1.EventEmitter {
106
86
  }
107
87
  catch (error) {
108
88
  const normalized = (0, primitives_1.toError)(error);
109
- if (this.shouldQueueDanglingReceipt(node, normalized)) {
110
- this.enqueueDanglingReceipt(node);
89
+ if (this.receiptQueue.shouldQueue(node, normalized)) {
90
+ this.receiptQueue.enqueue(node);
111
91
  this.logger.warn('queued dangling receipt after send failure', {
112
92
  id: node.attrs.id,
113
93
  to: node.attrs.to,
114
94
  message: normalized.message,
115
- queueSize: this.danglingReceipts.length
95
+ queueSize: this.receiptQueue.size()
116
96
  });
117
97
  return;
118
98
  }
@@ -120,7 +100,7 @@ class WaClient extends node_events_1.EventEmitter {
120
100
  }
121
101
  }
122
102
  async query(node, timeoutMs = this.options.iqTimeoutMs ?? constants_1.WA_DEFAULTS.IQ_TIMEOUT_MS) {
123
- if (!this.comms || !this.comms.getCommsState().connected) {
103
+ if (!this.connectionManager.isConnected()) {
124
104
  throw new Error('client is not connected');
125
105
  }
126
106
  this.logger.debug('wa client query', { tag: node.tag, id: node.attrs.id, timeoutMs });
@@ -142,12 +122,17 @@ class WaClient extends node_events_1.EventEmitter {
142
122
  this.handleError(error);
143
123
  });
144
124
  }
125
+ getMailboxPersistenceDeps() {
126
+ return {
127
+ logger: this.logger,
128
+ contactStore: this.contactStore,
129
+ messageStore: this.messageStore
130
+ };
131
+ }
145
132
  async handleIncomingMessageEvent(event) {
146
133
  this.emit('message', event);
147
134
  void (0, mailbox_1.persistIncomingMailboxEntities)({
148
- logger: this.logger,
149
- contactStore: this.contactStore,
150
- messageStore: this.messageStore,
135
+ ...this.getMailboxPersistenceDeps(),
151
136
  event
152
137
  });
153
138
  const protocolMessage = event.message?.protocolMessage;
@@ -212,9 +197,8 @@ class WaClient extends node_events_1.EventEmitter {
212
197
  imported
213
198
  });
214
199
  if (imported > 0) {
215
- const hadWaiters = this.appStateKeyShareWaiters.size > 0;
216
- this.appStateKeyShareVersion += 1;
217
- this.notifyAppStateKeyShareWaiters(true);
200
+ const hadWaiters = this.keyShareCoordinator.hasWaiters();
201
+ this.keyShareCoordinator.notifyReceived();
218
202
  if (hadWaiters) {
219
203
  this.logger.debug('app-state key share imported and waiters released', {
220
204
  id: event.stanzaId,
@@ -311,8 +295,8 @@ class WaClient extends node_events_1.EventEmitter {
311
295
  const deduped = new Map();
312
296
  for (const key of request.keyIds ?? []) {
313
297
  try {
314
- const keyId = (0, base64_1.decodeProtoBytes)(key.keyId, 'appStateSyncKeyRequest.keyIds[].keyId');
315
- const keyHex = (0, bytes_1.bytesToHex)(keyId);
298
+ const keyId = (0, bytes_1.decodeProtoBytes)(key.keyId, 'appStateSyncKeyRequest.keyIds[].keyId');
299
+ const keyHex = (0, bytes_2.bytesToHex)(keyId);
316
300
  if (deduped.has(keyHex)) {
317
301
  continue;
318
302
  }
@@ -340,10 +324,8 @@ class WaClient extends node_events_1.EventEmitter {
340
324
  async handleHistorySyncNotification(notification) {
341
325
  try {
342
326
  await (0, history_sync_1.processHistorySyncNotification)({
343
- logger: this.logger,
327
+ ...this.getMailboxPersistenceDeps(),
344
328
  mediaTransfer: this.mediaTransfer,
345
- contactStore: this.contactStore,
346
- messageStore: this.messageStore,
347
329
  threadStore: this.threadStore,
348
330
  emitEvent: this.emit.bind(this)
349
331
  }, notification);
@@ -372,144 +354,98 @@ class WaClient extends node_events_1.EventEmitter {
372
354
  this.logger.trace('wa client connect already in-flight');
373
355
  return this.connectPromise;
374
356
  }
375
- this.connectPromise = this.connectInternal().finally(() => {
357
+ this.connectPromise = this.connectionManager
358
+ .connect((frame) => this.handleIncomingFrame(frame))
359
+ .then(() => {
360
+ this.emit('connection_open', {});
361
+ })
362
+ .finally(() => {
376
363
  this.connectPromise = null;
377
364
  });
378
365
  return this.connectPromise;
379
366
  }
380
- async connectInternal() {
381
- if (this.comms) {
382
- this.logger.trace('wa client connect skipped: comms already created');
383
- return;
384
- }
385
- this.logger.info('wa client connect start');
386
- let credentials = await this.authClient.loadOrCreateCredentials();
387
- try {
388
- await this.startCommsWithCredentials(credentials);
389
- }
390
- catch (error) {
391
- if (credentials.routingInfo) {
392
- this.logger.warn('connect failed with routing info, retrying without routing info', {
393
- message: (0, primitives_1.toError)(error).message
394
- });
395
- await this.disconnect();
396
- credentials = await this.authClient.clearRoutingInfo();
397
- await this.startCommsWithCredentials(credentials);
398
- }
399
- else {
400
- await this.disconnect();
401
- throw error;
402
- }
403
- }
404
- this.logger.info('wa client connected');
405
- this.emit('connection_open', {});
406
- }
407
- scheduleReconnectAfterPairing() {
408
- this.logger.debug('wa client scheduling reconnect after pairing');
409
- setTimeout(() => {
410
- void this.reconnectAsRegisteredAfterPairing().catch((error) => {
411
- this.handleError((0, primitives_1.toError)(error));
412
- });
413
- }, 0);
414
- }
415
- async reconnectAsRegisteredAfterPairing() {
416
- if (this.pairingReconnectPromise) {
417
- this.logger.trace('pairing reconnect already in-flight');
418
- return this.pairingReconnectPromise;
419
- }
420
- this.pairingReconnectPromise = this.reconnectAsRegisteredAfterPairingInternal().finally(() => {
421
- this.pairingReconnectPromise = null;
422
- });
423
- return this.pairingReconnectPromise;
424
- }
425
- async reconnectAsRegisteredAfterPairingInternal() {
426
- const credentials = this.authClient.getCurrentCredentials();
427
- if (!credentials?.meJid) {
428
- this.logger.trace('pairing reconnect skipped: still unregistered');
429
- return;
430
- }
431
- const currentComms = this.comms;
432
- if (!currentComms) {
433
- this.logger.trace('pairing reconnect skipped: no active comms');
434
- return;
435
- }
436
- this.logger.info('pairing completed, restarting comms as registered');
437
- this.keepAlive.stop();
438
- this.nodeOrchestrator.clearPending(new Error('restarting comms after pairing'));
439
- this.clearCommsBinding();
440
- try {
441
- await currentComms.stopComms();
442
- }
443
- catch (error) {
444
- this.logger.warn('failed to stop pre-registration comms', {
445
- message: (0, primitives_1.toError)(error).message
446
- });
447
- }
448
- try {
449
- await this.startCommsWithCredentials(credentials);
450
- }
451
- catch (error) {
452
- this.logger.warn('pairing reconnect failed while starting registered comms', {
453
- message: (0, primitives_1.toError)(error).message
454
- });
455
- throw error;
456
- }
457
- }
458
367
  async disconnect() {
459
- this.logger.info('wa client disconnect start');
460
- this.keepAlive.stop();
461
- this.notifyAppStateKeyShareWaiters(false);
462
- this.appStateBootstrapKeyShareWaitDone = false;
463
- await this.authClient.clearTransientState();
464
- this.nodeOrchestrator.clearPending(new Error('client disconnected'));
465
- this.clockSkewMs = null;
466
- this.mediaConnCache = null;
467
- this.passiveTasks.resetInFlightState();
468
- const comms = this.comms;
469
- this.clearCommsBinding();
470
- if (comms) {
471
- await comms.stopComms();
472
- this.logger.info('wa client disconnected');
473
- this.emit('connection_close', {});
474
- }
368
+ this.keyShareCoordinator.notifyDisconnected();
369
+ await this.connectionManager.disconnect();
370
+ this.emit('connection_close', {});
475
371
  }
476
372
  async requestPairingCode(phoneNumber, shouldShowPushNotification = false) {
477
- if (!this.comms || !this.authClient.getCurrentCredentials()) {
373
+ if (!this.connectionManager.isConnected() || !this.authClient.getCurrentCredentials()) {
478
374
  throw new Error('client is not connected');
479
375
  }
480
376
  this.logger.debug('wa client request pairing code');
481
377
  return this.authClient.requestPairingCode(phoneNumber, shouldShowPushNotification);
482
378
  }
483
379
  async fetchPairingCountryCodeIso() {
484
- if (!this.comms || !this.authClient.getCurrentCredentials()) {
380
+ if (!this.connectionManager.isConnected() || !this.authClient.getCurrentCredentials()) {
485
381
  throw new Error('client is not connected');
486
382
  }
487
383
  this.logger.trace('wa client fetch pairing country code iso');
488
384
  return this.authClient.fetchPairingCountryCodeIso();
489
385
  }
490
- async sendMessage(to, content, options = {}) {
386
+ async getLidsByPhoneNumbers(phoneNumbers) {
387
+ if (!this.connectionManager.isConnected() || !this.authClient.getCurrentCredentials()) {
388
+ throw new Error('client is not connected');
389
+ }
390
+ const normalizedPhoneJids = phoneNumbers.map(jid_1.parsePhoneJid);
391
+ this.logger.trace('wa client query lids by phone numbers', {
392
+ phones: normalizedPhoneJids.length
393
+ });
394
+ return this.signalDeviceSync.queryLidsByPhoneJids(normalizedPhoneJids);
395
+ }
396
+ sendMessage(to, content, options = {}) {
491
397
  return this.messageDispatch.sendMessage(to, content, options);
492
398
  }
493
- async syncSignalSession(jid, reasonIdentity = false) {
494
- await this.messageDispatch.syncSignalSession(jid, reasonIdentity);
399
+ syncSignalSession(jid, reasonIdentity = false) {
400
+ return this.messageDispatch.syncSignalSession(jid, reasonIdentity);
401
+ }
402
+ sendReceipt(input) {
403
+ return this.messageDispatch.sendReceipt(input);
404
+ }
405
+ setChatMute(chatJid, muted, muteEndTimestampMs) {
406
+ return this.appStateMutations.setChatMute(chatJid, muted, muteEndTimestampMs);
407
+ }
408
+ setChatRead(chatJid, read) {
409
+ return this.appStateMutations.setChatRead(chatJid, read);
410
+ }
411
+ setChatPin(chatJid, pinned) {
412
+ return this.appStateMutations.setChatPin(chatJid, pinned);
413
+ }
414
+ setChatArchive(chatJid, archived) {
415
+ return this.appStateMutations.setChatArchive(chatJid, archived);
495
416
  }
496
- async sendReceipt(input) {
497
- await this.messageDispatch.sendReceipt(input);
417
+ clearChat(chatJid, options = {}) {
418
+ return this.appStateMutations.clearChat(chatJid, options);
419
+ }
420
+ deleteChat(chatJid, options = {}) {
421
+ return this.appStateMutations.deleteChat(chatJid, options);
422
+ }
423
+ setChatLock(chatJid, locked) {
424
+ return this.appStateMutations.setChatLock(chatJid, locked);
425
+ }
426
+ setMessageStar(message, starred) {
427
+ return this.appStateMutations.setMessageStar(message, starred);
428
+ }
429
+ deleteMessageForMe(message, options = {}) {
430
+ return this.appStateMutations.deleteMessageForMe(message, options);
431
+ }
432
+ flushAppStateMutations() {
433
+ return this.appStateMutations.flushMutations();
498
434
  }
499
435
  async exportAppState() {
500
436
  return this.appStateSync.exportState();
501
437
  }
502
438
  async syncAppState(options = {}) {
503
- if (!this.comms) {
439
+ if (!this.connectionManager.isConnected()) {
504
440
  throw new Error('client is not connected');
505
441
  }
506
442
  const shouldWaitForKeyShare = (await this.appStateStore.getActiveSyncKey()) === null;
507
- if (shouldWaitForKeyShare && !this.appStateBootstrapKeyShareWaitDone) {
508
- this.appStateBootstrapKeyShareWaitDone = true;
443
+ if (shouldWaitForKeyShare && !this.keyShareCoordinator.isBootstrapDone()) {
444
+ this.keyShareCoordinator.markBootstrapDone();
509
445
  this.logger.info('app-state bootstrap pre-sync waiting for key share', {
510
446
  timeoutMs: WA_APP_STATE_KEY_SHARE_WAIT_TIMEOUT_MS
511
447
  });
512
- const received = await this.waitForAppStateKeyShare(WA_APP_STATE_KEY_SHARE_WAIT_TIMEOUT_MS);
448
+ const received = await this.keyShareCoordinator.waitForShare(WA_APP_STATE_KEY_SHARE_WAIT_TIMEOUT_MS);
513
449
  if (received) {
514
450
  this.logger.info('app-state bootstrap pre-sync received key share, continuing sync');
515
451
  }
@@ -526,17 +462,16 @@ class WaClient extends node_events_1.EventEmitter {
526
462
  return syncResult;
527
463
  }
528
464
  let retryCount = 0;
529
- let observedKeyShareVersion = this.appStateKeyShareVersion;
530
- while (blockedCollections.length > 0 &&
531
- retryCount < WA_APP_STATE_KEY_SHARE_MAX_RETRIES) {
532
- const hasFreshShare = this.appStateKeyShareVersion !== observedKeyShareVersion;
465
+ let observedKeyShareVersion = this.keyShareCoordinator.getVersion();
466
+ while (blockedCollections.length > 0 && retryCount < WA_APP_STATE_KEY_SHARE_MAX_RETRIES) {
467
+ const hasFreshShare = this.keyShareCoordinator.getVersion() !== observedKeyShareVersion;
533
468
  if (!hasFreshShare) {
534
469
  this.logger.info('app-state bootstrap waiting for key share', {
535
470
  blockedCollections: blockedCollections.join(','),
536
471
  timeoutMs: WA_APP_STATE_KEY_SHARE_WAIT_TIMEOUT_MS,
537
472
  retryCount: retryCount + 1
538
473
  });
539
- const received = await this.waitForAppStateKeyShare(WA_APP_STATE_KEY_SHARE_WAIT_TIMEOUT_MS);
474
+ const received = await this.keyShareCoordinator.waitForShare(WA_APP_STATE_KEY_SHARE_WAIT_TIMEOUT_MS);
540
475
  if (!received) {
541
476
  this.logger.warn('app-state bootstrap key share wait timed out', {
542
477
  blockedCollections: blockedCollections.join(','),
@@ -545,7 +480,7 @@ class WaClient extends node_events_1.EventEmitter {
545
480
  break;
546
481
  }
547
482
  }
548
- observedKeyShareVersion = this.appStateKeyShareVersion;
483
+ observedKeyShareVersion = this.keyShareCoordinator.getVersion();
549
484
  retryCount += 1;
550
485
  this.logger.info('app-state bootstrap retrying sync after key share', {
551
486
  retryCount,
@@ -576,38 +511,6 @@ class WaClient extends node_events_1.EventEmitter {
576
511
  .filter((entry) => entry.state === constants_1.WA_APP_STATE_COLLECTION_STATES.BLOCKED)
577
512
  .map((entry) => entry.collection);
578
513
  }
579
- async waitForAppStateKeyShare(timeoutMs) {
580
- return new Promise((resolve) => {
581
- let settled = false;
582
- let timeoutHandle = null;
583
- const waiter = (received) => {
584
- if (settled) {
585
- return;
586
- }
587
- settled = true;
588
- if (timeoutHandle) {
589
- clearTimeout(timeoutHandle);
590
- timeoutHandle = null;
591
- }
592
- this.appStateKeyShareWaiters.delete(waiter);
593
- resolve(received);
594
- };
595
- this.appStateKeyShareWaiters.add(waiter);
596
- timeoutHandle = setTimeout(() => {
597
- waiter(false);
598
- }, timeoutMs);
599
- });
600
- }
601
- notifyAppStateKeyShareWaiters(received) {
602
- if (this.appStateKeyShareWaiters.size === 0) {
603
- return;
604
- }
605
- const waiters = [...this.appStateKeyShareWaiters.values()];
606
- this.appStateKeyShareWaiters.clear();
607
- for (const waiter of waiters) {
608
- waiter(received);
609
- }
610
- }
611
514
  emitChatEventsFromAppStateSyncResult(syncResult) {
612
515
  const shouldEmitSnapshotMutations = this.options.chatEvents?.emitSnapshotMutations === true;
613
516
  for (const collectionResult of syncResult.collections) {
@@ -647,75 +550,13 @@ class WaClient extends node_events_1.EventEmitter {
647
550
  }
648
551
  }
649
552
  }
650
- async startCommsWithCredentials(credentials) {
651
- this.logger.debug('starting comms with credentials', {
652
- registered: credentials.meJid !== null && credentials.meJid !== undefined
653
- });
654
- const commsConfig = this.authClient.buildCommsConfig(this.options);
655
- const comms = new WaComms_1.WaComms(commsConfig, this.logger);
656
- this.mediaConnCache = null;
657
- this.nodeTransport.bindComms(comms);
658
- try {
659
- comms.startComms(async (frame) => this.handleIncomingFrame(frame));
660
- await comms.waitForConnection(commsConfig.connectTimeoutMs);
661
- this.comms = comms;
662
- this.logger.info('comms connected');
663
- comms.startHandlingRequests();
664
- if (credentials.meJid) {
665
- this.keepAlive.start();
666
- }
667
- else {
668
- this.keepAlive.stop();
669
- }
670
- const serverStaticKey = comms.getServerStaticKey();
671
- if (!serverStaticKey) {
672
- this.logger.trace('no server static key available to persist');
673
- }
674
- else {
675
- await this.authClient.persistServerStaticKey(serverStaticKey);
676
- this.logger.debug('persisted server static key after comms connect');
677
- }
678
- this.passiveTasks.startPassiveTasksAfterConnect();
679
- }
680
- catch (error) {
681
- this.clearCommsBinding();
682
- try {
683
- await comms.stopComms();
684
- }
685
- catch (stopError) {
686
- this.logger.warn('failed to cleanup comms after connection start failure', {
687
- message: (0, primitives_1.toError)(stopError).message
688
- });
689
- }
690
- throw error;
691
- }
692
- }
693
- shouldQueueDanglingReceipt(node, error) {
694
- if (node.tag !== constants_1.WA_MESSAGE_TAGS.RECEIPT) {
695
- return false;
696
- }
697
- const normalized = error.message.trim().toLowerCase();
698
- return (normalized === 'comms is not connected' ||
699
- normalized === 'websocket is not connected' ||
700
- normalized === 'noise session socket closed' ||
701
- normalized.startsWith('socket closed ('));
702
- }
703
- enqueueDanglingReceipt(node) {
704
- if (this.danglingReceipts.length >= constants_1.WA_DEFAULTS.MAX_DANGLING_RECEIPTS) {
705
- this.danglingReceipts.shift();
706
- }
707
- this.danglingReceipts.push(node.content === undefined
708
- ? {
709
- tag: node.tag,
710
- attrs: { ...node.attrs }
711
- }
712
- : {
713
- tag: node.tag,
714
- attrs: { ...node.attrs },
715
- content: node.content
716
- });
717
- }
718
553
  async clearStoredState() {
554
+ const danglingReceipts = this.receiptQueue.take();
555
+ if (danglingReceipts.length > 0) {
556
+ this.logger.debug('cleared dangling receipts while clearing stored state', {
557
+ count: danglingReceipts.length
558
+ });
559
+ }
719
560
  await this.authClient.clearStoredCredentials();
720
561
  await this.appStateStore.clear();
721
562
  await this.contactStore.clear();
@@ -731,19 +572,5 @@ class WaClient extends node_events_1.EventEmitter {
731
572
  this.logger.error('wa client error', { message: error.message });
732
573
  this.emit('client_error', { error });
733
574
  }
734
- clearCommsBinding() {
735
- this.notifyAppStateKeyShareWaiters(false);
736
- this.comms = null;
737
- this.nodeTransport.bindComms(null);
738
- }
739
- updateClockSkewFromSuccess(serverUnixSeconds) {
740
- const serverMs = serverUnixSeconds * 1000;
741
- const nowMs = Date.now();
742
- this.clockSkewMs = serverMs - nowMs;
743
- this.logger.debug('updated clock skew from success', {
744
- serverUnixSeconds,
745
- clockSkewMs: this.clockSkewMs
746
- });
747
- }
748
575
  }
749
576
  exports.WaClient = WaClient;