zapo-js 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (589) hide show
  1. package/README.md +20 -4
  2. package/dist/appstate/WaAppStateCrypto.js +19 -26
  3. package/dist/appstate/WaAppStateSyncClient.js +293 -181
  4. package/dist/appstate/WaAppStateSyncResponseParser.js +16 -5
  5. package/dist/appstate/constants.js +4 -3
  6. package/dist/appstate/{store/sqlite.js → encoding.js} +13 -8
  7. package/dist/appstate/index.js +8 -6
  8. package/dist/appstate/utils.js +9 -34
  9. package/dist/auth/WaAuthClient.js +43 -61
  10. package/dist/auth/flow/WaAuthCredentialsFlow.js +22 -15
  11. package/dist/auth/index.js +1 -8
  12. package/dist/auth/pairing/WaPairingCodeCrypto.js +6 -4
  13. package/dist/auth/pairing/WaPairingFlow.js +34 -26
  14. package/dist/auth/pairing/WaQrFlow.js +37 -24
  15. package/dist/client/WaClient.js +275 -324
  16. package/dist/client/WaClientFactory.js +500 -133
  17. package/dist/client/connection/WaConnectionManager.js +301 -0
  18. package/dist/client/connection/WaKeyShareCoordinator.js +63 -0
  19. package/dist/client/connection/WaReceiptQueue.js +51 -0
  20. package/dist/client/coordinators/WaAppStateMutationCoordinator.js +471 -0
  21. package/dist/client/coordinators/WaBusinessCoordinator.js +241 -0
  22. package/dist/client/coordinators/WaGroupCoordinator.js +30 -16
  23. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  24. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +439 -701
  25. package/dist/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  26. package/dist/client/coordinators/WaPrivacyCoordinator.js +134 -0
  27. package/dist/client/coordinators/WaProfileCoordinator.js +212 -0
  28. package/dist/client/coordinators/WaRetryCoordinator.js +242 -57
  29. package/dist/client/coordinators/WaStreamControlCoordinator.js +18 -11
  30. package/dist/client/coordinators/WaTrustedContactTokenCoordinator.js +166 -0
  31. package/dist/client/dirty.js +74 -48
  32. package/dist/client/events/chat.js +4 -3
  33. package/dist/client/events/devices.js +72 -0
  34. package/dist/client/events/group.js +62 -47
  35. package/dist/client/events/identity.js +22 -0
  36. package/dist/client/events/privacy-token.js +39 -0
  37. package/dist/client/history-sync.js +94 -63
  38. package/dist/client/incoming.js +60 -27
  39. package/dist/client/mailbox.js +24 -23
  40. package/dist/client/messages.js +107 -31
  41. package/dist/client/messaging/fanout.js +199 -0
  42. package/dist/client/messaging/key-protocol.js +130 -0
  43. package/dist/client/messaging/participants.js +193 -0
  44. package/dist/client/persistence/WriteBehindPersistence.js +129 -0
  45. package/dist/client/tokens/cs-token.js +50 -0
  46. package/dist/client/tokens/tc-token.js +25 -0
  47. package/dist/crypto/core/hkdf.js +3 -8
  48. package/dist/crypto/core/index.js +2 -5
  49. package/dist/crypto/core/keys.js +6 -7
  50. package/dist/crypto/core/nonce.js +2 -0
  51. package/dist/crypto/core/primitives.js +12 -23
  52. package/dist/crypto/core/random.js +26 -23
  53. package/dist/crypto/curves/Ed25519.js +7 -8
  54. package/dist/crypto/curves/X25519.js +38 -22
  55. package/dist/crypto/index.js +1 -3
  56. package/dist/crypto/math/constants.js +13 -36
  57. package/dist/crypto/math/edwards.js +171 -44
  58. package/dist/crypto/math/fe.js +706 -0
  59. package/dist/crypto/math/mod.js +10 -3
  60. package/dist/esm/appstate/WaAppStateCrypto.js +7 -14
  61. package/dist/esm/appstate/WaAppStateSyncClient.js +284 -172
  62. package/dist/esm/appstate/WaAppStateSyncResponseParser.js +17 -6
  63. package/dist/esm/appstate/constants.js +3 -2
  64. package/dist/esm/appstate/{store/sqlite.js → encoding.js} +13 -8
  65. package/dist/esm/appstate/index.js +2 -2
  66. package/dist/esm/appstate/utils.js +8 -30
  67. package/dist/esm/auth/WaAuthClient.js +43 -61
  68. package/dist/esm/auth/flow/WaAuthCredentialsFlow.js +22 -15
  69. package/dist/esm/auth/index.js +0 -3
  70. package/dist/esm/auth/pairing/WaPairingCodeCrypto.js +6 -4
  71. package/dist/esm/auth/pairing/WaPairingFlow.js +28 -20
  72. package/dist/esm/auth/pairing/WaQrFlow.js +37 -24
  73. package/dist/esm/client/WaClient.js +275 -324
  74. package/dist/esm/client/WaClientFactory.js +501 -134
  75. package/dist/esm/client/connection/WaConnectionManager.js +297 -0
  76. package/dist/esm/client/connection/WaKeyShareCoordinator.js +59 -0
  77. package/dist/esm/client/connection/WaReceiptQueue.js +47 -0
  78. package/dist/esm/client/coordinators/WaAppStateMutationCoordinator.js +467 -0
  79. package/dist/esm/client/coordinators/WaBusinessCoordinator.js +238 -0
  80. package/dist/esm/client/coordinators/WaGroupCoordinator.js +23 -9
  81. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +21 -27
  82. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +443 -705
  83. package/dist/esm/client/coordinators/WaPassiveTasksCoordinator.js +74 -31
  84. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +131 -0
  85. package/dist/esm/client/coordinators/WaProfileCoordinator.js +209 -0
  86. package/dist/esm/client/coordinators/WaRetryCoordinator.js +244 -59
  87. package/dist/esm/client/coordinators/WaStreamControlCoordinator.js +19 -12
  88. package/dist/esm/client/coordinators/WaTrustedContactTokenCoordinator.js +162 -0
  89. package/dist/esm/client/dirty.js +69 -43
  90. package/dist/esm/client/events/chat.js +4 -3
  91. package/dist/esm/client/events/devices.js +68 -0
  92. package/dist/esm/client/events/group.js +53 -39
  93. package/dist/esm/client/events/identity.js +19 -0
  94. package/dist/esm/client/events/privacy-token.js +36 -0
  95. package/dist/esm/client/history-sync.js +91 -60
  96. package/dist/esm/client/incoming.js +61 -28
  97. package/dist/esm/client/mailbox.js +24 -23
  98. package/dist/esm/client/messages.js +108 -32
  99. package/dist/esm/client/messaging/fanout.js +196 -0
  100. package/dist/esm/client/messaging/key-protocol.js +127 -0
  101. package/dist/esm/client/messaging/participants.js +190 -0
  102. package/dist/esm/client/persistence/WriteBehindPersistence.js +125 -0
  103. package/dist/esm/client/tokens/cs-token.js +46 -0
  104. package/dist/esm/client/tokens/tc-token.js +18 -0
  105. package/dist/esm/crypto/core/hkdf.js +3 -8
  106. package/dist/esm/crypto/core/index.js +2 -3
  107. package/dist/esm/crypto/core/keys.js +3 -4
  108. package/dist/esm/crypto/core/nonce.js +2 -0
  109. package/dist/esm/crypto/core/primitives.js +12 -22
  110. package/dist/esm/crypto/core/random.js +25 -23
  111. package/dist/esm/crypto/curves/Ed25519.js +4 -5
  112. package/dist/esm/crypto/curves/X25519.js +35 -19
  113. package/dist/esm/crypto/index.js +0 -1
  114. package/dist/esm/crypto/math/constants.js +12 -35
  115. package/dist/esm/crypto/math/edwards.js +174 -47
  116. package/dist/esm/crypto/math/fe.js +691 -0
  117. package/dist/esm/crypto/math/mod.js +10 -1
  118. package/dist/esm/index.js +1 -1
  119. package/dist/esm/infra/log/ConsoleLogger.js +18 -17
  120. package/dist/esm/infra/log/PinoLogger.js +15 -9
  121. package/dist/esm/infra/log/types.js +11 -1
  122. package/dist/esm/infra/perf/BackgroundQueue.js +478 -0
  123. package/dist/esm/infra/perf/BoundedTaskQueue.js +16 -18
  124. package/dist/esm/infra/perf/PromiseDedup.js +20 -0
  125. package/dist/esm/infra/perf/SharedExclusiveGate.js +109 -0
  126. package/dist/esm/infra/perf/StoreLock.js +77 -0
  127. package/dist/esm/media/WaMediaCrypto.js +96 -16
  128. package/dist/esm/media/WaMediaTransferClient.js +251 -91
  129. package/dist/esm/media/conn.js +10 -6
  130. package/dist/esm/media/constants.js +6 -2
  131. package/dist/esm/message/WaMessageClient.js +30 -32
  132. package/dist/esm/message/ack.js +6 -6
  133. package/dist/esm/message/addon-crypto.js +59 -0
  134. package/dist/esm/message/content.js +195 -9
  135. package/dist/esm/message/icdc.js +76 -0
  136. package/dist/esm/message/incoming.js +129 -122
  137. package/dist/esm/message/index.js +2 -0
  138. package/dist/esm/message/phash.js +3 -1
  139. package/dist/esm/message/reporting-token.js +425 -0
  140. package/dist/esm/message/use-case-secret.js +49 -0
  141. package/dist/esm/protocol/appstate.js +27 -0
  142. package/dist/esm/protocol/browser.js +10 -18
  143. package/dist/esm/protocol/constants.js +6 -3
  144. package/dist/esm/protocol/defaults.js +6 -0
  145. package/dist/esm/protocol/index.js +2 -11
  146. package/dist/esm/protocol/jid.js +133 -52
  147. package/dist/esm/protocol/media.js +3 -3
  148. package/dist/esm/protocol/message.js +61 -1
  149. package/dist/esm/protocol/nodes.js +4 -0
  150. package/dist/esm/protocol/notification.js +3 -1
  151. package/dist/esm/protocol/privacy-token.js +17 -0
  152. package/dist/esm/protocol/privacy.js +55 -0
  153. package/dist/esm/protocol/stream.js +26 -1
  154. package/dist/esm/protocol/usync.js +11 -0
  155. package/dist/esm/retry/codec.js +216 -0
  156. package/dist/esm/retry/constants.js +1 -1
  157. package/dist/esm/retry/index.js +3 -2
  158. package/dist/esm/retry/parse.js +88 -86
  159. package/dist/esm/retry/replay.js +54 -51
  160. package/dist/esm/retry/tracker.js +94 -0
  161. package/dist/esm/signal/api/SignalDeviceSyncApi.js +276 -92
  162. package/dist/esm/signal/api/SignalDigestSyncApi.js +17 -8
  163. package/dist/esm/signal/api/SignalIdentitySyncApi.js +67 -37
  164. package/dist/esm/signal/api/SignalMissingPreKeysSyncApi.js +86 -67
  165. package/dist/esm/signal/api/SignalRotateKeyApi.js +4 -2
  166. package/dist/esm/signal/api/SignalSessionSyncApi.js +36 -34
  167. package/dist/esm/signal/api/result-map.js +10 -0
  168. package/dist/esm/signal/constants.js +0 -4
  169. package/dist/esm/signal/crypto/WaAdvSignature.js +13 -9
  170. package/dist/esm/signal/{store/sqlite.js → encoding.js} +93 -60
  171. package/dist/esm/signal/group/SenderKeyChain.js +28 -23
  172. package/dist/esm/signal/group/SenderKeyCodec.js +5 -6
  173. package/dist/esm/signal/group/SenderKeyManager.js +144 -115
  174. package/dist/esm/signal/index.js +2 -0
  175. package/dist/esm/signal/registration/keygen.js +6 -2
  176. package/dist/esm/signal/registration/utils.js +1 -0
  177. package/dist/esm/signal/session/SignalProtocol.js +164 -53
  178. package/dist/esm/signal/session/SignalRatchet.js +24 -15
  179. package/dist/esm/signal/session/SignalSession.js +14 -9
  180. package/dist/esm/signal/session/resolver.js +221 -0
  181. package/dist/esm/store/contracts/privacy-token.store.js +1 -0
  182. package/dist/esm/store/createStore.js +100 -188
  183. package/dist/esm/store/index.js +1 -10
  184. package/dist/esm/store/locks/appstate.lock.js +26 -0
  185. package/dist/esm/store/locks/auth.lock.js +15 -0
  186. package/dist/esm/store/locks/contact.lock.js +20 -0
  187. package/dist/esm/store/locks/device-list.lock.js +20 -0
  188. package/dist/esm/store/locks/message.lock.js +21 -0
  189. package/dist/esm/store/locks/participants.lock.js +20 -0
  190. package/dist/esm/store/locks/privacy-token.lock.js +18 -0
  191. package/dist/esm/store/locks/retry.lock.js +29 -0
  192. package/dist/esm/store/locks/sender-key.lock.js +52 -0
  193. package/dist/esm/store/locks/signal.lock.js +63 -0
  194. package/dist/esm/store/locks/thread.lock.js +21 -0
  195. package/dist/esm/store/noop.store.js +4 -7
  196. package/dist/esm/store/providers/memory/appstate.store.js +38 -16
  197. package/dist/esm/store/providers/memory/contact.store.js +5 -0
  198. package/dist/esm/store/providers/memory/device-list.store.js +12 -34
  199. package/dist/esm/store/providers/memory/message.store.js +11 -5
  200. package/dist/esm/store/providers/memory/participants.store.js +1 -8
  201. package/dist/esm/store/providers/memory/privacy-token.store.js +43 -0
  202. package/dist/esm/store/providers/memory/retry.store.js +77 -2
  203. package/dist/esm/store/providers/memory/sender-key.store.js +11 -8
  204. package/dist/esm/store/providers/memory/signal.store.js +47 -18
  205. package/dist/esm/store/providers/memory/thread.store.js +5 -0
  206. package/dist/esm/transport/WaComms.js +28 -24
  207. package/dist/esm/transport/WaWebSocket.js +115 -18
  208. package/dist/esm/transport/binary/constants.js +0 -30
  209. package/dist/esm/transport/binary/decoder.js +8 -8
  210. package/dist/esm/transport/binary/encoder.js +10 -9
  211. package/dist/esm/transport/binary/index.js +0 -1
  212. package/dist/esm/transport/index.js +1 -0
  213. package/dist/esm/transport/keepalive/WaKeepAlive.js +2 -8
  214. package/dist/esm/transport/node/WaNodeOrchestrator.js +25 -21
  215. package/dist/esm/transport/node/WaNodeTransport.js +0 -3
  216. package/dist/esm/transport/node/builders/{accountSync.js → account-sync.js} +16 -36
  217. package/dist/esm/transport/node/builders/business.js +129 -0
  218. package/dist/esm/transport/node/builders/global.js +370 -0
  219. package/dist/esm/transport/node/builders/index.js +7 -3
  220. package/dist/esm/transport/node/builders/message.js +63 -230
  221. package/dist/esm/transport/node/builders/pairing.js +2 -27
  222. package/dist/esm/transport/node/builders/privacy-token.js +41 -0
  223. package/dist/esm/transport/node/builders/privacy.js +48 -0
  224. package/dist/esm/transport/node/builders/profile.js +70 -0
  225. package/dist/esm/transport/node/builders/retry.js +10 -22
  226. package/dist/esm/transport/node/builders/usync.js +45 -0
  227. package/dist/esm/transport/node/helpers.js +125 -5
  228. package/dist/esm/transport/node/usync.js +5 -0
  229. package/dist/esm/transport/node/xml.js +35 -14
  230. package/dist/esm/transport/noise/WaClientPayload.js +10 -10
  231. package/dist/esm/transport/noise/WaFrameCodec.js +48 -33
  232. package/dist/esm/transport/noise/WaNoiseCert.js +4 -7
  233. package/dist/esm/transport/noise/WaNoiseSession.js +77 -29
  234. package/dist/esm/transport/noise/WaNoiseSocket.js +8 -4
  235. package/dist/esm/transport/proxy.js +27 -0
  236. package/dist/esm/transport/stream/parse.js +17 -48
  237. package/dist/esm/util/bytes.js +67 -45
  238. package/dist/esm/util/coercion.js +6 -14
  239. package/dist/esm/util/index.js +5 -0
  240. package/dist/esm/util/primitives.js +40 -14
  241. package/dist/index.js +7 -1
  242. package/dist/infra/log/ConsoleLogger.js +18 -17
  243. package/dist/infra/log/PinoLogger.js +15 -9
  244. package/dist/infra/log/types.js +12 -0
  245. package/dist/infra/perf/BackgroundQueue.js +482 -0
  246. package/dist/infra/perf/BoundedTaskQueue.js +16 -18
  247. package/dist/infra/perf/PromiseDedup.js +24 -0
  248. package/dist/infra/perf/SharedExclusiveGate.js +113 -0
  249. package/dist/infra/perf/StoreLock.js +81 -0
  250. package/dist/media/WaMediaCrypto.js +95 -15
  251. package/dist/media/WaMediaTransferClient.js +284 -91
  252. package/dist/media/conn.js +10 -6
  253. package/dist/media/constants.js +6 -2
  254. package/dist/message/WaMessageClient.js +31 -33
  255. package/dist/message/ack.js +6 -6
  256. package/dist/message/addon-crypto.js +65 -0
  257. package/dist/message/content.js +198 -9
  258. package/dist/message/icdc.js +81 -0
  259. package/dist/message/incoming.js +127 -120
  260. package/dist/message/index.js +2 -0
  261. package/dist/message/phash.js +3 -1
  262. package/dist/message/reporting-token.js +429 -0
  263. package/dist/message/use-case-secret.js +55 -0
  264. package/dist/protocol/appstate.js +28 -1
  265. package/dist/protocol/browser.js +10 -18
  266. package/dist/protocol/constants.js +26 -1
  267. package/dist/protocol/defaults.js +6 -0
  268. package/dist/protocol/index.js +23 -42
  269. package/dist/protocol/jid.js +140 -52
  270. package/dist/protocol/media.js +3 -3
  271. package/dist/protocol/message.js +62 -2
  272. package/dist/protocol/nodes.js +4 -0
  273. package/dist/protocol/notification.js +3 -1
  274. package/dist/protocol/privacy-token.js +20 -0
  275. package/dist/protocol/privacy.js +58 -0
  276. package/dist/protocol/stream.js +27 -2
  277. package/dist/protocol/usync.js +14 -0
  278. package/dist/retry/codec.js +220 -0
  279. package/dist/retry/constants.js +1 -1
  280. package/dist/retry/index.js +7 -5
  281. package/dist/retry/parse.js +88 -85
  282. package/dist/retry/replay.js +52 -49
  283. package/dist/retry/tracker.js +97 -0
  284. package/dist/signal/api/SignalDeviceSyncApi.js +273 -89
  285. package/dist/signal/api/SignalDigestSyncApi.js +17 -8
  286. package/dist/signal/api/SignalIdentitySyncApi.js +66 -36
  287. package/dist/signal/api/SignalMissingPreKeysSyncApi.js +82 -63
  288. package/dist/signal/api/SignalRotateKeyApi.js +4 -2
  289. package/dist/signal/api/SignalSessionSyncApi.js +36 -34
  290. package/dist/signal/api/result-map.js +13 -0
  291. package/dist/signal/constants.js +1 -5
  292. package/dist/signal/crypto/WaAdvSignature.js +11 -7
  293. package/dist/signal/{store/sqlite.js → encoding.js} +94 -61
  294. package/dist/signal/group/SenderKeyChain.js +27 -22
  295. package/dist/signal/group/SenderKeyCodec.js +5 -6
  296. package/dist/signal/group/SenderKeyManager.js +144 -115
  297. package/dist/signal/index.js +15 -1
  298. package/dist/signal/registration/keygen.js +6 -2
  299. package/dist/signal/registration/utils.js +1 -0
  300. package/dist/signal/session/SignalProtocol.js +164 -53
  301. package/dist/signal/session/SignalRatchet.js +24 -15
  302. package/dist/signal/session/SignalSession.js +14 -9
  303. package/dist/signal/session/resolver.js +224 -0
  304. package/dist/store/contracts/privacy-token.store.js +2 -0
  305. package/dist/store/createStore.js +100 -188
  306. package/dist/store/index.js +15 -33
  307. package/dist/store/locks/appstate.lock.js +29 -0
  308. package/dist/store/locks/auth.lock.js +18 -0
  309. package/dist/store/locks/contact.lock.js +23 -0
  310. package/dist/store/locks/device-list.lock.js +23 -0
  311. package/dist/store/locks/message.lock.js +24 -0
  312. package/dist/store/locks/participants.lock.js +23 -0
  313. package/dist/store/locks/privacy-token.lock.js +21 -0
  314. package/dist/store/locks/retry.lock.js +32 -0
  315. package/dist/store/locks/sender-key.lock.js +55 -0
  316. package/dist/store/locks/signal.lock.js +66 -0
  317. package/dist/store/locks/thread.lock.js +24 -0
  318. package/dist/store/noop.store.js +4 -7
  319. package/dist/store/providers/memory/appstate.store.js +36 -14
  320. package/dist/store/providers/memory/contact.store.js +5 -0
  321. package/dist/store/providers/memory/device-list.store.js +12 -34
  322. package/dist/store/providers/memory/message.store.js +11 -5
  323. package/dist/store/providers/memory/participants.store.js +1 -8
  324. package/dist/store/providers/memory/privacy-token.store.js +47 -0
  325. package/dist/store/providers/memory/retry.store.js +77 -2
  326. package/dist/store/providers/memory/sender-key.store.js +14 -11
  327. package/dist/store/providers/memory/signal.store.js +54 -25
  328. package/dist/store/providers/memory/thread.store.js +5 -0
  329. package/dist/transport/WaComms.js +30 -26
  330. package/dist/transport/WaWebSocket.js +148 -18
  331. package/dist/transport/binary/constants.js +1 -31
  332. package/dist/transport/binary/decoder.js +8 -8
  333. package/dist/transport/binary/encoder.js +10 -9
  334. package/dist/transport/binary/index.js +0 -4
  335. package/dist/transport/index.js +7 -1
  336. package/dist/transport/keepalive/WaKeepAlive.js +1 -7
  337. package/dist/transport/node/WaNodeOrchestrator.js +25 -21
  338. package/dist/transport/node/WaNodeTransport.js +0 -3
  339. package/dist/transport/node/builders/{accountSync.js → account-sync.js} +15 -35
  340. package/dist/transport/node/builders/business.js +137 -0
  341. package/dist/transport/node/builders/global.js +375 -0
  342. package/dist/transport/node/builders/index.js +29 -17
  343. package/dist/transport/node/builders/message.js +64 -236
  344. package/dist/transport/node/builders/pairing.js +2 -29
  345. package/dist/transport/node/builders/privacy-token.js +46 -0
  346. package/dist/transport/node/builders/privacy.js +55 -0
  347. package/dist/transport/node/builders/profile.js +78 -0
  348. package/dist/transport/node/builders/retry.js +9 -21
  349. package/dist/transport/node/builders/usync.js +49 -0
  350. package/dist/transport/node/helpers.js +131 -4
  351. package/dist/transport/node/usync.js +8 -0
  352. package/dist/transport/node/xml.js +35 -14
  353. package/dist/transport/noise/WaClientPayload.js +13 -13
  354. package/dist/transport/noise/WaFrameCodec.js +47 -32
  355. package/dist/transport/noise/WaNoiseCert.js +5 -8
  356. package/dist/transport/noise/WaNoiseSession.js +77 -29
  357. package/dist/transport/noise/WaNoiseSocket.js +8 -4
  358. package/dist/transport/proxy.js +34 -0
  359. package/dist/transport/stream/parse.js +20 -52
  360. package/dist/types/appstate/WaAppStateCrypto.d.ts +0 -1
  361. package/dist/types/appstate/WaAppStateSyncClient.d.ts +5 -2
  362. package/dist/types/appstate/constants.d.ts +1 -0
  363. package/dist/types/appstate/encoding.d.ts +7 -0
  364. package/dist/types/appstate/index.d.ts +3 -3
  365. package/dist/types/appstate/utils.d.ts +0 -3
  366. package/dist/types/auth/WaAuthClient.d.ts +10 -12
  367. package/dist/types/auth/flow/WaAuthCredentialsFlow.d.ts +1 -1
  368. package/dist/types/auth/index.d.ts +0 -4
  369. package/dist/types/auth/pairing/WaQrFlow.d.ts +1 -1
  370. package/dist/types/auth/types.d.ts +7 -9
  371. package/dist/types/client/WaClient.d.ts +42 -25
  372. package/dist/types/client/WaClientFactory.d.ts +33 -26
  373. package/dist/types/client/connection/WaConnectionManager.d.ts +66 -0
  374. package/dist/types/client/connection/WaKeyShareCoordinator.d.ts +14 -0
  375. package/dist/types/client/connection/WaReceiptQueue.d.ts +13 -0
  376. package/dist/types/client/coordinators/WaAppStateMutationCoordinator.d.ts +46 -0
  377. package/dist/types/client/coordinators/WaBusinessCoordinator.d.ts +57 -0
  378. package/dist/types/client/coordinators/WaIncomingNodeCoordinator.d.ts +3 -2
  379. package/dist/types/client/coordinators/WaMessageDispatchCoordinator.d.ts +29 -38
  380. package/dist/types/client/coordinators/WaPassiveTasksCoordinator.d.ts +4 -0
  381. package/dist/types/client/coordinators/WaPrivacyCoordinator.d.ts +26 -0
  382. package/dist/types/client/coordinators/WaProfileCoordinator.d.ts +36 -0
  383. package/dist/types/client/coordinators/WaRetryCoordinator.d.ts +8 -0
  384. package/dist/types/client/coordinators/WaStreamControlCoordinator.d.ts +3 -2
  385. package/dist/types/client/coordinators/WaTrustedContactTokenCoordinator.d.ts +45 -0
  386. package/dist/types/client/dirty.d.ts +1 -0
  387. package/dist/types/client/events/devices.d.ts +20 -0
  388. package/dist/types/client/events/group.d.ts +2 -1
  389. package/dist/types/client/events/identity.d.ts +9 -0
  390. package/dist/types/client/events/privacy-token.d.ts +7 -0
  391. package/dist/types/client/history-sync.d.ts +9 -6
  392. package/dist/types/client/incoming.d.ts +3 -1
  393. package/dist/types/client/index.d.ts +1 -1
  394. package/dist/types/client/mailbox.d.ts +3 -5
  395. package/dist/types/client/messages.d.ts +1 -2
  396. package/dist/types/client/messaging/fanout.d.ts +14 -0
  397. package/dist/types/client/messaging/key-protocol.d.ts +18 -0
  398. package/dist/types/client/messaging/participants.d.ts +13 -0
  399. package/dist/types/client/persistence/WriteBehindPersistence.d.ts +34 -0
  400. package/dist/types/client/tokens/cs-token.d.ts +10 -0
  401. package/dist/types/client/tokens/tc-token.d.ts +5 -0
  402. package/dist/types/client/types.d.ts +75 -4
  403. package/dist/types/crypto/core/hkdf.d.ts +0 -6
  404. package/dist/types/crypto/core/index.d.ts +2 -3
  405. package/dist/types/crypto/core/nonce.d.ts +2 -0
  406. package/dist/types/crypto/core/primitives.d.ts +0 -1
  407. package/dist/types/crypto/core/random.d.ts +2 -7
  408. package/dist/types/crypto/index.d.ts +0 -1
  409. package/dist/types/crypto/math/constants.d.ts +4 -2
  410. package/dist/types/crypto/math/fe.d.ts +30 -0
  411. package/dist/types/crypto/math/mod.d.ts +0 -2
  412. package/dist/types/crypto/math/types.d.ts +11 -4
  413. package/dist/types/index.d.ts +5 -3
  414. package/dist/types/infra/log/ConsoleLogger.d.ts +2 -1
  415. package/dist/types/infra/log/PinoLogger.d.ts +1 -1
  416. package/dist/types/infra/log/types.d.ts +1 -0
  417. package/dist/types/infra/perf/BackgroundQueue.d.ts +58 -0
  418. package/dist/types/infra/perf/BoundedTaskQueue.d.ts +1 -1
  419. package/dist/types/infra/perf/PromiseDedup.d.ts +4 -0
  420. package/dist/types/infra/perf/SharedExclusiveGate.d.ts +17 -0
  421. package/dist/types/infra/perf/StoreLock.d.ts +10 -0
  422. package/dist/types/media/WaMediaCrypto.d.ts +3 -2
  423. package/dist/types/media/WaMediaTransferClient.d.ts +16 -15
  424. package/dist/types/media/constants.d.ts +1 -1
  425. package/dist/types/media/index.d.ts +1 -1
  426. package/dist/types/media/types.d.ts +15 -2
  427. package/dist/types/message/addon-crypto.d.ts +25 -0
  428. package/dist/types/message/content.d.ts +8 -0
  429. package/dist/types/message/icdc.d.ts +13 -0
  430. package/dist/types/message/index.d.ts +2 -0
  431. package/dist/types/message/reporting-token.d.ts +18 -0
  432. package/dist/types/message/types.d.ts +45 -6
  433. package/dist/types/message/use-case-secret.d.ts +20 -0
  434. package/dist/types/protocol/appstate.d.ts +47 -0
  435. package/dist/types/protocol/constants.d.ts +8 -3
  436. package/dist/types/protocol/defaults.d.ts +6 -0
  437. package/dist/types/protocol/index.d.ts +2 -11
  438. package/dist/types/protocol/jid.d.ts +22 -5
  439. package/dist/types/protocol/message.d.ts +60 -0
  440. package/dist/types/protocol/nodes.d.ts +4 -0
  441. package/dist/types/protocol/notification.d.ts +2 -0
  442. package/dist/types/protocol/privacy-token.d.ts +17 -0
  443. package/dist/types/protocol/privacy.d.ts +75 -0
  444. package/dist/types/protocol/stream.d.ts +30 -0
  445. package/dist/types/protocol/usync.d.ts +11 -0
  446. package/dist/types/retry/codec.d.ts +3 -0
  447. package/dist/types/retry/index.d.ts +4 -3
  448. package/dist/types/retry/parse.d.ts +5 -2
  449. package/dist/types/retry/replay.d.ts +0 -4
  450. package/dist/types/retry/tracker.d.ts +20 -0
  451. package/dist/types/retry/types.d.ts +10 -4
  452. package/dist/types/signal/api/SignalDeviceSyncApi.d.ts +15 -2
  453. package/dist/types/signal/api/SignalDigestSyncApi.d.ts +6 -0
  454. package/dist/types/signal/api/SignalIdentitySyncApi.d.ts +2 -0
  455. package/dist/types/signal/api/SignalRotateKeyApi.d.ts +4 -5
  456. package/dist/types/signal/api/SignalSessionSyncApi.d.ts +8 -6
  457. package/dist/types/signal/api/result-map.d.ts +1 -0
  458. package/dist/types/signal/constants.d.ts +0 -3
  459. package/dist/types/signal/{store/sqlite.d.ts → encoding.d.ts} +3 -3
  460. package/dist/types/signal/group/SenderKeyCodec.d.ts +4 -6
  461. package/dist/types/signal/group/SenderKeyManager.d.ts +10 -5
  462. package/dist/types/signal/index.d.ts +3 -0
  463. package/dist/types/signal/session/SignalProtocol.d.ts +19 -4
  464. package/dist/types/signal/session/resolver.d.ts +22 -0
  465. package/dist/types/store/contracts/appstate.store.d.ts +4 -1
  466. package/dist/types/store/contracts/contact.store.d.ts +1 -0
  467. package/dist/types/store/contracts/device-list.store.d.ts +0 -3
  468. package/dist/types/store/contracts/message.store.d.ts +1 -0
  469. package/dist/types/store/contracts/participants.store.d.ts +0 -1
  470. package/dist/types/store/contracts/privacy-token.store.d.ts +16 -0
  471. package/dist/types/store/contracts/retry.store.d.ts +7 -0
  472. package/dist/types/store/contracts/sender-key.store.d.ts +0 -1
  473. package/dist/types/store/contracts/signal.store.d.ts +13 -0
  474. package/dist/types/store/contracts/thread.store.d.ts +1 -0
  475. package/dist/types/store/createStore.d.ts +1 -1
  476. package/dist/types/store/index.d.ts +5 -13
  477. package/dist/types/store/locks/appstate.lock.d.ts +3 -0
  478. package/dist/types/store/locks/auth.lock.d.ts +3 -0
  479. package/dist/types/store/locks/contact.lock.d.ts +3 -0
  480. package/dist/types/store/locks/device-list.lock.d.ts +2 -0
  481. package/dist/types/store/locks/message.lock.d.ts +3 -0
  482. package/dist/types/store/locks/participants.lock.d.ts +2 -0
  483. package/dist/types/store/locks/privacy-token.lock.d.ts +2 -0
  484. package/dist/types/store/locks/retry.lock.d.ts +2 -0
  485. package/dist/types/store/locks/sender-key.lock.d.ts +3 -0
  486. package/dist/types/store/locks/signal.lock.d.ts +3 -0
  487. package/dist/types/store/locks/thread.lock.d.ts +3 -0
  488. package/dist/types/store/providers/memory/appstate.store.d.ts +3 -1
  489. package/dist/types/store/providers/memory/contact.store.d.ts +1 -0
  490. package/dist/types/store/providers/memory/device-list.store.d.ts +0 -3
  491. package/dist/types/store/providers/memory/message.store.d.ts +1 -0
  492. package/dist/types/store/providers/memory/participants.store.d.ts +0 -1
  493. package/dist/types/store/providers/memory/privacy-token.store.d.ts +13 -0
  494. package/dist/types/store/providers/memory/retry.store.d.ts +8 -0
  495. package/dist/types/store/providers/memory/sender-key.store.d.ts +0 -1
  496. package/dist/types/store/providers/memory/signal.store.d.ts +8 -1
  497. package/dist/types/store/providers/memory/thread.store.d.ts +1 -0
  498. package/dist/types/store/types.d.ts +49 -58
  499. package/dist/types/transport/WaWebSocket.d.ts +3 -1
  500. package/dist/types/transport/binary/constants.d.ts +0 -30
  501. package/dist/types/transport/binary/index.d.ts +0 -1
  502. package/dist/types/transport/index.d.ts +2 -1
  503. package/dist/types/transport/keepalive/WaKeepAlive.d.ts +0 -1
  504. package/dist/types/transport/node/WaNodeOrchestrator.d.ts +3 -4
  505. package/dist/types/transport/node/WaNodeTransport.d.ts +0 -9
  506. package/dist/types/transport/node/builders/business.d.ts +29 -0
  507. package/dist/types/transport/node/builders/global.d.ts +102 -0
  508. package/dist/types/transport/node/builders/group.d.ts +4 -6
  509. package/dist/types/transport/node/builders/index.d.ts +7 -3
  510. package/dist/types/transport/node/builders/message.d.ts +20 -30
  511. package/dist/types/transport/node/builders/pairing.d.ts +0 -2
  512. package/dist/types/transport/node/builders/privacy-token.d.ts +9 -0
  513. package/dist/types/transport/node/builders/privacy.d.ts +7 -0
  514. package/dist/types/transport/node/builders/profile.d.ts +8 -0
  515. package/dist/types/transport/node/builders/retry.d.ts +2 -5
  516. package/dist/types/transport/node/builders/usync.d.ts +21 -0
  517. package/dist/types/transport/node/helpers.d.ts +13 -0
  518. package/dist/types/transport/node/usync.d.ts +2 -0
  519. package/dist/types/transport/noise/WaFrameCodec.d.ts +3 -0
  520. package/dist/types/transport/noise/WaNoiseSession.d.ts +4 -2
  521. package/dist/types/transport/noise/WaNoiseSocket.d.ts +4 -2
  522. package/dist/types/transport/proxy.d.ts +6 -0
  523. package/dist/types/transport/stream/parse.d.ts +0 -1
  524. package/dist/types/transport/types.d.ts +18 -1
  525. package/dist/types/util/bytes.d.ts +5 -0
  526. package/dist/types/util/index.d.ts +5 -0
  527. package/dist/types/util/primitives.d.ts +2 -0
  528. package/dist/util/bytes.js +72 -46
  529. package/dist/util/coercion.js +6 -14
  530. package/dist/util/index.js +23 -0
  531. package/dist/util/primitives.js +42 -14
  532. package/package.json +52 -9
  533. package/proto/index.js +1 -1
  534. package/dist/crypto/core/constants.js +0 -4
  535. package/dist/crypto/core/encoding.js +0 -29
  536. package/dist/esm/crypto/core/constants.js +0 -1
  537. package/dist/esm/crypto/core/encoding.js +0 -25
  538. package/dist/esm/retry/outbound.js +0 -83
  539. package/dist/esm/store/providers/sqlite/BaseSqliteStore.js +0 -37
  540. package/dist/esm/store/providers/sqlite/appstate.store.js +0 -169
  541. package/dist/esm/store/providers/sqlite/auth.store.js +0 -176
  542. package/dist/esm/store/providers/sqlite/connection.js +0 -240
  543. package/dist/esm/store/providers/sqlite/contact.store.js +0 -61
  544. package/dist/esm/store/providers/sqlite/device-list.store.js +0 -155
  545. package/dist/esm/store/providers/sqlite/message.store.js +0 -119
  546. package/dist/esm/store/providers/sqlite/migrations.js +0 -347
  547. package/dist/esm/store/providers/sqlite/participants.store.js +0 -85
  548. package/dist/esm/store/providers/sqlite/retry.store.js +0 -144
  549. package/dist/esm/store/providers/sqlite/sender-key.store.js +0 -203
  550. package/dist/esm/store/providers/sqlite/signal.store.js +0 -353
  551. package/dist/esm/store/providers/sqlite/thread.store.js +0 -72
  552. package/dist/esm/util/base64.js +0 -18
  553. package/dist/esm/util/signal-address.js +0 -5
  554. package/dist/retry/outbound.js +0 -88
  555. package/dist/store/providers/sqlite/BaseSqliteStore.js +0 -41
  556. package/dist/store/providers/sqlite/appstate.store.js +0 -173
  557. package/dist/store/providers/sqlite/auth.store.js +0 -180
  558. package/dist/store/providers/sqlite/connection.js +0 -276
  559. package/dist/store/providers/sqlite/contact.store.js +0 -65
  560. package/dist/store/providers/sqlite/device-list.store.js +0 -159
  561. package/dist/store/providers/sqlite/message.store.js +0 -123
  562. package/dist/store/providers/sqlite/migrations.js +0 -350
  563. package/dist/store/providers/sqlite/participants.store.js +0 -89
  564. package/dist/store/providers/sqlite/retry.store.js +0 -148
  565. package/dist/store/providers/sqlite/sender-key.store.js +0 -207
  566. package/dist/store/providers/sqlite/signal.store.js +0 -357
  567. package/dist/store/providers/sqlite/thread.store.js +0 -76
  568. package/dist/types/appstate/store/sqlite.d.ts +0 -21
  569. package/dist/types/crypto/core/constants.d.ts +0 -1
  570. package/dist/types/crypto/core/encoding.d.ts +0 -11
  571. package/dist/types/retry/outbound.d.ts +0 -4
  572. package/dist/types/store/providers/sqlite/BaseSqliteStore.d.ts +0 -12
  573. package/dist/types/store/providers/sqlite/appstate.store.d.ts +0 -15
  574. package/dist/types/store/providers/sqlite/auth.store.d.ts +0 -10
  575. package/dist/types/store/providers/sqlite/connection.d.ts +0 -10
  576. package/dist/types/store/providers/sqlite/contact.store.d.ts +0 -10
  577. package/dist/types/store/providers/sqlite/device-list.store.d.ts +0 -18
  578. package/dist/types/store/providers/sqlite/message.store.d.ts +0 -11
  579. package/dist/types/store/providers/sqlite/migrations.d.ts +0 -3
  580. package/dist/types/store/providers/sqlite/participants.store.d.ts +0 -13
  581. package/dist/types/store/providers/sqlite/retry.store.d.ts +0 -16
  582. package/dist/types/store/providers/sqlite/sender-key.store.d.ts +0 -25
  583. package/dist/types/store/providers/sqlite/signal.store.d.ts +0 -46
  584. package/dist/types/store/providers/sqlite/thread.store.d.ts +0 -11
  585. package/dist/types/util/base64.d.ts +0 -4
  586. package/dist/types/util/signal-address.d.ts +0 -2
  587. package/dist/util/base64.js +0 -24
  588. package/dist/util/signal-address.js +0 -8
  589. /package/dist/types/transport/node/builders/{accountSync.d.ts → account-sync.d.ts} +0 -0
