zapo-js 0.1.2 → 0.3.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.
Files changed (630) hide show
  1. package/README.md +16 -4
  2. package/dist/appstate/WaAppStateCrypto.js +50 -42
  3. package/dist/appstate/WaAppStateSyncClient.js +215 -133
  4. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  5. package/dist/appstate/index.js +9 -7
  6. package/dist/appstate/utils.js +0 -5
  7. package/dist/auth/WaAuthClient.js +55 -57
  8. package/dist/auth/credentials-flow.js +195 -0
  9. package/dist/auth/index.js +1 -6
  10. package/dist/auth/pairing/WaPairingFlow.js +39 -32
  11. package/dist/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +35 -17
  12. package/dist/client/WaClient.js +338 -174
  13. package/dist/client/WaClientFactory.js +399 -66
  14. package/dist/client/connection/WaConnectionManager.js +23 -11
  15. package/dist/client/coordinators/WaAbPropsCoordinator.js +141 -0
  16. package/dist/client/coordinators/WaBusinessCoordinator.js +232 -0
  17. package/dist/client/coordinators/WaEmailCoordinator.js +63 -0
  18. package/dist/client/coordinators/WaGroupCoordinator.js +11 -7
  19. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +34 -8
  20. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +341 -118
  21. package/dist/client/coordinators/WaOfflineResumeCoordinator.js +114 -0
  22. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  23. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  24. package/dist/client/coordinators/WaProfileCoordinator.js +214 -0
  25. package/dist/client/coordinators/WaRetryCoordinator.js +184 -30
  26. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  27. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +184 -0
  28. package/dist/client/dirty.js +41 -21
  29. package/dist/client/events/abprops.js +43 -0
  30. package/dist/client/events/devices.js +72 -0
  31. package/dist/client/events/group.js +3 -11
  32. package/dist/client/events/identity.js +22 -0
  33. package/dist/client/events/privacy-token.js +38 -0
  34. package/dist/client/events/registration.js +42 -0
  35. package/dist/client/history-sync.js +50 -9
  36. package/dist/client/incoming.js +74 -7
  37. package/dist/client/mailbox.js +40 -23
  38. package/dist/client/media.js +243 -0
  39. package/dist/client/messages.js +245 -92
  40. package/dist/client/messaging/fanout.js +21 -11
  41. package/dist/client/messaging/participants.js +6 -4
  42. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  43. package/dist/client/tokens/cs-token.js +50 -0
  44. package/dist/client/tokens/tc-token.js +25 -0
  45. package/dist/crypto/core/index.js +5 -2
  46. package/dist/crypto/core/keys.js +4 -4
  47. package/dist/crypto/core/nonce.js +2 -0
  48. package/dist/crypto/core/primitives.js +0 -8
  49. package/dist/crypto/core/random.js +24 -8
  50. package/dist/crypto/core/xeddsa.js +57 -0
  51. package/dist/crypto/curves/X25519.js +43 -6
  52. package/dist/crypto/curves/constants.js +2 -1
  53. package/dist/crypto/index.js +3 -0
  54. package/dist/crypto/math/constants.js +13 -36
  55. package/dist/crypto/math/edwards.js +171 -44
  56. package/dist/crypto/math/fe.js +706 -0
  57. package/dist/crypto/math/mod.js +10 -3
  58. package/dist/esm/appstate/WaAppStateCrypto.js +40 -32
  59. package/dist/esm/appstate/WaAppStateSyncClient.js +206 -124
  60. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  61. package/dist/esm/appstate/index.js +2 -2
  62. package/dist/esm/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +1 -1
  63. package/dist/esm/appstate/utils.js +2 -5
  64. package/dist/esm/auth/WaAuthClient.js +52 -54
  65. package/dist/esm/auth/credentials-flow.js +190 -0
  66. package/dist/esm/auth/index.js +0 -2
  67. package/dist/esm/auth/pairing/WaPairingFlow.js +39 -32
  68. package/dist/esm/auth/pairing/{WaPairingCodeCrypto.js → pairing-code-crypto.js} +26 -10
  69. package/dist/esm/client/WaClient.js +339 -175
  70. package/dist/esm/client/WaClientFactory.js +401 -68
  71. package/dist/esm/client/connection/WaConnectionManager.js +23 -11
  72. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +137 -0
  73. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +229 -0
  74. package/dist/esm/client/coordinators/WaEmailCoordinator.js +60 -0
  75. package/dist/esm/client/coordinators/WaGroupCoordinator.js +11 -7
  76. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +36 -10
  77. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +337 -114
  78. package/dist/esm/client/coordinators/WaOfflineResumeCoordinator.js +110 -0
  79. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +97 -36
  80. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  81. package/dist/esm/client/coordinators/WaProfileCoordinator.js +211 -0
  82. package/dist/esm/client/coordinators/WaRetryCoordinator.js +186 -32
  83. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  84. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +180 -0
  85. package/dist/esm/client/dirty.js +41 -21
  86. package/dist/esm/client/events/abprops.js +40 -0
  87. package/dist/esm/client/events/devices.js +68 -0
  88. package/dist/esm/client/events/group.js +3 -11
  89. package/dist/esm/client/events/identity.js +19 -0
  90. package/dist/esm/client/events/privacy-token.js +35 -0
  91. package/dist/esm/client/events/registration.js +39 -0
  92. package/dist/esm/client/history-sync.js +50 -9
  93. package/dist/esm/client/incoming.js +74 -8
  94. package/dist/esm/client/mailbox.js +40 -23
  95. package/dist/esm/client/media.js +234 -0
  96. package/dist/esm/client/messages.js +244 -91
  97. package/dist/esm/client/messaging/fanout.js +22 -12
  98. package/dist/esm/client/messaging/participants.js +6 -4
  99. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  100. package/dist/esm/client/tokens/cs-token.js +46 -0
  101. package/dist/esm/client/tokens/tc-token.js +18 -0
  102. package/dist/esm/crypto/core/index.js +3 -2
  103. package/dist/esm/crypto/core/keys.js +1 -1
  104. package/dist/esm/crypto/core/nonce.js +2 -0
  105. package/dist/esm/crypto/core/primitives.js +0 -7
  106. package/dist/esm/crypto/core/random.js +23 -7
  107. package/dist/esm/crypto/core/xeddsa.js +53 -0
  108. package/dist/esm/crypto/curves/X25519.js +45 -8
  109. package/dist/esm/crypto/curves/constants.js +1 -0
  110. package/dist/esm/crypto/index.js +1 -0
  111. package/dist/esm/crypto/math/constants.js +12 -35
  112. package/dist/esm/crypto/math/edwards.js +174 -47
  113. package/dist/esm/crypto/math/fe.js +691 -0
  114. package/dist/esm/crypto/math/mod.js +10 -1
  115. package/dist/esm/index.js +1 -1
  116. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  117. package/dist/esm/infra/perf/BoundedTaskQueue.js +3 -1
  118. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  119. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  120. package/dist/esm/infra/perf/StoreLock.js +80 -0
  121. package/dist/esm/media/WaMediaCrypto.js +332 -55
  122. package/dist/esm/media/WaMediaTransferClient.js +69 -220
  123. package/dist/esm/media/constants.js +4 -1
  124. package/dist/esm/media/processor.js +1 -0
  125. package/dist/esm/message/WaMessageClient.js +26 -19
  126. package/dist/esm/message/addon-crypto.js +130 -3
  127. package/dist/esm/message/content.js +206 -14
  128. package/dist/esm/message/icdc.js +76 -0
  129. package/dist/esm/message/incoming.js +38 -24
  130. package/dist/esm/message/phash.js +35 -13
  131. package/dist/esm/message/reporting-token.js +17 -30
  132. package/dist/esm/message/use-case-secret.js +1 -1
  133. package/dist/esm/protocol/abprops.js +159 -0
  134. package/dist/esm/protocol/appstate.js +9 -40
  135. package/dist/esm/protocol/browser.js +24 -18
  136. package/dist/esm/protocol/constants.js +8 -4
  137. package/dist/esm/protocol/defaults.js +6 -0
  138. package/dist/esm/protocol/email.js +30 -0
  139. package/dist/esm/protocol/index.js +1 -2
  140. package/dist/esm/protocol/jid.js +142 -39
  141. package/dist/esm/protocol/message.js +61 -1
  142. package/dist/esm/protocol/nodes.js +8 -2
  143. package/dist/esm/protocol/notification.js +9 -1
  144. package/dist/esm/protocol/privacy-token.js +17 -0
  145. package/dist/esm/protocol/privacy.js +55 -0
  146. package/dist/esm/protocol/stream.js +26 -1
  147. package/dist/esm/retry/codec.js +216 -0
  148. package/dist/esm/retry/constants.js +1 -1
  149. package/dist/esm/retry/index.js +2 -2
  150. package/dist/esm/retry/parse.js +50 -30
  151. package/dist/esm/retry/reason.js +1 -1
  152. package/dist/esm/retry/replay.js +11 -7
  153. package/dist/esm/retry/tracker.js +50 -12
  154. package/dist/esm/signal/api/SignalDeviceSyncApi.js +52 -32
  155. package/dist/esm/signal/api/SignalDigestSyncApi.js +21 -15
  156. package/dist/esm/signal/api/SignalIdentitySyncApi.js +30 -15
  157. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +19 -8
  158. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  159. package/dist/esm/signal/api/SignalSessionSyncApi.js +17 -8
  160. package/dist/esm/signal/api/result-map.js +10 -0
  161. package/dist/esm/signal/constants.js +0 -4
  162. package/dist/esm/signal/crypto/WaAdvSignature.js +5 -45
  163. package/dist/esm/signal/crypto/constants.js +0 -4
  164. package/dist/esm/signal/{store/sqlite.js → encoding.js} +40 -29
  165. package/dist/esm/signal/group/SenderKeyChain.js +3 -3
  166. package/dist/esm/signal/group/SenderKeyCodec.js +8 -8
  167. package/dist/esm/signal/group/SenderKeyManager.js +131 -109
  168. package/dist/esm/signal/index.js +1 -0
  169. package/dist/esm/signal/registration/keygen.js +8 -5
  170. package/dist/esm/signal/registration/utils.js +3 -2
  171. package/dist/esm/signal/session/SignalProtocol.js +158 -81
  172. package/dist/esm/signal/session/SignalRatchet.js +21 -10
  173. package/dist/esm/signal/session/SignalSerializer.js +5 -6
  174. package/dist/esm/signal/session/SignalSession.js +11 -9
  175. package/dist/esm/signal/session/resolver.js +140 -105
  176. package/dist/esm/store/contracts/identity.store.js +1 -0
  177. package/dist/esm/store/contracts/message-secret.store.js +1 -0
  178. package/dist/esm/store/contracts/pre-key.store.js +1 -0
  179. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  180. package/dist/esm/store/contracts/session.store.js +1 -0
  181. package/dist/esm/store/createStore.js +143 -193
  182. package/dist/esm/store/index.js +5 -10
  183. package/dist/esm/store/locks/appstate.lock.js +26 -0
  184. package/dist/esm/store/locks/auth.lock.js +15 -0
  185. package/dist/esm/store/locks/contact.lock.js +20 -0
  186. package/dist/esm/store/locks/device-list.lock.js +20 -0
  187. package/dist/esm/store/locks/identity.lock.js +16 -0
  188. package/dist/esm/store/locks/message-secret.lock.js +17 -0
  189. package/dist/esm/store/locks/message.lock.js +21 -0
  190. package/dist/esm/store/locks/participants.lock.js +20 -0
  191. package/dist/esm/store/locks/pre-key.lock.js +27 -0
  192. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  193. package/dist/esm/store/locks/retry.lock.js +29 -0
  194. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  195. package/dist/esm/store/locks/session.lock.js +19 -0
  196. package/dist/esm/store/locks/signal.lock.js +39 -0
  197. package/dist/esm/store/locks/thread.lock.js +21 -0
  198. package/dist/esm/store/noop.store.js +21 -1
  199. package/dist/esm/store/providers/memory/appstate.store.js +22 -24
  200. package/dist/esm/store/providers/memory/device-list.store.js +13 -5
  201. package/dist/esm/store/providers/memory/identity.store.js +31 -0
  202. package/dist/esm/store/providers/memory/message-secret.store.js +81 -0
  203. package/dist/esm/store/providers/memory/participants.store.js +3 -0
  204. package/dist/esm/store/providers/memory/pre-key.store.js +97 -0
  205. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  206. package/dist/esm/store/providers/memory/retry.store.js +99 -10
  207. package/dist/esm/store/providers/memory/sender-key.store.js +6 -1
  208. package/dist/esm/store/providers/memory/session.store.js +45 -0
  209. package/dist/esm/store/providers/memory/signal.store.js +1 -147
  210. package/dist/esm/transport/WaComms.js +7 -4
  211. package/dist/esm/transport/WaWebSocket.js +9 -7
  212. package/dist/esm/transport/binary/constants.js +0 -30
  213. package/dist/esm/transport/binary/decoder.js +4 -4
  214. package/dist/esm/transport/binary/encoder.js +8 -15
  215. package/dist/esm/transport/binary/index.js +0 -1
  216. package/dist/esm/transport/index.js +6 -0
  217. package/dist/esm/transport/keepalive/WaKeepAlive.js +17 -8
  218. package/dist/esm/transport/node/WaMobileTcpSocket.js +114 -0
  219. package/dist/esm/transport/node/WaNodeOrchestrator.js +37 -22
  220. package/dist/esm/transport/node/builders/abprops.js +20 -0
  221. package/dist/esm/transport/node/builders/business.js +129 -0
  222. package/dist/esm/transport/node/builders/device.js +11 -0
  223. package/dist/esm/transport/node/builders/email.js +65 -0
  224. package/dist/esm/transport/node/builders/global.js +370 -0
  225. package/dist/esm/transport/node/builders/message.js +63 -239
  226. package/dist/esm/transport/node/builders/offline.js +14 -0
  227. package/dist/esm/transport/node/builders/pairing.js +0 -24
  228. package/dist/esm/transport/node/builders/prekeys.js +37 -40
  229. package/dist/esm/transport/node/builders/presence.js +13 -0
  230. package/dist/esm/transport/node/builders/privacy-token.js +37 -0
  231. package/dist/esm/transport/node/builders/privacy.js +48 -0
  232. package/dist/esm/transport/node/builders/profile.js +70 -0
  233. package/dist/esm/transport/node/builders/retry.js +11 -23
  234. package/dist/esm/transport/node/builders/usync.js +6 -2
  235. package/dist/esm/transport/node/helpers.js +43 -1
  236. package/dist/esm/transport/node/mex/argo-decoder.js +152 -0
  237. package/dist/esm/transport/node/mex/client.js +83 -0
  238. package/dist/esm/transport/node/mex/persist-ids.js +10 -0
  239. package/dist/esm/transport/node/usync.js +3 -33
  240. package/dist/esm/transport/node/xml.js +35 -14
  241. package/dist/esm/transport/noise/WaClientPayload.js +24 -19
  242. package/dist/esm/transport/noise/WaFrameCodec.js +2 -2
  243. package/dist/esm/transport/noise/WaMobileClientPayload.js +53 -0
  244. package/dist/esm/transport/noise/WaNoiseCert.js +9 -27
  245. package/dist/esm/transport/noise/WaNoiseSession.js +76 -34
  246. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  247. package/dist/esm/transport/stream/parse.js +8 -4
  248. package/dist/esm/util/bytes.js +22 -18
  249. package/dist/esm/util/index.js +5 -0
  250. package/dist/esm/util/primitives.js +3 -2
  251. package/dist/index.js +7 -1
  252. package/dist/infra/perf/BackgroundQueue.js +482 -0
  253. package/dist/infra/perf/BoundedTaskQueue.js +3 -1
  254. package/dist/infra/perf/PromiseDedup.js +24 -0
  255. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  256. package/dist/infra/perf/StoreLock.js +84 -0
  257. package/dist/media/WaMediaCrypto.js +328 -51
  258. package/dist/media/WaMediaTransferClient.js +72 -253
  259. package/dist/media/constants.js +5 -2
  260. package/dist/media/processor.js +2 -0
  261. package/dist/message/WaMessageClient.js +26 -19
  262. package/dist/message/addon-crypto.js +131 -0
  263. package/dist/message/content.js +211 -14
  264. package/dist/message/icdc.js +81 -0
  265. package/dist/message/incoming.js +38 -24
  266. package/dist/message/phash.js +35 -13
  267. package/dist/message/reporting-token.js +16 -30
  268. package/dist/message/use-case-secret.js +1 -1
  269. package/dist/protocol/abprops.js +163 -0
  270. package/dist/protocol/appstate.js +10 -41
  271. package/dist/protocol/browser.js +25 -18
  272. package/dist/protocol/constants.js +33 -2
  273. package/dist/protocol/defaults.js +6 -0
  274. package/dist/protocol/email.js +33 -0
  275. package/dist/protocol/index.js +8 -5
  276. package/dist/protocol/jid.js +149 -39
  277. package/dist/protocol/message.js +62 -2
  278. package/dist/protocol/nodes.js +8 -2
  279. package/dist/protocol/notification.js +10 -2
  280. package/dist/protocol/privacy-token.js +20 -0
  281. package/dist/protocol/privacy.js +58 -0
  282. package/dist/protocol/stream.js +27 -2
  283. package/dist/retry/codec.js +220 -0
  284. package/dist/retry/constants.js +1 -1
  285. package/dist/retry/index.js +5 -5
  286. package/dist/retry/parse.js +51 -30
  287. package/dist/retry/reason.js +1 -1
  288. package/dist/retry/replay.js +10 -6
  289. package/dist/retry/tracker.js +50 -12
  290. package/dist/signal/api/SignalDeviceSyncApi.js +51 -31
  291. package/dist/signal/api/SignalDigestSyncApi.js +21 -15
  292. package/dist/signal/api/SignalIdentitySyncApi.js +29 -14
  293. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +17 -6
  294. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  295. package/dist/signal/api/SignalSessionSyncApi.js +16 -7
  296. package/dist/signal/api/result-map.js +13 -0
  297. package/dist/signal/constants.js +1 -5
  298. package/dist/signal/crypto/WaAdvSignature.js +2 -44
  299. package/dist/signal/crypto/constants.js +1 -5
  300. package/dist/signal/{store/sqlite.js → encoding.js} +41 -25
  301. package/dist/signal/group/SenderKeyChain.js +2 -2
  302. package/dist/signal/group/SenderKeyCodec.js +8 -8
  303. package/dist/signal/group/SenderKeyManager.js +130 -108
  304. package/dist/signal/index.js +13 -1
  305. package/dist/signal/registration/keygen.js +7 -4
  306. package/dist/signal/registration/utils.js +3 -2
  307. package/dist/signal/session/SignalProtocol.js +158 -81
  308. package/dist/signal/session/SignalRatchet.js +19 -8
  309. package/dist/signal/session/SignalSerializer.js +5 -6
  310. package/dist/signal/session/SignalSession.js +11 -9
  311. package/dist/signal/session/resolver.js +138 -103
  312. package/dist/store/contracts/identity.store.js +2 -0
  313. package/dist/store/contracts/message-secret.store.js +2 -0
  314. package/dist/store/contracts/pre-key.store.js +2 -0
  315. package/dist/store/contracts/privacy-token.store.js +2 -0
  316. package/dist/store/contracts/session.store.js +2 -0
  317. package/dist/store/createStore.js +142 -192
  318. package/dist/store/index.js +23 -33
  319. package/dist/store/locks/appstate.lock.js +29 -0
  320. package/dist/store/locks/auth.lock.js +18 -0
  321. package/dist/store/locks/contact.lock.js +23 -0
  322. package/dist/store/locks/device-list.lock.js +23 -0
  323. package/dist/store/locks/identity.lock.js +19 -0
  324. package/dist/store/locks/message-secret.lock.js +20 -0
  325. package/dist/store/locks/message.lock.js +24 -0
  326. package/dist/store/locks/participants.lock.js +23 -0
  327. package/dist/store/locks/pre-key.lock.js +30 -0
  328. package/dist/store/locks/privacy-token.lock.js +21 -0
  329. package/dist/store/locks/retry.lock.js +32 -0
  330. package/dist/store/locks/sender-key.lock.js +55 -0
  331. package/dist/store/locks/session.lock.js +22 -0
  332. package/dist/store/locks/signal.lock.js +42 -0
  333. package/dist/store/locks/thread.lock.js +24 -0
  334. package/dist/store/noop.store.js +22 -2
  335. package/dist/store/providers/memory/appstate.store.js +22 -24
  336. package/dist/store/providers/memory/device-list.store.js +13 -5
  337. package/dist/store/providers/memory/identity.store.js +35 -0
  338. package/dist/store/providers/memory/message-secret.store.js +85 -0
  339. package/dist/store/providers/memory/participants.store.js +3 -0
  340. package/dist/store/providers/memory/pre-key.store.js +101 -0
  341. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  342. package/dist/store/providers/memory/retry.store.js +98 -9
  343. package/dist/store/providers/memory/sender-key.store.js +6 -1
  344. package/dist/store/providers/memory/session.store.js +49 -0
  345. package/dist/store/providers/memory/signal.store.js +1 -147
  346. package/dist/transport/WaComms.js +7 -4
  347. package/dist/transport/WaWebSocket.js +9 -7
  348. package/dist/transport/binary/constants.js +1 -31
  349. package/dist/transport/binary/decoder.js +4 -4
  350. package/dist/transport/binary/encoder.js +8 -15
  351. package/dist/transport/binary/index.js +0 -4
  352. package/dist/transport/index.js +17 -1
  353. package/dist/transport/keepalive/WaKeepAlive.js +17 -8
  354. package/dist/transport/node/WaMobileTcpSocket.js +118 -0
  355. package/dist/transport/node/WaNodeOrchestrator.js +36 -21
  356. package/dist/transport/node/builders/abprops.js +23 -0
  357. package/dist/transport/node/builders/business.js +137 -0
  358. package/dist/transport/node/builders/device.js +14 -0
  359. package/dist/transport/node/builders/email.js +72 -0
  360. package/dist/transport/node/builders/global.js +375 -0
  361. package/dist/transport/node/builders/message.js +64 -245
  362. package/dist/transport/node/builders/offline.js +17 -0
  363. package/dist/transport/node/builders/pairing.js +0 -26
  364. package/dist/transport/node/builders/prekeys.js +36 -39
  365. package/dist/transport/node/builders/presence.js +16 -0
  366. package/dist/transport/node/builders/privacy-token.js +42 -0
  367. package/dist/transport/node/builders/privacy.js +55 -0
  368. package/dist/transport/node/builders/profile.js +78 -0
  369. package/dist/transport/node/builders/retry.js +10 -22
  370. package/dist/transport/node/builders/usync.js +6 -2
  371. package/dist/transport/node/helpers.js +46 -1
  372. package/dist/transport/node/mex/argo-decoder.js +189 -0
  373. package/dist/transport/node/mex/client.js +86 -0
  374. package/dist/transport/node/mex/persist-ids.js +13 -0
  375. package/dist/transport/node/usync.js +2 -32
  376. package/dist/transport/node/xml.js +35 -14
  377. package/dist/transport/noise/WaClientPayload.js +26 -21
  378. package/dist/transport/noise/WaFrameCodec.js +1 -1
  379. package/dist/transport/noise/WaMobileClientPayload.js +56 -0
  380. package/dist/transport/noise/WaNoiseCert.js +8 -26
  381. package/dist/transport/noise/WaNoiseSession.js +75 -33
  382. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  383. package/dist/transport/stream/parse.js +7 -3
  384. package/dist/types/appstate/WaAppStateCrypto.d.ts +11 -8
  385. package/dist/types/appstate/WaAppStateSyncClient.d.ts +6 -2
  386. package/dist/types/appstate/encoding.d.ts +7 -0
  387. package/dist/types/appstate/index.d.ts +3 -3
  388. package/dist/types/appstate/{WaAppStateSyncResponseParser.d.ts → response-parser.d.ts} +1 -1
  389. package/dist/types/appstate/types.d.ts +1 -1
  390. package/dist/types/appstate/utils.d.ts +0 -2
  391. package/dist/types/auth/WaAuthClient.d.ts +9 -3
  392. package/dist/types/auth/credentials-flow.d.ts +20 -0
  393. package/dist/types/auth/index.d.ts +0 -2
  394. package/dist/types/auth/pairing/WaPairingFlow.d.ts +3 -2
  395. package/dist/types/auth/pairing/{WaPairingCodeCrypto.d.ts → pairing-code-crypto.d.ts} +6 -1
  396. package/dist/types/auth/types.d.ts +41 -0
  397. package/dist/types/client/WaClient.d.ts +44 -18
  398. package/dist/types/client/WaClientFactory.d.ts +22 -8
  399. package/dist/types/client/connection/WaConnectionManager.d.ts +2 -0
  400. package/dist/types/client/coordinators/WaAbPropsCoordinator.d.ts +26 -0
  401. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  402. package/dist/types/client/coordinators/WaEmailCoordinator.d.ts +24 -0
  403. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +9 -2
  404. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -2
  405. package/dist/types/client/coordinators/WaOfflineResumeCoordinator.d.ts +31 -0
  406. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +16 -1
  407. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  408. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +38 -0
  409. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +12 -0
  410. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  411. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +55 -0
  412. package/dist/types/client/dirty.d.ts +3 -1
  413. package/dist/types/client/events/abprops.d.ts +14 -0
  414. package/dist/types/client/events/devices.d.ts +20 -0
  415. package/dist/types/client/events/identity.d.ts +9 -0
  416. package/dist/types/client/events/privacy-token.d.ts +7 -0
  417. package/dist/types/client/events/registration.d.ts +17 -0
  418. package/dist/types/client/history-sync.d.ts +9 -6
  419. package/dist/types/client/incoming.d.ts +9 -2
  420. package/dist/types/client/index.d.ts +1 -1
  421. package/dist/types/client/mailbox.d.ts +5 -5
  422. package/dist/types/client/media.d.ts +31 -0
  423. package/dist/types/client/messages.d.ts +3 -2
  424. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  425. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  426. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  427. package/dist/types/client/types.d.ts +151 -4
  428. package/dist/types/crypto/core/index.d.ts +3 -2
  429. package/dist/types/crypto/core/nonce.d.ts +2 -0
  430. package/dist/types/crypto/core/primitives.d.ts +1 -2
  431. package/dist/types/crypto/core/random.d.ts +2 -1
  432. package/dist/types/crypto/core/xeddsa.d.ts +2 -0
  433. package/dist/types/crypto/curves/constants.d.ts +1 -0
  434. package/dist/types/crypto/index.d.ts +2 -0
  435. package/dist/types/crypto/math/constants.d.ts +4 -2
  436. package/dist/types/crypto/math/fe.d.ts +30 -0
  437. package/dist/types/crypto/math/mod.d.ts +0 -2
  438. package/dist/types/crypto/math/types.d.ts +11 -4
  439. package/dist/types/index.d.ts +6 -3
  440. package/dist/types/infra/log/ConsoleLogger.d.ts +1 -1
  441. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  442. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  443. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  444. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  445. package/dist/types/infra/perf/StoreLock.d.ts +11 -0
  446. package/dist/types/media/WaMediaCrypto.d.ts +16 -6
  447. package/dist/types/media/WaMediaTransferClient.d.ts +6 -23
  448. package/dist/types/media/constants.d.ts +3 -1
  449. package/dist/types/media/index.d.ts +2 -1
  450. package/dist/types/media/processor.d.ts +28 -0
  451. package/dist/types/media/types.d.ts +19 -5
  452. package/dist/types/message/addon-crypto.d.ts +34 -3
  453. package/dist/types/message/content.d.ts +11 -1
  454. package/dist/types/message/icdc.d.ts +13 -0
  455. package/dist/types/message/reporting-token.d.ts +0 -1
  456. package/dist/types/message/types.d.ts +42 -11
  457. package/dist/types/protocol/abprops.d.ts +142 -0
  458. package/dist/types/protocol/appstate.d.ts +0 -11
  459. package/dist/types/protocol/browser.d.ts +1 -0
  460. package/dist/types/protocol/constants.d.ts +12 -4
  461. package/dist/types/protocol/defaults.d.ts +6 -0
  462. package/dist/types/protocol/email.d.ts +32 -0
  463. package/dist/types/protocol/index.d.ts +1 -2
  464. package/dist/types/protocol/jid.d.ts +20 -2
  465. package/dist/types/protocol/message.d.ts +60 -0
  466. package/dist/types/protocol/nodes.d.ts +6 -0
  467. package/dist/types/protocol/notification.d.ts +8 -0
  468. package/dist/types/protocol/privacy-token.d.ts +17 -0
  469. package/dist/types/protocol/privacy.d.ts +75 -0
  470. package/dist/types/protocol/stream.d.ts +31 -0
  471. package/dist/types/retry/codec.d.ts +3 -0
  472. package/dist/types/retry/index.d.ts +3 -3
  473. package/dist/types/retry/parse.d.ts +5 -2
  474. package/dist/types/retry/reason.d.ts +1 -1
  475. package/dist/types/retry/tracker.d.ts +1 -0
  476. package/dist/types/retry/types.d.ts +6 -1
  477. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +2 -1
  478. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +9 -0
  479. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +5 -3
  480. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  481. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  482. package/dist/types/signal/api/result-map.d.ts +1 -0
  483. package/dist/types/signal/constants.d.ts +0 -3
  484. package/dist/types/signal/crypto/WaAdvSignature.d.ts +0 -2
  485. package/dist/types/signal/crypto/constants.d.ts +0 -1
  486. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +9 -3
  487. package/dist/types/signal/group/SenderKeyChain.d.ts +1 -1
  488. package/dist/types/signal/group/SenderKeyManager.d.ts +17 -7
  489. package/dist/types/signal/index.d.ts +2 -0
  490. package/dist/types/signal/registration/utils.d.ts +2 -1
  491. package/dist/types/signal/session/SignalProtocol.d.ts +21 -6
  492. package/dist/types/signal/session/SignalSerializer.d.ts +2 -1
  493. package/dist/types/signal/session/resolver.d.ts +11 -4
  494. package/dist/types/signal/types.d.ts +16 -4
  495. package/dist/types/store/contracts/appstate.store.d.ts +1 -1
  496. package/dist/types/store/contracts/identity.store.d.ts +11 -0
  497. package/dist/types/store/contracts/message-secret.store.d.ts +16 -0
  498. package/dist/types/store/contracts/pre-key.store.d.ts +13 -0
  499. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  500. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  501. package/dist/types/store/contracts/session.store.d.ts +14 -0
  502. package/dist/types/store/contracts/signal.store.d.ts +1 -27
  503. package/dist/types/store/createStore.d.ts +1 -1
  504. package/dist/types/store/index.d.ts +12 -12
  505. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  506. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  507. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  508. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  509. package/dist/types/store/locks/identity.lock.d.ts +3 -0
  510. package/dist/types/store/locks/message-secret.lock.d.ts +3 -0
  511. package/dist/types/store/locks/message.lock.d.ts +3 -0
  512. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  513. package/dist/types/store/locks/pre-key.lock.d.ts +3 -0
  514. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  515. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  516. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  517. package/dist/types/store/locks/session.lock.d.ts +3 -0
  518. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  519. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  520. package/dist/types/store/noop.store.d.ts +4 -0
  521. package/dist/types/store/providers/memory/appstate.store.d.ts +1 -1
  522. package/dist/types/store/providers/memory/identity.store.d.ts +18 -0
  523. package/dist/types/store/providers/memory/message-secret.store.d.ts +21 -0
  524. package/dist/types/store/providers/memory/pre-key.store.d.ts +23 -0
  525. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  526. package/dist/types/store/providers/memory/retry.store.d.ts +15 -1
  527. package/dist/types/store/providers/memory/session.store.d.ts +21 -0
  528. package/dist/types/store/providers/memory/signal.store.d.ts +2 -43
  529. package/dist/types/store/providers/memory/thread.store.d.ts +1 -1
  530. package/dist/types/store/types.d.ts +69 -61
  531. package/dist/types/transport/WaWebSocket.d.ts +1 -1
  532. package/dist/types/transport/binary/constants.d.ts +0 -30
  533. package/dist/types/transport/binary/index.d.ts +0 -1
  534. package/dist/types/transport/index.d.ts +8 -1
  535. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +4 -1
  536. package/dist/types/transport/node/WaMobileTcpSocket.d.ts +18 -0
  537. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +9 -6
  538. package/dist/types/transport/node/builders/abprops.d.ts +5 -0
  539. package/dist/types/transport/node/builders/business.d.ts +29 -0
  540. package/dist/types/transport/node/builders/device.d.ts +2 -0
  541. package/dist/types/transport/node/builders/email.d.ts +11 -0
  542. package/dist/types/transport/node/builders/global.d.ts +102 -0
  543. package/dist/types/transport/node/builders/message.d.ts +8 -7
  544. package/dist/types/transport/node/builders/offline.d.ts +2 -0
  545. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  546. package/dist/types/transport/node/builders/prekeys.d.ts +4 -3
  547. package/dist/types/transport/node/builders/presence.d.ts +6 -0
  548. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  549. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  550. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  551. package/dist/types/transport/node/builders/retry.d.ts +0 -1
  552. package/dist/types/transport/node/helpers.d.ts +8 -0
  553. package/dist/types/transport/node/mex/argo-decoder.d.ts +11 -0
  554. package/dist/types/transport/node/mex/client.d.ts +18 -0
  555. package/dist/types/transport/node/mex/persist-ids.d.ts +14 -0
  556. package/dist/types/transport/noise/WaMobileClientPayload.d.ts +29 -0
  557. package/dist/types/transport/noise/WaNoiseCert.d.ts +7 -1
  558. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  559. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  560. package/dist/types/transport/types.d.ts +8 -0
  561. package/dist/types/util/bytes.d.ts +1 -1
  562. package/dist/types/util/index.d.ts +5 -0
  563. package/dist/types/util/primitives.d.ts +0 -1
  564. package/dist/util/bytes.js +22 -18
  565. package/dist/util/index.js +23 -0
  566. package/dist/util/primitives.js +2 -2
  567. package/package.json +34 -10
  568. package/proto/index.js +1 -1
  569. package/dist/auth/flow/WaAuthCredentialsFlow.js +0 -130
  570. package/dist/auth/pairing/constants.js +0 -5
  571. package/dist/client/connection/WaKeyShareCoordinator.js +0 -63
  572. package/dist/crypto/core/constants.js +0 -4
  573. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +0 -125
  574. package/dist/esm/auth/pairing/constants.js +0 -2
  575. package/dist/esm/client/connection/WaKeyShareCoordinator.js +0 -59
  576. package/dist/esm/crypto/core/constants.js +0 -1
  577. package/dist/esm/retry/outbound.js +0 -82
  578. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  579. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -250
  580. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  581. package/dist/esm/store/providers/sqlite/connection.js +0 -245
  582. package/dist/esm/store/providers/sqlite/contact.store.js +0 -74
  583. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -127
  584. package/dist/esm/store/providers/sqlite/message.store.js +0 -132
  585. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  586. package/dist/esm/store/providers/sqlite/participants.store.js +0 -77
  587. package/dist/esm/store/providers/sqlite/retry.store.js +0 -141
  588. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -198
  589. package/dist/esm/store/providers/sqlite/signal.store.js +0 -435
  590. package/dist/esm/store/providers/sqlite/table-names.js +0 -107
  591. package/dist/esm/store/providers/sqlite/thread.store.js +0 -85
  592. package/dist/esm/transport/node/builders/index.js +0 -8
  593. package/dist/retry/outbound.js +0 -87
  594. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  595. package/dist/store/providers/sqlite/appstate.store.js +0 -254
  596. package/dist/store/providers/sqlite/auth.store.js +0 -180
  597. package/dist/store/providers/sqlite/connection.js +0 -281
  598. package/dist/store/providers/sqlite/contact.store.js +0 -78
  599. package/dist/store/providers/sqlite/device-list.store.js +0 -131
  600. package/dist/store/providers/sqlite/message.store.js +0 -136
  601. package/dist/store/providers/sqlite/migrations.js +0 -350
  602. package/dist/store/providers/sqlite/participants.store.js +0 -81
  603. package/dist/store/providers/sqlite/retry.store.js +0 -145
  604. package/dist/store/providers/sqlite/sender-key.store.js +0 -202
  605. package/dist/store/providers/sqlite/signal.store.js +0 -439
  606. package/dist/store/providers/sqlite/table-names.js +0 -113
  607. package/dist/store/providers/sqlite/thread.store.js +0 -89
  608. package/dist/transport/node/builders/index.js +0 -42
  609. package/dist/types/appstate/store/sqlite.d.ts +0 -7
  610. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +0 -14
  611. package/dist/types/auth/pairing/constants.d.ts +0 -2
  612. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +0 -14
  613. package/dist/types/crypto/core/constants.d.ts +0 -1
  614. package/dist/types/retry/outbound.d.ts +0 -4
  615. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  616. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -17
  617. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  618. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  619. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -12
  620. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -15
  621. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -13
  622. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  623. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -12
  624. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -15
  625. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -24
  626. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -53
  627. package/dist/types/store/providers/sqlite/table-names.d.ts +0 -5
  628. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -13
  629. package/dist/types/transport/node/builders/index.d.ts +0 -8
  630. /package/dist/appstate/{WaAppStateSyncResponseParser.js → response-parser.js} +0 -0
