@pontalabs/baileys 1.0.4 → 1.0.6

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 (447) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +267 -839
  3. package/WAProto/GenerateStatics.sh +3 -4
  4. package/WAProto/WAProto.proto +1215 -511
  5. package/WAProto/fix-imports.js +85 -0
  6. package/WAProto/index.d.ts +14017 -55
  7. package/WAProto/index.js +97689 -29
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/index.d.ts +72 -74
  10. package/lib/Defaults/index.d.ts.map +1 -0
  11. package/lib/Defaults/index.js +94 -108
  12. package/lib/Defaults/index.js.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts +8 -7
  14. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/Signal/Group/ciphertext-message.js +9 -16
  16. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/Signal/Group/group-session-builder.d.ts +11 -13
  18. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/Signal/Group/group-session-builder.js +19 -61
  20. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/Signal/Group/group_cipher.d.ts +14 -16
  22. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/Signal/Group/group_cipher.js +41 -70
  24. package/lib/Signal/Group/group_cipher.js.map +1 -0
  25. package/lib/Signal/Group/index.d.ts +12 -11
  26. package/lib/Signal/Group/index.d.ts.map +1 -0
  27. package/lib/Signal/Group/index.js +12 -61
  28. package/lib/Signal/Group/index.js.map +1 -0
  29. package/lib/Signal/Group/keyhelper.d.ts +9 -14
  30. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/Signal/Group/keyhelper.js +10 -58
  32. package/lib/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.d.ts +13 -13
  34. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/Signal/Group/sender-chain-key.js +13 -34
  36. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -16
  38. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/Signal/Group/sender-key-distribution-message.js +28 -36
  40. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.d.ts +18 -18
  42. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/Signal/Group/sender-key-message.js +38 -45
  44. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts +14 -15
  46. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/Signal/Group/sender-key-name.js +20 -31
  48. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.d.ts +24 -25
  50. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/Signal/Group/sender-key-record.js +18 -35
  52. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.d.ts +29 -34
  54. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/Signal/Group/sender-key-state.js +37 -100
  56. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts +11 -10
  58. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/Signal/Group/sender-message-key.js +15 -22
  60. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/Signal/libsignal.d.ts +5 -8
  62. package/lib/Signal/libsignal.d.ts.map +1 -0
  63. package/lib/Signal/libsignal.js +279 -121
  64. package/lib/Signal/libsignal.js.map +1 -0
  65. package/lib/Signal/lid-mapping.d.ts +23 -28
  66. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  67. package/lib/Signal/lid-mapping.js +277 -184
  68. package/lib/Signal/lid-mapping.js.map +1 -0
  69. package/lib/Socket/Client/index.d.ts +3 -2
  70. package/lib/Socket/Client/index.d.ts.map +1 -0
  71. package/lib/Socket/Client/index.js +3 -22
  72. package/lib/Socket/Client/index.js.map +1 -0
  73. package/lib/Socket/Client/types.d.ts +15 -15
  74. package/lib/Socket/Client/types.d.ts.map +1 -0
  75. package/lib/Socket/Client/types.js +8 -15
  76. package/lib/Socket/Client/types.js.map +1 -0
  77. package/lib/Socket/Client/websocket.d.ts +12 -12
  78. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  79. package/lib/Socket/Client/websocket.js +29 -37
  80. package/lib/Socket/Client/websocket.js.map +1 -0
  81. package/lib/Socket/business.d.ts +208 -178
  82. package/lib/Socket/business.d.ts.map +1 -0
  83. package/lib/Socket/business.js +91 -127
  84. package/lib/Socket/business.js.map +1 -0
  85. package/lib/Socket/chats.d.ts +120 -93
  86. package/lib/Socket/chats.d.ts.map +1 -0
  87. package/lib/Socket/chats.js +727 -652
  88. package/lib/Socket/chats.js.map +1 -0
  89. package/lib/Socket/communities.d.ts +273 -0
  90. package/lib/Socket/communities.d.ts.map +1 -0
  91. package/lib/Socket/communities.js +431 -0
  92. package/lib/Socket/communities.js.map +1 -0
  93. package/lib/Socket/dugong.js +261 -0
  94. package/lib/Socket/dugong.js.bak +204 -0
  95. package/lib/Socket/groups.d.ts +143 -111
  96. package/lib/Socket/groups.d.ts.map +1 -0
  97. package/lib/Socket/groups.js +165 -177
  98. package/lib/Socket/groups.js.map +1 -0
  99. package/lib/Socket/index.d.ts +252 -183
  100. package/lib/Socket/index.d.ts.map +1 -0
  101. package/lib/Socket/index.js +38 -18
  102. package/lib/Socket/index.js.bak +44 -0
  103. package/lib/Socket/index.js.map +1 -0
  104. package/lib/Socket/messages-recv.d.ts +196 -167
  105. package/lib/Socket/messages-recv.d.ts.map +1 -0
  106. package/lib/Socket/messages-recv.js +1443 -1563
  107. package/lib/Socket/messages-recv.js.map +1 -0
  108. package/lib/Socket/messages-send.d.ts +192 -158
  109. package/lib/Socket/messages-send.d.ts.map +1 -0
  110. package/lib/Socket/messages-send.js +1102 -1208
  111. package/lib/Socket/messages-send.js.bak +1400 -0
  112. package/lib/Socket/messages-send.js.map +1 -0
  113. package/lib/Socket/mex.d.ts +3 -0
  114. package/lib/Socket/mex.d.ts.map +1 -0
  115. package/lib/Socket/mex.js +42 -0
  116. package/lib/Socket/mex.js.map +1 -0
  117. package/lib/Socket/newsletter.d.ts +163 -138
  118. package/lib/Socket/newsletter.d.ts.map +1 -0
  119. package/lib/Socket/newsletter.js +153 -249
  120. package/lib/Socket/newsletter.js.map +1 -0
  121. package/lib/Socket/socket.d.ts +50 -36
  122. package/lib/Socket/socket.d.ts.map +1 -0
  123. package/lib/Socket/socket.js +749 -820
  124. package/lib/Socket/socket.js.map +1 -0
  125. package/lib/Store/index.d.ts +4 -4
  126. package/lib/Store/index.d.ts.map +1 -0
  127. package/lib/Store/index.js +4 -24
  128. package/lib/Store/index.js.map +1 -0
  129. package/lib/Store/make-in-memory-store.d.ts +44 -104
  130. package/lib/Store/make-in-memory-store.d.ts.map +1 -0
  131. package/lib/Store/make-in-memory-store.js +199 -213
  132. package/lib/Store/make-in-memory-store.js.map +1 -0
  133. package/lib/Store/make-ordered-dictionary.d.ts +13 -12
  134. package/lib/Store/make-ordered-dictionary.d.ts.map +1 -0
  135. package/lib/Store/make-ordered-dictionary.js +38 -45
  136. package/lib/Store/make-ordered-dictionary.js.map +1 -0
  137. package/lib/Store/object-repository.d.ts +11 -10
  138. package/lib/Store/object-repository.d.ts.map +1 -0
  139. package/lib/Store/object-repository.js +9 -16
  140. package/lib/Store/object-repository.js.map +1 -0
  141. package/lib/Types/Auth.d.ts +93 -97
  142. package/lib/Types/Auth.d.ts.map +1 -0
  143. package/lib/Types/Auth.js +2 -3
  144. package/lib/Types/Auth.js.map +1 -0
  145. package/lib/Types/Bussines.d.ts +25 -0
  146. package/lib/Types/Bussines.d.ts.map +1 -0
  147. package/lib/Types/Bussines.js +2 -3
  148. package/lib/Types/Bussines.js.map +1 -0
  149. package/lib/Types/Call.d.ts +14 -13
  150. package/lib/Types/Call.d.ts.map +1 -0
  151. package/lib/Types/Call.js +2 -3
  152. package/lib/Types/Call.js.map +1 -0
  153. package/lib/Types/Chat.d.ts +78 -97
  154. package/lib/Types/Chat.d.ts.map +1 -0
  155. package/lib/Types/Chat.js +8 -9
  156. package/lib/Types/Chat.js.map +1 -0
  157. package/lib/Types/Contact.d.ts +12 -9
  158. package/lib/Types/Contact.d.ts.map +1 -0
  159. package/lib/Types/Contact.js +2 -3
  160. package/lib/Types/Contact.js.map +1 -0
  161. package/lib/Types/Events.d.ts +206 -176
  162. package/lib/Types/Events.d.ts.map +1 -0
  163. package/lib/Types/Events.js +2 -3
  164. package/lib/Types/Events.js.map +1 -0
  165. package/lib/Types/GroupMetadata.d.ts +53 -48
  166. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  167. package/lib/Types/GroupMetadata.js +2 -3
  168. package/lib/Types/GroupMetadata.js.map +1 -0
  169. package/lib/Types/Label.d.ts +13 -14
  170. package/lib/Types/Label.d.ts.map +1 -0
  171. package/lib/Types/Label.js +24 -30
  172. package/lib/Types/Label.js.map +1 -0
  173. package/lib/Types/LabelAssociation.d.ts +15 -20
  174. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  175. package/lib/Types/LabelAssociation.js +6 -12
  176. package/lib/Types/LabelAssociation.js.map +1 -0
  177. package/lib/Types/Message.d.ts +248 -412
  178. package/lib/Types/Message.d.ts.map +1 -0
  179. package/lib/Types/Message.js +17 -19
  180. package/lib/Types/Message.js.map +1 -0
  181. package/lib/Types/Mex.d.ts +141 -0
  182. package/lib/Types/Mex.d.ts.map +1 -0
  183. package/lib/Types/Mex.js +37 -0
  184. package/lib/Types/Mex.js.map +1 -0
  185. package/lib/Types/Product.d.ts +58 -71
  186. package/lib/Types/Product.d.ts.map +1 -0
  187. package/lib/Types/Product.js +2 -3
  188. package/lib/Types/Product.js.map +1 -0
  189. package/lib/Types/RichType.d.ts +3 -0
  190. package/lib/Types/RichType.d.ts.map +1 -0
  191. package/lib/Types/RichType.js +23 -0
  192. package/lib/Types/RichType.js.bak +23 -0
  193. package/lib/Types/RichType.js.map +1 -0
  194. package/lib/Types/Signal.d.ts +71 -82
  195. package/lib/Types/Signal.d.ts.map +1 -0
  196. package/lib/Types/Signal.js +2 -3
  197. package/lib/Types/Signal.js.map +1 -0
  198. package/lib/Types/Socket.d.ts +76 -81
  199. package/lib/Types/Socket.d.ts.map +1 -0
  200. package/lib/Types/Socket.js +3 -3
  201. package/lib/Types/Socket.js.map +1 -0
  202. package/lib/Types/State.d.ts +75 -19
  203. package/lib/Types/State.d.ts.map +1 -0
  204. package/lib/Types/State.js +56 -14
  205. package/lib/Types/State.js.map +1 -0
  206. package/lib/Types/USync.d.ts +8 -8
  207. package/lib/Types/USync.d.ts.map +1 -0
  208. package/lib/Types/USync.js +2 -3
  209. package/lib/Types/USync.js.map +1 -0
  210. package/lib/Types/index.d.ts +47 -62
  211. package/lib/Types/index.d.ts.map +1 -0
  212. package/lib/Types/index.js +26 -50
  213. package/lib/Types/index.js.map +1 -0
  214. package/lib/Utils/auth-utils.d.ts +13 -10
  215. package/lib/Utils/auth-utils.d.ts.map +1 -0
  216. package/lib/Utils/auth-utils.js +213 -454
  217. package/lib/Utils/auth-utils.js.map +1 -0
  218. package/lib/Utils/browser-utils.d.ts +4 -0
  219. package/lib/Utils/browser-utils.d.ts.map +1 -0
  220. package/lib/Utils/browser-utils.js +28 -0
  221. package/lib/Utils/browser-utils.js.map +1 -0
  222. package/lib/Utils/business.d.ts +14 -20
  223. package/lib/Utils/business.d.ts.map +1 -0
  224. package/lib/Utils/business.js +110 -134
  225. package/lib/Utils/business.js.map +1 -0
  226. package/lib/Utils/chat-utils.d.ts +88 -70
  227. package/lib/Utils/chat-utils.d.ts.map +1 -0
  228. package/lib/Utils/chat-utils.js +466 -403
  229. package/lib/Utils/chat-utils.js.map +1 -0
  230. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  231. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  232. package/lib/Utils/companion-reg-client-utils.js +35 -0
  233. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  234. package/lib/Utils/crypto.d.ts +27 -46
  235. package/lib/Utils/crypto.d.ts.map +1 -0
  236. package/lib/Utils/crypto.js +117 -188
  237. package/lib/Utils/crypto.js.map +1 -0
  238. package/lib/Utils/decode-wa-message.d.ts +58 -45
  239. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  240. package/lib/Utils/decode-wa-message.js +213 -303
  241. package/lib/Utils/decode-wa-message.js.map +1 -0
  242. package/lib/Utils/event-buffer.d.ts +14 -17
  243. package/lib/Utils/event-buffer.d.ts.map +1 -0
  244. package/lib/Utils/event-buffer.js +321 -296
  245. package/lib/Utils/event-buffer.js.map +1 -0
  246. package/lib/Utils/generics.d.ts +66 -92
  247. package/lib/Utils/generics.d.ts.map +1 -0
  248. package/lib/Utils/generics.js +270 -436
  249. package/lib/Utils/generics.js.map +1 -0
  250. package/lib/Utils/history.d.ts +24 -23
  251. package/lib/Utils/history.d.ts.map +1 -0
  252. package/lib/Utils/history.js +106 -76
  253. package/lib/Utils/history.js.map +1 -0
  254. package/lib/Utils/identity-change-handler.d.ts +44 -0
  255. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  256. package/lib/Utils/identity-change-handler.js +50 -0
  257. package/lib/Utils/identity-change-handler.js.map +1 -0
  258. package/lib/Utils/index.d.ts +24 -21
  259. package/lib/Utils/index.d.ts.map +1 -0
  260. package/lib/Utils/index.js +24 -41
  261. package/lib/Utils/index.js.map +1 -0
  262. package/lib/Utils/link-preview.d.ts +12 -14
  263. package/lib/Utils/link-preview.d.ts.map +1 -0
  264. package/lib/Utils/link-preview.js +40 -75
  265. package/lib/Utils/link-preview.js.map +1 -0
  266. package/lib/Utils/logger.d.ts +10 -11
  267. package/lib/Utils/logger.d.ts.map +1 -0
  268. package/lib/Utils/logger.js +3 -7
  269. package/lib/Utils/logger.js.map +1 -0
  270. package/lib/Utils/lt-hash.d.ts +8 -14
  271. package/lib/Utils/lt-hash.d.ts.map +1 -0
  272. package/lib/Utils/lt-hash.js +3 -53
  273. package/lib/Utils/lt-hash.js.map +1 -0
  274. package/lib/Utils/make-mutex.d.ts +7 -7
  275. package/lib/Utils/make-mutex.d.ts.map +1 -0
  276. package/lib/Utils/make-mutex.js +28 -44
  277. package/lib/Utils/make-mutex.js.map +1 -0
  278. package/lib/Utils/message-retry-manager.d.ts +115 -88
  279. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  280. package/lib/Utils/message-retry-manager.js +265 -160
  281. package/lib/Utils/message-retry-manager.js.map +1 -0
  282. package/lib/Utils/messages-media.d.ts +105 -107
  283. package/lib/Utils/messages-media.d.ts.map +1 -0
  284. package/lib/Utils/messages-media.js +548 -619
  285. package/lib/Utils/messages-media.js.bak +786 -0
  286. package/lib/Utils/messages-media.js.map +1 -0
  287. package/lib/Utils/messages.d.ts +52 -66
  288. package/lib/Utils/messages.d.ts.map +1 -0
  289. package/lib/Utils/messages.js +1730 -1558
  290. package/lib/Utils/messages.js.backup +1768 -0
  291. package/lib/Utils/messages.js.bak +1809 -0
  292. package/lib/Utils/messages.js.bak2 +893 -0
  293. package/lib/Utils/messages.js.bak3 +1183 -0
  294. package/lib/Utils/messages.js.map +1 -0
  295. package/lib/Utils/noise-handler.d.ts +18 -18
  296. package/lib/Utils/noise-handler.d.ts.map +1 -0
  297. package/lib/Utils/noise-handler.js +176 -130
  298. package/lib/Utils/noise-handler.js.map +1 -0
  299. package/lib/Utils/offline-node-processor.d.ts +17 -0
  300. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  301. package/lib/Utils/offline-node-processor.js +40 -0
  302. package/lib/Utils/offline-node-processor.js.map +1 -0
  303. package/lib/Utils/pre-key-manager.d.ts +28 -0
  304. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  305. package/lib/Utils/pre-key-manager.js +106 -0
  306. package/lib/Utils/pre-key-manager.js.map +1 -0
  307. package/lib/Utils/process-message.d.ts +43 -32
  308. package/lib/Utils/process-message.d.ts.map +1 -0
  309. package/lib/Utils/process-message.js +484 -282
  310. package/lib/Utils/process-message.js.map +1 -0
  311. package/lib/Utils/reporting-utils.d.ts +11 -0
  312. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  313. package/lib/Utils/reporting-utils.js +258 -0
  314. package/lib/Utils/reporting-utils.js.map +1 -0
  315. package/lib/Utils/rich-message-utils.d.ts +49 -0
  316. package/lib/Utils/rich-message-utils.d.ts.map +1 -0
  317. package/lib/Utils/rich-message-utils.js +1220 -724
  318. package/lib/Utils/rich-message-utils.js.backup +706 -0
  319. package/lib/Utils/rich-message-utils.js.bak +246 -0
  320. package/lib/Utils/rich-message-utils.js.map +1 -0
  321. package/lib/Utils/rich-message-utils.js.original +1332 -0
  322. package/lib/Utils/signal.d.ts +37 -32
  323. package/lib/Utils/signal.d.ts.map +1 -0
  324. package/lib/Utils/signal.js +140 -105
  325. package/lib/Utils/signal.js.map +1 -0
  326. package/lib/Utils/stanza-ack.d.ts +11 -0
  327. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  328. package/lib/Utils/stanza-ack.js +38 -0
  329. package/lib/Utils/stanza-ack.js.map +1 -0
  330. package/lib/Utils/sync-action-utils.d.ts +19 -0
  331. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  332. package/lib/Utils/sync-action-utils.js +49 -0
  333. package/lib/Utils/sync-action-utils.js.map +1 -0
  334. package/lib/Utils/tc-token-utils.d.ts +37 -0
  335. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  336. package/lib/Utils/tc-token-utils.js +163 -0
  337. package/lib/Utils/tc-token-utils.js.map +1 -0
  338. package/lib/Utils/use-multi-file-auth-state.d.ts +5 -5
  339. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  340. package/lib/Utils/use-multi-file-auth-state.js +70 -120
  341. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  342. package/lib/Utils/use-single-file-auth-state.d.ts +11 -13
  343. package/lib/Utils/use-single-file-auth-state.d.ts.map +1 -0
  344. package/lib/Utils/use-single-file-auth-state.js +92 -66
  345. package/lib/Utils/use-single-file-auth-state.js.map +1 -0
  346. package/lib/Utils/use-sqlite-auth-state.d.ts +11 -0
  347. package/lib/Utils/use-sqlite-auth-state.d.ts.map +1 -0
  348. package/lib/Utils/use-sqlite-auth-state.js +109 -0
  349. package/lib/Utils/use-sqlite-auth-state.js.map +1 -0
  350. package/lib/Utils/validate-connection.d.ts +11 -13
  351. package/lib/Utils/validate-connection.d.ts.map +1 -0
  352. package/lib/Utils/validate-connection.js +128 -113
  353. package/lib/Utils/validate-connection.js.map +1 -0
  354. package/lib/WABinary/constants.d.ts +25 -27
  355. package/lib/WABinary/constants.d.ts.map +1 -0
  356. package/lib/WABinary/constants.js +1451 -1292
  357. package/lib/WABinary/constants.js.bak +1373 -0
  358. package/lib/WABinary/constants.js.map +1 -0
  359. package/lib/WABinary/decode.d.ts +7 -9
  360. package/lib/WABinary/decode.d.ts.map +1 -0
  361. package/lib/WABinary/decode.js +163 -189
  362. package/lib/WABinary/decode.js.map +1 -0
  363. package/lib/WABinary/encode.d.ts +3 -3
  364. package/lib/WABinary/encode.d.ts.map +1 -0
  365. package/lib/WABinary/encode.js +110 -155
  366. package/lib/WABinary/encode.js.map +1 -0
  367. package/lib/WABinary/generic-utils.d.ts +14 -27
  368. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  369. package/lib/WABinary/generic-utils.js +177 -105
  370. package/lib/WABinary/generic-utils.js.map +1 -0
  371. package/lib/WABinary/index.d.ts +6 -5
  372. package/lib/WABinary/index.d.ts.map +1 -0
  373. package/lib/WABinary/index.js +6 -25
  374. package/lib/WABinary/index.js.map +1 -0
  375. package/lib/WABinary/jid-utils.d.ts +41 -51
  376. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  377. package/lib/WABinary/jid-utils.js +83 -120
  378. package/lib/WABinary/jid-utils.js.map +1 -0
  379. package/lib/WABinary/types.d.ts +10 -13
  380. package/lib/WABinary/types.d.ts.map +1 -0
  381. package/lib/WABinary/types.js +2 -3
  382. package/lib/WABinary/types.js.map +1 -0
  383. package/lib/WAM/BinaryInfo.d.ts +8 -15
  384. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  385. package/lib/WAM/BinaryInfo.js +7 -14
  386. package/lib/WAM/BinaryInfo.js.map +1 -0
  387. package/lib/WAM/constants.d.ts +30 -37
  388. package/lib/WAM/constants.d.ts.map +1 -0
  389. package/lib/WAM/constants.js +19193 -11711
  390. package/lib/WAM/constants.js.map +1 -0
  391. package/lib/WAM/encode.d.ts +3 -3
  392. package/lib/WAM/encode.d.ts.map +1 -0
  393. package/lib/WAM/encode.js +95 -109
  394. package/lib/WAM/encode.js.map +1 -0
  395. package/lib/WAM/index.d.ts +4 -3
  396. package/lib/WAM/index.d.ts.map +1 -0
  397. package/lib/WAM/index.js +4 -23
  398. package/lib/WAM/index.js.map +1 -0
  399. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -9
  400. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  401. package/lib/WAUSync/Protocols/USyncContactProtocol.js +37 -21
  402. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  403. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +19 -22
  404. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  405. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +18 -26
  406. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  407. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +11 -12
  408. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  409. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +12 -20
  410. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  411. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +11 -12
  412. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  413. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +16 -24
  414. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  415. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  416. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  417. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  418. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  419. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  420. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  421. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  422. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  423. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  424. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  425. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  426. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  427. package/lib/WAUSync/Protocols/index.d.ts +6 -6
  428. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  429. package/lib/WAUSync/Protocols/index.js +6 -26
  430. package/lib/WAUSync/Protocols/index.js.map +1 -0
  431. package/lib/WAUSync/USyncQuery.d.ts +27 -28
  432. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  433. package/lib/WAUSync/USyncQuery.js +68 -62
  434. package/lib/WAUSync/USyncQuery.js.map +1 -0
  435. package/lib/WAUSync/USyncUser.d.ts +15 -10
  436. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  437. package/lib/WAUSync/USyncUser.js +20 -19
  438. package/lib/WAUSync/USyncUser.js.map +1 -0
  439. package/lib/WAUSync/index.d.ts +4 -3
  440. package/lib/WAUSync/index.d.ts.map +1 -0
  441. package/lib/WAUSync/index.js +4 -23
  442. package/lib/WAUSync/index.js.map +1 -0
  443. package/lib/index.d.ts +11 -12
  444. package/lib/index.d.ts.map +1 -0
  445. package/lib/index.js +12 -39
  446. package/lib/index.js.map +1 -0
  447. package/package.json +86 -42