@@ -0,0 +1,691 @@
1
+ /**
2
+ * Field element arithmetic for GF(2^255-19).
3
+ * Representation: 16 limbs of 16 bits in Float64Array (tweetnacl style).
4
+ * Hot-path operations are allocation-free using pre-allocated temporaries.
5
+ */
6
+ export function fe() {
7
+ return new Float64Array(16);
8
+ }
9
+ export function feCopy(o, a) {
10
+ o.set(a);
11
+ }
12
+ export function feFromBigInt(n) {
13
+ const o = fe();
14
+ for (let i = 0; i < 16; i++) {
15
+ o[i] = Number(n & 0xffffn);
16
+ n >>= 16n;
17
+ }
18
+ return o;
19
+ }
20
+ export function feToBigInt(a) {
21
+ const bytes = new Uint8Array(32);
22
+ fePack(bytes, a);
23
+ let r = 0n;
24
+ for (let i = 31; i >= 0; i--) {
25
+ r = (r << 8n) | BigInt(bytes[i]);
26
+ }
27
+ return r;
28
+ }
29
+ export function feFromBytes(o, s) {
30
+ for (let i = 0; i < 16; i++) {
31
+ o[i] = s[2 * i] | (s[2 * i + 1] << 8);
32
+ }
33
+ o[15] &= 0x7fff;
34
+ }
35
+ function feCarry(o) {
36
+ let c = 1;
37
+ for (let i = 0; i < 16; i++) {
38
+ const v = o[i] + c + 65535;
39
+ c = Math.floor(v / 65536);
40
+ o[i] = v - c * 65536;
41
+ }
42
+ o[0] += c - 1 + 37 * (c - 1);
43
+ }
44
+ function feSel(p, q, b) {
45
+ const c = ~(b - 1);
46
+ for (let i = 0; i < 16; i++) {
47
+ const t = c & (p[i] ^ q[i]);
48
+ p[i] ^= t;
49
+ q[i] ^= t;
50
+ }
51
+ }
52
+ // Pre-allocated temporaries for fePack (safe: JS is single-threaded)
53
+ const _packT = fe();
54
+ const _packM = fe();
55
+ export function fePack(o, n) {
56
+ const t = _packT;
57
+ const m = _packM;
58
+ feCopy(t, n);
59
+ feCarry(t);
60
+ feCarry(t);
61
+ feCarry(t);
62
+ for (let j = 0; j < 2; j++) {
63
+ m[0] = t[0] - 0xffed;
64
+ for (let i = 1; i < 15; i++) {
65
+ m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);
66
+ m[i - 1] &= 0xffff;
67
+ }
68
+ m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);
69
+ const b = (m[15] >> 16) & 1;
70
+ m[14] &= 0xffff;
71
+ feSel(t, m, 1 - b);
72
+ }
73
+ for (let i = 0; i < 16; i++) {
74
+ o[2 * i] = t[i] & 0xff;
75
+ o[2 * i + 1] = t[i] >> 8;
76
+ }
77
+ }
78
+ export function feAdd(o, a, b) {
79
+ for (let i = 0; i < 16; i++)
80
+ o[i] = a[i] + b[i];
81
+ }
82
+ export function feSub(o, a, b) {
83
+ for (let i = 0; i < 16; i++)
84
+ o[i] = a[i] - b[i];
85
+ }
86
+ export function feNeg(o, a) {
87
+ for (let i = 0; i < 16; i++)
88
+ o[i] = -a[i];
89
+ }
90
+ /**
91
+ * Fully unrolled field multiplication with folded reduction.
92
+ * Computes o = a * b mod (2^255-19) using negacyclic convolution:
93
+ * t[i] = Σ a[j]*b[i-j] (direct) + 38 * Σ a[j]*b[i+16-j] (wrapped)
94
+ * All values in local variables for register allocation.
95
+ */
96
+ export function feMul(o, a, b) {
97
+ const a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];
98
+ const a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];
99
+ const a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];
100
+ const a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];
101
+ const b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
102
+ const b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];
103
+ const b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];
104
+ const b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
105
+ const v1 = 38 * b1, v2 = 38 * b2, v3 = 38 * b3, v4 = 38 * b4;
106
+ const v5 = 38 * b5, v6 = 38 * b6, v7 = 38 * b7, v8 = 38 * b8;
107
+ const v9 = 38 * b9, v10 = 38 * b10, v11 = 38 * b11, v12 = 38 * b12;
108
+ const v13 = 38 * b13, v14 = 38 * b14, v15 = 38 * b15;
109
+ let t0 = a0 * b0 +
110
+ a1 * v15 +
111
+ a2 * v14 +
112
+ a3 * v13 +
113
+ a4 * v12 +
114
+ a5 * v11 +
115
+ a6 * v10 +
116
+ a7 * v9 +
117
+ a8 * v8 +
118
+ a9 * v7 +
119
+ a10 * v6 +
120
+ a11 * v5 +
121
+ a12 * v4 +
122
+ a13 * v3 +
123
+ a14 * v2 +
124
+ a15 * v1;
125
+ let t1 = a0 * b1 +
126
+ a1 * b0 +
127
+ a2 * v15 +
128
+ a3 * v14 +
129
+ a4 * v13 +
130
+ a5 * v12 +
131
+ a6 * v11 +
132
+ a7 * v10 +
133
+ a8 * v9 +
134
+ a9 * v8 +
135
+ a10 * v7 +
136
+ a11 * v6 +
137
+ a12 * v5 +
138
+ a13 * v4 +
139
+ a14 * v3 +
140
+ a15 * v2;
141
+ let t2 = a0 * b2 +
142
+ a1 * b1 +
143
+ a2 * b0 +
144
+ a3 * v15 +
145
+ a4 * v14 +
146
+ a5 * v13 +
147
+ a6 * v12 +
148
+ a7 * v11 +
149
+ a8 * v10 +
150
+ a9 * v9 +
151
+ a10 * v8 +
152
+ a11 * v7 +
153
+ a12 * v6 +
154
+ a13 * v5 +
155
+ a14 * v4 +
156
+ a15 * v3;
157
+ let t3 = a0 * b3 +
158
+ a1 * b2 +
159
+ a2 * b1 +
160
+ a3 * b0 +
161
+ a4 * v15 +
162
+ a5 * v14 +
163
+ a6 * v13 +
164
+ a7 * v12 +
165
+ a8 * v11 +
166
+ a9 * v10 +
167
+ a10 * v9 +
168
+ a11 * v8 +
169
+ a12 * v7 +
170
+ a13 * v6 +
171
+ a14 * v5 +
172
+ a15 * v4;
173
+ let t4 = a0 * b4 +
174
+ a1 * b3 +
175
+ a2 * b2 +
176
+ a3 * b1 +
177
+ a4 * b0 +
178
+ a5 * v15 +
179
+ a6 * v14 +
180
+ a7 * v13 +
181
+ a8 * v12 +
182
+ a9 * v11 +
183
+ a10 * v10 +
184
+ a11 * v9 +
185
+ a12 * v8 +
186
+ a13 * v7 +
187
+ a14 * v6 +
188
+ a15 * v5;
189
+ let t5 = a0 * b5 +
190
+ a1 * b4 +
191
+ a2 * b3 +
192
+ a3 * b2 +
193
+ a4 * b1 +
194
+ a5 * b0 +
195
+ a6 * v15 +
196
+ a7 * v14 +
197
+ a8 * v13 +
198
+ a9 * v12 +
199
+ a10 * v11 +
200
+ a11 * v10 +
201
+ a12 * v9 +
202
+ a13 * v8 +
203
+ a14 * v7 +
204
+ a15 * v6;
205
+ let t6 = a0 * b6 +
206
+ a1 * b5 +
207
+ a2 * b4 +
208
+ a3 * b3 +
209
+ a4 * b2 +
210
+ a5 * b1 +
211
+ a6 * b0 +
212
+ a7 * v15 +
213
+ a8 * v14 +
214
+ a9 * v13 +
215
+ a10 * v12 +
216
+ a11 * v11 +
217
+ a12 * v10 +
218
+ a13 * v9 +
219
+ a14 * v8 +
220
+ a15 * v7;
221
+ let t7 = a0 * b7 +
222
+ a1 * b6 +
223
+ a2 * b5 +
224
+ a3 * b4 +
225
+ a4 * b3 +
226
+ a5 * b2 +
227
+ a6 * b1 +
228
+ a7 * b0 +
229
+ a8 * v15 +
230
+ a9 * v14 +
231
+ a10 * v13 +
232
+ a11 * v12 +
233
+ a12 * v11 +
234
+ a13 * v10 +
235
+ a14 * v9 +
236
+ a15 * v8;
237
+ let t8 = a0 * b8 +
238
+ a1 * b7 +
239
+ a2 * b6 +
240
+ a3 * b5 +
241
+ a4 * b4 +
242
+ a5 * b3 +
243
+ a6 * b2 +
244
+ a7 * b1 +
245
+ a8 * b0 +
246
+ a9 * v15 +
247
+ a10 * v14 +
248
+ a11 * v13 +
249
+ a12 * v12 +
250
+ a13 * v11 +
251
+ a14 * v10 +
252
+ a15 * v9;
253
+ let t9 = a0 * b9 +
254
+ a1 * b8 +
255
+ a2 * b7 +
256
+ a3 * b6 +
257
+ a4 * b5 +
258
+ a5 * b4 +
259
+ a6 * b3 +
260
+ a7 * b2 +
261
+ a8 * b1 +
262
+ a9 * b0 +
263
+ a10 * v15 +
264
+ a11 * v14 +
265
+ a12 * v13 +
266
+ a13 * v12 +
267
+ a14 * v11 +
268
+ a15 * v10;
269
+ let t10 = a0 * b10 +
270
+ a1 * b9 +
271
+ a2 * b8 +
272
+ a3 * b7 +
273
+ a4 * b6 +
274
+ a5 * b5 +
275
+ a6 * b4 +
276
+ a7 * b3 +
277
+ a8 * b2 +
278
+ a9 * b1 +
279
+ a10 * b0 +
280
+ a11 * v15 +
281
+ a12 * v14 +
282
+ a13 * v13 +
283
+ a14 * v12 +
284
+ a15 * v11;
285
+ let t11 = a0 * b11 +
286
+ a1 * b10 +
287
+ a2 * b9 +
288
+ a3 * b8 +
289
+ a4 * b7 +
290
+ a5 * b6 +
291
+ a6 * b5 +
292
+ a7 * b4 +
293
+ a8 * b3 +
294
+ a9 * b2 +
295
+ a10 * b1 +
296
+ a11 * b0 +
297
+ a12 * v15 +
298
+ a13 * v14 +
299
+ a14 * v13 +
300
+ a15 * v12;
301
+ let t12 = a0 * b12 +
302
+ a1 * b11 +
303
+ a2 * b10 +
304
+ a3 * b9 +
305
+ a4 * b8 +
306
+ a5 * b7 +
307
+ a6 * b6 +
308
+ a7 * b5 +
309
+ a8 * b4 +
310
+ a9 * b3 +
311
+ a10 * b2 +
312
+ a11 * b1 +
313
+ a12 * b0 +
314
+ a13 * v15 +
315
+ a14 * v14 +
316
+ a15 * v13;
317
+ let t13 = a0 * b13 +
318
+ a1 * b12 +
319
+ a2 * b11 +
320
+ a3 * b10 +
321
+ a4 * b9 +
322
+ a5 * b8 +
323
+ a6 * b7 +
324
+ a7 * b6 +
325
+ a8 * b5 +
326
+ a9 * b4 +
327
+ a10 * b3 +
328
+ a11 * b2 +
329
+ a12 * b1 +
330
+ a13 * b0 +
331
+ a14 * v15 +
332
+ a15 * v14;
333
+ let t14 = a0 * b14 +
334
+ a1 * b13 +
335
+ a2 * b12 +
336
+ a3 * b11 +
337
+ a4 * b10 +
338
+ a5 * b9 +
339
+ a6 * b8 +
340
+ a7 * b7 +
341
+ a8 * b6 +
342
+ a9 * b5 +
343
+ a10 * b4 +
344
+ a11 * b3 +
345
+ a12 * b2 +
346
+ a13 * b1 +
347
+ a14 * b0 +
348
+ a15 * v15;
349
+ let t15 = a0 * b15 +
350
+ a1 * b14 +
351
+ a2 * b13 +
352
+ a3 * b12 +
353
+ a4 * b11 +
354
+ a5 * b10 +
355
+ a6 * b9 +
356
+ a7 * b8 +
357
+ a8 * b7 +
358
+ a9 * b6 +
359
+ a10 * b5 +
360
+ a11 * b4 +
361
+ a12 * b3 +
362
+ a13 * b2 +
363
+ a14 * b1 +
364
+ a15 * b0;
365
+ // Carry chain round 1
366
+ let c = Math.floor(t0 / 65536);
367
+ t0 -= c * 65536;
368
+ t1 += c;
369
+ c = Math.floor(t1 / 65536);
370
+ t1 -= c * 65536;
371
+ t2 += c;
372
+ c = Math.floor(t2 / 65536);
373
+ t2 -= c * 65536;
374
+ t3 += c;
375
+ c = Math.floor(t3 / 65536);
376
+ t3 -= c * 65536;
377
+ t4 += c;
378
+ c = Math.floor(t4 / 65536);
379
+ t4 -= c * 65536;
380
+ t5 += c;
381
+ c = Math.floor(t5 / 65536);
382
+ t5 -= c * 65536;
383
+ t6 += c;
384
+ c = Math.floor(t6 / 65536);
385
+ t6 -= c * 65536;
386
+ t7 += c;
387
+ c = Math.floor(t7 / 65536);
388
+ t7 -= c * 65536;
389
+ t8 += c;
390
+ c = Math.floor(t8 / 65536);
391
+ t8 -= c * 65536;
392
+ t9 += c;
393
+ c = Math.floor(t9 / 65536);
394
+ t9 -= c * 65536;
395
+ t10 += c;
396
+ c = Math.floor(t10 / 65536);
397
+ t10 -= c * 65536;
398
+ t11 += c;
399
+ c = Math.floor(t11 / 65536);
400
+ t11 -= c * 65536;
401
+ t12 += c;
402
+ c = Math.floor(t12 / 65536);
403
+ t12 -= c * 65536;
404
+ t13 += c;
405
+ c = Math.floor(t13 / 65536);
406
+ t13 -= c * 65536;
407
+ t14 += c;
408
+ c = Math.floor(t14 / 65536);
409
+ t14 -= c * 65536;
410
+ t15 += c;
411
+ c = Math.floor(t15 / 65536);
412
+ t15 -= c * 65536;
413
+ t0 += 38 * c;
414
+ // Carry chain round 2
415
+ c = Math.floor(t0 / 65536);
416
+ t0 -= c * 65536;
417
+ t1 += c;
418
+ c = Math.floor(t1 / 65536);
419
+ t1 -= c * 65536;
420
+ t2 += c;
421
+ c = Math.floor(t2 / 65536);
422
+ t2 -= c * 65536;
423
+ t3 += c;
424
+ c = Math.floor(t3 / 65536);
425
+ t3 -= c * 65536;
426
+ t4 += c;
427
+ c = Math.floor(t4 / 65536);
428
+ t4 -= c * 65536;
429
+ t5 += c;
430
+ c = Math.floor(t5 / 65536);
431
+ t5 -= c * 65536;
432
+ t6 += c;
433
+ c = Math.floor(t6 / 65536);
434
+ t6 -= c * 65536;
435
+ t7 += c;
436
+ c = Math.floor(t7 / 65536);
437
+ t7 -= c * 65536;
438
+ t8 += c;
439
+ c = Math.floor(t8 / 65536);
440
+ t8 -= c * 65536;
441
+ t9 += c;
442
+ c = Math.floor(t9 / 65536);
443
+ t9 -= c * 65536;
444
+ t10 += c;
445
+ c = Math.floor(t10 / 65536);
446
+ t10 -= c * 65536;
447
+ t11 += c;
448
+ c = Math.floor(t11 / 65536);
449
+ t11 -= c * 65536;
450
+ t12 += c;
451
+ c = Math.floor(t12 / 65536);
452
+ t12 -= c * 65536;
453
+ t13 += c;
454
+ c = Math.floor(t13 / 65536);
455
+ t13 -= c * 65536;
456
+ t14 += c;
457
+ c = Math.floor(t14 / 65536);
458
+ t14 -= c * 65536;
459
+ t15 += c;
460
+ c = Math.floor(t15 / 65536);
461
+ t15 -= c * 65536;
462
+ t0 += 38 * c;
463
+ o[0] = t0;
464
+ o[1] = t1;
465
+ o[2] = t2;
466
+ o[3] = t3;
467
+ o[4] = t4;
468
+ o[5] = t5;
469
+ o[6] = t6;
470
+ o[7] = t7;
471
+ o[8] = t8;
472
+ o[9] = t9;
473
+ o[10] = t10;
474
+ o[11] = t11;
475
+ o[12] = t12;
476
+ o[13] = t13;
477
+ o[14] = t14;
478
+ o[15] = t15;
479
+ }
480
+ /**
481
+ * Fully unrolled field squaring with folded reduction and symmetry.
482
+ * Exploits a[j]*a[k] == a[k]*a[j] to halve off-diagonal multiplications.
483
+ * Combined with negacyclic reduction: wrapped terms use a38[k] = 38*a[k].
484
+ */
485
+ export function feSqr(o, a) {
486
+ const a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];
487
+ const a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];
488
+ const a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];
489
+ const a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];
490
+ const v8 = 38 * a8, v9 = 38 * a9, v10 = 38 * a10, v11 = 38 * a11;
491
+ const v12 = 38 * a12, v13 = 38 * a13, v14 = 38 * a14, v15 = 38 * a15;
492
+ let t0 = a0 * a0 +
493
+ 2 * (a1 * v15 + a2 * v14 + a3 * v13 + a4 * v12 + a5 * v11 + a6 * v10 + a7 * v9) +
494
+ a8 * v8;
495
+ let t1 = 2 * (a0 * a1 + a2 * v15 + a3 * v14 + a4 * v13 + a5 * v12 + a6 * v11 + a7 * v10 + a8 * v9);
496
+ let t2 = a1 * a1 +
497
+ 2 * (a0 * a2 + a3 * v15 + a4 * v14 + a5 * v13 + a6 * v12 + a7 * v11 + a8 * v10) +
498
+ a9 * v9;
499
+ let t3 = 2 * (a0 * a3 + a1 * a2 + a4 * v15 + a5 * v14 + a6 * v13 + a7 * v12 + a8 * v11 + a9 * v10);
500
+ let t4 = a2 * a2 +
501
+ 2 * (a0 * a4 + a1 * a3 + a5 * v15 + a6 * v14 + a7 * v13 + a8 * v12 + a9 * v11) +
502
+ a10 * v10;
503
+ let t5 = 2 * (a0 * a5 + a1 * a4 + a2 * a3 + a6 * v15 + a7 * v14 + a8 * v13 + a9 * v12 + a10 * v11);
504
+ let t6 = a3 * a3 +
505
+ 2 * (a0 * a6 + a1 * a5 + a2 * a4 + a7 * v15 + a8 * v14 + a9 * v13 + a10 * v12) +
506
+ a11 * v11;
507
+ let t7 = 2 * (a0 * a7 + a1 * a6 + a2 * a5 + a3 * a4 + a8 * v15 + a9 * v14 + a10 * v13 + a11 * v12);
508
+ let t8 = a4 * a4 +
509
+ 2 * (a0 * a8 + a1 * a7 + a2 * a6 + a3 * a5 + a9 * v15 + a10 * v14 + a11 * v13) +
510
+ a12 * v12;
511
+ let t9 = 2 * (a0 * a9 + a1 * a8 + a2 * a7 + a3 * a6 + a4 * a5 + a10 * v15 + a11 * v14 + a12 * v13);
512
+ let t10 = a5 * a5 +
513
+ 2 * (a0 * a10 + a1 * a9 + a2 * a8 + a3 * a7 + a4 * a6 + a11 * v15 + a12 * v14) +
514
+ a13 * v13;
515
+ let t11 = 2 * (a0 * a11 + a1 * a10 + a2 * a9 + a3 * a8 + a4 * a7 + a5 * a6 + a12 * v15 + a13 * v14);
516
+ let t12 = a6 * a6 +
517
+ 2 * (a0 * a12 + a1 * a11 + a2 * a10 + a3 * a9 + a4 * a8 + a5 * a7 + a13 * v15) +
518
+ a14 * v14;
519
+ let t13 = 2 * (a0 * a13 + a1 * a12 + a2 * a11 + a3 * a10 + a4 * a9 + a5 * a8 + a6 * a7 + a14 * v15);
520
+ let t14 = a7 * a7 +
521
+ 2 * (a0 * a14 + a1 * a13 + a2 * a12 + a3 * a11 + a4 * a10 + a5 * a9 + a6 * a8) +
522
+ a15 * v15;
523
+ let t15 = 2 * (a0 * a15 + a1 * a14 + a2 * a13 + a3 * a12 + a4 * a11 + a5 * a10 + a6 * a9 + a7 * a8);
524
+ // Carry chain round 1
525
+ let c = Math.floor(t0 / 65536);
526
+ t0 -= c * 65536;
527
+ t1 += c;
528
+ c = Math.floor(t1 / 65536);
529
+ t1 -= c * 65536;
530
+ t2 += c;
531
+ c = Math.floor(t2 / 65536);
532
+ t2 -= c * 65536;
533
+ t3 += c;
534
+ c = Math.floor(t3 / 65536);
535
+ t3 -= c * 65536;
536
+ t4 += c;
537
+ c = Math.floor(t4 / 65536);
538
+ t4 -= c * 65536;
539
+ t5 += c;
540
+ c = Math.floor(t5 / 65536);
541
+ t5 -= c * 65536;
542
+ t6 += c;
543
+ c = Math.floor(t6 / 65536);
544
+ t6 -= c * 65536;
545
+ t7 += c;
546
+ c = Math.floor(t7 / 65536);
547
+ t7 -= c * 65536;
548
+ t8 += c;
549
+ c = Math.floor(t8 / 65536);
550
+ t8 -= c * 65536;
551
+ t9 += c;
552
+ c = Math.floor(t9 / 65536);
553
+ t9 -= c * 65536;
554
+ t10 += c;
555
+ c = Math.floor(t10 / 65536);
556
+ t10 -= c * 65536;
557
+ t11 += c;
558
+ c = Math.floor(t11 / 65536);
559
+ t11 -= c * 65536;
560
+ t12 += c;
561
+ c = Math.floor(t12 / 65536);
562
+ t12 -= c * 65536;
563
+ t13 += c;
564
+ c = Math.floor(t13 / 65536);
565
+ t13 -= c * 65536;
566
+ t14 += c;
567
+ c = Math.floor(t14 / 65536);
568
+ t14 -= c * 65536;
569
+ t15 += c;
570
+ c = Math.floor(t15 / 65536);
571
+ t15 -= c * 65536;
572
+ t0 += 38 * c;
573
+ // Carry chain round 2
574
+ c = Math.floor(t0 / 65536);
575
+ t0 -= c * 65536;
576
+ t1 += c;
577
+ c = Math.floor(t1 / 65536);
578
+ t1 -= c * 65536;
579
+ t2 += c;
580
+ c = Math.floor(t2 / 65536);
581
+ t2 -= c * 65536;
582
+ t3 += c;
583
+ c = Math.floor(t3 / 65536);
584
+ t3 -= c * 65536;
585
+ t4 += c;
586
+ c = Math.floor(t4 / 65536);
587
+ t4 -= c * 65536;
588
+ t5 += c;
589
+ c = Math.floor(t5 / 65536);
590
+ t5 -= c * 65536;
591
+ t6 += c;
592
+ c = Math.floor(t6 / 65536);
593
+ t6 -= c * 65536;
594
+ t7 += c;
595
+ c = Math.floor(t7 / 65536);
596
+ t7 -= c * 65536;
597
+ t8 += c;
598
+ c = Math.floor(t8 / 65536);
599
+ t8 -= c * 65536;
600
+ t9 += c;
601
+ c = Math.floor(t9 / 65536);
602
+ t9 -= c * 65536;
603
+ t10 += c;
604
+ c = Math.floor(t10 / 65536);
605
+ t10 -= c * 65536;
606
+ t11 += c;
607
+ c = Math.floor(t11 / 65536);
608
+ t11 -= c * 65536;
609
+ t12 += c;
610
+ c = Math.floor(t12 / 65536);
611
+ t12 -= c * 65536;
612
+ t13 += c;
613
+ c = Math.floor(t13 / 65536);
614
+ t13 -= c * 65536;
615
+ t14 += c;
616
+ c = Math.floor(t14 / 65536);
617
+ t14 -= c * 65536;
618
+ t15 += c;
619
+ c = Math.floor(t15 / 65536);
620
+ t15 -= c * 65536;
621
+ t0 += 38 * c;
622
+ o[0] = t0;
623
+ o[1] = t1;
624
+ o[2] = t2;
625
+ o[3] = t3;
626
+ o[4] = t4;
627
+ o[5] = t5;
628
+ o[6] = t6;
629
+ o[7] = t7;
630
+ o[8] = t8;
631
+ o[9] = t9;
632
+ o[10] = t10;
633
+ o[11] = t11;
634
+ o[12] = t12;
635
+ o[13] = t13;
636
+ o[14] = t14;
637
+ o[15] = t15;
638
+ }
639
+ export function feSqrN(o, a, n) {
640
+ feCopy(o, a);
641
+ for (let i = 0; i < n; i++) {
642
+ feSqr(o, o);
643
+ }
644
+ }
645
+ // Pre-allocated temporaries for feInv (safe: JS is single-threaded)
646
+ const _inv0 = fe();
647
+ const _inv1 = fe();
648
+ const _inv2 = fe();
649
+ const _inv3 = fe();
650
+ export function feInv(o, a) {
651
+ const t0 = _inv0;
652
+ const t1 = _inv1;
653
+ const t2 = _inv2;
654
+ const t3 = _inv3;
655
+ // a^2
656
+ feSqr(t0, a);
657
+ // a^8
658
+ feSqrN(t1, t0, 2);
659
+ // a^9
660
+ feMul(t1, a, t1);
661
+ // a^11
662
+ feMul(t0, t0, t1);
663
+ // a^22
664
+ feSqr(t2, t0);
665
+ // a^(2^5-1)
666
+ feMul(t1, t1, t2);
667
+ feSqrN(t2, t1, 5);
668
+ // a^(2^10-1)
669
+ feMul(t1, t2, t1);
670
+ feSqrN(t2, t1, 10);
671
+ // a^(2^20-1)
672
+ feMul(t2, t2, t1);
673
+ feSqrN(t3, t2, 20);
674
+ // a^(2^40-1)
675
+ feMul(t2, t3, t2);
676
+ feSqrN(t2, t2, 10);
677
+ // a^(2^50-1)
678
+ feMul(t1, t2, t1);
679
+ feSqrN(t2, t1, 50);
680
+ // a^(2^100-1)
681
+ feMul(t2, t2, t1);
682
+ feSqrN(t3, t2, 100);
683
+ // a^(2^200-1)
684
+ feMul(t2, t3, t2);
685
+ feSqrN(t2, t2, 50);
686
+ // a^(2^250-1)
687
+ feMul(t1, t2, t1);
688
+ feSqrN(t1, t1, 5);
689
+ // a^(2^255-21) = a^(p-2)
690
+ feMul(o, t1, t0);
691
+ }
@@ -1,5 +1,5 @@
1
1
  import { FIELD_P, GROUP_L } from '../math/constants.js';
