@vanzxysenpai/baileys 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/LICENSE +25 -0
  3. package/NOTICE.md +158 -0
  4. package/README.md +5294 -2
  5. package/VanzxyBanner.js +134 -0
  6. package/WAProto/index.d.ts +13317 -0
  7. package/WAProto/index.js +147553 -0
  8. package/lib/Builders/A2UI.d.ts +131 -0
  9. package/lib/Builders/A2UI.js +343 -0
  10. package/lib/Builders/AIRich.d.ts +1021 -0
  11. package/lib/Builders/AIRich.js +2889 -0
  12. package/lib/Builders/Album.d.ts +51 -0
  13. package/lib/Builders/Album.js +99 -0
  14. package/lib/Builders/Button.d.ts +137449 -0
  15. package/lib/Builders/Button.js +1054 -0
  16. package/lib/Builders/ButtonV2.d.ts +43 -0
  17. package/lib/Builders/ButtonV2.js +175 -0
  18. package/lib/Builders/ButtonV3.d.ts +35 -0
  19. package/lib/Builders/ButtonV3.js +189 -0
  20. package/lib/Builders/Carousel.d.ts +68 -0
  21. package/lib/Builders/Carousel.js +161 -0
  22. package/lib/Builders/Event.d.ts +61 -0
  23. package/lib/Builders/Event.js +118 -0
  24. package/lib/Builders/Expiring.d.ts +17 -0
  25. package/lib/Builders/Expiring.js +27 -0
  26. package/lib/Builders/Poll.d.ts +63 -0
  27. package/lib/Builders/Poll.js +139 -0
  28. package/lib/Builders/VanzxyBaileys.d.ts +42 -0
  29. package/lib/Builders/VanzxyBaileys.js +110 -0
  30. package/lib/Builders/errors.d.ts +25 -0
  31. package/lib/Builders/errors.js +29 -0
  32. package/lib/Builders/index.d.ts +14 -0
  33. package/lib/Builders/index.js +23 -0
  34. package/lib/Builders/shared.d.ts +395 -0
  35. package/lib/Builders/shared.js +738 -0
  36. package/lib/Defaults/bot-jid.d.ts +1 -0
  37. package/lib/Defaults/bot-jid.js +1 -0
  38. package/lib/Defaults/index.d.ts +161 -0
  39. package/lib/Defaults/index.js +165 -0
  40. package/lib/Defaults/version.d.ts +1 -0
  41. package/lib/Defaults/version.js +1 -0
  42. package/lib/Framework/Bot.d.ts +865 -0
  43. package/lib/Framework/Bot.js +230 -0
  44. package/lib/Framework/Context.d.ts +17 -0
  45. package/lib/Framework/Context.js +90 -0
  46. package/lib/Framework/MediaManager.d.ts +15 -0
  47. package/lib/Framework/MediaManager.js +154 -0
  48. package/lib/Framework/SessionManager.d.ts +10 -0
  49. package/lib/Framework/SessionManager.js +34 -0
  50. package/lib/Framework/StatsManager.d.ts +20 -0
  51. package/lib/Framework/StatsManager.js +117 -0
  52. package/lib/Framework/Store/SQLiteStore.d.ts +13 -0
  53. package/lib/Framework/Store/SQLiteStore.js +68 -0
  54. package/lib/Framework/index.d.ts +6 -0
  55. package/lib/Framework/index.js +11 -0
  56. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  57. package/lib/Signal/Group/ciphertext-message.js +11 -0
  58. package/lib/Signal/Group/group-session-builder.d.ts +7 -0
  59. package/lib/Signal/Group/group-session-builder.js +29 -0
  60. package/lib/Signal/Group/group_cipher.d.ts +10 -0
  61. package/lib/Signal/Group/group_cipher.js +81 -0
  62. package/lib/Signal/Group/index.d.ts +11 -0
  63. package/lib/Signal/Group/index.js +11 -0
  64. package/lib/Signal/Group/keyhelper.d.ts +6 -0
  65. package/lib/Signal/Group/keyhelper.js +17 -0
  66. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  67. package/lib/Signal/Group/sender-chain-key.js +25 -0
  68. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  69. package/lib/Signal/Group/sender-key-distribution-message.js +62 -0
  70. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  71. package/lib/Signal/Group/sender-key-message.js +65 -0
  72. package/lib/Signal/Group/sender-key-name.d.ts +11 -0
  73. package/lib/Signal/Group/sender-key-name.js +47 -0
  74. package/lib/Signal/Group/sender-key-record.d.ts +12 -0
  75. package/lib/Signal/Group/sender-key-record.js +40 -0
  76. package/lib/Signal/Group/sender-key-state.d.ts +16 -0
  77. package/lib/Signal/Group/sender-key-state.js +83 -0
  78. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  79. package/lib/Signal/Group/sender-message-key.js +25 -0
  80. package/lib/Signal/libsignal.d.ts +58 -0
  81. package/lib/Signal/libsignal.js +436 -0
  82. package/lib/Signal/lid-mapping.d.ts +20 -0
  83. package/lib/Signal/lid-mapping.js +276 -0
  84. package/lib/Socket/Client/index.d.ts +2 -0
  85. package/lib/Socket/Client/index.js +2 -0
  86. package/lib/Socket/Client/types.d.ts +5 -0
  87. package/lib/Socket/Client/types.js +10 -0
  88. package/lib/Socket/Client/websocket.d.ts +12 -0
  89. package/lib/Socket/Client/websocket.js +53 -0
  90. package/lib/Socket/business.d.ts +674 -0
  91. package/lib/Socket/business.js +379 -0
  92. package/lib/Socket/chats.d.ts +137 -0
  93. package/lib/Socket/chats.js +1299 -0
  94. package/lib/Socket/communities.d.ts +805 -0
  95. package/lib/Socket/communities.js +454 -0
  96. package/lib/Socket/dugong.d.ts +118 -0
  97. package/lib/Socket/dugong.js +810 -0
  98. package/lib/Socket/groups.d.ts +287 -0
  99. package/lib/Socket/groups.js +386 -0
  100. package/lib/Socket/index.d.ts +826 -0
  101. package/lib/Socket/index.js +35 -0
  102. package/lib/Socket/messages-recv.d.ts +613 -0
  103. package/lib/Socket/messages-recv.js +1851 -0
  104. package/lib/Socket/messages-send.d.ts +608 -0
  105. package/lib/Socket/messages-send.js +1574 -0
  106. package/lib/Socket/mex-fallback.d.ts +51 -0
  107. package/lib/Socket/mex-fallback.js +97 -0
  108. package/lib/Socket/mex.d.ts +1 -0
  109. package/lib/Socket/mex.js +41 -0
  110. package/lib/Socket/newsletter-ext.d.ts +47 -0
  111. package/lib/Socket/newsletter-ext.js +262 -0
  112. package/lib/Socket/newsletter.d.ts +285 -0
  113. package/lib/Socket/newsletter.js +223 -0
  114. package/lib/Socket/socket.d.ts +60 -0
  115. package/lib/Socket/socket.js +1001 -0
  116. package/lib/Socket/username.d.ts +842 -0
  117. package/lib/Socket/username.js +156 -0
  118. package/lib/Store/index.d.ts +3 -0
  119. package/lib/Store/index.js +3 -0
  120. package/lib/Store/make-in-memory-store.d.ts +62 -0
  121. package/lib/Store/make-in-memory-store.js +425 -0
  122. package/lib/Store/make-ordered-dictionary.d.ts +12 -0
  123. package/lib/Store/make-ordered-dictionary.js +78 -0
  124. package/lib/Store/object-repository.d.ts +10 -0
  125. package/lib/Store/object-repository.js +23 -0
  126. package/lib/Types/Auth.d.ts +1 -0
  127. package/lib/Types/Auth.js +1 -0
  128. package/lib/Types/Bussines.d.ts +1 -0
  129. package/lib/Types/Bussines.js +1 -0
  130. package/lib/Types/Call.d.ts +1 -0
  131. package/lib/Types/Call.js +1 -0
  132. package/lib/Types/Chat.d.ts +1 -0
  133. package/lib/Types/Chat.js +7 -0
  134. package/lib/Types/Contact.d.ts +1 -0
  135. package/lib/Types/Contact.js +1 -0
  136. package/lib/Types/Events.d.ts +1 -0
  137. package/lib/Types/Events.js +1 -0
  138. package/lib/Types/GroupMetadata.d.ts +1 -0
  139. package/lib/Types/GroupMetadata.js +1 -0
  140. package/lib/Types/Label.d.ts +2 -0
  141. package/lib/Types/Label.js +24 -0
  142. package/lib/Types/LabelAssociation.d.ts +2 -0
  143. package/lib/Types/LabelAssociation.js +6 -0
  144. package/lib/Types/Message.d.ts +11 -0
  145. package/lib/Types/Message.js +17 -0
  146. package/lib/Types/Mex.d.ts +2 -0
  147. package/lib/Types/Mex.js +38 -0
  148. package/lib/Types/Product.d.ts +1 -0
  149. package/lib/Types/Product.js +1 -0
  150. package/lib/Types/RichType.d.ts +2 -0
  151. package/lib/Types/RichType.js +22 -0
  152. package/lib/Types/Signal.d.ts +1 -0
  153. package/lib/Types/Signal.js +1 -0
  154. package/lib/Types/Socket.d.ts +1 -0
  155. package/lib/Types/Socket.js +1 -0
  156. package/lib/Types/State.d.ts +5 -0
  157. package/lib/Types/State.js +55 -0
  158. package/lib/Types/USync.d.ts +1 -0
  159. package/lib/Types/USync.js +1 -0
  160. package/lib/Types/index.d.ts +15 -0
  161. package/lib/Types/index.js +27 -0
  162. package/lib/Utils/PersistentStore.d.ts +83 -0
  163. package/lib/Utils/PersistentStore.js +592 -0
  164. package/lib/Utils/anchor-guard.d.ts +31 -0
  165. package/lib/Utils/anchor-guard.js +329 -0
  166. package/lib/Utils/android-stanza-id.d.ts +4 -0
  167. package/lib/Utils/android-stanza-id.js +21 -0
  168. package/lib/Utils/anti-delete.d.ts +62 -0
  169. package/lib/Utils/anti-delete.js +212 -0
  170. package/lib/Utils/auth-secure.d.ts +180 -0
  171. package/lib/Utils/auth-secure.js +791 -0
  172. package/lib/Utils/auth-utils.d.ts +59 -0
  173. package/lib/Utils/auth-utils.js +326 -0
  174. package/lib/Utils/auto-reconnect.d.ts +8 -0
  175. package/lib/Utils/auto-reconnect.js +204 -0
  176. package/lib/Utils/auto-reply.d.ts +35 -0
  177. package/lib/Utils/auto-reply.js +152 -0
  178. package/lib/Utils/bad-mac-handler.d.ts +59 -0
  179. package/lib/Utils/bad-mac-handler.js +119 -0
  180. package/lib/Utils/baileys-event-stream.d.ts +5 -0
  181. package/lib/Utils/baileys-event-stream.js +62 -0
  182. package/lib/Utils/browser-utils.d.ts +9 -0
  183. package/lib/Utils/browser-utils.js +29 -0
  184. package/lib/Utils/business.d.ts +49 -0
  185. package/lib/Utils/business.js +236 -0
  186. package/lib/Utils/button-helper-utils.d.ts +59 -0
  187. package/lib/Utils/button-helper-utils.js +266 -0
  188. package/lib/Utils/button-sender.d.ts +164 -0
  189. package/lib/Utils/button-sender.js +845 -0
  190. package/lib/Utils/chat-control.d.ts +98 -0
  191. package/lib/Utils/chat-control.js +231 -0
  192. package/lib/Utils/chat-history-helpers.d.ts +4 -0
  193. package/lib/Utils/chat-history-helpers.js +70 -0
  194. package/lib/Utils/chat-utils.d.ts +408 -0
  195. package/lib/Utils/chat-utils.js +879 -0
  196. package/lib/Utils/companion-reg-client-utils.d.ts +4 -0
  197. package/lib/Utils/companion-reg-client-utils.js +39 -0
  198. package/lib/Utils/connection-watchdog.d.ts +10 -0
  199. package/lib/Utils/connection-watchdog.js +74 -0
  200. package/lib/Utils/crypto.d.ts +41 -0
  201. package/lib/Utils/crypto.js +145 -0
  202. package/lib/Utils/decode-wa-message.d.ts +83 -0
  203. package/lib/Utils/decode-wa-message.js +315 -0
  204. package/lib/Utils/disconnect-reason.d.ts +13 -0
  205. package/lib/Utils/disconnect-reason.js +36 -0
  206. package/lib/Utils/event-buffer.d.ts +12 -0
  207. package/lib/Utils/event-buffer.js +640 -0
  208. package/lib/Utils/fetch-timeout.d.ts +4 -0
  209. package/lib/Utils/fetch-timeout.js +14 -0
  210. package/lib/Utils/ffmpeg-path.d.ts +5 -0
  211. package/lib/Utils/ffmpeg-path.js +130 -0
  212. package/lib/Utils/generics.d.ts +79 -0
  213. package/lib/Utils/generics.js +426 -0
  214. package/lib/Utils/group-metadata-cache.d.ts +3 -0
  215. package/lib/Utils/group-metadata-cache.js +25 -0
  216. package/lib/Utils/group-status-detection.d.ts +5 -0
  217. package/lib/Utils/group-status-detection.js +114 -0
  218. package/lib/Utils/history.d.ts +91 -0
  219. package/lib/Utils/history.js +144 -0
  220. package/lib/Utils/html-app.d.ts +14 -0
  221. package/lib/Utils/html-app.js +97 -0
  222. package/lib/Utils/html-multiplayer.d.ts +8 -0
  223. package/lib/Utils/html-multiplayer.js +90 -0
  224. package/lib/Utils/humanizer.d.ts +8 -0
  225. package/lib/Utils/humanizer.js +74 -0
  226. package/lib/Utils/identity-change-handler.d.ts +13 -0
  227. package/lib/Utils/identity-change-handler.js +49 -0
  228. package/lib/Utils/index.d.ts +88 -0
  229. package/lib/Utils/index.js +93 -0
  230. package/lib/Utils/jid-tools.d.ts +3 -0
  231. package/lib/Utils/jid-tools.js +78 -0
  232. package/lib/Utils/link-preview-metadata.d.ts +47 -0
  233. package/lib/Utils/link-preview-metadata.js +90 -0
  234. package/lib/Utils/link-preview.d.ts +12 -0
  235. package/lib/Utils/link-preview.js +84 -0
  236. package/lib/Utils/lock-manager.d.ts +5 -0
  237. package/lib/Utils/lock-manager.js +50 -0
  238. package/lib/Utils/logger.d.ts +2 -0
  239. package/lib/Utils/logger.js +2 -0
  240. package/lib/Utils/lt-hash.d.ts +12 -0
  241. package/lib/Utils/lt-hash.js +26 -0
  242. package/lib/Utils/make-mutex.d.ts +6 -0
  243. package/lib/Utils/make-mutex.js +32 -0
  244. package/lib/Utils/media-messages.d.ts +35 -0
  245. package/lib/Utils/media-messages.js +70 -0
  246. package/lib/Utils/media-processor.d.ts +6 -0
  247. package/lib/Utils/media-processor.js +174 -0
  248. package/lib/Utils/media-set.d.ts +6 -0
  249. package/lib/Utils/media-set.js +169 -0
  250. package/lib/Utils/message-kind.d.ts +26 -0
  251. package/lib/Utils/message-kind.js +138 -0
  252. package/lib/Utils/message-retry-manager.d.ts +79 -0
  253. package/lib/Utils/message-retry-manager.js +264 -0
  254. package/lib/Utils/message-search.d.ts +40 -0
  255. package/lib/Utils/message-search.js +181 -0
  256. package/lib/Utils/messages-media.d.ts +136 -0
  257. package/lib/Utils/messages-media.js +867 -0
  258. package/lib/Utils/messages.d.ts +66 -0
  259. package/lib/Utils/messages.js +2271 -0
  260. package/lib/Utils/meta-ai-msmsg.d.ts +3 -0
  261. package/lib/Utils/meta-ai-msmsg.js +132 -0
  262. package/lib/Utils/meta-ai.d.ts +4 -0
  263. package/lib/Utils/meta-ai.js +75 -0
  264. package/lib/Utils/migrate-auth-state.d.ts +23 -0
  265. package/lib/Utils/migrate-auth-state.js +126 -0
  266. package/lib/Utils/mini-app.d.ts +20 -0
  267. package/lib/Utils/mini-app.js +215 -0
  268. package/lib/Utils/mock-socket.d.ts +67 -0
  269. package/lib/Utils/mock-socket.js +254 -0
  270. package/lib/Utils/modern-messages.d.ts +64 -0
  271. package/lib/Utils/modern-messages.js +497 -0
  272. package/lib/Utils/native-flow.d.ts +19 -0
  273. package/lib/Utils/native-flow.js +112 -0
  274. package/lib/Utils/newsletter-status.d.ts +157 -0
  275. package/lib/Utils/newsletter-status.js +652 -0
  276. package/lib/Utils/noise-handler.d.ts +20 -0
  277. package/lib/Utils/noise-handler.js +200 -0
  278. package/lib/Utils/offline-node-processor.d.ts +9 -0
  279. package/lib/Utils/offline-node-processor.js +39 -0
  280. package/lib/Utils/pairing-utils.d.ts +5 -0
  281. package/lib/Utils/pairing-utils.js +29 -0
  282. package/lib/Utils/passkey.d.ts +4 -0
  283. package/lib/Utils/passkey.js +11 -0
  284. package/lib/Utils/past-participants.d.ts +2 -0
  285. package/lib/Utils/past-participants.js +40 -0
  286. package/lib/Utils/payment-detection.d.ts +40 -0
  287. package/lib/Utils/payment-detection.js +213 -0
  288. package/lib/Utils/payment-guard.d.ts +28 -0
  289. package/lib/Utils/payment-guard.js +143 -0
  290. package/lib/Utils/payment-messages.d.ts +42 -0
  291. package/lib/Utils/payment-messages.js +161 -0
  292. package/lib/Utils/payment-utils.d.ts +75 -0
  293. package/lib/Utils/payment-utils.js +145 -0
  294. package/lib/Utils/phone-utils.d.ts +3 -0
  295. package/lib/Utils/phone-utils.js +29 -0
  296. package/lib/Utils/pre-key-manager.d.ts +25 -0
  297. package/lib/Utils/pre-key-manager.js +105 -0
  298. package/lib/Utils/process-message.d.ts +103 -0
  299. package/lib/Utils/process-message.js +868 -0
  300. package/lib/Utils/qr-terminal.d.ts +1 -0
  301. package/lib/Utils/qr-terminal.js +16 -0
  302. package/lib/Utils/reconnect-backoff.d.ts +25 -0
  303. package/lib/Utils/reconnect-backoff.js +47 -0
  304. package/lib/Utils/reporting-utils.d.ts +12 -0
  305. package/lib/Utils/reporting-utils.js +257 -0
  306. package/lib/Utils/rich-message-utils.d.ts +54 -0
  307. package/lib/Utils/rich-message-utils.js +435 -0
  308. package/lib/Utils/rich-messages.d.ts +298 -0
  309. package/lib/Utils/rich-messages.js +1145 -0
  310. package/lib/Utils/scheduled-message.d.ts +81 -0
  311. package/lib/Utils/scheduled-message.js +101 -0
  312. package/lib/Utils/scheduling.d.ts +59 -0
  313. package/lib/Utils/scheduling.js +139 -0
  314. package/lib/Utils/signal.d.ts +82 -0
  315. package/lib/Utils/signal.js +200 -0
  316. package/lib/Utils/stanza-ack.d.ts +16 -0
  317. package/lib/Utils/stanza-ack.js +37 -0
  318. package/lib/Utils/status-stickers.d.ts +79 -0
  319. package/lib/Utils/status-stickers.js +261 -0
  320. package/lib/Utils/status.d.ts +107 -0
  321. package/lib/Utils/status.js +131 -0
  322. package/lib/Utils/sticker-pack-maker.d.ts +20 -0
  323. package/lib/Utils/sticker-pack-maker.js +112 -0
  324. package/lib/Utils/stickerpack.d.ts +18 -0
  325. package/lib/Utils/stickerpack.js +316 -0
  326. package/lib/Utils/sync-action-utils.d.ts +2 -0
  327. package/lib/Utils/sync-action-utils.js +48 -0
  328. package/lib/Utils/tag.d.ts +8 -0
  329. package/lib/Utils/tag.js +45 -0
  330. package/lib/Utils/tc-token-utils.d.ts +29 -0
  331. package/lib/Utils/tc-token-utils.js +162 -0
  332. package/lib/Utils/templates.d.ts +86 -0
  333. package/lib/Utils/templates.js +148 -0
  334. package/lib/Utils/text-format.d.ts +13 -0
  335. package/lib/Utils/text-format.js +81 -0
  336. package/lib/Utils/text-tools.d.ts +3 -0
  337. package/lib/Utils/text-tools.js +38 -0
  338. package/lib/Utils/ttl-cache.d.ts +29 -0
  339. package/lib/Utils/ttl-cache.js +123 -0
  340. package/lib/Utils/use-cache-manager-auth-state.d.ts +22 -0
  341. package/lib/Utils/use-cache-manager-auth-state.js +86 -0
  342. package/lib/Utils/use-multi-file-auth-state.d.ts +20 -0
  343. package/lib/Utils/use-multi-file-auth-state.js +201 -0
  344. package/lib/Utils/use-single-file-auth-state.d.ts +10 -0
  345. package/lib/Utils/use-single-file-auth-state.js +111 -0
  346. package/lib/Utils/use-sqlite-auth-state.d.ts +13 -0
  347. package/lib/Utils/use-sqlite-auth-state.js +171 -0
  348. package/lib/Utils/username.d.ts +22 -0
  349. package/lib/Utils/username.js +59 -0
  350. package/lib/Utils/validate-connection.d.ts +43 -0
  351. package/lib/Utils/validate-connection.js +197 -0
  352. package/lib/Utils/vcard.d.ts +40 -0
  353. package/lib/Utils/vcard.js +92 -0
  354. package/lib/Utils/voice-note.d.ts +13 -0
  355. package/lib/Utils/voice-note.js +47 -0
  356. package/lib/VoIP/audio-feeder.d.ts +15 -0
  357. package/lib/VoIP/audio-feeder.js +132 -0
  358. package/lib/VoIP/index.d.ts +22 -0
  359. package/lib/VoIP/index.js +277 -0
  360. package/lib/VoIP/relay-transport.d.ts +16 -0
  361. package/lib/VoIP/relay-transport.js +559 -0
  362. package/lib/VoIP/signaling.d.ts +16 -0
  363. package/lib/VoIP/signaling.js +624 -0
  364. package/lib/VoIP/types.d.ts +11 -0
  365. package/lib/VoIP/types.js +17 -0
  366. package/lib/VoIP/wasm-engine.d.ts +28 -0
  367. package/lib/VoIP/wasm-engine.js +1214 -0
  368. package/lib/VoIP/worker-bootstrap.d.ts +1 -0
  369. package/lib/VoIP/worker-bootstrap.js +1042 -0
  370. package/lib/WABinary/constants.d.ts +61 -0
  371. package/lib/WABinary/constants.js +1466 -0
  372. package/lib/WABinary/decode.d.ts +9 -0
  373. package/lib/WABinary/decode.js +261 -0
  374. package/lib/WABinary/encode.d.ts +2 -0
  375. package/lib/WABinary/encode.js +219 -0
  376. package/lib/WABinary/generic-utils.d.ts +45 -0
  377. package/lib/WABinary/generic-utils.js +285 -0
  378. package/lib/WABinary/index.d.ts +5 -0
  379. package/lib/WABinary/index.js +5 -0
  380. package/lib/WABinary/jid-utils.d.ts +32 -0
  381. package/lib/WABinary/jid-utils.js +102 -0
  382. package/lib/WABinary/types.d.ts +1 -0
  383. package/lib/WABinary/types.js +1 -0
  384. package/lib/WAM/BinaryInfo.d.ts +7 -0
  385. package/lib/WAM/BinaryInfo.js +9 -0
  386. package/lib/WAM/constants.d.ts +34926 -0
  387. package/lib/WAM/constants.js +22852 -0
  388. package/lib/WAM/encode.d.ts +1 -0
  389. package/lib/WAM/encode.js +149 -0
  390. package/lib/WAM/index.d.ts +3 -0
  391. package/lib/WAM/index.js +3 -0
  392. package/lib/WAUSync/Protocols/USyncBusinessProtocol.d.ts +43 -0
  393. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +32 -0
  394. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +36 -0
  395. package/lib/WAUSync/Protocols/USyncContactProtocol.js +51 -0
  396. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +29 -0
  397. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +60 -0
  398. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  399. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +26 -0
  400. package/lib/WAUSync/Protocols/USyncFeatureProtocol.d.ts +13 -0
  401. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +28 -0
  402. package/lib/WAUSync/Protocols/USyncPictureProtocol.d.ts +22 -0
  403. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +28 -0
  404. package/lib/WAUSync/Protocols/USyncSidelistProtocol.d.ts +20 -0
  405. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +23 -0
  406. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  407. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +37 -0
  408. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.d.ts +14 -0
  409. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +24 -0
  410. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +9 -0
  411. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +24 -0
  412. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +38 -0
  413. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +49 -0
  414. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +14 -0
  415. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +28 -0
  416. package/lib/WAUSync/Protocols/index.d.ts +12 -0
  417. package/lib/WAUSync/Protocols/index.js +12 -0
  418. package/lib/WAUSync/USyncQuery.d.ts +25 -0
  419. package/lib/WAUSync/USyncQuery.js +140 -0
  420. package/lib/WAUSync/USyncUser.d.ts +24 -0
  421. package/lib/WAUSync/USyncUser.js +47 -0
  422. package/lib/WAUSync/index.d.ts +3 -0
  423. package/lib/WAUSync/index.js +3 -0
  424. package/lib/assets/wasm/loader.js +5 -0
  425. package/lib/assets/wasm/whatsapp.wasm +0 -0
  426. package/lib/assets/wasm/worker-modules.js +273 -0
  427. package/lib/exports-extra.d.ts +45 -0
  428. package/lib/exports-extra.js +47 -0
  429. package/lib/index.d.ts +16 -0
  430. package/lib/index.js +24 -0
  431. package/package.json +161 -4