@@ -1,101 +1,80 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.makeLibSignalRepository = makeLibSignalRepository;
37
- const libsignal = __importStar(require("libsignal"));
38
- const { PreKeyWhisperMessage } = require("libsignal/src/protobufs");
39
- const Utils_1 = require("../Utils");
40
- const WABinary_1 = require("../WABinary");
41
- const sender_key_name_1 = require("./Group/sender-key-name");
42
- const sender_key_record_1 = require("./Group/sender-key-record");
43
- const Group_1 = require("./Group");
44
- const LIDMappingStore_1 = require("./lid-mapping")
45
-
46
- // FIX: sebelumnya pontalabs gak punya deteksi perubahan identity key sama
47
- // sekali. Kalau identity kontak berubah (kontak install ulang WA, atau kena
48
- // resync multi-device pas ada linked device lain online), sesi lama tetap
49
- // dipakai terus dan selalu gagal decrypt "Bad MAC" berulang-ulang sampai
50
- // akhirnya kena threshold retry enableAutoSessionRecreation. Dengan deteksi
51
- // ini, begitu identity berubah, sesi langsung direset SAAT ITU JUGA - gak
52
- // perlu nunggu beberapa pesan gagal dulu.
1
+ // @ts-ignore
2
+ import * as libsignal from 'libsignal';
3
+ // @ts-ignore
4
+ import { PreKeyWhisperMessage } from 'libsignal/src/protobufs.js';
5
+ import { LRUCache } from 'lru-cache';
6
+ import { generateSignalPubKey } from '../Utils/index.js';
7
+ import { isHostedLidUser, isHostedPnUser, isLidUser, isPnUser, jidDecode, transferDevice, WAJIDDomains } from '../WABinary/index.js';
8
+ import { SenderKeyName } from './Group/sender-key-name.js';
9
+ import { SenderKeyRecord } from './Group/sender-key-record.js';
10
+ import { GroupCipher, GroupSessionBuilder, SenderKeyDistributionMessage } from './Group/index.js';
11
+ import { LIDMappingStore } from './lid-mapping.js';
12
+ /** Extract identity key from PreKeyWhisperMessage for identity change detection */
53
13
  function extractIdentityFromPkmsg(ciphertext) {
54
14
  try {
55
15
  if (!ciphertext || ciphertext.length < 2) {
56
16
  return undefined;
57
17
  }
18
+ // Version byte check (version 3)
58
19
  const version = ciphertext[0];
59
20
  if ((version & 0xf) !== 3) {
60
21
  return undefined;
61
22
  }
23
+ // Parse protobuf (skip version byte)
62
24
  const preKeyProto = PreKeyWhisperMessage.decode(ciphertext.slice(1));
63
- if (preKeyProto.identityKey && preKeyProto.identityKey.length === 33) {
64
- return Buffer.from(preKeyProto.identityKey);
25
+ if (preKeyProto.identityKey?.length === 33) {
26
+ return new Uint8Array(preKeyProto.identityKey);
65
27
  }
66
28
  return undefined;
67
- } catch {
29
+ }
30
+ catch {
68
31
  return undefined;
69
32
  }
70
33
  }
71
-
72
- function makeLibSignalRepository(auth, onWhatsAppFunc, logger) {
73
- const lidMapping = new LIDMappingStore_1.LIDMappingStore(auth.keys, onWhatsAppFunc, logger)
74
- const storage = signalStorage(auth);
75
- return {
76
- lidMapping,
34
+ export function makeLibSignalRepository(auth, logger, pnToLIDFunc) {
35
+ const lidMapping = new LIDMappingStore(auth.keys, logger, pnToLIDFunc);
36
+ const storage = signalStorage(auth, lidMapping);
37
+ const parsedKeys = auth.keys;
38
+ const migratedSessionCache = new LRUCache({
39
+ ttl: 3 * 24 * 60 * 60 * 1000, // 7 days
40
+ ttlAutopurge: true,
41
+ updateAgeOnGet: true
42
+ });
43
+ const ensureSenderKeyAndCreateSkdm = async (group, meId) => {
44
+ const senderName = jidToSignalSenderKeyName(group, meId);
45
+ const senderNameStr = senderName.toString();
46
+ const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr]);
47
+ if (!senderKey) {
48
+ await storage.storeSenderKey(senderName, new SenderKeyRecord());
49
+ }
50
+ const skdm = await new GroupSessionBuilder(storage).create(senderName);
51
+ return { senderName, skdm };
52
+ };
53
+ const repository = {
77
54
  decryptGroupMessage({ group, authorJid, msg }) {
78
55
  const senderName = jidToSignalSenderKeyName(group, authorJid);
79
- const cipher = new Group_1.GroupCipher(storage, senderName);
80
- // Dibungkus transaction() biar atomic - konsisten sama operasi Signal
81
- // lainnya, cegah race condition kalau ada beberapa pesan grup dari
82
- // sender yang sama numpuk barengan.
83
- return auth.keys.transaction(async () => {
56
+ const cipher = new GroupCipher(storage, senderName);
57
+ // Use transaction to ensure atomicity
58
+ return parsedKeys.transaction(async () => {
84
59
  return cipher.decrypt(msg);
85
60
  }, group);
86
61
  },
87
62
  async processSenderKeyDistributionMessage({ item, authorJid }) {
88
- const builder = new Group_1.GroupSessionBuilder(storage);
63
+ const builder = new GroupSessionBuilder(storage);
89
64
  if (!item.groupId) {
90
65
  throw new Error('Group ID is required for sender key distribution message');
91
66
  }
92
67
  const senderName = jidToSignalSenderKeyName(item.groupId, authorJid);
93
- const senderMsg = new Group_1.SenderKeyDistributionMessage(null, null, null, null, item.axolotlSenderKeyDistributionMessage);
68
+ const senderMsg = new SenderKeyDistributionMessage(null, null, null, null, item.axolotlSenderKeyDistributionMessage);
94
69
  const senderNameStr = senderName.toString();
95
- return auth.keys.transaction(async () => {
70
+ const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr]);
71
+ if (!senderKey) {
72
+ await storage.storeSenderKey(senderName, new SenderKeyRecord());
73
+ }
74
+ return parsedKeys.transaction(async () => {
96
75
  const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr]);
97
76
  if (!senderKey) {
98
- await storage.storeSenderKey(senderName, new sender_key_record_1.SenderKeyRecord());
77
+ await storage.storeSenderKey(senderName, new SenderKeyRecord());
99
78
  }
100
79
  await builder.process(senderName, senderMsg);
101
80
  }, item.groupId);
@@ -103,20 +82,18 @@ function makeLibSignalRepository(auth, onWhatsAppFunc, logger) {
103
82
  async decryptMessage({ jid, type, ciphertext }) {
104
83
  const addr = jidToSignalProtocolAddress(jid);
105
84
  const session = new libsignal.SessionCipher(storage, addr);
106
- // Sebelum decrypt pkmsg (pesan yang buka sesi baru), cek dulu apakah
107
- // identity key pengirim berubah dibanding yang tersimpan. Kalau iya,
108
- // sesi lama otomatis direset supaya gak nyoba decrypt pakai sesi basi.
85
+ // Extract and save sender's identity key before decryption for identity change detection
109
86
  if (type === 'pkmsg') {
110
87
  const identityKey = extractIdentityFromPkmsg(ciphertext);
111
88
  if (identityKey) {
112
89
  const addrStr = addr.toString();
113
90
  const identityChanged = await storage.saveIdentity(addrStr, identityKey);
114
91
  if (identityChanged) {
115
- logger?.info?.({ jid, addr: addrStr }, 'identity key changed or new contact, session will be re-established');
92
+ logger.info({ jid, addr: addrStr }, 'identity key changed or new contact, session will be re-established');
116
93
  }
117
94
  }
118
95
  }
119
- return auth.keys.transaction(async () => {
96
+ async function doDecrypt() {
120
97
  let result;
121
98
  switch (type) {
122
99
  case 'pkmsg':
@@ -125,49 +102,71 @@ function makeLibSignalRepository(auth, onWhatsAppFunc, logger) {
125
102
  case 'msg':
126
103
  result = await session.decryptWhisperMessage(ciphertext);
127
104
  break;
128
- default:
129
- throw new Error(`Unknown message type: ${type}`);
130
105
  }
131
106
  return result;
107
+ }
108
+ // If it's not a sync message, we need to ensure atomicity
109
+ // For regular messages, we use a transaction to ensure atomicity
110
+ return parsedKeys.transaction(async () => {
111
+ return await doDecrypt();
132
112
  }, jid);
133
113
  },
134
114
  async encryptMessage({ jid, data }) {
135
115
  const addr = jidToSignalProtocolAddress(jid);
136
116
  const cipher = new libsignal.SessionCipher(storage, addr);
137
- return auth.keys.transaction(async () => {
117
+ // Use transaction to ensure atomicity
118
+ return parsedKeys.transaction(async () => {
138
119
  const { type: sigType, body } = await cipher.encrypt(data);
139
120
  const type = sigType === 3 ? 'pkmsg' : 'msg';
140
121
  return { type, ciphertext: Buffer.from(body, 'binary') };
141
122
  }, jid);
142
123
  },
143
124
  async encryptGroupMessage({ group, meId, data }) {
144
- return auth.keys.transaction(async () => {
145
- const senderName = jidToSignalSenderKeyName(group, meId);
146
- const builder = new Group_1.GroupSessionBuilder(storage);
147
- const senderNameStr = senderName.toString();
148
- const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr]);
149
- if (!senderKey) {
150
- await storage.storeSenderKey(senderName, new sender_key_record_1.SenderKeyRecord());
151
- }
152
- const senderKeyDistributionMessage = await builder.create(senderName);
153
- const session = new Group_1.GroupCipher(storage, senderName);
154
- const ciphertext = await session.encrypt(data);
155
- return {
156
- ciphertext,
157
- senderKeyDistributionMessage: senderKeyDistributionMessage.serialize()
158
- };
125
+ return parsedKeys.transaction(async () => {
126
+ const { senderName, skdm } = await ensureSenderKeyAndCreateSkdm(group, meId);
127
+ const ciphertext = await new GroupCipher(storage, senderName).encrypt(data);
128
+ return { ciphertext, senderKeyDistributionMessage: skdm.serialize() };
159
129
  }, group);
160
130
  },
131
+ async getSenderKeyDistributionMessage({ group, meId }) {
132
+ return parsedKeys.transaction(async () => {
133
+ const { skdm } = await ensureSenderKeyAndCreateSkdm(group, meId);
134
+ return skdm.serialize();
135
+ }, group);
136
+ },
137
+ async hasSenderKey({ group, meId }) {
138
+ const senderName = jidToSignalSenderKeyName(group, meId).toString();
139
+ const { [senderName]: key } = await auth.keys.get('sender-key', [senderName]);
140
+ return !!key;
141
+ },
142
+ async getSessionInfo(jid) {
143
+ const addr = jidToSignalProtocolAddress(jid).toString();
144
+ const session = (await storage.loadSession(addr));
145
+ if (!session) {
146
+ return null;
147
+ }
148
+ const open = session.getOpenSession?.();
149
+ const baseKey = open?.indexInfo?.baseKey;
150
+ const registrationId = open?.registrationId;
151
+ if (!baseKey || typeof registrationId !== 'number') {
152
+ return null;
153
+ }
154
+ return { baseKey: new Uint8Array(baseKey), registrationId };
155
+ },
161
156
  async injectE2ESession({ jid, session }) {
157
+ logger.trace({ jid }, 'injecting E2EE session');
162
158
  const cipher = new libsignal.SessionBuilder(storage, jidToSignalProtocolAddress(jid));
163
- await cipher.initOutgoing(session);
159
+ return parsedKeys.transaction(async () => {
160
+ // libsignal runtime accepts an absent prekey (initOutgoing checks `device.preKey && ...`)
161
+ // but the bundled .d.ts marks it required.
162
+ await cipher.initOutgoing(session);
163
+ }, jid);
164
164
  },
165
165
  jidToSignalProtocolAddress(jid) {
166
166
  return jidToSignalProtocolAddress(jid).toString();
167
167
  },
168
- // Dipakai oleh sendRetryRequest (messages-recv.js) untuk enableAutoSessionRecreation.
169
- // Sebelumnya dipanggil tapi tidak pernah diimplementasikan di sini, jadi fitur auto
170
- // session recreation diam-diam selalu gagal (ketangkep try/catch, cuma log warning).
168
+ // Optimized direct access to LID mapping store
169
+ lidMapping,
171
170
  async validateSession(jid) {
172
171
  try {
173
172
  const addr = jidToSignalProtocolAddress(jid);
@@ -175,57 +174,215 @@ function makeLibSignalRepository(auth, onWhatsAppFunc, logger) {
175
174
  if (!session) {
176
175
  return { exists: false, reason: 'no session' };
177
176
  }
178
- if (typeof session.haveOpenSession === 'function' && !session.haveOpenSession()) {
177
+ if (!session.haveOpenSession()) {
179
178
  return { exists: false, reason: 'no open session' };
180
179
  }
181
180
  return { exists: true };
182
- } catch (error) {
181
+ }
182
+ catch (error) {
183
183
  return { exists: false, reason: 'validation error' };
184
184
  }
185
+ },
186
+ async deleteSession(jids) {
187
+ if (!jids.length)
188
+ return;
189
+ // Convert JIDs to signal addresses and prepare for bulk deletion
190
+ const sessionUpdates = {};
191
+ jids.forEach(jid => {
192
+ const addr = jidToSignalProtocolAddress(jid);
193
+ sessionUpdates[addr.toString()] = null;
194
+ });
195
+ // Single transaction for all deletions
196
+ return parsedKeys.transaction(async () => {
197
+ await auth.keys.set({ session: sessionUpdates });
198
+ }, `delete-${jids.length}-sessions`);
199
+ },
200
+ close() {
201
+ migratedSessionCache.clear();
202
+ lidMapping.close();
203
+ },
204
+ async migrateSession(fromJid, toJid) {
205
+ // TODO: use usync to handle this entire mess
206
+ if (!fromJid || (!isLidUser(toJid) && !isHostedLidUser(toJid)))
207
+ return { migrated: 0, skipped: 0, total: 0 };
208
+ // Only support PN to LID migration
209
+ if (!isPnUser(fromJid) && !isHostedPnUser(fromJid)) {
210
+ return { migrated: 0, skipped: 0, total: 1 };
211
+ }
212
+ const { user } = jidDecode(fromJid);
213
+ logger.debug({ fromJid }, 'bulk device migration - loading all user devices');
214
+ // Get user's device list from storage
215
+ const { [user]: userDevices } = await parsedKeys.get('device-list', [user]);
216
+ if (!userDevices) {
217
+ return { migrated: 0, skipped: 0, total: 0 };
218
+ }
219
+ const { device: fromDevice } = jidDecode(fromJid);
220
+ const fromDeviceStr = fromDevice?.toString() || '0';
221
+ if (!userDevices.includes(fromDeviceStr)) {
222
+ userDevices.push(fromDeviceStr);
223
+ }
224
+ // Filter out cached devices before database fetch
225
+ const uncachedDevices = userDevices.filter(device => {
226
+ const deviceKey = `${user}.${device}`;
227
+ return !migratedSessionCache.has(deviceKey);
228
+ });
229
+ // Bulk check session existence only for uncached devices
230
+ const deviceSessionKeys = uncachedDevices.map(device => `${user}.${device}`);
231
+ const existingSessions = await parsedKeys.get('session', deviceSessionKeys);
232
+ // Step 3: Convert existing sessions to JIDs (only migrate sessions that exist)
233
+ const deviceJids = [];
234
+ for (const [sessionKey, sessionData] of Object.entries(existingSessions)) {
235
+ if (sessionData) {
236
+ // Session exists in storage
237
+ const deviceStr = sessionKey.split('.')[1];
238
+ if (!deviceStr)
239
+ continue;
240
+ const deviceNum = parseInt(deviceStr);
241
+ let jid = deviceNum === 0 ? `${user}@s.whatsapp.net` : `${user}:${deviceNum}@s.whatsapp.net`;
242
+ if (deviceNum === 99) {
243
+ jid = `${user}:99@hosted`;
244
+ }
245
+ deviceJids.push(jid);
246
+ }
247
+ }
248
+ logger.debug({
249
+ fromJid,
250
+ totalDevices: userDevices.length,
251
+ devicesWithSessions: deviceJids.length,
252
+ devices: deviceJids
253
+ }, 'bulk device migration complete - all user devices processed');
254
+ // Single transaction for all migrations
255
+ return parsedKeys.transaction(async () => {
256
+ const migrationOps = deviceJids.map(jid => {
257
+ const lidWithDevice = transferDevice(jid, toJid);
258
+ const fromDecoded = jidDecode(jid);
259
+ const toDecoded = jidDecode(lidWithDevice);
260
+ return {
261
+ fromJid: jid,
262
+ toJid: lidWithDevice,
263
+ pnUser: fromDecoded.user,
264
+ lidUser: toDecoded.user,
265
+ deviceId: fromDecoded.device || 0,
266
+ fromAddr: jidToSignalProtocolAddress(jid),
267
+ toAddr: jidToSignalProtocolAddress(lidWithDevice)
268
+ };
269
+ });
270
+ const totalOps = migrationOps.length;
271
+ let migratedCount = 0;
272
+ // Bulk fetch PN sessions - already exist (verified during device discovery)
273
+ const pnAddrStrings = Array.from(new Set(migrationOps.map(op => op.fromAddr.toString())));
274
+ const pnSessions = await parsedKeys.get('session', pnAddrStrings);
275
+ // Prepare bulk session updates (PN → LID migration + deletion)
276
+ const sessionUpdates = {};
277
+ for (const op of migrationOps) {
278
+ const pnAddrStr = op.fromAddr.toString();
279
+ const lidAddrStr = op.toAddr.toString();
280
+ const pnSession = pnSessions[pnAddrStr];
281
+ if (pnSession) {
282
+ // Session exists (guaranteed from device discovery)
283
+ const fromSession = libsignal.SessionRecord.deserialize(pnSession);
284
+ if (fromSession.haveOpenSession()) {
285
+ // Queue for bulk update: copy to LID, delete from PN
286
+ sessionUpdates[lidAddrStr] = fromSession.serialize();
287
+ sessionUpdates[pnAddrStr] = null;
288
+ migratedCount++;
289
+ }
290
+ }
291
+ }
292
+ // Single bulk session update for all migrations
293
+ if (Object.keys(sessionUpdates).length > 0) {
294
+ await parsedKeys.set({ session: sessionUpdates });
295
+ logger.debug({ migratedSessions: migratedCount }, 'bulk session migration complete');
296
+ // Cache device-level migrations
297
+ for (const op of migrationOps) {
298
+ if (sessionUpdates[op.toAddr.toString()]) {
299
+ const deviceKey = `${op.pnUser}.${op.deviceId}`;
300
+ migratedSessionCache.set(deviceKey, true);
301
+ }
302
+ }
303
+ }
304
+ const skippedCount = totalOps - migratedCount;
305
+ return { migrated: migratedCount, skipped: skippedCount, total: totalOps };
306
+ }, `migrate-${deviceJids.length}-sessions-${jidDecode(toJid)?.user}`);
185
307
  }
186
308
  };
309
+ return repository;
187
310
  }
188
311
  const jidToSignalProtocolAddress = (jid) => {
189
- const { user, device } = (0, WABinary_1.jidDecode)(jid);
190
- return new libsignal.ProtocolAddress(user, device || 0);
312
+ const decoded = jidDecode(jid);
313
+ const { user, device, server, domainType } = decoded;
314
+ if (!user) {
315
+ throw new Error(`JID decoded but user is empty: "${jid}" -> user: "${user}", server: "${server}", device: ${device}`);
316
+ }
317
+ const signalUser = domainType !== WAJIDDomains.WHATSAPP ? `${user}_${domainType}` : user;
318
+ const finalDevice = device || 0;
319
+ if (device === 99 && decoded.server !== 'hosted' && decoded.server !== 'hosted.lid') {
320
+ throw new Error('Unexpected non-hosted device JID with device 99. This ID seems invalid. ID:' + jid);
321
+ }
322
+ return new libsignal.ProtocolAddress(signalUser, finalDevice);
191
323
  };
192
324
  const jidToSignalSenderKeyName = (group, user) => {
193
- return new sender_key_name_1.SenderKeyName(group, jidToSignalProtocolAddress(user));
325
+ return new SenderKeyName(group, jidToSignalProtocolAddress(user));
194
326
  };
195
- function signalStorage({ creds, keys }) {
327
+ function signalStorage({ creds, keys }, lidMapping) {
328
+ // Shared function to resolve PN signal address to LID if mapping exists
329
+ const resolveLIDSignalAddress = async (id) => {
330
+ if (id.includes('.')) {
331
+ const [deviceId, device] = id.split('.');
332
+ const [user, domainType_] = deviceId.split('_');
333
+ const domainType = parseInt(domainType_ || '0');
334
+ if (domainType === WAJIDDomains.LID || domainType === WAJIDDomains.HOSTED_LID)
335
+ return id;
336
+ const pnJid = `${user}${device !== '0' ? `:${device}` : ''}@${domainType === WAJIDDomains.HOSTED ? 'hosted' : 's.whatsapp.net'}`;
337
+ const lidForPN = await lidMapping.getLIDForPN(pnJid);
338
+ if (lidForPN) {
339
+ const lidAddr = jidToSignalProtocolAddress(lidForPN);
340
+ return lidAddr.toString();
341
+ }
342
+ }
343
+ return id;
344
+ };
196
345
  return {
197
346
  loadSession: async (id) => {
198
- const { [id]: sess } = await keys.get('session', [id]);
199
- if (sess) {
200
- return libsignal.SessionRecord.deserialize(sess);
347
+ try {
348
+ const wireJid = await resolveLIDSignalAddress(id);
349
+ const { [wireJid]: sess } = await keys.get('session', [wireJid]);
350
+ if (sess) {
351
+ return libsignal.SessionRecord.deserialize(sess);
352
+ }
353
+ }
354
+ catch (e) {
355
+ return null;
201
356
  }
357
+ return null;
202
358
  },
203
359
  storeSession: async (id, session) => {
204
- await keys.set({ session: { [id]: session.serialize() } });
360
+ const wireJid = await resolveLIDSignalAddress(id);
361
+ await keys.set({ session: { [wireJid]: session.serialize() } });
205
362
  },
206
363
  isTrustedIdentity: () => {
207
- return true;
364
+ return true; // TOFU - Trust on First Use (same as WhatsApp Web)
208
365
  },
209
366
  loadIdentityKey: async (id) => {
210
- const { [id]: key } = await keys.get('identity-key', [id]);
367
+ const wireJid = await resolveLIDSignalAddress(id);
368
+ const { [wireJid]: key } = await keys.get('identity-key', [wireJid]);
211
369
  return key || undefined;
212
370
  },
213
371
  saveIdentity: async (id, identityKey) => {
214
- const { [id]: existingKey } = await keys.get('identity-key', [id]);
215
- const keysMatch = existingKey && existingKey.length === identityKey.length &&
216
- Buffer.compare(Buffer.from(existingKey), Buffer.from(identityKey)) === 0;
372
+ const wireJid = await resolveLIDSignalAddress(id);
373
+ const { [wireJid]: existingKey } = await keys.get('identity-key', [wireJid]);
374
+ const keysMatch = existingKey?.length === identityKey.length && existingKey.every((byte, i) => byte === identityKey[i]);
217
375
  if (existingKey && !keysMatch) {
218
- // Identity berubah - hapus sesi lama (bakal ke-generate ulang dari
219
- // pkmsg yang lagi diproses) dan simpan identity key yang baru.
376
+ // Identity changed - clear session and update key
220
377
  await keys.set({
221
- session: { [id]: null },
222
- 'identity-key': { [id]: identityKey }
378
+ session: { [wireJid]: null },
379
+ 'identity-key': { [wireJid]: identityKey }
223
380
  });
224
381
  return true;
225
382
  }
226
383
  if (!existingKey) {
227
- // Kontak baru - Trust On First Use (TOFU), sama kayak WhatsApp Web.
228
- await keys.set({ 'identity-key': { [id]: identityKey } });
384
+ // New contact - Trust on First Use (TOFU)
385
+ await keys.set({ 'identity-key': { [wireJid]: identityKey } });
229
386
  return true;
230
387
  }
231
388
  return false;
@@ -252,9 +409,9 @@ function signalStorage({ creds, keys }) {
252
409
  const keyId = senderKeyName.toString();
253
410
  const { [keyId]: key } = await keys.get('sender-key', [keyId]);
254
411
  if (key) {
255
- return sender_key_record_1.SenderKeyRecord.deserialize(key);
412
+ return SenderKeyRecord.deserialize(key);
256
413
  }
257
- return new sender_key_record_1.SenderKeyRecord();
414
+ return new SenderKeyRecord();
258
415
  },
259
416
  storeSenderKey: async (senderKeyName, key) => {
260
417
  const keyId = senderKeyName.toString();
@@ -266,8 +423,9 @@ function signalStorage({ creds, keys }) {
266
423
  const { signedIdentityKey } = creds;
267
424
  return {
268
425
  privKey: Buffer.from(signedIdentityKey.private),
269
- pubKey: (0, Utils_1.generateSignalPubKey)(signedIdentityKey.public)
426
+ pubKey: Buffer.from(generateSignalPubKey(signedIdentityKey.public))
270
427
  };
271
428
  }
272
429
  };
273
430
  }
431
+ //# sourceMappingURL=libsignal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libsignal.js","sourceRoot":"","sources":["../../src/Signal/libsignal.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AACtC,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EACN,eAAe,EACf,cAAc,EACd,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,mFAAmF;AACnF,SAAS,wBAAwB,CAAC,UAAsB;IACvD,IAAI,CAAC;QACJ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAA;QACjB,CAAC;QAED,iCAAiC;QACjC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAE,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAA;QACjB,CAAC;QAED,qCAAqC;QACrC,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC;YAC5C,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QAC/C,CAAC;QAED,OAAO,SAAS,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAA;IACjB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,IAAqB,EACrB,MAAe,EACf,WAAmE;IAEnE,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAqC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IACvG,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAqC,CAAA;IAC7D,MAAM,oBAAoB,GAAG,IAAI,QAAQ,CAAe;QACvD,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;QACvC,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,MAAM,4BAA4B,GAAG,KAAK,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;QAC1E,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxD,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAA;QAC3C,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;QACzF,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,eAAe,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACtE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;IAC5B,CAAC,CAAA;IAED,MAAM,UAAU,GAAiC;QAChD,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE;YAC5C,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAC7D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;YAEnD,sCAAsC;YACtC,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC,EAAE,KAAK,CAAC,CAAA;QACV,CAAC;QACD,KAAK,CAAC,mCAAmC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5D,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;YAC5E,CAAC;YAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;YAEpE,MAAM,SAAS,GAAG,IAAI,4BAA4B,CACjD,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC,mCAAmC,CACxC,CAAA;YACD,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAA;YAC3C,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;YACzF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,eAAe,EAAE,CAAC,CAAA;YAChE,CAAC;YAED,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;gBACzF,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,eAAe,EAAE,CAAC,CAAA;gBAChE,CAAC;gBAED,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YAC7C,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACjB,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE;YAC7C,MAAM,IAAI,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAE1D,yFAAyF;YACzF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtB,MAAM,WAAW,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAA;gBACxD,IAAI,WAAW,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;oBAC/B,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;oBACxE,IAAI,eAAe,EAAE,CAAC;wBACrB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,qEAAqE,CAAC,CAAA;oBAC3G,CAAC;gBACF,CAAC;YACF,CAAC;YAED,KAAK,UAAU,SAAS;gBACvB,IAAI,MAAc,CAAA;gBAClB,QAAQ,IAAI,EAAE,CAAC;oBACd,KAAK,OAAO;wBACX,MAAM,GAAG,MAAM,OAAO,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAA;wBAC9D,MAAK;oBACN,KAAK,KAAK;wBACT,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;wBACxD,MAAK;gBACP,CAAC;gBAED,OAAO,MAAM,CAAA;YACd,CAAC;YAED,0DAA0D;YAC1D,iEAAiE;YACjE,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,OAAO,MAAM,SAAS,EAAE,CAAA;YACzB,CAAC,EAAE,GAAG,CAAC,CAAA;QACR,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;YACjC,MAAM,IAAI,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAEzD,sCAAsC;YACtC,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC1D,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;gBAC5C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAA;YACzD,CAAC,EAAE,GAAG,CAAC,CAAA;QACR,CAAC;QAED,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YAC9C,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC5E,MAAM,UAAU,GAAG,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC3E,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;YACtE,CAAC,EAAE,KAAK,CAAC,CAAA;QACV,CAAC;QAED,KAAK,CAAC,+BAA+B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YACpD,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAChE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;YACxB,CAAC,EAAE,KAAK,CAAC,CAAA;QACV,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YACjC,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;YACnE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;YAC7E,OAAO,CAAC,CAAC,GAAG,CAAA;QACb,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,GAAG;YACvB,MAAM,IAAI,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;YACvD,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAExC,CAAA;YACR,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO,IAAI,CAAA;YACZ,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,EAAE,CAAA;YACvC,MAAM,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,OAAO,CAAA;YACxC,MAAM,cAAc,GAAG,IAAI,EAAE,cAAc,CAAA;YAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAA;YACZ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;QAC5D,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE;YACtC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAA;YACrF,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,0FAA0F;gBAC1F,2CAA2C;gBAC3C,MAAM,MAAM,CAAC,YAAY,CAAC,OAA+D,CAAC,CAAA;YAC3F,CAAC,EAAE,GAAG,CAAC,CAAA;QACR,CAAC;QACD,0BAA0B,CAAC,GAAG;YAC7B,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;QAClD,CAAC;QAED,+CAA+C;QAC/C,UAAU;QAEV,KAAK,CAAC,eAAe,CAAC,GAAW;YAChC,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAA;gBAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAE1D,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA;gBAC/C,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;oBAChC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;gBACpD,CAAC;gBAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;YACrD,CAAC;QACF,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,IAAc;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAM;YAExB,iEAAiE;YACjE,MAAM,cAAc,GAA4B,EAAE,CAAA;YAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAClB,MAAM,IAAI,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAA;gBAC5C,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAA;YACvC,CAAC,CAAC,CAAA;YAEF,uCAAuC;YACvC,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACxC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;YACjD,CAAC,EAAE,UAAU,IAAI,CAAC,MAAM,WAAW,CAAC,CAAA;QACrC,CAAC;QAED,KAAK;YACJ,oBAAoB,CAAC,KAAK,EAAE,CAAA;YAC5B,UAAU,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC;QAED,KAAK,CAAC,cAAc,CACnB,OAAe,EACf,KAAa;YAEb,6CAA6C;YAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;YAE5G,mCAAmC;YACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;YAC7C,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,OAAO,CAAE,CAAA;YAEpC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,kDAAkD,CAAC,CAAA;YAE7E,sCAAsC;YACtC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;YAC7C,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,OAAO,CAAE,CAAA;YAClD,MAAM,aAAa,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAA;YACnD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1C,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAChC,CAAC;YAED,kDAAkD;YAClD,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBACnD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAA;gBACrC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC5C,CAAC,CAAC,CAAA;YAEF,yDAAyD;YACzD,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAA;YAC5E,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;YAE3E,+EAA+E;YAC/E,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1E,IAAI,WAAW,EAAE,CAAC;oBACjB,4BAA4B;oBAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC1C,IAAI,CAAC,SAAS;wBAAE,SAAQ;oBACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;oBACrC,IAAI,GAAG,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,iBAAiB,CAAA;oBAC5F,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;wBACtB,GAAG,GAAG,GAAG,IAAI,YAAY,CAAA;oBAC1B,CAAC;oBAED,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACrB,CAAC;YACF,CAAC;YAED,MAAM,CAAC,KAAK,CACX;gBACC,OAAO;gBACP,YAAY,EAAE,WAAW,CAAC,MAAM;gBAChC,mBAAmB,EAAE,UAAU,CAAC,MAAM;gBACtC,OAAO,EAAE,UAAU;aACnB,EACD,6DAA6D,CAC7D,CAAA;YAED,wCAAwC;YACxC,OAAO,UAAU,CAAC,WAAW,CAC5B,KAAK,IAAmE,EAAE;gBAYzE,MAAM,YAAY,GAAkB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACxD,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;oBAChD,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAE,CAAA;oBACnC,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAE,CAAA;oBAE3C,OAAO;wBACN,OAAO,EAAE,GAAG;wBACZ,KAAK,EAAE,aAAa;wBACpB,MAAM,EAAE,WAAW,CAAC,IAAI;wBACxB,OAAO,EAAE,SAAS,CAAC,IAAI;wBACvB,QAAQ,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC;wBACjC,QAAQ,EAAE,0BAA0B,CAAC,GAAG,CAAC;wBACzC,MAAM,EAAE,0BAA0B,CAAC,aAAa,CAAC;qBACjD,CAAA;gBACF,CAAC,CAAC,CAAA;gBAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAA;gBACpC,IAAI,aAAa,GAAG,CAAC,CAAA;gBAErB,4EAA4E;gBAC5E,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;gBACzF,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;gBAEjE,+DAA+D;gBAC/D,MAAM,cAAc,GAAyC,EAAE,CAAA;gBAE/D,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;oBAC/B,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;oBACxC,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;oBAEvC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;oBACvC,IAAI,SAAS,EAAE,CAAC;wBACf,oDAAoD;wBACpD,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;wBAClE,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;4BACnC,qDAAqD;4BACrD,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,SAAS,EAAE,CAAA;4BACpD,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;4BAEhC,aAAa,EAAE,CAAA;wBAChB,CAAC;oBACF,CAAC;gBACF,CAAC;gBAED,gDAAgD;gBAChD,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;oBACjD,MAAM,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,iCAAiC,CAAC,CAAA;oBAEpF,gCAAgC;oBAChC,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;wBAC/B,IAAI,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;4BAC1C,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAA;4BAC/C,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;wBAC1C,CAAC;oBACF,CAAC;gBACF,CAAC;gBAED,MAAM,YAAY,GAAG,QAAQ,GAAG,aAAa,CAAA;gBAC7C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;YAC3E,CAAC,EACD,WAAW,UAAU,CAAC,MAAM,aAAa,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CACjE,CAAA;QACF,CAAC;KACD,CAAA;IAED,OAAO,UAAU,CAAA;AAClB,CAAC;AAED,MAAM,0BAA0B,GAAG,CAAC,GAAW,EAA6B,EAAE;IAC7E,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAE,CAAA;IAC/B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAEpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACd,mCAAmC,GAAG,eAAe,IAAI,eAAe,MAAM,cAAc,MAAM,EAAE,CACpG,CAAA;IACF,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACxF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,CAAA;IAE/B,IAAI,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,6EAA6E,GAAG,GAAG,CAAC,CAAA;IACrG,CAAC;IAED,OAAO,IAAI,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,KAAa,EAAE,IAAY,EAAiB,EAAE;IAC/E,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAA;AAClE,CAAC,CAAA;AAED,SAAS,aAAa,CACrB,EAAE,KAAK,EAAE,IAAI,EAAmB,EAChC,UAA2B;IAM3B,wEAAwE;IACxE,MAAM,uBAAuB,GAAG,KAAK,EAAE,EAAU,EAAmB,EAAE;QACrE,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,QAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,IAAI,GAAG,CAAC,CAAA;YAE/C,IAAI,UAAU,KAAK,YAAY,CAAC,GAAG,IAAI,UAAU,KAAK,YAAY,CAAC,UAAU;gBAAE,OAAO,EAAE,CAAA;YAExF,MAAM,KAAK,GAAG,GAAG,IAAK,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAEjI,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACpD,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAA;gBACpD,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAA;YAC1B,CAAC;QACF,CAAC;QAED,OAAO,EAAE,CAAA;IACV,CAAC,CAAA;IAED,OAAO;QACN,WAAW,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;YACjC,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAE,CAAC,CAAA;gBACjD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;gBAEhE,IAAI,IAAI,EAAE,CAAC;oBACV,OAAO,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBACjD,CAAC;YACF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAA;YACZ,CAAC;YAED,OAAO,IAAI,CAAA;QACZ,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,EAAU,EAAE,OAAgC,EAAE,EAAE;YACpE,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE;YACvB,OAAO,IAAI,CAAA,CAAC,mDAAmD;QAChE,CAAC;QACD,eAAe,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;YACpE,OAAO,GAAG,IAAI,SAAS,CAAA;QACxB,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,EAAU,EAAE,WAAuB,EAAoB,EAAE;YAC7E,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;YAE5E,MAAM,SAAS,GACd,WAAW,EAAE,MAAM,KAAK,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;YAEtG,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,kDAAkD;gBAClD,MAAM,IAAI,CAAC,GAAG,CAAC;oBACd,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;oBAC5B,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE;iBAC1C,CAAC,CAAA;gBACF,OAAO,IAAI,CAAA;YACZ,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClB,0CAA0C;gBAC1C,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;gBAC9D,OAAO,IAAI,CAAA;YACZ,CAAC;YAED,OAAO,KAAK,CAAA;QACb,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,EAAmB,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;YAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3D,IAAI,GAAG,EAAE,CAAC;gBACT,OAAO;oBACN,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;oBACjC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;iBAC/B,CAAA;YACF,CAAC;QACF,CAAC;QACD,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACrE,gBAAgB,EAAE,GAAG,EAAE;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAA;YAC9B,OAAO;gBACN,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;gBACzC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;aACvC,CAAA;QACF,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE;YACrD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAA;YACtC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAC9D,IAAI,GAAG,EAAE,CAAC;gBACT,OAAO,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACxC,CAAC;YAED,OAAO,IAAI,eAAe,EAAE,CAAA;QAC7B,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,aAA4B,EAAE,GAAoB,EAAE,EAAE;YAC5E,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAA;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;YAClD,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAChF,CAAC;QACD,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc;QAChD,cAAc,EAAE,GAAG,EAAE;YACpB,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAA;YACnC,OAAO;gBACN,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;aACnE,CAAA;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
@@ -1,28 +1,23 @@
1
- import { ILogger } from '../Utils/loggerr'
2
- import { SignalKeyStoreWithTransaction } from '../Types'
3
-
4
- export declare class LIDMappingStore {
5
- private readonly mappingCache
6
- private readonly keys
7
- private onWhatsAppFunc?
8
- constructor(keys: SignalKeyStoreWithTransaction, onWhatsAppFunc?: (...jids: string[], logger: ILogger ) => Promise<{
9
- jid: string
10
- exists: boolean
11
- lid: string
12
- }[] | undefined>)
13
- /**
14
- * Store LID-PN mapping - USER LEVEL
15
- */
16
- storeLIDPNMappings(pairs: {
17
- lid: string;
18
- pn: string;
19
- }[]): Promise<void>
20
- /**
21
- * Get LID for PN - Returns device-specific LID based on user mapping
22
- */
23
- getLIDForPN(pn: string): Promise<string | null>
24
- /**
25
- * Get PN for LID - USER LEVEL with device construction
26
- */
27
- getPNForLID(lid: string): Promise<string | null>
28
- }
1
+ import type { LIDMapping, SignalKeyStoreWithTransaction } from '../Types/index.js';
2
+ import type { ILogger } from '../Utils/logger.js';
3
+ export declare class LIDMappingStore {
4
+ private readonly mappingCache;
5
+ private readonly keys;
6
+ private readonly logger;
7
+ private pnToLIDFunc?;
8
+ private readonly inflightLIDLookups;
9
+ private readonly inflightPNLookups;
10
+ constructor(keys: SignalKeyStoreWithTransaction, logger: ILogger, pnToLIDFunc?: (jids: string[]) => Promise<LIDMapping[] | undefined>);
11
+ storeLIDPNMappings(pairs: LIDMapping[]): Promise<void>;
12
+ getLIDForPN(pn: string): Promise<string | null>;
13
+ getLIDsForPNs(pns: string[]): Promise<LIDMapping[] | null>;
14
+ private _getLIDsForPNsImpl;
15
+ getPNForLID(lid: string): Promise<string | null>;
16
+ getPNsForLIDs(lids: string[]): Promise<LIDMapping[] | null>;
17
+ private _getPNsForLIDsImpl;
18
+ /**
19
+ * Close the cache and release resources
20
+ */
21
+ close(): void;
22
+ }
23
+ //# sourceMappingURL=lid-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lid-mapping.d.ts","sourceRoot":"","sources":["../../src/Signal/lid-mapping.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAI3B;IACF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,WAAW,CAAC,CAAuD;IAE3E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkD;IACrF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkD;gBAGnF,IAAI,EAAE,6BAA6B,EACnC,MAAM,EAAE,OAAO,EACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC;IAO9D,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8EtD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI/C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;YAsBlD,kBAAkB;IA6G1B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIhD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;YAsBnD,kBAAkB;IA4DhC;;OAEG;IACH,KAAK,IAAI,IAAI;CAGb"}