supunmd-bail 2.0.2 → 2.1.3

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 (216) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/WAProto/index.js +130529 -45236
  4. package/engine-requirements.js +1 -1
  5. package/lib/Defaults/baileys-version.json +1 -1
  6. package/lib/Defaults/index.d.ts +9 -18
  7. package/lib/Defaults/index.js +136 -104
  8. package/lib/Defaults/phonenumber-mcc.json +223 -0
  9. package/lib/Signal/Group/ciphertext-message.d.ts +0 -1
  10. package/lib/Signal/Group/ciphertext-message.js +5 -2
  11. package/lib/Signal/Group/group-session-builder.d.ts +3 -4
  12. package/lib/Signal/Group/group-session-builder.js +41 -7
  13. package/lib/Signal/Group/group_cipher.d.ts +4 -4
  14. package/lib/Signal/Group/group_cipher.js +51 -37
  15. package/lib/Signal/Group/index.d.ts +11 -12
  16. package/lib/Signal/Group/index.js +57 -12
  17. package/lib/Signal/Group/keyhelper.d.ts +1 -2
  18. package/lib/Signal/Group/keyhelper.js +44 -7
  19. package/lib/Signal/Group/queue-job.d.ts +0 -1
  20. package/lib/Signal/Group/queue-job.js +5 -2
  21. package/lib/Signal/Group/sender-chain-key.d.ts +2 -3
  22. package/lib/Signal/Group/sender-chain-key.js +15 -7
  23. package/lib/Signal/Group/sender-key-distribution-message.d.ts +1 -2
  24. package/lib/Signal/Group/sender-key-distribution-message.js +11 -8
  25. package/lib/Signal/Group/sender-key-message.d.ts +1 -2
  26. package/lib/Signal/Group/sender-key-message.js +12 -9
  27. package/lib/Signal/Group/sender-key-name.d.ts +0 -1
  28. package/lib/Signal/Group/sender-key-name.js +5 -2
  29. package/lib/Signal/Group/sender-key-record.d.ts +2 -3
  30. package/lib/Signal/Group/sender-key-record.js +21 -9
  31. package/lib/Signal/Group/sender-key-state.d.ts +6 -7
  32. package/lib/Signal/Group/sender-key-state.js +42 -27
  33. package/lib/Signal/Group/sender-message-key.d.ts +0 -1
  34. package/lib/Signal/Group/sender-message-key.js +7 -4
  35. package/lib/Signal/libsignal.d.ts +3 -5
  36. package/lib/Signal/libsignal.js +90 -258
  37. package/lib/Socket/Client/{types.d.ts → abstract-socket-client.d.ts} +3 -2
  38. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  39. package/lib/Socket/Client/index.d.ts +3 -3
  40. package/lib/Socket/Client/index.js +19 -3
  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/{websocket.d.ts → web-socket-client.d.ts} +1 -2
  44. package/lib/Socket/Client/web-socket-client.js +62 -0
  45. package/lib/Socket/business.d.ts +108 -125
  46. package/lib/Socket/business.js +43 -159
  47. package/lib/Socket/chats.d.ts +239 -70
  48. package/lib/Socket/chats.js +384 -363
  49. package/lib/Socket/dugong.d.ts +254 -0
  50. package/lib/Socket/dugong.js +484 -0
  51. package/lib/Socket/groups.d.ts +56 -78
  52. package/lib/Socket/groups.js +96 -106
  53. package/lib/Socket/index.d.ts +115 -173
  54. package/lib/Socket/index.js +10 -17
  55. package/lib/Socket/messages-recv.d.ts +79 -91
  56. package/lib/Socket/messages-recv.js +521 -639
  57. package/lib/Socket/messages-send.d.ts +91 -111
  58. package/lib/Socket/messages-send.js +438 -599
  59. package/lib/Socket/newsletter.d.ts +84 -97
  60. package/lib/Socket/newsletter.js +1 -181
  61. package/lib/Socket/registration.d.ts +267 -0
  62. package/lib/Socket/registration.js +166 -0
  63. package/lib/Socket/socket.d.ts +18 -26
  64. package/lib/Socket/socket.js +230 -448
  65. package/lib/Socket/usync.d.ts +16 -17
  66. package/lib/Socket/usync.js +26 -19
  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 +12 -13
  78. package/lib/Types/Auth.js +2 -2
  79. package/lib/Types/Call.d.ts +1 -2
  80. package/lib/Types/Call.js +2 -2
  81. package/lib/Types/Chat.d.ts +13 -34
  82. package/lib/Types/Chat.js +4 -8
  83. package/lib/Types/Contact.d.ts +1 -6
  84. package/lib/Types/Contact.js +2 -2
  85. package/lib/Types/Events.d.ts +15 -60
  86. package/lib/Types/Events.js +2 -2
  87. package/lib/Types/GroupMetadata.d.ts +5 -17
  88. package/lib/Types/GroupMetadata.js +2 -2
  89. package/lib/Types/Label.d.ts +0 -12
  90. package/lib/Types/Label.js +5 -3
  91. package/lib/Types/LabelAssociation.d.ts +0 -1
  92. package/lib/Types/LabelAssociation.js +5 -3
  93. package/lib/Types/Message.d.ts +54 -84
  94. package/lib/Types/Message.js +9 -11
  95. package/lib/Types/Newsletter.d.ts +98 -130
  96. package/lib/Types/Newsletter.js +38 -31
  97. package/lib/Types/Product.d.ts +1 -2
  98. package/lib/Types/Product.js +2 -2
  99. package/lib/Types/Signal.d.ts +1 -20
  100. package/lib/Types/Signal.js +2 -2
  101. package/lib/Types/Socket.d.ts +25 -47
  102. package/lib/Types/Socket.js +2 -3
  103. package/lib/Types/State.d.ts +2 -14
  104. package/lib/Types/State.js +2 -13
  105. package/lib/Types/USync.d.ts +2 -3
  106. package/lib/Types/USync.js +2 -2
  107. package/lib/Types/index.d.ts +14 -22
  108. package/lib/Types/index.js +31 -15
  109. package/lib/Utils/auth-utils.d.ts +6 -7
  110. package/lib/Utils/auth-utils.js +148 -199
  111. package/lib/Utils/baileys-event-stream.d.ts +1 -2
  112. package/lib/Utils/baileys-event-stream.js +22 -15
  113. package/lib/Utils/business.d.ts +2 -3
  114. package/lib/Utils/business.js +69 -66
  115. package/lib/Utils/chat-utils.d.ts +22 -21
  116. package/lib/Utils/chat-utils.js +226 -260
  117. package/lib/Utils/crypto.d.ts +19 -19
  118. package/lib/Utils/crypto.js +86 -77
  119. package/lib/Utils/decode-wa-message.d.ts +8 -37
  120. package/lib/Utils/decode-wa-message.js +83 -164
  121. package/lib/Utils/event-buffer.d.ts +8 -7
  122. package/lib/Utils/event-buffer.js +76 -110
  123. package/lib/Utils/generics.d.ts +29 -27
  124. package/lib/Utils/generics.js +210 -168
  125. package/lib/Utils/history.d.ts +8 -12
  126. package/lib/Utils/history.js +46 -34
  127. package/lib/Utils/index.d.ts +17 -20
  128. package/lib/Utils/index.js +33 -20
  129. package/lib/Utils/link-preview.d.ts +5 -5
  130. package/lib/Utils/link-preview.js +22 -14
  131. package/lib/Utils/logger.d.ts +3 -11
  132. package/lib/Utils/logger.js +7 -3
  133. package/lib/Utils/lt-hash.d.ts +8 -9
  134. package/lib/Utils/lt-hash.js +28 -25
  135. package/lib/Utils/make-mutex.d.ts +2 -3
  136. package/lib/Utils/make-mutex.js +10 -7
  137. package/lib/Utils/messages-media.d.ts +44 -42
  138. package/lib/Utils/messages-media.js +475 -319
  139. package/lib/Utils/messages.d.ts +18 -17
  140. package/lib/Utils/messages.js +259 -383
  141. package/lib/Utils/noise-handler.d.ts +15 -14
  142. package/lib/Utils/noise-handler.js +38 -30
  143. package/lib/Utils/process-message.d.ts +13 -14
  144. package/lib/Utils/process-message.js +147 -239
  145. package/lib/Utils/signal.d.ts +5 -7
  146. package/lib/Utils/signal.js +72 -78
  147. package/lib/Utils/use-multi-file-auth-state.d.ts +2 -2
  148. package/lib/Utils/use-multi-file-auth-state.js +27 -29
  149. package/lib/Utils/validate-connection.d.ts +7 -7
  150. package/lib/Utils/validate-connection.js +106 -72
  151. package/lib/WABinary/constants.d.ts +27 -25
  152. package/lib/WABinary/constants.js +20 -1281
  153. package/lib/WABinary/decode.d.ts +5 -5
  154. package/lib/WABinary/decode.js +42 -28
  155. package/lib/WABinary/encode.d.ts +3 -3
  156. package/lib/WABinary/encode.js +154 -105
  157. package/lib/WABinary/generic-utils.d.ts +7 -5
  158. package/lib/WABinary/generic-utils.js +63 -56
  159. package/lib/WABinary/index.d.ts +5 -6
  160. package/lib/WABinary/index.js +21 -6
  161. package/lib/WABinary/jid-utils.d.ts +8 -25
  162. package/lib/WABinary/jid-utils.js +40 -74
  163. package/lib/WABinary/types.d.ts +1 -2
  164. package/lib/WABinary/types.js +2 -2
  165. package/lib/WAM/BinaryInfo.d.ts +11 -3
  166. package/lib/WAM/BinaryInfo.js +5 -2
  167. package/lib/WAM/constants.d.ts +3 -5
  168. package/lib/WAM/constants.js +11958 -19461
  169. package/lib/WAM/encode.d.ts +3 -3
  170. package/lib/WAM/encode.js +22 -17
  171. package/lib/WAM/index.d.ts +3 -4
  172. package/lib/WAM/index.js +19 -4
  173. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +3 -4
  174. package/lib/WAUSync/Protocols/USyncContactProtocol.js +11 -8
  175. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +2 -3
  176. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +14 -11
  177. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +2 -3
  178. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +12 -9
  179. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +2 -3
  180. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +13 -9
  181. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +3 -4
  182. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +22 -20
  183. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +3 -5
  184. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +8 -13
  185. package/lib/WAUSync/Protocols/index.d.ts +4 -5
  186. package/lib/WAUSync/Protocols/index.js +20 -5
  187. package/lib/WAUSync/USyncQuery.d.ts +4 -5
  188. package/lib/WAUSync/USyncQuery.js +35 -40
  189. package/lib/WAUSync/USyncUser.d.ts +5 -6
  190. package/lib/WAUSync/USyncUser.js +5 -2
  191. package/lib/WAUSync/index.d.ts +3 -4
  192. package/lib/WAUSync/index.js +19 -4
  193. package/lib/index.d.ts +9 -19
  194. package/lib/index.js +1 -36
  195. package/package.json +109 -103
  196. package/WAProto/GenerateStatics.sh +0 -3
  197. package/WAProto/WAProto.proto +0 -5519
  198. package/WAProto/fix-imports.js +0 -29
  199. package/WAProto/index.d.ts +0 -11969
  200. package/lib/Signal/lid-mapping.d.ts +0 -23
  201. package/lib/Signal/lid-mapping.js +0 -171
  202. package/lib/Socket/Client/types.js +0 -11
  203. package/lib/Socket/Client/websocket.js +0 -50
  204. package/lib/Socket/communities.d.ts +0 -244
  205. package/lib/Socket/communities.js +0 -431
  206. package/lib/Socket/mex.d.ts +0 -3
  207. package/lib/Socket/mex.js +0 -42
  208. package/lib/Types/Bussines.d.ts +0 -25
  209. package/lib/Types/Bussines.js +0 -2
  210. package/lib/Utils/browser-utils.d.ts +0 -4
  211. package/lib/Utils/browser-utils.js +0 -28
  212. package/lib/Utils/message-retry-manager.d.ts +0 -82
  213. package/lib/Utils/message-retry-manager.js +0 -149
  214. package/lib/Utils/pre-key-manager.d.ts +0 -28
  215. package/lib/Utils/pre-key-manager.js +0 -106
  216. /package/lib/{supun → supunmd} +0 -0