@@ -1,202 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderKeySqliteStore = void 0;
4
- const sqlite_1 = require("../../../signal/store/sqlite");
5
- const BaseSqliteStore_1 = require("../../providers/sqlite/BaseSqliteStore");
6
- const coercion_1 = require("../../../util/coercion");
7
- const DEFAULTS = Object.freeze({
8
- distributionBatchSize: 250
9
- });
10
- class SenderKeySqliteStore extends BaseSqliteStore_1.BaseSqliteStore {
11
- constructor(options, distributionBatchSize) {
12
- super(options, ['senderKey']);
13
- this.distributionBatchSize = (0, coercion_1.resolvePositive)(distributionBatchSize, DEFAULTS.distributionBatchSize, 'senderKey.sqlite.distributionBatchSize');
14
- }
15
- async upsertSenderKey(record) {
16
- const db = await this.getConnection();
17
- const sender = (0, sqlite_1.toSignalAddressParts)(record.sender);
18
- db.run(`INSERT INTO sender_keys (
19
- session_id,
20
- group_id,
21
- sender_user,
22
- sender_server,
23
- sender_device,
24
- record
25
- ) VALUES (?, ?, ?, ?, ?, ?)
26
- ON CONFLICT(session_id, group_id, sender_user, sender_server, sender_device) DO UPDATE SET
27
- record=excluded.record`, [
28
- this.options.sessionId,
29
- record.groupId,
30
- sender.user,
31
- sender.server,
32
- sender.device,
33
- (0, sqlite_1.encodeSenderKeyRecord)(record)
34
- ]);
35
- }
36
- async upsertSenderKeyDistribution(record) {
37
- const db = await this.getConnection();
38
- const sender = (0, sqlite_1.toSignalAddressParts)(record.sender);
39
- this.upsertSenderKeyDistributionRow(db, record, sender);
40
- }
41
- async upsertSenderKeyDistributions(records) {
42
- if (records.length === 0) {
43
- return;
44
- }
45
- await this.withTransaction((db) => {
46
- for (const record of records) {
47
- const sender = (0, sqlite_1.toSignalAddressParts)(record.sender);
48
- this.upsertSenderKeyDistributionRow(db, record, sender);
49
- }
50
- });
51
- }
52
- async getGroupSenderKeyList(groupId) {
53
- const db = await this.getConnection();
54
- const senderRows = db.all(`SELECT group_id, sender_user, sender_server, sender_device, record
55
- FROM sender_keys
56
- WHERE session_id = ? AND group_id = ?`, [this.options.sessionId, groupId]);
57
- const distributionRows = db.all(`SELECT group_id, sender_user, sender_server, sender_device, key_id, timestamp_ms
58
- FROM sender_key_distribution
59
- WHERE session_id = ? AND group_id = ?`, [this.options.sessionId, groupId]);
60
- return {
61
- skList: senderRows.map((row) => (0, sqlite_1.decodeSenderKeyRecord)(row.record, (0, coercion_1.asString)(row.group_id, 'sender_keys.group_id'), {
62
- user: (0, coercion_1.asString)(row.sender_user, 'sender_keys.sender_user'),
63
- server: (0, coercion_1.asString)(row.sender_server, 'sender_keys.sender_server'),
64
- device: (0, coercion_1.asNumber)(row.sender_device, 'sender_keys.sender_device')
65
- })),
66
- skDistribList: distributionRows.map((row) => (0, sqlite_1.decodeSenderKeyDistributionRow)(row))
67
- };
68
- }
69
- async getDeviceSenderKey(groupId, sender) {
70
- const db = await this.getConnection();
71
- const target = (0, sqlite_1.toSignalAddressParts)(sender);
72
- const row = db.get(`SELECT group_id, sender_user, sender_server, sender_device, record
73
- FROM sender_keys
74
- WHERE session_id = ?
75
- AND group_id = ?
76
- AND sender_user = ?
77
- AND sender_server = ?
78
- AND sender_device = ?`, [this.options.sessionId, groupId, target.user, target.server, target.device]);
79
- if (!row) {
80
- return null;
81
- }
82
- return (0, sqlite_1.decodeSenderKeyRecord)(row.record, (0, coercion_1.asString)(row.group_id, 'sender_keys.group_id'), {
83
- user: (0, coercion_1.asString)(row.sender_user, 'sender_keys.sender_user'),
84
- server: (0, coercion_1.asString)(row.sender_server, 'sender_keys.sender_server'),
85
- device: (0, coercion_1.asNumber)(row.sender_device, 'sender_keys.sender_device')
86
- });
87
- }
88
- async getDeviceSenderKeyDistributions(groupId, senders) {
89
- if (senders.length === 0) {
90
- return [];
91
- }
92
- const db = await this.getConnection();
93
- const targets = senders.map((sender) => (0, sqlite_1.toSignalAddressParts)(sender));
94
- const map = new Map();
95
- for (let start = 0; start < targets.length; start += this.distributionBatchSize) {
96
- const end = Math.min(start + this.distributionBatchSize, targets.length);
97
- const batchLength = end - start;
98
- const filters = new Array(batchLength)
99
- .fill('(sender_user = ? AND sender_server = ? AND sender_device = ?)')
100
- .join(' OR ');
101
- const params = [this.options.sessionId, groupId];
102
- for (let index = start; index < end; index += 1) {
103
- const target = targets[index];
104
- params.push(target.user, target.server, target.device);
105
- }
106
- const rows = db.all(`SELECT group_id, sender_user, sender_server, sender_device, key_id, timestamp_ms
107
- FROM sender_key_distribution
108
- WHERE session_id = ? AND group_id = ? AND (${filters})`, params);
109
- for (const row of rows) {
110
- map.set(this.distributionRowKey(row), (0, sqlite_1.decodeSenderKeyDistributionRow)(row));
111
- }
112
- }
113
- return targets.map((target) => {
114
- return (map.get(this.distributionTargetKey(target.user, target.server, target.device)) ??
115
- null);
116
- });
117
- }
118
- async deleteDeviceSenderKey(target, groupId) {
119
- const sender = (0, sqlite_1.toSignalAddressParts)(target);
120
- return this.withTransaction((db) => {
121
- const senderCount = this.countDelete(db, 'sender_keys', sender, groupId);
122
- const distributionCount = this.countDelete(db, 'sender_key_distribution', sender, groupId);
123
- return senderCount + distributionCount;
124
- });
125
- }
126
- async markForgetSenderKey(groupId, participants) {
127
- if (participants.length === 0) {
128
- return 0;
129
- }
130
- return this.withTransaction((db) => {
131
- let filters = '';
132
- const params = [this.options.sessionId, groupId];
133
- for (let index = 0; index < participants.length; index += 1) {
134
- if (index > 0) {
135
- filters += ' OR ';
136
- }
137
- filters += '(sender_user = ? AND sender_server = ? AND sender_device = ?)';
138
- const sender = (0, sqlite_1.toSignalAddressParts)(participants[index]);
139
- params.push(sender.user, sender.server, sender.device);
140
- }
141
- const where = `session_id = ? AND group_id = ? AND (${filters})`;
142
- db.run(`DELETE FROM sender_keys WHERE ${where}`, params);
143
- const senderCountRow = db.get('SELECT changes() AS total', []);
144
- const senderCount = senderCountRow
145
- ? (0, coercion_1.asNumber)(senderCountRow.total, 'sender_keys.changes')
146
- : 0;
147
- db.run(`DELETE FROM sender_key_distribution WHERE ${where}`, params);
148
- const distributionCountRow = db.get('SELECT changes() AS total', []);
149
- const distributionCount = distributionCountRow
150
- ? (0, coercion_1.asNumber)(distributionCountRow.total, 'sender_key_distribution.changes')
151
- : 0;
152
- return senderCount + distributionCount;
153
- });
154
- }
155
- async clear() {
156
- await this.withTransaction((db) => {
157
- db.run('DELETE FROM sender_keys WHERE session_id = ?', [this.options.sessionId]);
158
- db.run('DELETE FROM sender_key_distribution WHERE session_id = ?', [
159
- this.options.sessionId
160
- ]);
161
- });
162
- }
163
- countDelete(db, table, target, groupId) {
164
- const whereWithGroup = 'session_id = ? AND sender_user = ? AND sender_server = ? AND sender_device = ? AND group_id = ?';
165
- const whereAllGroups = 'session_id = ? AND sender_user = ? AND sender_server = ? AND sender_device = ?';
166
- db.run(`DELETE FROM ${table}
167
- WHERE ${groupId ? whereWithGroup : whereAllGroups}`, groupId
168
- ? [this.options.sessionId, target.user, target.server, target.device, groupId]
169
- : [this.options.sessionId, target.user, target.server, target.device]);
170
- const row = db.get('SELECT changes() AS total', []);
171
- return row ? (0, coercion_1.asNumber)(row.total, `${table}.changes`) : 0;
172
- }
173
- upsertSenderKeyDistributionRow(db, record, sender) {
174
- db.run(`INSERT INTO sender_key_distribution (
175
- session_id,
176
- group_id,
177
- sender_user,
178
- sender_server,
179
- sender_device,
180
- key_id,
181
- timestamp_ms
182
- ) VALUES (?, ?, ?, ?, ?, ?, ?)
183
- ON CONFLICT(session_id, group_id, sender_user, sender_server, sender_device) DO UPDATE SET
184
- key_id=excluded.key_id,
185
- timestamp_ms=excluded.timestamp_ms`, [
186
- this.options.sessionId,
187
- record.groupId,
188
- sender.user,
189
- sender.server,
190
- sender.device,
191
- record.keyId,
192
- record.timestampMs
193
- ]);
194
- }
195
- distributionRowKey(row) {
196
- return this.distributionTargetKey((0, coercion_1.asString)(row.sender_user, 'sender_key_distribution.sender_user'), (0, coercion_1.asString)(row.sender_server, 'sender_key_distribution.sender_server'), (0, coercion_1.asNumber)(row.sender_device, 'sender_key_distribution.sender_device'));
197
- }
198
- distributionTargetKey(user, server, device) {
199
- return `${user}|${server}|${device}`;
200
- }
201
- }
202
- exports.SenderKeySqliteStore = SenderKeySqliteStore;
@@ -1,439 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WaSignalSqliteStore = void 0;
4
- const jid_1 = require("../../../protocol/jid");
5
- const sqlite_1 = require("../../../signal/store/sqlite");
6
- const BaseSqliteStore_1 = require("../../providers/sqlite/BaseSqliteStore");
7
- const coercion_1 = require("../../../util/coercion");
8
- const DEFAULTS = Object.freeze({
9
- preKeyBatchSize: 500,
10
- hasSessionBatchSize: 250
11
- });
12
- function repeatSqlToken(token, count, separator) {
13
- if (count <= 1) {
14
- return token;
15
- }
16
- let out = token;
17
- for (let index = 1; index < count; index += 1) {
18
- out += separator + token;
19
- }
20
- return out;
21
- }
22
- class WaSignalSqliteStore extends BaseSqliteStore_1.BaseSqliteStore {
23
- constructor(options, storeOptions = {}) {
24
- super(options, ['signal']);
25
- this.preKeyBatchSize = (0, coercion_1.resolvePositive)(storeOptions.preKeyBatchSize, DEFAULTS.preKeyBatchSize, 'signal.sqlite.preKeyBatchSize');
26
- this.hasSessionBatchSize = (0, coercion_1.resolvePositive)(storeOptions.hasSessionBatchSize, DEFAULTS.hasSessionBatchSize, 'signal.sqlite.hasSessionBatchSize');
27
- }
28
- async getRegistrationInfo() {
29
- const db = await this.getConnection();
30
- const row = db.get(`SELECT registration_id, identity_pub_key, identity_priv_key
31
- FROM signal_registration
32
- WHERE session_id = ?`, [this.options.sessionId]);
33
- return row ? (0, sqlite_1.decodeSignalRegistrationRow)(row) : null;
34
- }
35
- async setRegistrationInfo(info) {
36
- const db = await this.getConnection();
37
- db.run(`INSERT INTO signal_registration (
38
- session_id,
39
- registration_id,
40
- identity_pub_key,
41
- identity_priv_key
42
- ) VALUES (?, ?, ?, ?)
43
- ON CONFLICT(session_id) DO UPDATE SET
44
- registration_id=excluded.registration_id,
45
- identity_pub_key=excluded.identity_pub_key,
46
- identity_priv_key=excluded.identity_priv_key`, [
47
- this.options.sessionId,
48
- info.registrationId,
49
- info.identityKeyPair.pubKey,
50
- info.identityKeyPair.privKey
51
- ]);
52
- }
53
- async getSignedPreKey() {
54
- const db = await this.getConnection();
55
- const row = db.get(`SELECT key_id, pub_key, priv_key, signature, uploaded
56
- FROM signal_signed_prekey
57
- WHERE session_id = ?`, [this.options.sessionId]);
58
- return row ? (0, sqlite_1.decodeSignalSignedPreKeyRow)(row) : null;
59
- }
60
- async setSignedPreKey(record) {
61
- const db = await this.getConnection();
62
- db.run(`INSERT INTO signal_signed_prekey (
63
- session_id,
64
- key_id,
65
- pub_key,
66
- priv_key,
67
- signature,
68
- uploaded
69
- ) VALUES (?, ?, ?, ?, ?, ?)
70
- ON CONFLICT(session_id) DO UPDATE SET
71
- key_id=excluded.key_id,
72
- pub_key=excluded.pub_key,
73
- priv_key=excluded.priv_key,
74
- signature=excluded.signature,
75
- uploaded=excluded.uploaded`, [
76
- this.options.sessionId,
77
- record.keyId,
78
- record.keyPair.pubKey,
79
- record.keyPair.privKey,
80
- record.signature,
81
- record.uploaded === true ? 1 : 0
82
- ]);
83
- }
84
- async getSignedPreKeyById(keyId) {
85
- const db = await this.getConnection();
86
- const row = db.get(`SELECT key_id, pub_key, priv_key, signature, uploaded
87
- FROM signal_signed_prekey
88
- WHERE session_id = ? AND key_id = ?`, [this.options.sessionId, keyId]);
89
- return row ? (0, sqlite_1.decodeSignalSignedPreKeyRow)(row) : null;
90
- }
91
- async setSignedPreKeyRotationTs(value) {
92
- const db = await this.getConnection();
93
- this.ensureMetaRow(db);
94
- db.run(`UPDATE signal_meta
95
- SET signed_prekey_rotation_ts = ?
96
- WHERE session_id = ?`, [value, this.options.sessionId]);
97
- }
98
- async getSignedPreKeyRotationTs() {
99
- const db = await this.getConnection();
100
- const meta = this.getMeta(db);
101
- return meta.signedPreKeyRotationTs;
102
- }
103
- async putPreKey(record) {
104
- const db = await this.getConnection();
105
- this.ensureMetaRow(db);
106
- this.upsertPreKey(db, record);
107
- db.run(`UPDATE signal_meta
108
- SET next_prekey_id = MAX(next_prekey_id, ?)
109
- WHERE session_id = ?`, [record.keyId + 1, this.options.sessionId]);
110
- }
111
- async getOrGenPreKeys(count, generator) {
112
- if (!Number.isSafeInteger(count) || count <= 0) {
113
- throw new Error(`invalid prekey count: ${count}`);
114
- }
115
- return this.withTransaction(async (db) => {
116
- this.ensureMetaRow(db);
117
- const available = db
118
- .all(`SELECT key_id, pub_key, priv_key, uploaded
119
- FROM signal_prekey
120
- WHERE session_id = ? AND uploaded = 0
121
- ORDER BY key_id ASC
122
- LIMIT ?`, [this.options.sessionId, count])
123
- .map((row) => (0, sqlite_1.decodeSignalPreKeyRow)(row));
124
- if (available.length < count) {
125
- let nextPreKeyId = this.getMeta(db).nextPreKeyId;
126
- while (available.length < count) {
127
- const requestedKeyId = nextPreKeyId;
128
- const generated = await generator(requestedKeyId);
129
- this.upsertPreKey(db, generated);
130
- available.push(generated);
131
- nextPreKeyId = Math.max(requestedKeyId + 1, generated.keyId + 1);
132
- }
133
- db.run(`UPDATE signal_meta
134
- SET next_prekey_id = ?
135
- WHERE session_id = ?`, [nextPreKeyId, this.options.sessionId]);
136
- }
137
- return available;
138
- });
139
- }
140
- async getPreKeyById(keyId) {
141
- const db = await this.getConnection();
142
- const row = db.get(`SELECT key_id, pub_key, priv_key, uploaded
143
- FROM signal_prekey
144
- WHERE session_id = ? AND key_id = ?`, [this.options.sessionId, keyId]);
145
- return row ? (0, sqlite_1.decodeSignalPreKeyRow)(row) : null;
146
- }
147
- async getPreKeysById(keyIds) {
148
- if (keyIds.length === 0) {
149
- return [];
150
- }
151
- const db = await this.getConnection();
152
- const uniqueKeyIds = [...new Set(keyIds)];
153
- const byId = new Map();
154
- for (let start = 0; start < uniqueKeyIds.length; start += this.preKeyBatchSize) {
155
- const end = Math.min(start + this.preKeyBatchSize, uniqueKeyIds.length);
156
- const batchLength = end - start;
157
- const placeholders = repeatSqlToken('?', batchLength, ', ');
158
- const params = [this.options.sessionId];
159
- for (let index = start; index < end; index += 1) {
160
- params.push(uniqueKeyIds[index]);
161
- }
162
- const rows = db.all(`SELECT key_id, pub_key, priv_key, uploaded
163
- FROM signal_prekey
164
- WHERE session_id = ? AND key_id IN (${placeholders})`, params);
165
- for (const row of rows) {
166
- const record = (0, sqlite_1.decodeSignalPreKeyRow)(row);
167
- byId.set(record.keyId, record);
168
- }
169
- }
170
- return keyIds.map((keyId) => byId.get(keyId) ?? null);
171
- }
172
- async consumePreKeyById(keyId) {
173
- return this.withTransaction((db) => {
174
- const row = db.get(`SELECT key_id, pub_key, priv_key, uploaded
175
- FROM signal_prekey
176
- WHERE session_id = ? AND key_id = ?`, [this.options.sessionId, keyId]);
177
- if (!row) {
178
- return null;
179
- }
180
- db.run(`DELETE FROM signal_prekey
181
- WHERE session_id = ? AND key_id = ?`, [this.options.sessionId, keyId]);
182
- return (0, sqlite_1.decodeSignalPreKeyRow)(row);
183
- });
184
- }
185
- async getOrGenSinglePreKey(generator) {
186
- const records = await this.getOrGenPreKeys(1, generator);
187
- return records[0];
188
- }
189
- async markKeyAsUploaded(keyId) {
190
- const db = await this.getConnection();
191
- const meta = this.getMeta(db);
192
- if (keyId < 0 || keyId >= meta.nextPreKeyId) {
193
- throw new Error(`prekey ${keyId} is out of boundary`);
194
- }
195
- db.run(`UPDATE signal_prekey
196
- SET uploaded = 1
197
- WHERE session_id = ? AND key_id <= ?`, [this.options.sessionId, keyId]);
198
- }
199
- async setServerHasPreKeys(value) {
200
- const db = await this.getConnection();
201
- this.ensureMetaRow(db);
202
- db.run(`UPDATE signal_meta
203
- SET server_has_prekeys = ?
204
- WHERE session_id = ?`, [value ? 1 : 0, this.options.sessionId]);
205
- }
206
- async getServerHasPreKeys() {
207
- const db = await this.getConnection();
208
- const meta = this.getMeta(db);
209
- return meta.serverHasPreKeys;
210
- }
211
- async hasSession(address) {
212
- const db = await this.getConnection();
213
- const target = (0, sqlite_1.toSignalAddressParts)(address);
214
- return (db.get(`SELECT 1 AS has_session
215
- FROM signal_session
216
- WHERE session_id = ? AND user = ? AND server = ? AND device = ?
217
- LIMIT 1`, [this.options.sessionId, target.user, target.server, target.device]) !== null);
218
- }
219
- async hasSessions(addresses) {
220
- if (addresses.length === 0) {
221
- return [];
222
- }
223
- const db = await this.getConnection();
224
- const targets = addresses.map((address) => (0, sqlite_1.toSignalAddressParts)(address));
225
- const existingKeys = new Set();
226
- for (let start = 0; start < targets.length; start += this.hasSessionBatchSize) {
227
- const end = Math.min(start + this.hasSessionBatchSize, targets.length);
228
- const batchLength = end - start;
229
- const filters = repeatSqlToken('(user = ? AND server = ? AND device = ?)', batchLength, ' OR ');
230
- const params = [this.options.sessionId];
231
- for (let index = start; index < end; index += 1) {
232
- const target = targets[index];
233
- params.push(target.user, target.server, target.device);
234
- }
235
- const rows = db.all(`SELECT user, server, device
236
- FROM signal_session
237
- WHERE session_id = ? AND (${filters})`, params);
238
- for (const row of rows) {
239
- existingKeys.add((0, jid_1.signalAddressKey)({
240
- user: (0, coercion_1.asString)(row.user, 'signal_session.user'),
241
- server: (0, coercion_1.asString)(row.server, 'signal_session.server'),
242
- device: (0, coercion_1.asNumber)(row.device, 'signal_session.device')
243
- }));
244
- }
245
- }
246
- return targets.map((target) => existingKeys.has((0, jid_1.signalAddressKey)(target)));
247
- }
248
- async getSession(address) {
249
- const db = await this.getConnection();
250
- const target = (0, sqlite_1.toSignalAddressParts)(address);
251
- const row = db.get(`SELECT user, server, device, record
252
- FROM signal_session
253
- WHERE session_id = ? AND user = ? AND server = ? AND device = ?`, [this.options.sessionId, target.user, target.server, target.device]);
254
- return row ? (0, sqlite_1.decodeSignalSessionRecord)(row.record) : null;
255
- }
256
- async getSessionsBatch(addresses) {
257
- if (addresses.length === 0) {
258
- return [];
259
- }
260
- const db = await this.getConnection();
261
- const targets = addresses.map((address) => (0, sqlite_1.toSignalAddressParts)(address));
262
- const byAddressKey = new Map();
263
- for (let start = 0; start < targets.length; start += this.hasSessionBatchSize) {
264
- const end = Math.min(start + this.hasSessionBatchSize, targets.length);
265
- const batchLength = end - start;
266
- const filters = repeatSqlToken('(user = ? AND server = ? AND device = ?)', batchLength, ' OR ');
267
- const params = [this.options.sessionId];
268
- for (let index = start; index < end; index += 1) {
269
- const target = targets[index];
270
- params.push(target.user, target.server, target.device);
271
- }
272
- const rows = db.all(`SELECT user, server, device, record
273
- FROM signal_session
274
- WHERE session_id = ? AND (${filters})`, params);
275
- for (const row of rows) {
276
- byAddressKey.set((0, jid_1.signalAddressKey)({
277
- user: (0, coercion_1.asString)(row.user, 'signal_session.user'),
278
- server: (0, coercion_1.asString)(row.server, 'signal_session.server'),
279
- device: (0, coercion_1.asNumber)(row.device, 'signal_session.device')
280
- }), (0, sqlite_1.decodeSignalSessionRecord)(row.record));
281
- }
282
- }
283
- return targets.map((target) => byAddressKey.get((0, jid_1.signalAddressKey)(target)) ?? null);
284
- }
285
- async setSession(address, session) {
286
- const db = await this.getConnection();
287
- const target = (0, sqlite_1.toSignalAddressParts)(address);
288
- this.upsertSession(db, target, session);
289
- }
290
- async setSessionsBatch(entries) {
291
- if (entries.length === 0) {
292
- return;
293
- }
294
- await this.withTransaction((db) => {
295
- for (let index = 0; index < entries.length; index += 1) {
296
- const entry = entries[index];
297
- this.upsertSession(db, (0, sqlite_1.toSignalAddressParts)(entry.address), entry.session);
298
- }
299
- });
300
- }
301
- async deleteSession(address) {
302
- const db = await this.getConnection();
303
- const target = (0, sqlite_1.toSignalAddressParts)(address);
304
- db.run(`DELETE FROM signal_session
305
- WHERE session_id = ? AND user = ? AND server = ? AND device = ?`, [this.options.sessionId, target.user, target.server, target.device]);
306
- }
307
- async getRemoteIdentity(address) {
308
- const db = await this.getConnection();
309
- const target = (0, sqlite_1.toSignalAddressParts)(address);
310
- const row = db.get(`SELECT identity_key
311
- FROM signal_identity
312
- WHERE session_id = ? AND user = ? AND server = ? AND device = ?`, [this.options.sessionId, target.user, target.server, target.device]);
313
- return row ? (0, sqlite_1.decodeSignalRemoteIdentity)(row.identity_key) : null;
314
- }
315
- async getRemoteIdentities(addresses) {
316
- if (addresses.length === 0) {
317
- return [];
318
- }
319
- const db = await this.getConnection();
320
- const targets = addresses.map((address) => (0, sqlite_1.toSignalAddressParts)(address));
321
- const byAddressKey = new Map();
322
- for (let start = 0; start < targets.length; start += this.hasSessionBatchSize) {
323
- const end = Math.min(start + this.hasSessionBatchSize, targets.length);
324
- const batchLength = end - start;
325
- const filters = repeatSqlToken('(user = ? AND server = ? AND device = ?)', batchLength, ' OR ');
326
- const params = [this.options.sessionId];
327
- for (let index = start; index < end; index += 1) {
328
- const target = targets[index];
329
- params.push(target.user, target.server, target.device);
330
- }
331
- const rows = db.all(`SELECT user, server, device, identity_key
332
- FROM signal_identity
333
- WHERE session_id = ? AND (${filters})`, params);
334
- for (const row of rows) {
335
- byAddressKey.set((0, jid_1.signalAddressKey)({
336
- user: (0, coercion_1.asString)(row.user, 'signal_identity.user'),
337
- server: (0, coercion_1.asString)(row.server, 'signal_identity.server'),
338
- device: (0, coercion_1.asNumber)(row.device, 'signal_identity.device')
339
- }), (0, sqlite_1.decodeSignalRemoteIdentity)(row.identity_key));
340
- }
341
- }
342
- return targets.map((target) => byAddressKey.get((0, jid_1.signalAddressKey)(target)) ?? null);
343
- }
344
- async setRemoteIdentity(address, identityKey) {
345
- const db = await this.getConnection();
346
- const target = (0, sqlite_1.toSignalAddressParts)(address);
347
- this.upsertRemoteIdentity(db, target, identityKey);
348
- }
349
- async setRemoteIdentities(entries) {
350
- if (entries.length === 0) {
351
- return;
352
- }
353
- await this.withTransaction((db) => {
354
- for (const entry of entries) {
355
- const target = (0, sqlite_1.toSignalAddressParts)(entry.address);
356
- this.upsertRemoteIdentity(db, target, entry.identityKey);
357
- }
358
- });
359
- }
360
- async clear() {
361
- await this.withTransaction((db) => {
362
- db.run('DELETE FROM signal_registration WHERE session_id = ?', [this.options.sessionId]);
363
- db.run('DELETE FROM signal_signed_prekey WHERE session_id = ?', [
364
- this.options.sessionId
365
- ]);
366
- db.run('DELETE FROM signal_prekey WHERE session_id = ?', [this.options.sessionId]);
367
- db.run('DELETE FROM signal_session WHERE session_id = ?', [this.options.sessionId]);
368
- db.run('DELETE FROM signal_identity WHERE session_id = ?', [this.options.sessionId]);
369
- db.run('DELETE FROM signal_meta WHERE session_id = ?', [this.options.sessionId]);
370
- });
371
- }
372
- upsertPreKey(db, record) {
373
- db.run(`INSERT INTO signal_prekey (
374
- session_id,
375
- key_id,
376
- pub_key,
377
- priv_key,
378
- uploaded
379
- ) VALUES (?, ?, ?, ?, ?)
380
- ON CONFLICT(session_id, key_id) DO UPDATE SET
381
- pub_key=excluded.pub_key,
382
- priv_key=excluded.priv_key,
383
- uploaded=excluded.uploaded`, [
384
- this.options.sessionId,
385
- record.keyId,
386
- record.keyPair.pubKey,
387
- record.keyPair.privKey,
388
- record.uploaded === true ? 1 : 0
389
- ]);
390
- }
391
- upsertSession(db, target, session) {
392
- db.run(`INSERT INTO signal_session (
393
- session_id,
394
- user,
395
- server,
396
- device,
397
- record
398
- ) VALUES (?, ?, ?, ?, ?)
399
- ON CONFLICT(session_id, user, server, device) DO UPDATE SET
400
- record=excluded.record`, [
401
- this.options.sessionId,
402
- target.user,
403
- target.server,
404
- target.device,
405
- (0, sqlite_1.encodeSignalSessionRecord)(session)
406
- ]);
407
- }
408
- ensureMetaRow(db) {
409
- db.run(`INSERT INTO signal_meta (
410
- session_id,
411
- server_has_prekeys,
412
- next_prekey_id
413
- ) VALUES (?, 0, 1)
414
- ON CONFLICT(session_id) DO NOTHING`, [this.options.sessionId]);
415
- }
416
- getMeta(db) {
417
- this.ensureMetaRow(db);
418
- const row = db.get(`SELECT server_has_prekeys, next_prekey_id, signed_prekey_rotation_ts
419
- FROM signal_meta
420
- WHERE session_id = ?`, [this.options.sessionId]);
421
- return {
422
- serverHasPreKeys: (0, coercion_1.toBoolOrUndef)(row.server_has_prekeys) === true,
423
- nextPreKeyId: (0, coercion_1.asNumber)(row.next_prekey_id, 'signal_meta.next_prekey_id'),
424
- signedPreKeyRotationTs: (0, coercion_1.asOptionalNumber)(row.signed_prekey_rotation_ts, 'signal_meta.signed_prekey_rotation_ts') ?? null
425
- };
426
- }
427
- upsertRemoteIdentity(db, target, identityKey) {
428
- db.run(`INSERT INTO signal_identity (
429
- session_id,
430
- user,
431
- server,
432
- device,
433
- identity_key
434
- ) VALUES (?, ?, ?, ?, ?)
435
- ON CONFLICT(session_id, user, server, device) DO UPDATE SET
436
- identity_key=excluded.identity_key`, [this.options.sessionId, target.user, target.server, target.device, identityKey]);
437
- }
438
- }
439
- exports.WaSignalSqliteStore = WaSignalSqliteStore;