@zentrix/baileys 4.1.5

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 (200) hide show
  1. package/README.md +202 -0
  2. package/WAProto/index.js +169661 -0
  3. package/engine-requirements.js +10 -0
  4. package/lib/Defaults/baileys-version.json +3 -0
  5. package/lib/Defaults/index.d.ts +53 -0
  6. package/lib/Defaults/index.js +147 -0
  7. package/lib/Defaults/phonenumber-mcc.json +223 -0
  8. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  9. package/lib/Signal/Group/ciphertext-message.js +15 -0
  10. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  11. package/lib/Signal/Group/group-session-builder.js +64 -0
  12. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  13. package/lib/Signal/Group/group_cipher.js +96 -0
  14. package/lib/Signal/Group/index.d.ts +11 -0
  15. package/lib/Signal/Group/index.js +57 -0
  16. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  17. package/lib/Signal/Group/keyhelper.js +55 -0
  18. package/lib/Signal/Group/queue-job.d.ts +1 -0
  19. package/lib/Signal/Group/queue-job.js +57 -0
  20. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  21. package/lib/Signal/Group/sender-chain-key.js +34 -0
  22. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  23. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  24. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  25. package/lib/Signal/Group/sender-key-message.js +69 -0
  26. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  27. package/lib/Signal/Group/sender-key-name.js +51 -0
  28. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  29. package/lib/Signal/Group/sender-key-record.js +53 -0
  30. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  31. package/lib/Signal/Group/sender-key-state.js +99 -0
  32. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  33. package/lib/Signal/Group/sender-message-key.js +29 -0
  34. package/lib/Signal/libsignal.d.ts +3 -0
  35. package/lib/Signal/libsignal.js +336 -0
  36. package/lib/Signal/lid-mapping.js +293 -0
  37. package/lib/Socket/Client/abstract-socket-client.d.ts +17 -0
  38. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  39. package/lib/Socket/Client/index.d.ts +3 -0
  40. package/lib/Socket/Client/index.js +19 -0
  41. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  42. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  43. package/lib/Socket/Client/web-socket-client.d.ts +12 -0
  44. package/lib/Socket/Client/web-socket-client.js +62 -0
  45. package/lib/Socket/business.d.ts +171 -0
  46. package/lib/Socket/business.js +260 -0
  47. package/lib/Socket/chats.d.ts +267 -0
  48. package/lib/Socket/chats.js +970 -0
  49. package/lib/Socket/groups.d.ts +115 -0
  50. package/lib/Socket/groups.js +334 -0
  51. package/lib/Socket/index.d.ts +173 -0
  52. package/lib/Socket/index.js +11 -0
  53. package/lib/Socket/luxu.d.ts +268 -0
  54. package/lib/Socket/luxu.js +591 -0
  55. package/lib/Socket/messages-recv.d.ts +161 -0
  56. package/lib/Socket/messages-recv.js +1126 -0
  57. package/lib/Socket/messages-send.d.ts +149 -0
  58. package/lib/Socket/messages-send.js +913 -0
  59. package/lib/Socket/newsletter.d.ts +134 -0
  60. package/lib/Socket/newsletter.js +315 -0
  61. package/lib/Socket/registration.d.ts +267 -0
  62. package/lib/Socket/registration.js +166 -0
  63. package/lib/Socket/socket.d.ts +43 -0
  64. package/lib/Socket/socket.js +688 -0
  65. package/lib/Socket/usync.d.ts +36 -0
  66. package/lib/Socket/usync.js +70 -0
  67. package/lib/Store/index.d.ts +3 -0
  68. package/lib/Store/index.js +10 -0
  69. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  70. package/lib/Store/make-cache-manager-store.js +83 -0
  71. package/lib/Store/make-in-memory-store.d.ts +118 -0
  72. package/lib/Store/make-in-memory-store.js +427 -0
  73. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  74. package/lib/Store/make-ordered-dictionary.js +81 -0
  75. package/lib/Store/object-repository.d.ts +10 -0
  76. package/lib/Store/object-repository.js +27 -0
  77. package/lib/Types/Auth.d.ts +110 -0
  78. package/lib/Types/Auth.js +2 -0
  79. package/lib/Types/Call.d.ts +13 -0
  80. package/lib/Types/Call.js +2 -0
  81. package/lib/Types/Chat.d.ts +102 -0
  82. package/lib/Types/Chat.js +4 -0
  83. package/lib/Types/Contact.d.ts +19 -0
  84. package/lib/Types/Contact.js +2 -0
  85. package/lib/Types/Events.d.ts +157 -0
  86. package/lib/Types/Events.js +2 -0
  87. package/lib/Types/GroupMetadata.d.ts +55 -0
  88. package/lib/Types/GroupMetadata.js +2 -0
  89. package/lib/Types/Label.d.ts +35 -0
  90. package/lib/Types/Label.js +27 -0
  91. package/lib/Types/LabelAssociation.d.ts +29 -0
  92. package/lib/Types/LabelAssociation.js +9 -0
  93. package/lib/Types/Message.d.ts +273 -0
  94. package/lib/Types/Message.js +9 -0
  95. package/lib/Types/Newsletter.d.ts +103 -0
  96. package/lib/Types/Newsletter.js +38 -0
  97. package/lib/Types/Product.d.ts +78 -0
  98. package/lib/Types/Product.js +2 -0
  99. package/lib/Types/Signal.d.ts +57 -0
  100. package/lib/Types/Signal.js +2 -0
  101. package/lib/Types/Socket.d.ts +111 -0
  102. package/lib/Types/Socket.js +2 -0
  103. package/lib/Types/State.d.ts +27 -0
  104. package/lib/Types/State.js +2 -0
  105. package/lib/Types/USync.d.ts +25 -0
  106. package/lib/Types/USync.js +2 -0
  107. package/lib/Types/index.d.ts +57 -0
  108. package/lib/Types/index.js +42 -0
  109. package/lib/Utils/auth-utils.d.ts +18 -0
  110. package/lib/Utils/auth-utils.js +206 -0
  111. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  112. package/lib/Utils/baileys-event-stream.js +63 -0
  113. package/lib/Utils/business.d.ts +22 -0
  114. package/lib/Utils/business.js +234 -0
  115. package/lib/Utils/chat-utils.d.ts +71 -0
  116. package/lib/Utils/chat-utils.js +729 -0
  117. package/lib/Utils/crypto.d.ts +41 -0
  118. package/lib/Utils/crypto.js +151 -0
  119. package/lib/Utils/decode-wa-message.d.ts +19 -0
  120. package/lib/Utils/decode-wa-message.js +243 -0
  121. package/lib/Utils/event-buffer.d.ts +35 -0
  122. package/lib/Utils/event-buffer.js +514 -0
  123. package/lib/Utils/generics.d.ts +92 -0
  124. package/lib/Utils/generics.js +423 -0
  125. package/lib/Utils/history.d.ts +15 -0
  126. package/lib/Utils/history.js +96 -0
  127. package/lib/Utils/identity-change-handler.js +68 -0
  128. package/lib/Utils/index.d.ts +17 -0
  129. package/lib/Utils/index.js +41 -0
  130. package/lib/Utils/link-preview.d.ts +21 -0
  131. package/lib/Utils/link-preview.js +93 -0
  132. package/lib/Utils/logger.d.ts +4 -0
  133. package/lib/Utils/logger.js +7 -0
  134. package/lib/Utils/lt-hash.d.ts +12 -0
  135. package/lib/Utils/lt-hash.js +51 -0
  136. package/lib/Utils/make-mutex.d.ts +7 -0
  137. package/lib/Utils/make-mutex.js +43 -0
  138. package/lib/Utils/message-retry-manager.js +192 -0
  139. package/lib/Utils/messages-media.d.ts +116 -0
  140. package/lib/Utils/messages-media.js +819 -0
  141. package/lib/Utils/messages.d.ts +77 -0
  142. package/lib/Utils/messages.js +816 -0
  143. package/lib/Utils/noise-handler.d.ts +21 -0
  144. package/lib/Utils/noise-handler.js +155 -0
  145. package/lib/Utils/offline-node-processor.js +55 -0
  146. package/lib/Utils/pre-key-manager.js +95 -0
  147. package/lib/Utils/process-message.d.ts +41 -0
  148. package/lib/Utils/process-message.js +321 -0
  149. package/lib/Utils/signal.d.ts +32 -0
  150. package/lib/Utils/signal.js +153 -0
  151. package/lib/Utils/stanza-ack.js +47 -0
  152. package/lib/Utils/tc-token-utils.js +173 -0
  153. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  154. package/lib/Utils/use-multi-file-auth-state.js +119 -0
  155. package/lib/Utils/validate-connection.d.ts +11 -0
  156. package/lib/Utils/validate-connection.js +229 -0
  157. package/lib/WABinary/constants.d.ts +30 -0
  158. package/lib/WABinary/constants.js +40 -0
  159. package/lib/WABinary/decode.d.ts +7 -0
  160. package/lib/WABinary/decode.js +252 -0
  161. package/lib/WABinary/encode.d.ts +3 -0
  162. package/lib/WABinary/encode.js +265 -0
  163. package/lib/WABinary/generic-utils.d.ts +17 -0
  164. package/lib/WABinary/generic-utils.js +198 -0
  165. package/lib/WABinary/index.d.ts +5 -0
  166. package/lib/WABinary/index.js +21 -0
  167. package/lib/WABinary/jid-utils.d.ts +31 -0
  168. package/lib/WABinary/jid-utils.js +138 -0
  169. package/lib/WABinary/types.d.ts +18 -0
  170. package/lib/WABinary/types.js +2 -0
  171. package/lib/WAM/BinaryInfo.d.ts +17 -0
  172. package/lib/WAM/BinaryInfo.js +13 -0
  173. package/lib/WAM/constants.d.ts +38 -0
  174. package/lib/WAM/constants.js +15350 -0
  175. package/lib/WAM/encode.d.ts +3 -0
  176. package/lib/WAM/encode.js +155 -0
  177. package/lib/WAM/index.d.ts +3 -0
  178. package/lib/WAM/index.js +19 -0
  179. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  180. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  181. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  182. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  183. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  184. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  185. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  186. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  187. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  188. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  189. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  190. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  191. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  192. package/lib/WAUSync/Protocols/index.js +20 -0
  193. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  194. package/lib/WAUSync/USyncQuery.js +89 -0
  195. package/lib/WAUSync/USyncUser.d.ts +12 -0
  196. package/lib/WAUSync/USyncUser.js +26 -0
  197. package/lib/WAUSync/index.js +19 -0
  198. package/lib/index.d.ts +12 -0
  199. package/lib/index.js +35 -0
  200. package/package.json +108 -0