@@ -1,149 +0,0 @@
1
- import { LRUCache } from 'lru-cache';
2
- /** Number of sent messages to cache in memory for handling retry receipts */
3
- const RECENT_MESSAGES_SIZE = 512;
4
- /** Timeout for session recreation - 1 hour */
5
- const RECREATE_SESSION_TIMEOUT = 60 * 60 * 1000; // 1 hour in milliseconds
6
- const PHONE_REQUEST_DELAY = 3000;
7
- export class MessageRetryManager {
8
- constructor(logger, maxMsgRetryCount) {
9
- this.logger = logger;
10
- this.recentMessagesMap = new LRUCache({
11
- max: RECENT_MESSAGES_SIZE
12
- });
13
- this.sessionRecreateHistory = new LRUCache({
14
- ttl: RECREATE_SESSION_TIMEOUT * 2,
15
- ttlAutopurge: true
16
- });
17
- this.retryCounters = new LRUCache({
18
- ttl: 15 * 60 * 1000,
19
- ttlAutopurge: true,
20
- updateAgeOnGet: true
21
- }); // 15 minutes TTL
22
- this.pendingPhoneRequests = {};
23
- this.maxMsgRetryCount = 5;
24
- this.statistics = {
25
- totalRetries: 0,
26
- successfulRetries: 0,
27
- failedRetries: 0,
28
- mediaRetries: 0,
29
- sessionRecreations: 0,
30
- phoneRequests: 0
31
- };
32
- this.maxMsgRetryCount = maxMsgRetryCount;
33
- }
34
- /**
35
- * Add a recent message to the cache for retry handling
36
- */
37
- addRecentMessage(to, id, message) {
38
- const key = { to, id };
39
- const keyStr = this.keyToString(key);
40
- // Add new message
41
- this.recentMessagesMap.set(keyStr, {
42
- message,
43
- timestamp: Date.now()
44
- });
45
- this.logger.debug(`Added message to retry cache: ${to}/${id}`);
46
- }
47
- /**
48
- * Get a recent message from the cache
49
- */
50
- getRecentMessage(to, id) {
51
- const key = { to, id };
52
- const keyStr = this.keyToString(key);
53
- return this.recentMessagesMap.get(keyStr);
54
- }
55
- /**
56
- * Check if a session should be recreated based on retry count and history
57
- */
58
- shouldRecreateSession(jid, retryCount, hasSession) {
59
- // If we don't have a session, always recreate
60
- if (!hasSession) {
61
- this.sessionRecreateHistory.set(jid, Date.now());
62
- this.statistics.sessionRecreations++;
63
- return {
64
- reason: "we don't have a Signal session with them",
65
- recreate: true
66
- };
67
- }
68
- // Only consider recreation if retry count > 1
69
- if (retryCount < 2) {
70
- return { reason: '', recreate: false };
71
- }
72
- const now = Date.now();
73
- const prevTime = this.sessionRecreateHistory.get(jid);
74
- // If no previous recreation or it's been more than an hour
75
- if (!prevTime || now - prevTime > RECREATE_SESSION_TIMEOUT) {
76
- this.sessionRecreateHistory.set(jid, now);
77
- this.statistics.sessionRecreations++;
78
- return {
79
- reason: 'retry count > 1 and over an hour since last recreation',
80
- recreate: true
81
- };
82
- }
83
- return { reason: '', recreate: false };
84
- }
85
- /**
86
- * Increment retry counter for a message
87
- */
88
- incrementRetryCount(messageId) {
89
- this.retryCounters.set(messageId, (this.retryCounters.get(messageId) || 0) + 1);
90
- this.statistics.totalRetries++;
91
- return this.retryCounters.get(messageId);
92
- }
93
- /**
94
- * Get retry count for a message
95
- */
96
- getRetryCount(messageId) {
97
- return this.retryCounters.get(messageId) || 0;
98
- }
99
- /**
100
- * Check if message has exceeded maximum retry attempts
101
- */
102
- hasExceededMaxRetries(messageId) {
103
- return this.getRetryCount(messageId) >= this.maxMsgRetryCount;
104
- }
105
- /**
106
- * Mark retry as successful
107
- */
108
- markRetrySuccess(messageId) {
109
- this.statistics.successfulRetries++;
110
- // Clean up retry counter for successful message
111
- this.retryCounters.delete(messageId);
112
- this.cancelPendingPhoneRequest(messageId);
113
- }
114
- /**
115
- * Mark retry as failed
116
- */
117
- markRetryFailed(messageId) {
118
- this.statistics.failedRetries++;
119
- this.retryCounters.delete(messageId);
120
- }
121
- /**
122
- * Schedule a phone request with delay
123
- */
124
- schedulePhoneRequest(messageId, callback, delay = PHONE_REQUEST_DELAY) {
125
- // Cancel any existing request for this message
126
- this.cancelPendingPhoneRequest(messageId);
127
- this.pendingPhoneRequests[messageId] = setTimeout(() => {
128
- delete this.pendingPhoneRequests[messageId];
129
- this.statistics.phoneRequests++;
130
- callback();
131
- }, delay);
132
- this.logger.debug(`Scheduled phone request for message ${messageId} with ${delay}ms delay`);
133
- }
134
- /**
135
- * Cancel pending phone request
136
- */
137
- cancelPendingPhoneRequest(messageId) {
138
- const timeout = this.pendingPhoneRequests[messageId];
139
- if (timeout) {
140
- clearTimeout(timeout);
141
- delete this.pendingPhoneRequests[messageId];
142
- this.logger.debug(`Cancelled pending phone request for message ${messageId}`);
143
- }
144
- }
145
- keyToString(key) {
146
- return `${key.to}:${key.id}`;
147
- }
148
- }
149
- //# sourceMappingURL=message-retry-manager.js.map
@@ -1,28 +0,0 @@
1
- import type { SignalDataSet, SignalDataTypeMap, SignalKeyStore } from '../Types/index.js';
2
- import type { ILogger } from './logger.js';
3
- /**
4
- * Manages pre-key operations with proper concurrency control
5
- */
6
- export declare class PreKeyManager {
7
- private readonly store;
8
- private readonly logger;
9
- private readonly queues;
10
- constructor(store: SignalKeyStore, logger: ILogger);
11
- /**
12
- * Get or create a queue for a specific key type
13
- */
14
- private getQueue;
15
- /**
16
- * Process pre-key operations (updates and deletions)
17
- */
18
- processOperations(data: SignalDataSet, keyType: keyof SignalDataTypeMap, transactionCache: SignalDataSet, mutations: SignalDataSet, isInTransaction: boolean): Promise<void>;
19
- /**
20
- * Process deletions with validation
21
- */
22
- private processDeletions;
23
- /**
24
- * Validate and process pre-key deletions outside transactions
25
- */
26
- validateDeletions(data: SignalDataSet, keyType: keyof SignalDataTypeMap): Promise<void>;
27
- }
28
- //# sourceMappingURL=pre-key-manager.d.ts.map
@@ -1,106 +0,0 @@
1
- import PQueue from 'p-queue';
2
- /**
3
- * Manages pre-key operations with proper concurrency control
4
- */
5
- export class PreKeyManager {
6
- constructor(store, logger) {
7
- this.store = store;
8
- this.logger = logger;
9
- this.queues = new Map();
10
- }
11
- /**
12
- * Get or create a queue for a specific key type
13
- */
14
- getQueue(keyType) {
15
- if (!this.queues.has(keyType)) {
16
- this.queues.set(keyType, new PQueue({ concurrency: 1 }));
17
- }
18
- return this.queues.get(keyType);
19
- }
20
- /**
21
- * Process pre-key operations (updates and deletions)
22
- */
23
- async processOperations(data, keyType, transactionCache, mutations, isInTransaction) {
24
- const keyData = data[keyType];
25
- if (!keyData)
26
- return;
27
- return this.getQueue(keyType).add(async () => {
28
- // Ensure structures exist
29
- transactionCache[keyType] = transactionCache[keyType] || {};
30
- mutations[keyType] = mutations[keyType] || {};
31
- // Separate deletions from updates
32
- const deletions = [];
33
- const updates = {};
34
- for (const keyId in keyData) {
35
- if (keyData[keyId] === null) {
36
- deletions.push(keyId);
37
- }
38
- else {
39
- updates[keyId] = keyData[keyId];
40
- }
41
- }
42
- // Process updates (no validation needed)
43
- if (Object.keys(updates).length > 0) {
44
- Object.assign(transactionCache[keyType], updates);
45
- Object.assign(mutations[keyType], updates);
46
- }
47
- // Process deletions with validation
48
- if (deletions.length > 0) {
49
- await this.processDeletions(keyType, deletions, transactionCache, mutations, isInTransaction);
50
- }
51
- });
52
- }
53
- /**
54
- * Process deletions with validation
55
- */
56
- async processDeletions(keyType, ids, transactionCache, mutations, isInTransaction) {
57
- if (isInTransaction) {
58
- // In transaction, only allow deletion if key exists in cache
59
- for (const keyId of ids) {
60
- if (transactionCache[keyType]?.[keyId]) {
61
- transactionCache[keyType][keyId] = null;
62
- mutations[keyType][keyId] = null;
63
- }
64
- else {
65
- this.logger.warn(`Skipping deletion of non-existent ${keyType} in transaction: ${keyId}`);
66
- }
67
- }
68
- }
69
- else {
70
- // Outside transaction, validate against store
71
- const existingKeys = await this.store.get(keyType, ids);
72
- for (const keyId of ids) {
73
- if (existingKeys[keyId]) {
74
- transactionCache[keyType][keyId] = null;
75
- mutations[keyType][keyId] = null;
76
- }
77
- else {
78
- this.logger.warn(`Skipping deletion of non-existent ${keyType}: ${keyId}`);
79
- }
80
- }
81
- }
82
- }
83
- /**
84
- * Validate and process pre-key deletions outside transactions
85
- */
86
- async validateDeletions(data, keyType) {
87
- const keyData = data[keyType];
88
- if (!keyData)
89
- return;
90
- return this.getQueue(keyType).add(async () => {
91
- // Find all deletion requests
92
- const deletionIds = Object.keys(keyData).filter(id => keyData[id] === null);
93
- if (deletionIds.length === 0)
94
- return;
95
- // Validate deletions
96
- const existingKeys = await this.store.get(keyType, deletionIds);
97
- for (const keyId of deletionIds) {
98
- if (!existingKeys[keyId]) {
99
- this.logger.warn(`Skipping deletion of non-existent ${keyType}: ${keyId}`);
100
- delete data[keyType][keyId];
101
- }
102
- }
103
- });
104
- }
105
- }
106
- //# sourceMappingURL=pre-key-manager.js.map
File without changes