@@ -0,0 +1,112 @@
1
+ // Vanz@Port --- ported from @vinzsocket/baileys 3.3.13 (sticker-pack.js). Creator credits untouched. See NOTICE.md.
2
+ /**
3
+ * Default emojis assigned to stickers when none are provided.
4
+ * Rotates through this list by sticker index.
5
+ */
6
+ const DEFAULT_EMOJIS = [
7
+ "😀",
8
+ "😂",
9
+ "😍",
10
+ "🔥",
11
+ "👍",
12
+ "🎉",
13
+ "😎",
14
+ "🤩",
15
+ "💯",
16
+ "🥳",
17
+ ];
18
+
19
+ /**
20
+ * Normalize a single sticker entry.
21
+ * Input can be:
22
+ * - Buffer
23
+ * - { url: string }
24
+ * - { sticker: Buffer | { url: string }, emojis?: string[], accessibilityLabel?: string }
25
+ *
26
+ * @param {Buffer | { url: string } | object} entry
27
+ * @param {number} index
28
+ * @returns {{ sticker: Buffer | { url: string }, emojis: string[], accessibilityLabel: string }}
29
+ */
30
+ const normalizeSticker = (entry, index) => {
31
+ if (
32
+ Buffer.isBuffer(entry) ||
33
+ (entry &&
34
+ typeof entry === "object" &&
35
+ "url" in entry &&
36
+ !("sticker" in entry))
37
+ ) {
38
+ return {
39
+ sticker: entry,
40
+ emojis: [DEFAULT_EMOJIS[index % DEFAULT_EMOJIS.length]],
41
+ accessibilityLabel: "",
42
+ };
43
+ }
44
+ return {
45
+ sticker: entry.sticker || entry.data,
46
+ emojis: entry.emojis || [DEFAULT_EMOJIS[index % DEFAULT_EMOJIS.length]],
47
+ accessibilityLabel: entry.accessibilityLabel || "",
48
+ };
49
+ };
50
+
51
+ /**
52
+ * Build a stickerPack message object ready to pass to sock.sendMessage.
53
+ *
54
+ * @param {object} options
55
+ * @param {string} options.name - Pack display name
56
+ * @param {string} [options.publisher] - Pack publisher/author name
57
+ * @param {string} [options.description] - Pack description
58
+ * @param {string} [options.packId] - Custom pack ID (auto-generated if omitted)
59
+ * @param {Array<Buffer | { url: string } | { sticker: Buffer | { url: string }, emojis?: string[] }>} options.stickers
60
+ * List of stickers — accepts raw buffers, URL objects, or full sticker descriptor objects.
61
+ * @param {Buffer | { url: string }} [options.cover]
62
+ * Tray/cover image. Defaults to the first sticker if omitted.
63
+ * @param {object} [options.contextInfo] - Optional context info (mentions, forwarding, etc.)
64
+ * @returns {{ stickerPack: object }}
65
+ *
66
+ * @example
67
+ * // With buffers
68
+ * await sock.sendMessage(jid, makeStickerPack({
69
+ * name: 'My Pack',
70
+ * stickers: [buf1, buf2, buf3]
71
+ * }));
72
+ *
73
+ * @example
74
+ * // With URLs
75
+ * await sock.sendMessage(jid, makeStickerPack({
76
+ * name: 'Anime Pack',
77
+ * publisher: 'Ourin AI',
78
+ * stickers: [
79
+ * { url: 'https://example.com/s1.webp', emojis: ['😀'] },
80
+ * { url: 'https://example.com/s2.webp' }
81
+ * ],
82
+ * cover: { url: 'https://example.com/cover.jpg' }
83
+ * }));
84
+ */
85
+ export const makeStickerPack = ({
86
+ name,
87
+ publisher = "Ourin AI",
88
+ description = "",
89
+ packId,
90
+ stickers = [],
91
+ cover,
92
+ contextInfo,
93
+ } = {}) => {
94
+ if (!name) throw new Error("makeStickerPack: name is required");
95
+ if (!stickers.length)
96
+ throw new Error("makeStickerPack: at least one sticker is required");
97
+
98
+ const normalizedStickers = stickers.map(normalizeSticker);
99
+ const resolvedCover = cover ?? normalizedStickers[0].sticker;
100
+
101
+ return {
102
+ stickerPack: {
103
+ name,
104
+ publisher,
105
+ description,
106
+ ...(packId ? { packId } : {}),
107
+ stickers: normalizedStickers,
108
+ cover: resolvedCover,
109
+ },
110
+ ...(contextInfo ? { contextInfo } : {}),
111
+ };
112
+ };
@@ -0,0 +1,18 @@
1
+ export function isWebPBuffer(buffer: any): boolean;
2
+ export function isAnimatedWebP(buffer: any): any;
3
+ export function isLottieBuffer(buffer: any): any;
4
+ export function convertToWebP(input: any): Promise<{
5
+ buffer: any;
6
+ isAnimated: any;
7
+ }>;
8
+ export function generateStickerPackId(): string;
9
+ export function buildStickerPackProto(pack: any): {
10
+ name: any;
11
+ publisher: any;
12
+ packId: any;
13
+ description: any;
14
+ };
15
+ /** stickerPack message type marker — for use with getMediaType()-style dispatch. */
16
+ export const STICKER_PACK_MESSAGE_TYPE: "sticker_pack";
17
+ export function prepareStickerPackMessageItsliaaa(message: any, options: any): Promise<proto.Message.StickerPackMessage>;
18
+ import { proto } from '../../WAProto/index.js';
@@ -0,0 +1,316 @@
1
+ /**
2
+ * ported from Bail-master addons/stickerpack.ts.
3
+ *
4
+ * Adds support for building/sending WhatsApp Sticker Pack messages.
5
+ *
6
+ * Exports:
7
+ * - convertToWebP() — converts a Buffer, URL string, or Stream into a WebP
8
+ * sticker buffer (passthrough if already WebP), sharp → @napi-rs/image
9
+ * fallback chain, 512x512 'inside' fit, quality 80.
10
+ * - generateStickerPackId() — generates a random pack ID
11
+ * - buildStickerPackProto() — builds the proto-level payload for a StickerPackMessage
12
+ * - STICKER_PACK_MESSAGE_TYPE — the message type string 'sticker_pack'
13
+ * - prepareStickerPackMessageItsliaaa() — full ZIP-build + upload + thumbnail
14
+ * pipeline for a ready-to-send stickerPackMessage.
15
+ *
16
+ * NOTE: source imported isWebPBuffer/isAnimatedWebP from its own
17
+ * from-messages.ts, which is not part of this fork's port. Reimplemented
18
+ * below as small standalone binary-sniffing helpers (RIFF/WEBP header +
19
+ * ANIM chunk check) so this file has no external dependency on that addon.
20
+ */
21
+ import { Boom } from '@hapi/boom';
22
+ import { zip } from 'fflate';
23
+ import { promises as fsPromises } from 'fs';
24
+ import { gunzipSync, gzipSync } from 'zlib';
25
+ import { proto } from '../../WAProto/index.js';
26
+ import { sha256 } from './crypto.js';
27
+ import { generateMessageIDV2, unixTimestampSeconds } from './generics.js';
28
+ import { encryptedStream, getImageProcessingLibrary, getStream, toBuffer } from './messages-media.js';
29
+ /** True if `buffer` starts with a RIFF....WEBP container header. */
30
+ export const isWebPBuffer = (buffer) => {
31
+ return (buffer.length > 12 &&
32
+ buffer.toString('ascii', 0, 4) === 'RIFF' &&
33
+ buffer.toString('ascii', 8, 12) === 'WEBP');
34
+ };
35
+ /** True if a WebP buffer contains an ANIM chunk (animated sticker). */
36
+ export const isAnimatedWebP = (buffer) => {
37
+ return isWebPBuffer(buffer) && buffer.includes(Buffer.from('ANIM', 'ascii'));
38
+ };
39
+ /**
40
+ * Vanz@Port (2.0.3) --- from Bail-master addons/from-messages.ts (isLottieBuffer, PR #260 rsalcara/InfiniteAPI).
41
+ * Detects Lottie/WAS stickers: gzip-compressed Lottie JSON ("WAS") or raw Lottie JSON.
42
+ * Gunzip output is capped at 50 MB so a hostile gzip bomb cannot exhaust memory.
43
+ */
44
+ export const isLottieBuffer = (buffer) => {
45
+ if (!Buffer.isBuffer(buffer) || buffer.length < 2) {
46
+ return false;
47
+ }
48
+ let jsonBuffer;
49
+ if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
50
+ try {
51
+ jsonBuffer = gunzipSync(buffer, { maxOutputLength: 50 * 1024 * 1024 });
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ else if (buffer[0] === 0x7b) {
58
+ jsonBuffer = buffer;
59
+ }
60
+ else {
61
+ return false;
62
+ }
63
+ const head = jsonBuffer.toString('utf8', 0, Math.min(jsonBuffer.length, 4096));
64
+ return head.includes('"v"') && head.includes('"layers"') && head.includes('"ip"') && head.includes('"op"');
65
+ };
66
+ /**
67
+ * Convert a Buffer, URL string, or Stream into a WebP sticker buffer.
68
+ * If the input is already a valid WebP, it's returned untouched (and
69
+ * `isAnimated` reflects whether it's an animated WebP).
70
+ */
71
+ export const convertToWebP = async (input) => {
72
+ const { stream } = await getStream(input);
73
+ const buffer = await toBuffer(stream);
74
+ if (isWebPBuffer(buffer)) {
75
+ return { buffer, isAnimated: isAnimatedWebP(buffer) };
76
+ }
77
+ const lib = await getImageProcessingLibrary();
78
+ const hasSharp = 'sharp' in lib && !!lib.sharp?.default;
79
+ const hasImage = 'image' in lib && !!lib.image?.Transformer;
80
+ if (!hasSharp && !hasImage) {
81
+ throw new Boom('No image processing library (sharp or @napi-rs/image) available for converting sticker to WebP.');
82
+ }
83
+ let webpBuffer;
84
+ if (hasSharp) {
85
+ webpBuffer = await lib.sharp
86
+ .default(buffer)
87
+ .resize(512, 512, { fit: 'inside' })
88
+ .webp({ quality: 80 })
89
+ .toBuffer();
90
+ }
91
+ else {
92
+ webpBuffer = await new lib.image.Transformer(buffer).resize(512, 512).webp(80);
93
+ }
94
+ return { buffer: webpBuffer, isAnimated: false };
95
+ };
96
+ /** Generate a random sticker pack ID (16 hex chars). */
97
+ export const generateStickerPackId = () => {
98
+ const arr = new Uint8Array(8);
99
+ for (let i = 0; i < 8; i++)
100
+ arr[i] = Math.floor(Math.random() * 256);
101
+ return Array.from(arr)
102
+ .map((b) => b.toString(16).padStart(2, '0'))
103
+ .join('');
104
+ };
105
+ /** Build the proto-level stickerPackMessage payload (name/publisher/packId/description only). */
106
+ export const buildStickerPackProto = (pack) => ({
107
+ name: pack.name,
108
+ publisher: pack.publisher,
109
+ packId: pack.packId ?? generateStickerPackId(),
110
+ description: pack.description ?? ''
111
+ });
112
+ /** stickerPack message type marker — for use with getMediaType()-style dispatch. */
113
+ export const STICKER_PACK_MESSAGE_TYPE = 'sticker_pack';
114
+ const ITSL_CONCURRENCY_LIMIT = 15;
115
+ /**
116
+ * Build a complete, ready-to-send stickerPackMessage (ZIP built, encrypted,
117
+ * and uploaded) — full pipeline: per-sticker WebP conversion (15-way
118
+ * concurrency batching), 1MB per-sticker size limit, 60-sticker pack limit,
119
+ * cover→trayIcon-in-ZIP, and a separate 252×252 JPEG thumbnail upload.
120
+ */
121
+ export const prepareStickerPackMessageItsliaaa = async (message, options) => {
122
+ const { cover, stickers = [], name = '📦 Sticker Pack', publisher = 'Vanzxy', description = '🏷️ vanzxy/baileys', packId } = message;
123
+ if (stickers.length > 60) {
124
+ throw new Boom('Sticker pack exceeds the maximum limit of 60 stickers', { statusCode: 400 });
125
+ }
126
+ if (stickers.length === 0) {
127
+ throw new Boom('Sticker pack must contain at least one sticker', { statusCode: 400 });
128
+ }
129
+ if (!cover) {
130
+ throw new Boom('Sticker pack must contain a cover', { statusCode: 400 });
131
+ }
132
+ const { logger } = options;
133
+ // Media caching (keyed by concatenated sticker URLs, if all stickers are URL-based)
134
+ let cacheableKey = false;
135
+ if (stickers.length && options.mediaCache) {
136
+ const urls = [];
137
+ for (const s of stickers) {
138
+ const data = s.data;
139
+ if (typeof data === 'object' && data?.url)
140
+ urls.push(data.url);
141
+ }
142
+ if (urls.length > 0)
143
+ cacheableKey = 'sticker:' + urls.join('@');
144
+ }
145
+ if (cacheableKey) {
146
+ const mediaBuff = await options.mediaCache.get(cacheableKey);
147
+ if (mediaBuff) {
148
+ logger?.debug({ cacheableKey }, 'got media cache hit');
149
+ return proto.Message.StickerPackMessage.decode(mediaBuff);
150
+ }
151
+ }
152
+ const lib = await getImageProcessingLibrary();
153
+ const hasSharp = 'sharp' in lib && !!lib.sharp?.default;
154
+ const hasImage = 'image' in lib && !!lib.image?.Transformer;
155
+ if (!hasSharp && !hasImage) {
156
+ throw new Boom('No image processing library (sharp or @napi-rs/image) available for converting sticker to WebP.');
157
+ }
158
+ const stickerPackIdValue = packId ?? generateMessageIDV2();
159
+ const stickerData = {};
160
+ const stickerMetadata = new Array(stickers.length);
161
+ for (let i = 0; i < stickers.length; i += ITSL_CONCURRENCY_LIMIT) {
162
+ const chunkEnd = Math.min(i + ITSL_CONCURRENCY_LIMIT, stickers.length);
163
+ const promises = [];
164
+ for (let j = i; j < chunkEnd; j++) {
165
+ promises.push((async (index) => {
166
+ const sticker = stickers[index];
167
+ const { stream } = await getStream(sticker.data);
168
+ const buffer = await toBuffer(stream);
169
+ let webpBuffer;
170
+ let isAnimated = false;
171
+ // Vanz@Port (2.0.3): Lottie/WAS stickers go into the pack as-is (raw JSON is gzipped to WAS)
172
+ // instead of being fed to sharp, which cannot decode them.
173
+ const isLottie = sticker.isLottie !== undefined ? !!sticker.isLottie : isLottieBuffer(buffer);
174
+ if (isLottie) {
175
+ const wasBuffer = buffer[0] === 0x7b ? gzipSync(buffer) : buffer;
176
+ if (wasBuffer.length > 1024 * 1024) {
177
+ throw new Boom(`Sticker at index ${index} exceeds the 1MB size limit`, { statusCode: 400 });
178
+ }
179
+ const wasName = `${sha256(wasBuffer).toString('base64').replace(/\//g, '-')}.was`;
180
+ stickerData[wasName] = [new Uint8Array(wasBuffer), { level: 0 }];
181
+ stickerMetadata[index] = {
182
+ fileName: wasName,
183
+ mimetype: 'application/was',
184
+ isAnimated: true,
185
+ isLottie: true,
186
+ emojis: sticker.emojis || ['✨'],
187
+ accessibilityLabel: sticker.accessibilityLabel || '‎'
188
+ };
189
+ return;
190
+ }
191
+ if (isWebPBuffer(buffer)) {
192
+ webpBuffer = buffer;
193
+ isAnimated = isAnimatedWebP(buffer);
194
+ }
195
+ else if (hasSharp) {
196
+ webpBuffer = await lib.sharp
197
+ .default(buffer)
198
+ .resize(512, 512, { fit: 'inside' })
199
+ .webp({ quality: 80 })
200
+ .toBuffer();
201
+ }
202
+ else {
203
+ webpBuffer = await new lib.image.Transformer(buffer).resize(512, 512).webp(80);
204
+ }
205
+ if (webpBuffer.length > 1024 * 1024) {
206
+ throw new Boom(`Sticker at index ${index} exceeds the 1MB size limit`, { statusCode: 400 });
207
+ }
208
+ const hash = sha256(webpBuffer).toString('base64').replace(/\//g, '-');
209
+ const fileName = `${hash}.webp`;
210
+ stickerData[fileName] = [new Uint8Array(webpBuffer), { level: 0 }];
211
+ stickerMetadata[index] = {
212
+ fileName,
213
+ mimetype: 'image/webp',
214
+ isAnimated,
215
+ emojis: sticker.emojis || ['✨'],
216
+ accessibilityLabel: sticker.accessibilityLabel || '‎'
217
+ };
218
+ })(j));
219
+ }
220
+ await Promise.all(promises);
221
+ }
222
+ const trayIconFileName = `${stickerPackIdValue}.webp`;
223
+ const { stream: coverStream } = await getStream(cover);
224
+ const coverBuffer = await toBuffer(coverStream);
225
+ let coverWebpBuffer;
226
+ if (isWebPBuffer(coverBuffer)) {
227
+ coverWebpBuffer = coverBuffer;
228
+ }
229
+ else if (hasSharp) {
230
+ coverWebpBuffer = await lib.sharp
231
+ .default(coverBuffer)
232
+ .resize(512, 512, { fit: 'inside' })
233
+ .webp({ quality: 80 })
234
+ .toBuffer();
235
+ }
236
+ else {
237
+ coverWebpBuffer = await new lib.image.Transformer(coverBuffer).resize(512, 512).webp(80);
238
+ }
239
+ stickerData[trayIconFileName] = [new Uint8Array(coverWebpBuffer), { level: 0 }];
240
+ const zipBuffer = await new Promise((resolve, reject) => {
241
+ zip(stickerData, (error, data) => (error ? reject(error) : resolve(Buffer.from(data))));
242
+ });
243
+ const stickerPackUpload = await encryptedStream(zipBuffer, 'sticker-pack', { logger, opts: options.options });
244
+ let stickerPackUploadResult;
245
+ try {
246
+ stickerPackUploadResult = await options.upload(stickerPackUpload.encFilePath, {
247
+ fileEncSha256B64: stickerPackUpload.fileEncSha256.toString('base64'),
248
+ mediaType: 'sticker-pack',
249
+ timeoutMs: options.mediaUploadTimeoutMs
250
+ });
251
+ }
252
+ finally {
253
+ fsPromises.unlink(stickerPackUpload.encFilePath).catch(() => logger?.warn('failed to remove tmp file'));
254
+ }
255
+ const obj = {
256
+ name,
257
+ publisher,
258
+ stickerPackId: stickerPackIdValue,
259
+ packDescription: description,
260
+ stickerPackOrigin: proto.Message.StickerPackMessage.StickerPackOrigin.USER_CREATED,
261
+ stickerPackSize: zipBuffer.length,
262
+ stickers: stickerMetadata,
263
+ fileSha256: stickerPackUpload.fileSha256,
264
+ fileEncSha256: stickerPackUpload.fileEncSha256,
265
+ mediaKey: stickerPackUpload.mediaKey,
266
+ directPath: stickerPackUploadResult.directPath,
267
+ fileLength: stickerPackUpload.fileLength,
268
+ mediaKeyTimestamp: unixTimestampSeconds(),
269
+ trayIconFileName
270
+ };
271
+ try {
272
+ let thumbnailBuffer;
273
+ if (hasSharp) {
274
+ thumbnailBuffer = await lib.sharp.default(coverBuffer).resize(252, 252).jpeg().toBuffer();
275
+ }
276
+ else {
277
+ // hasImage is guaranteed here since hasSharp||hasImage is enforced above.
278
+ thumbnailBuffer = await new lib.image.Transformer(coverBuffer).resize(252, 252).jpeg();
279
+ }
280
+ if (!thumbnailBuffer || thumbnailBuffer.length === 0) {
281
+ throw new Error('Failed to generate thumbnail buffer');
282
+ }
283
+ const thumbUpload = await encryptedStream(thumbnailBuffer, 'thumbnail-sticker-pack', {
284
+ logger,
285
+ opts: options.options,
286
+ mediaKey: stickerPackUpload.mediaKey
287
+ });
288
+ let thumbUploadResult;
289
+ try {
290
+ thumbUploadResult = await options.upload(thumbUpload.encFilePath, {
291
+ fileEncSha256B64: thumbUpload.fileEncSha256.toString('base64'),
292
+ mediaType: 'thumbnail-sticker-pack',
293
+ timeoutMs: options.mediaUploadTimeoutMs
294
+ });
295
+ }
296
+ finally {
297
+ fsPromises.unlink(thumbUpload.encFilePath).catch(() => logger?.warn('failed to remove tmp file'));
298
+ }
299
+ Object.assign(obj, {
300
+ thumbnailDirectPath: thumbUploadResult.directPath,
301
+ thumbnailSha256: thumbUpload.fileSha256,
302
+ thumbnailEncSha256: thumbUpload.fileEncSha256,
303
+ thumbnailHeight: 252,
304
+ thumbnailWidth: 252,
305
+ imageDataHash: sha256(thumbnailBuffer).toString('base64')
306
+ });
307
+ }
308
+ catch (error) {
309
+ logger?.warn(`Thumbnail generation failed: ${error}`);
310
+ }
311
+ if (cacheableKey) {
312
+ logger?.debug({ cacheableKey }, 'set cache (background)');
313
+ options.mediaCache.set(cacheableKey, Buffer.from(proto.Message.StickerPackMessage.encode(obj).finish()));
314
+ }
315
+ return proto.Message.StickerPackMessage.fromObject(obj);
316
+ };
@@ -0,0 +1,2 @@
1
+ export function processContactAction(action: any, id: any, logger: any): any[];
2
+ export function emitSyncActionResults(ev: any, results: any): void;
@@ -0,0 +1,48 @@
1
+ import { proto } from '../../WAProto/index.js';
2
+ import { isLidUser, isPnUser } from '../WABinary/index.js';
3
+ /**
4
+ * Process contactAction and return events to emit.
5
+ * Pure function - no side effects.
6
+ */
7
+ export const processContactAction = (action, id, logger) => {
8
+ const results = [];
9
+ if (!id) {
10
+ logger?.warn({ hasFullName: !!action.fullName, hasLidJid: !!action.lidJid, hasPnJid: !!action.pnJid }, 'contactAction sync: missing id in index');
11
+ return results;
12
+ }
13
+ const lidJid = action.lidJid;
14
+ const idIsPn = isPnUser(id);
15
+ // PN is in index[1], not in contactAction.pnJid which is usually null
16
+ const phoneNumber = idIsPn ? id : action.pnJid || undefined;
17
+ // Always emit contacts.upsert
18
+ results.push({
19
+ event: 'contacts.upsert',
20
+ data: [
21
+ {
22
+ id,
23
+ name: action.fullName || action.firstName || action.username || undefined,
24
+ username: action.username || undefined,
25
+ lid: lidJid || undefined,
26
+ phoneNumber
27
+ }
28
+ ]
29
+ });
30
+ // Emit lid-mapping.update if we have valid LID-PN pair
31
+ if (lidJid && isLidUser(lidJid) && idIsPn) {
32
+ results.push({
33
+ event: 'lid-mapping.update',
34
+ data: { lid: lidJid, pn: id }
35
+ });
36
+ }
37
+ return results;
38
+ };
39
+ export const emitSyncActionResults = (ev, results) => {
40
+ for (const result of results) {
41
+ if (result.event === 'contacts.upsert') {
42
+ ev.emit('contacts.upsert', result.data);
43
+ }
44
+ else {
45
+ ev.emit('lid-mapping.update', result.data);
46
+ }
47
+ }
48
+ };
@@ -0,0 +1,8 @@
1
+ export function buildTagContent(participants: any, text?: string, opts1?: { [key: string]: any;
2
+ hide?: boolean;
3
+ }): {
4
+ text: string;
5
+ mentions: any;
6
+ };
7
+ export function tagAll(sock: any, jid: any, text?: string, options?: {}): Promise<any>;
8
+ export function hideTag(sock: any, jid: any, text?: string, options?: {}): Promise<any>;
@@ -0,0 +1,45 @@
1
+ // Vanz@Port (2.0.3) --- from @japofc/baileys 2.4.1 (MIT, author JAPofc / J.AP), lib/Utils/tag.js. See NOTICE.md.
2
+ /**
3
+ * JAP@Add --- tag-all / hide-tag senders for groups.
4
+ *
5
+ * ```js
6
+ * await tagAll(sock, groupJid, 'Meeting at 10!') // text + @everyone list
7
+ * await hideTag(sock, groupJid, 'Announcement 📢') // mentions everyone, shows no tags
8
+ * // or as socket methods: sock.tagAll(jid, ...), sock.hideTag(jid, ...)
9
+ * ```
10
+ */
11
+ import { Boom } from '@hapi/boom';
12
+ const participantJids = (participants) => (participants || [])
13
+ .map((p) => (typeof p === 'string' ? p : p?.id))
14
+ .filter((j) => typeof j === 'string' && j.includes('@'));
15
+ /** Build `sendMessage`-ready content mentioning every participant. */
16
+ export const buildTagContent = (participants, text = '', { hide = false } = {}) => {
17
+ const mentions = participantJids(participants);
18
+ if (!mentions.length) {
19
+ throw new Boom('tagAll: no participants to mention', { statusCode: 400 });
20
+ }
21
+ const body = hide
22
+ ? String(text || '')
23
+ : `${String(text || '')}\n${mentions.map((j) => `@${j.split('@')[0]}`).join(' ')}`.trim();
24
+ return { text: body, mentions };
25
+ };
26
+ const assertGroupSock = (sock, jid) => {
27
+ if (!sock || typeof sock.sendMessage !== 'function' || typeof sock.groupMetadata !== 'function') {
28
+ throw new Boom('tagAll(sock, ...) requires an active Baileys socket with groupMetadata', { statusCode: 400 });
29
+ }
30
+ if (typeof jid !== 'string' || !jid.endsWith('@g.us')) {
31
+ throw new Boom('tagAll only works in groups (@g.us)', { statusCode: 400 });
32
+ }
33
+ };
34
+ /** Mention all group members with a visible @list. */
35
+ export const tagAll = async (sock, jid, text = '', options = {}) => {
36
+ assertGroupSock(sock, jid);
37
+ const meta = await sock.groupMetadata(jid);
38
+ return sock.sendMessage(jid, buildTagContent(meta.participants, text), options);
39
+ };
40
+ /** Mention all group members without showing any @tags. */
41
+ export const hideTag = async (sock, jid, text = '', options = {}) => {
42
+ assertGroupSock(sock, jid);
43
+ const meta = await sock.groupMetadata(jid);
44
+ return sock.sendMessage(jid, buildTagContent(meta.participants, text, { hide: true }), options);
45
+ };
@@ -0,0 +1,29 @@
1
+ /** Read the persisted tctoken JID index and return its entries (never contains the sentinel key itself). */
2
+ export function readTcTokenIndex(keys: any): Promise<any[]>;
3
+ /** Build a SignalDataSet fragment that writes the merged index (persisted ∪ added) under the sentinel key. */
4
+ export function buildMergedTcTokenIndexWrite(keys: any, addedJids: any): Promise<{
5
+ __index: {
6
+ token: any;
7
+ };
8
+ }>;
9
+ export function isTcTokenExpired(timestamp: any): boolean;
10
+ export function shouldSendNewTcToken(senderTimestamp: any): boolean;
11
+ /** Resolve JID to LID for tctoken storage (WA Web stores under LID) */
12
+ export function resolveTcTokenJid(jid: any, getLIDForPN: any): Promise<any>;
13
+ /** Resolve target JID for issuing privacy token based on AB prop 14303 */
14
+ export function resolveIssuanceJid(jid: any, issueToLid: any, getLIDForPN: any, getPNForLID: any): Promise<any>;
15
+ export function buildTcTokenFromJid(opts1: { [key: string]: any;
16
+ authState: any;
17
+ jid: any;
18
+ baseContent?: any[];
19
+ getLIDForPN: any;
20
+ }): Promise<any[]>;
21
+ export function storeTcTokensFromIqResult(opts2: { [key: string]: any;
22
+ result: any;
23
+ fallbackJid: any;
24
+ keys: any;
25
+ getLIDForPN: any;
26
+ onNewJidStored: any;
27
+ }): Promise<void>;
28
+ /** Sentinel key under `tctoken` store holding a JSON array of tracked storage JIDs for cross-session pruning. */
29
+ export const TC_TOKEN_INDEX_KEY: "__index";