package/README.md ADDED
@@ -0,0 +1,202 @@
1
+ <div align="center">
2
+
3
+ ```
4
+ ███████╗███████╗███╗ ██╗████████╗██████╗ ██╗██╗ ██╗
5
+ ╚══███╔╝██╔════╝████╗ ██║╚══██╔══╝██╔══██╗██║╚██╗██╔╝
6
+ ███╔╝ █████╗ ██╔██╗ ██║ ██║ ██████╔╝██║ ╚███╔╝
7
+ ███╔╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══██╗██║ ██╔██╗
8
+ ███████╗███████╗██║ ╚████║ ██║ ██║ ██║██║██╔╝ ██╗
9
+ ╚══════╝╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝
10
+ ```
11
+
12
+ ### ⚡ BAILEYS — Multi-Device WhatsApp API
13
+
14
+ [![Version](https://img.shields.io/badge/version-4.1.3-blue?style=for-the-badge&logo=npm)](https://github.com/ZENTRIX-TECH1/zentrix-baileys)
15
+ [![License](https://img.shields.io/badge/license-MIT-green?style=for-the-badge)](LICENSE)
16
+ [![Node](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen?style=for-the-badge&logo=node.js)](https://nodejs.org)
17
+ [![Stars](https://img.shields.io/github/stars/ZENTRIX-TECH1/zentrix-baileys?style=for-the-badge&logo=github)](https://github.com/ZENTRIX-TECH1/zentrix-baileys/stargazers)
18
+
19
+ > **A heavily patched & improved WhatsApp Multi-Device API**
20
+ > Built on top of Baileys — enhanced with critical bug fixes, stability improvements, and extended features.
21
+
22
+ </div>
23
+
24
+ ---
25
+
26
+ ## 📦 Installation
27
+
28
+ Pick your preferred install method:
29
+
30
+ ```json
31
+ "@zentrix/baileys": "latest"
32
+ ```
33
+ ```json
34
+ "@zentrix/baileys": "^4.1.3"
35
+ ```
36
+ ```json
37
+ "baileys": "npm:@zentrix/baileys@latest"
38
+ ```
39
+ ```json
40
+ "whiskeysockets/baileys": "npm:@zentrix/baileys@latest"
41
+ ```
42
+
43
+ Then install:
44
+ ```bash
45
+ npm install
46
+ # or
47
+ yarn install
48
+ ```
49
+
50
+ **Import in your project:**
51
+ ```js
52
+ // CommonJS
53
+ const { makeWASocket } = require('@zentrix/baileys')
54
+
55
+ // ESM
56
+ import { makeWASocket } from '@zentrix/baileys'
57
+ ```
58
+
59
+ ---
60
+
61
+ ## 🔧 Drop-in Replacement
62
+
63
+ Already using `@whiskeysockets/baileys`? No code changes needed — just alias it:
64
+
65
+ ```json
66
+ "dependencies": {
67
+ "@whiskeysockets/baileys": "npm:@zentrix/baileys@latest"
68
+ }
69
+ ```
70
+
71
+ All your existing imports will resolve to ZENTRIX Baileys automatically. ✅
72
+
73
+ ---
74
+
75
+ ## 🐛 Bugs Fixed
76
+
77
+ ### 1. 🔁 Bad MAC Retry Loops
78
+ **Symptom:** Messages fail to decrypt, bot gets stuck in an infinite retry loop.
79
+
80
+ **Fix:** Replaced plain `Map` with a full `MessageRetryManager` class that:
81
+ - Detects MAC errors via `RetryReason` enum and forces **immediate session recreation**
82
+ - Tracks retry counts per message with LRU expiry (15-min TTL)
83
+ - Prevents session recreation hammering with a 1-hour cooldown
84
+ - Supports phone-based resend fallback with cancellable timeouts
85
+
86
+ ---
87
+
88
+ ### 2. 🔄 Permanent Bad MAC After Contact Re-registers
89
+ **Symptom:** After a contact reinstalls WhatsApp, every message from them fails to decrypt permanently.
90
+
91
+ **Fix:** Added `handleIdentityChange()` which:
92
+ - Listens for identity change push notifications
93
+ - Debounces rapid identity changes per JID
94
+ - Forces Signal session teardown and rebuild via `assertSessions(force=true)`
95
+
96
+ ---
97
+
98
+ ### 3. ⚡ Pre-key Race Conditions
99
+ **Symptom:** Intermittent decryption failures under high message load.
100
+
101
+ **Fix:** Added `PreKeyManager` which:
102
+ - Creates a separate `PQueue` (concurrency: 1) per key type
103
+ - Serialises all reads/writes, eliminating race conditions
104
+
105
+ ---
106
+
107
+ ### 4. 🧊 Event Loop Blocking on Reconnect
108
+ **Symptom:** Bot becomes unresponsive for seconds after reconnecting with a large backlog.
109
+
110
+ **Fix:** Added `makeOfflineNodeProcessor()` which:
111
+ - Yields to the event loop every 10 nodes
112
+ - Catches per-node errors without crashing the processing loop
113
+
114
+ ---
115
+
116
+ ### 5. 📨 Incorrect ACK Stanza Construction
117
+ **Symptom:** Some ACKs were missing the `from` field, causing server-side routing issues.
118
+
119
+ **Fix:** Added `buildAckStanza()` — always includes correct fields matching WA Web behaviour.
120
+
121
+ ---
122
+
123
+ ### 6. 🪪 LID-Addressed Messages Failing to Decrypt
124
+ **Symptom:** Messages from LID-format JIDs silently fail to decrypt.
125
+
126
+ **Fix:** Added `LIDMappingStore` with:
127
+ - Bidirectional LID ↔ Phone Number mapping
128
+ - LRU in-memory cache (3-day TTL)
129
+ - In-flight request deduplication
130
+
131
+ ---
132
+
133
+ ### 7. ❌ Error 463 on 1-to-1 Message Sends
134
+ **Symptom:** Occasional `463` error — message never delivered.
135
+
136
+ **Fix:** Full tctoken system — reads, stores, and attaches privacy tokens to outgoing messages.
137
+
138
+ ---
139
+
140
+ ## ✨ New Exports
141
+
142
+ | Export | Description |
143
+ |--------|-------------|
144
+ | `isPnUser(jid)` | Checks `@s.whatsapp.net` |
145
+ | `isHostedPnUser(jid)` | Checks `@hosted` server |
146
+ | `isHostedLidUser(jid)` | Checks `@hosted.lid` server |
147
+ | `isJidMetaAI(jid)` | Checks `@bot` server (Meta AI) |
148
+ | `isJidBot(jid)` | Checks bot phone number pattern |
149
+ | `isJidNewsletter(jid)` | Fixed spelling (old alias kept) |
150
+ | `WAJIDDomains` | Enum: `WHATSAPP=0, LID=1, HOSTED=128, HOSTED_LID=129` |
151
+ | `META_AI_JID` | Constant: `'13135550002@c.us'` |
152
+
153
+ ---
154
+
155
+ ## 📁 File Structure
156
+
157
+ ```
158
+ zentrix-baileys/
159
+ ├── lib/
160
+ │ ├── Utils/
161
+ │ │ ├── index.js ← Updated barrel
162
+ │ │ ├── message-retry-manager.js ← NEW
163
+ │ │ ├── identity-change-handler.js ← NEW
164
+ │ │ ├── pre-key-manager.js ← NEW
165
+ │ │ ├── offline-node-processor.js ← NEW
166
+ │ │ ├── stanza-ack.js ← NEW
167
+ │ │ └── tc-token-utils.js ← NEW
168
+ │ ├── Signal/
169
+ │ │ └── lid-mapping.js ← NEW
170
+ │ └── WABinary/
171
+ │ └── jid-utils.js ← Updated
172
+ ```
173
+
174
+ ---
175
+
176
+ ## 🔗 New Dependencies
177
+
178
+ ```bash
179
+ npm install lru-cache p-queue
180
+ # or
181
+ yarn add lru-cache p-queue
182
+ ```
183
+
184
+ > `lru-cache` may already be present in your `package.json` — check before installing.
185
+
186
+ ---
187
+
188
+ ## 🔗 Links
189
+
190
+ - 📁 **Repository:** [github.com/ZENTRIX-TECH1/zentrix-baileys](https://github.com/ZENTRIX-TECH1/zentrix-baileys)
191
+ - 🐛 **Issues:** [github.com/ZENTRIX-TECH1/zentrix-baileys/issues](https://github.com/ZENTRIX-TECH1/zentrix-baileys/issues)
192
+ - 🌐 **Upstream:** [WhiskeySockets/Baileys](https://github.com/WhiskeySockets/Baileys)
193
+
194
+ ---
195
+
196
+ <div align="center">
197
+
198
+ **Thanks for using ZENTRIX Baileys! 🙏**
199
+
200
+ *Built with 💙 by the Zentrix Team*
201
+
202
+ </div>