2
- export { FIELD_P, GROUP_L };
2
+ import { fe, feFromBigInt, feInv, feToBigInt } from '../math/fe.js';
3
3
  export function mod(value, modulus = FIELD_P) {
4
4
  const remainder = value % modulus;
5
5
  return remainder >= 0n ? remainder : remainder + modulus;
@@ -11,8 +11,17 @@ export function modInv(value, modulus = FIELD_P) {
11
11
  if (value === 0n) {
12
12
  throw new Error('field inversion by zero');
13
13
  }
14
+ if (modulus === FIELD_P) {
15
+ return fieldInv(value);
16
+ }
14
17
  return modPow(value, modulus - 2n, modulus);
15
18
  }
19
+ function fieldInv(x) {
20
+ const a = feFromBigInt(mod(x));
21
+ const out = fe();
22
+ feInv(out, a);
23
+ return feToBigInt(out);
24
+ }
16
25
  function modPow(base, exponent, modulus) {
17
26
  if (modulus <= 0n) {
18
27
  throw new Error('modulus must be positive');
package/dist/esm/index.js CHANGED
@@ -2,5 +2,5 @@ export { WaClient } from './client/index.js';
2
2
  export { ConsoleLogger } from './infra/log/ConsoleLogger.js';
3
3
  export { PinoLogger, createPinoLogger } from './infra/log/PinoLogger.js';
4
4
  export { createStore } from './store/index.js';
5
- export { getLoginIdentity, getWaCompanionPlatformId, getWaMediaHkdfInfo, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, toUserJid, WA_ACCOUNT_SYNC_PROTOCOLS, WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS, WA_DEFAULTS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_DISCONNECT_REASONS, WA_IQ_TYPES, WA_LOGOUT_REASONS, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_MEDIA_HKDF_INFO, WA_NODE_TAGS, WA_PAIRING_KDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO, WA_READY_STATES, WA_RETRYABLE_ACK_CODES, WA_SIGNALING, WA_STREAM_SIGNALING, WA_SUPPORTED_DIRTY_TYPES, WA_XMLNS } from './protocol/index.js';
5
+ export { getLoginIdentity, getWaCompanionPlatformId, getWaMediaHkdfInfo, isGroupJid, normalizeDeviceJid, normalizeRecipientJid, parsePhoneJid, parseSignalAddressFromJid, splitJid, toUserJid, WA_ACCOUNT_SYNC_PROTOCOLS, WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE, WA_BROWSERS, WA_COMPANION_PLATFORM_IDS, WA_DEFAULTS, WA_DIRTY_PROTOCOLS, WA_DIRTY_TYPES, WA_DISCONNECT_REASONS, WA_IQ_TYPES, WA_LOGOUT_REASONS, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_MEDIA_HKDF_INFO, WA_NODE_TAGS, WA_PAIRING_KDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO, WA_READY_STATES, WA_RETRYABLE_ACK_CODES, WA_SIGNALING, WA_STREAM_SIGNALING, WA_SUPPORTED_DIRTY_TYPES, WA_PRIVACY_CATEGORIES, WA_PRIVACY_CATEGORY_TO_SETTING, WA_PRIVACY_DISALLOWED_LIST_CATEGORIES, WA_PRIVACY_SETTING_TO_CATEGORY, WA_PRIVACY_TAGS, WA_PRIVACY_VALUES, WA_XMLNS } from './protocol/index.js';
6
6
  export { proto } from './proto.js';