gifted-baileys 1.5.6 → 1.5.7

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 (252) hide show
  1. package/README.md +9 -0
  2. package/WAProto/WAProto.proto +969 -88
  3. package/WAProto/index.d.ts +13199 -1260
  4. package/WAProto/index.js +124901 -74525
  5. package/lib/Defaults/baileys-version.json +3 -0
  6. package/lib/Defaults/index.d.ts +284 -0
  7. package/{src → lib}/Defaults/index.js +7 -14
  8. package/lib/Signal/libsignal.d.ts +3 -0
  9. package/lib/Signal/libsignal.js +161 -0
  10. package/lib/Socket/Client/abstract-socket-client.d.ts +15 -0
  11. package/lib/Socket/Client/index.d.ts +2 -0
  12. package/{src → lib}/Socket/Client/index.js +2 -3
  13. package/lib/Socket/Client/mobile-socket-client.d.ts +12 -0
  14. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  15. package/lib/Socket/Client/types.d.ts +17 -0
  16. package/lib/Socket/Client/types.js +13 -0
  17. package/lib/Socket/Client/websocket.d.ts +12 -0
  18. package/lib/Socket/Client/websocket.js +62 -0
  19. package/lib/Socket/business.d.ts +170 -0
  20. package/{src → lib}/Socket/business.js +28 -33
  21. package/lib/Socket/chats.d.ts +81 -0
  22. package/{src → lib}/Socket/chats.js +174 -176
  23. package/lib/Socket/groups.d.ts +115 -0
  24. package/{src → lib}/Socket/groups.js +80 -68
  25. package/lib/Socket/index.d.ts +172 -0
  26. package/{src → lib}/Socket/index.js +4 -1
  27. package/lib/Socket/messages-recv.d.ts +158 -0
  28. package/{src → lib}/Socket/messages-recv.js +378 -211
  29. package/lib/Socket/messages-send.d.ts +155 -0
  30. package/{src → lib}/Socket/messages-send.js +452 -177
  31. package/lib/Socket/newsletter.d.ts +132 -0
  32. package/{src → lib}/Socket/newsletter.js +107 -98
  33. package/lib/Socket/registration.d.ts +264 -0
  34. package/{src → lib}/Socket/registration.js +56 -48
  35. package/lib/Socket/socket.d.ts +44 -0
  36. package/{src → lib}/Socket/socket.js +77 -77
  37. package/lib/Socket/usync.d.ts +37 -0
  38. package/lib/Socket/usync.js +70 -0
  39. package/lib/Store/index.d.ts +3 -0
  40. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  41. package/{src → lib}/Store/make-cache-manager-store.js +25 -34
  42. package/lib/Store/make-in-memory-store.d.ts +118 -0
  43. package/{src → lib}/Store/make-in-memory-store.js +36 -32
  44. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  45. package/lib/Store/object-repository.d.ts +10 -0
  46. package/{src → lib}/Store/object-repository.js +1 -1
  47. package/lib/Types/Auth.d.ts +109 -0
  48. package/lib/Types/Call.d.ts +13 -0
  49. package/lib/Types/Chat.d.ts +107 -0
  50. package/{src/Types/Contact.ts → lib/Types/Contact.d.ts} +8 -9
  51. package/lib/Types/Events.d.ts +172 -0
  52. package/lib/Types/GroupMetadata.d.ts +56 -0
  53. package/lib/Types/Label.d.ts +46 -0
  54. package/{src/Types/LabelAssociation.ts → lib/Types/LabelAssociation.d.ts} +16 -22
  55. package/lib/Types/Message.d.ts +433 -0
  56. package/lib/Types/Newsletter.d.ts +92 -0
  57. package/lib/Types/Product.d.ts +78 -0
  58. package/lib/Types/Signal.d.ts +57 -0
  59. package/{src/Types/Socket.ts → lib/Types/Socket.d.ts} +61 -68
  60. package/lib/Types/State.d.ts +27 -0
  61. package/lib/Types/USync.d.ts +25 -0
  62. package/lib/Types/index.d.ts +66 -0
  63. package/lib/Utils/auth-utils.d.ts +18 -0
  64. package/{src → lib}/Utils/auth-utils.js +73 -90
  65. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  66. package/lib/Utils/baileys-event-stream.js +63 -0
  67. package/lib/Utils/business.d.ts +22 -0
  68. package/{src → lib}/Utils/business.js +15 -43
  69. package/lib/Utils/chat-utils.d.ts +70 -0
  70. package/{src → lib}/Utils/chat-utils.js +87 -94
  71. package/lib/Utils/crypto.d.ts +40 -0
  72. package/{src → lib}/Utils/crypto.js +4 -2
  73. package/lib/Utils/decode-wa-message.d.ts +36 -0
  74. package/lib/Utils/decode-wa-message.js +226 -0
  75. package/lib/Utils/event-buffer.d.ts +35 -0
  76. package/{src → lib}/Utils/event-buffer.js +4 -13
  77. package/lib/Utils/generics.d.ts +88 -0
  78. package/{src → lib}/Utils/generics.js +67 -86
  79. package/lib/Utils/history.d.ts +19 -0
  80. package/{src → lib}/Utils/history.js +13 -39
  81. package/lib/Utils/index.d.ts +17 -0
  82. package/lib/Utils/link-preview.d.ts +21 -0
  83. package/{src → lib}/Utils/link-preview.js +17 -54
  84. package/lib/Utils/logger.d.ts +2 -0
  85. package/lib/Utils/lt-hash.d.ts +12 -0
  86. package/lib/Utils/make-mutex.d.ts +7 -0
  87. package/{src → lib}/Utils/make-mutex.js +4 -13
  88. package/lib/Utils/messages-media.d.ts +113 -0
  89. package/{src → lib}/Utils/messages-media.js +193 -255
  90. package/lib/Utils/messages.d.ts +77 -0
  91. package/{src → lib}/Utils/messages.js +588 -118
  92. package/lib/Utils/noise-handler.d.ts +20 -0
  93. package/lib/Utils/process-message.d.ts +41 -0
  94. package/{src → lib}/Utils/process-message.js +27 -30
  95. package/lib/Utils/signal.d.ts +33 -0
  96. package/{src → lib}/Utils/signal.js +25 -42
  97. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -0
  98. package/{src → lib}/Utils/use-multi-file-auth-state.js +27 -28
  99. package/lib/Utils/validate-connection.d.ts +11 -0
  100. package/{src → lib}/Utils/validate-connection.js +40 -9
  101. package/lib/WABinary/constants.d.ts +27 -0
  102. package/lib/WABinary/decode.d.ts +6 -0
  103. package/lib/WABinary/encode.d.ts +2 -0
  104. package/{src → lib}/WABinary/encode.js +16 -10
  105. package/lib/WABinary/generic-utils.d.ts +14 -0
  106. package/lib/WABinary/index.d.ts +5 -0
  107. package/lib/WABinary/jid-utils.d.ts +31 -0
  108. package/lib/WABinary/types.d.ts +18 -0
  109. package/lib/WABinary/types.js +2 -0
  110. package/lib/WAM/BinaryInfo.d.ts +8 -0
  111. package/lib/WAM/constants.d.ts +38 -0
  112. package/lib/WAM/encode.d.ts +2 -0
  113. package/lib/WAM/index.d.ts +3 -0
  114. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  115. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  116. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  117. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  118. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  119. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  120. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  121. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  122. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  123. package/lib/WAUSync/Protocols/index.js +20 -0
  124. package/lib/WAUSync/USyncQuery.d.ts +26 -0
  125. package/lib/WAUSync/USyncQuery.js +79 -0
  126. package/lib/WAUSync/USyncUser.d.ts +10 -0
  127. package/lib/WAUSync/USyncUser.js +22 -0
  128. package/lib/WAUSync/index.d.ts +3 -0
  129. package/lib/WAUSync/index.js +19 -0
  130. package/{src → lib}/index.js +1 -0
  131. package/package.json +26 -8
  132. package/LICENSE +0 -21
  133. package/src/Defaults/baileys-version.json +0 -3
  134. package/src/Defaults/index.ts +0 -131
  135. package/src/README.md +0 -1
  136. package/src/Signal/libsignal.js +0 -180
  137. package/src/Signal/libsignal.ts +0 -141
  138. package/src/Socket/Client/abstract-socket-client.ts +0 -19
  139. package/src/Socket/Client/index.ts +0 -3
  140. package/src/Socket/Client/mobile-socket-client.js +0 -78
  141. package/src/Socket/Client/mobile-socket-client.ts +0 -66
  142. package/src/Socket/Client/web-socket-client.js +0 -75
  143. package/src/Socket/Client/web-socket-client.ts +0 -57
  144. package/src/Socket/business.ts +0 -281
  145. package/src/Socket/chats.ts +0 -1030
  146. package/src/Socket/groups.ts +0 -356
  147. package/src/Socket/index.ts +0 -13
  148. package/src/Socket/messages-recv.ts +0 -985
  149. package/src/Socket/messages-send.ts +0 -871
  150. package/src/Socket/newsletter.ts +0 -282
  151. package/src/Socket/registration.ts +0 -250
  152. package/src/Socket/socket.ts +0 -777
  153. package/src/Store/index.ts +0 -3
  154. package/src/Store/make-cache-manager-store.ts +0 -100
  155. package/src/Store/make-in-memory-store.ts +0 -475
  156. package/src/Store/make-ordered-dictionary.ts +0 -86
  157. package/src/Store/object-repository.ts +0 -32
  158. package/src/Tests/test.app-state-sync.js +0 -204
  159. package/src/Tests/test.app-state-sync.ts +0 -207
  160. package/src/Tests/test.event-buffer.js +0 -270
  161. package/src/Tests/test.event-buffer.ts +0 -319
  162. package/src/Tests/test.key-store.js +0 -76
  163. package/src/Tests/test.key-store.ts +0 -92
  164. package/src/Tests/test.libsignal.js +0 -141
  165. package/src/Tests/test.libsignal.ts +0 -186
  166. package/src/Tests/test.media-download.js +0 -93
  167. package/src/Tests/test.media-download.ts +0 -76
  168. package/src/Tests/test.messages.js +0 -33
  169. package/src/Tests/test.messages.ts +0 -37
  170. package/src/Tests/utils.js +0 -34
  171. package/src/Tests/utils.ts +0 -36
  172. package/src/Types/Auth.ts +0 -113
  173. package/src/Types/Call.ts +0 -15
  174. package/src/Types/Chat.ts +0 -106
  175. package/src/Types/Events.ts +0 -93
  176. package/src/Types/GroupMetadata.ts +0 -53
  177. package/src/Types/Label.ts +0 -36
  178. package/src/Types/Message.ts +0 -288
  179. package/src/Types/Newsletter.ts +0 -98
  180. package/src/Types/Product.ts +0 -85
  181. package/src/Types/Signal.ts +0 -68
  182. package/src/Types/State.ts +0 -29
  183. package/src/Types/index.ts +0 -59
  184. package/src/Utils/auth-utils.ts +0 -222
  185. package/src/Utils/baileys-event-stream.js +0 -92
  186. package/src/Utils/baileys-event-stream.ts +0 -66
  187. package/src/Utils/business.ts +0 -275
  188. package/src/Utils/chat-utils.ts +0 -860
  189. package/src/Utils/crypto.ts +0 -131
  190. package/src/Utils/decode-wa-message.js +0 -211
  191. package/src/Utils/decode-wa-message.ts +0 -228
  192. package/src/Utils/event-buffer.ts +0 -613
  193. package/src/Utils/generics.ts +0 -434
  194. package/src/Utils/history.ts +0 -112
  195. package/src/Utils/index.ts +0 -17
  196. package/src/Utils/link-preview.ts +0 -122
  197. package/src/Utils/logger.ts +0 -3
  198. package/src/Utils/lt-hash.ts +0 -61
  199. package/src/Utils/make-mutex.ts +0 -44
  200. package/src/Utils/messages-media.ts +0 -847
  201. package/src/Utils/messages.ts +0 -956
  202. package/src/Utils/noise-handler.ts +0 -197
  203. package/src/Utils/process-message.ts +0 -414
  204. package/src/Utils/signal.ts +0 -177
  205. package/src/Utils/use-multi-file-auth-state.ts +0 -90
  206. package/src/Utils/validate-connection.ts +0 -238
  207. package/src/WABinary/constants.ts +0 -42
  208. package/src/WABinary/decode.ts +0 -265
  209. package/src/WABinary/encode.ts +0 -236
  210. package/src/WABinary/generic-utils.ts +0 -121
  211. package/src/WABinary/index.ts +0 -5
  212. package/src/WABinary/jid-utils.ts +0 -68
  213. package/src/WABinary/types.ts +0 -17
  214. package/src/WAM/BinaryInfo.ts +0 -12
  215. package/src/WAM/constants.ts +0 -15382
  216. package/src/WAM/encode.ts +0 -174
  217. package/src/WAM/index.ts +0 -3
  218. package/src/gifted +0 -1
  219. package/src/index.ts +0 -13
  220. /package/{src → lib}/Defaults/phonenumber-mcc.json +0 -0
  221. /package/{src → lib}/Socket/Client/abstract-socket-client.js +0 -0
  222. /package/{src → lib}/Store/index.js +0 -0
  223. /package/{src → lib}/Store/make-ordered-dictionary.js +0 -0
  224. /package/{src → lib}/Types/Auth.js +0 -0
  225. /package/{src → lib}/Types/Call.js +0 -0
  226. /package/{src → lib}/Types/Chat.js +0 -0
  227. /package/{src → lib}/Types/Contact.js +0 -0
  228. /package/{src → lib}/Types/Events.js +0 -0
  229. /package/{src → lib}/Types/GroupMetadata.js +0 -0
  230. /package/{src → lib}/Types/Label.js +0 -0
  231. /package/{src → lib}/Types/LabelAssociation.js +0 -0
  232. /package/{src → lib}/Types/Message.js +0 -0
  233. /package/{src → lib}/Types/Newsletter.js +0 -0
  234. /package/{src → lib}/Types/Product.js +0 -0
  235. /package/{src → lib}/Types/Signal.js +0 -0
  236. /package/{src → lib}/Types/Socket.js +0 -0
  237. /package/{src → lib}/Types/State.js +0 -0
  238. /package/{src/WABinary/types.js → lib/Types/USync.js} +0 -0
  239. /package/{src → lib}/Types/index.js +0 -0
  240. /package/{src → lib}/Utils/index.js +0 -0
  241. /package/{src → lib}/Utils/logger.js +0 -0
  242. /package/{src → lib}/Utils/lt-hash.js +0 -0
  243. /package/{src → lib}/Utils/noise-handler.js +0 -0
  244. /package/{src → lib}/WABinary/constants.js +0 -0
  245. /package/{src → lib}/WABinary/decode.js +0 -0
  246. /package/{src → lib}/WABinary/generic-utils.js +0 -0
  247. /package/{src → lib}/WABinary/index.js +0 -0
  248. /package/{src → lib}/WABinary/jid-utils.js +0 -0
  249. /package/{src → lib}/WAM/BinaryInfo.js +0 -0
  250. /package/{src → lib}/WAM/constants.js +0 -0
  251. /package/{src → lib}/WAM/encode.js +0 -0
  252. /package/{src → lib}/WAM/index.js +0 -0
@@ -1,204 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const Utils_1 = require("../Utils");
7
- const chat_utils_1 = require("../Utils/chat-utils");
8
- const logger_1 = __importDefault(require("../Utils/logger"));
9
- describe('App State Sync Tests', () => {
10
- const me = { id: randomJid() };
11
- // case when initial sync is off
12
- it('should return archive=false event', () => {
13
- var _a;
14
- const jid = randomJid();
15
- const index = ['archive', jid];
16
- const CASES = [
17
- [
18
- {
19
- index,
20
- syncAction: {
21
- value: {
22
- archiveChatAction: {
23
- archived: false,
24
- messageRange: {
25
- lastMessageTimestamp: (0, Utils_1.unixTimestampSeconds)()
26
- }
27
- }
28
- }
29
- }
30
- }
31
- ],
32
- [
33
- {
34
- index,
35
- syncAction: {
36
- value: {
37
- archiveChatAction: {
38
- archived: true,
39
- messageRange: {
40
- lastMessageTimestamp: (0, Utils_1.unixTimestampSeconds)()
41
- }
42
- }
43
- }
44
- }
45
- },
46
- {
47
- index,
48
- syncAction: {
49
- value: {
50
- archiveChatAction: {
51
- archived: false,
52
- messageRange: {
53
- lastMessageTimestamp: (0, Utils_1.unixTimestampSeconds)()
54
- }
55
- }
56
- }
57
- }
58
- }
59
- ]
60
- ];
61
- for (const mutations of CASES) {
62
- const events = (0, chat_utils_1.processSyncAction)(mutations, me, undefined, logger_1.default);
63
- expect(events['chats.update']).toHaveLength(1);
64
- const event = (_a = events['chats.update']) === null || _a === void 0 ? void 0 : _a[0];
65
- expect(event.archive).toEqual(false);
66
- }
67
- });
68
- // case when initial sync is on
69
- // and unarchiveChats = true
70
- it('should not fire any archive event', () => {
71
- var _a;
72
- const jid = randomJid();
73
- const index = ['archive', jid];
74
- const now = (0, Utils_1.unixTimestampSeconds)();
75
- const CASES = [
76
- [
77
- {
78
- index,
79
- syncAction: {
80
- value: {
81
- archiveChatAction: {
82
- archived: true,
83
- messageRange: {
84
- lastMessageTimestamp: now - 1
85
- }
86
- }
87
- }
88
- }
89
- }
90
- ],
91
- [
92
- {
93
- index,
94
- syncAction: {
95
- value: {
96
- archiveChatAction: {
97
- archived: false,
98
- messageRange: {
99
- lastMessageTimestamp: now + 10
100
- }
101
- }
102
- }
103
- }
104
- }
105
- ],
106
- [
107
- {
108
- index,
109
- syncAction: {
110
- value: {
111
- archiveChatAction: {
112
- archived: true,
113
- messageRange: {
114
- lastMessageTimestamp: now + 10
115
- }
116
- }
117
- }
118
- }
119
- },
120
- {
121
- index,
122
- syncAction: {
123
- value: {
124
- archiveChatAction: {
125
- archived: false,
126
- messageRange: {
127
- lastMessageTimestamp: now + 11
128
- }
129
- }
130
- }
131
- }
132
- }
133
- ],
134
- ];
135
- const ctx = {
136
- recvChats: {
137
- [jid]: { lastMsgRecvTimestamp: now }
138
- },
139
- accountSettings: { unarchiveChats: true }
140
- };
141
- for (const mutations of CASES) {
142
- const events = processSyncActions(mutations, me, ctx, logger_1.default);
143
- expect((_a = events['chats.update']) === null || _a === void 0 ? void 0 : _a.length).toBeFalsy();
144
- }
145
- });
146
- // case when initial sync is on
147
- // with unarchiveChats = true & unarchiveChats = false
148
- it('should fire archive=true events', () => {
149
- var _a;
150
- const jid = randomJid();
151
- const index = ['archive', jid];
152
- const now = (0, Utils_1.unixTimestampSeconds)();
153
- const CASES = [
154
- {
155
- settings: { unarchiveChats: true },
156
- mutations: [
157
- {
158
- index,
159
- syncAction: {
160
- value: {
161
- archiveChatAction: {
162
- archived: true,
163
- messageRange: {
164
- lastMessageTimestamp: now
165
- }
166
- }
167
- }
168
- }
169
- }
170
- ],
171
- },
172
- {
173
- settings: { unarchiveChats: false },
174
- mutations: [
175
- {
176
- index,
177
- syncAction: {
178
- value: {
179
- archiveChatAction: {
180
- archived: true,
181
- messageRange: {
182
- lastMessageTimestamp: now - 10
183
- }
184
- }
185
- }
186
- }
187
- }
188
- ],
189
- }
190
- ];
191
- for (const { mutations, settings } of CASES) {
192
- const ctx = {
193
- recvChats: {
194
- [jid]: { lastMsgRecvTimestamp: now }
195
- },
196
- accountSettings: settings
197
- };
198
- const events = processSyncActions(mutations, me, ctx, logger_1.default);
199
- expect(events['chats.update']).toHaveLength(1);
200
- const event = (_a = events['chats.update']) === null || _a === void 0 ? void 0 : _a[0];
201
- expect(event.archive).toEqual(true);
202
- }
203
- });
204
- });
@@ -1,207 +0,0 @@
1
- import { AccountSettings, ChatMutation, Contact, InitialAppStateSyncOptions } from '../Types'
2
- import { unixTimestampSeconds } from '../Utils'
3
- import { processSyncAction } from '../Utils/chat-utils'
4
- import logger from '../Utils/logger'
5
-
6
- describe('App State Sync Tests', () => {
7
-
8
- const me: Contact = { id: randomJid() }
9
- // case when initial sync is off
10
- it('should return archive=false event', () => {
11
- const jid = randomJid()
12
- const index = ['archive', jid]
13
-
14
- const CASES: ChatMutation[][] = [
15
- [
16
- {
17
- index,
18
- syncAction: {
19
- value: {
20
- archiveChatAction: {
21
- archived: false,
22
- messageRange: {
23
- lastMessageTimestamp: unixTimestampSeconds()
24
- }
25
- }
26
- }
27
- }
28
- }
29
- ],
30
- [
31
- {
32
- index,
33
- syncAction: {
34
- value: {
35
- archiveChatAction: {
36
- archived: true,
37
- messageRange: {
38
- lastMessageTimestamp: unixTimestampSeconds()
39
- }
40
- }
41
- }
42
- }
43
- },
44
- {
45
- index,
46
- syncAction: {
47
- value: {
48
- archiveChatAction: {
49
- archived: false,
50
- messageRange: {
51
- lastMessageTimestamp: unixTimestampSeconds()
52
- }
53
- }
54
- }
55
- }
56
- }
57
- ]
58
- ]
59
-
60
- for(const mutations of CASES) {
61
- const events = processSyncAction(mutations, me, undefined, logger)
62
- expect(events['chats.update']).toHaveLength(1)
63
- const event = events['chats.update']?.[0]
64
- expect(event.archive).toEqual(false)
65
- }
66
- })
67
- // case when initial sync is on
68
- // and unarchiveChats = true
69
- it('should not fire any archive event', () => {
70
- const jid = randomJid()
71
- const index = ['archive', jid]
72
- const now = unixTimestampSeconds()
73
-
74
- const CASES: ChatMutation[][] = [
75
- [
76
- {
77
- index,
78
- syncAction: {
79
- value: {
80
- archiveChatAction: {
81
- archived: true,
82
- messageRange: {
83
- lastMessageTimestamp: now - 1
84
- }
85
- }
86
- }
87
- }
88
- }
89
- ],
90
- [
91
- {
92
- index,
93
- syncAction: {
94
- value: {
95
- archiveChatAction: {
96
- archived: false,
97
- messageRange: {
98
- lastMessageTimestamp: now + 10
99
- }
100
- }
101
- }
102
- }
103
- }
104
- ],
105
- [
106
- {
107
- index,
108
- syncAction: {
109
- value: {
110
- archiveChatAction: {
111
- archived: true,
112
- messageRange: {
113
- lastMessageTimestamp: now + 10
114
- }
115
- }
116
- }
117
- }
118
- },
119
- {
120
- index,
121
- syncAction: {
122
- value: {
123
- archiveChatAction: {
124
- archived: false,
125
- messageRange: {
126
- lastMessageTimestamp: now + 11
127
- }
128
- }
129
- }
130
- }
131
- }
132
- ],
133
- ]
134
-
135
- const ctx: InitialAppStateSyncOptions = {
136
- recvChats: {
137
- [jid]: { lastMsgRecvTimestamp: now }
138
- },
139
- accountSettings: { unarchiveChats: true }
140
- }
141
-
142
- for(const mutations of CASES) {
143
- const events = processSyncActions(mutations, me, ctx, logger)
144
- expect(events['chats.update']?.length).toBeFalsy()
145
- }
146
- })
147
-
148
- // case when initial sync is on
149
- // with unarchiveChats = true & unarchiveChats = false
150
- it('should fire archive=true events', () => {
151
- const jid = randomJid()
152
- const index = ['archive', jid]
153
- const now = unixTimestampSeconds()
154
-
155
- const CASES: { settings: AccountSettings, mutations: ChatMutation[] }[] = [
156
- {
157
- settings: { unarchiveChats: true },
158
- mutations: [
159
- {
160
- index,
161
- syncAction: {
162
- value: {
163
- archiveChatAction: {
164
- archived: true,
165
- messageRange: {
166
- lastMessageTimestamp: now
167
- }
168
- }
169
- }
170
- }
171
- }
172
- ],
173
- },
174
- {
175
- settings: { unarchiveChats: false },
176
- mutations: [
177
- {
178
- index,
179
- syncAction: {
180
- value: {
181
- archiveChatAction: {
182
- archived: true,
183
- messageRange: {
184
- lastMessageTimestamp: now - 10
185
- }
186
- }
187
- }
188
- }
189
- }
190
- ],
191
- }
192
- ]
193
-
194
- for(const { mutations, settings } of CASES) {
195
- const ctx: InitialAppStateSyncOptions = {
196
- recvChats: {
197
- [jid]: { lastMsgRecvTimestamp: now }
198
- },
199
- accountSettings: settings
200
- }
201
- const events = processSyncActions(mutations, me, ctx, logger)
202
- expect(events['chats.update']).toHaveLength(1)
203
- const event = events['chats.update']?.[0]
204
- expect(event.archive).toEqual(true)
205
- }
206
- })
207
- })
@@ -1,270 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const WAProto_1 = require("../../WAProto");
16
- const Types_1 = require("../Types");
17
- const Utils_1 = require("../Utils");
18
- const logger_1 = __importDefault(require("../Utils/logger"));
19
- const utils_1 = require("./utils");
20
- describe('Event Buffer Tests', () => {
21
- let ev;
22
- beforeEach(() => {
23
- const _logger = logger_1.default.child({});
24
- _logger.level = 'trace';
25
- ev = (0, Utils_1.makeEventBuffer)(_logger);
26
- });
27
- it('should buffer a chat upsert & update event', () => __awaiter(void 0, void 0, void 0, function* () {
28
- const chatId = (0, utils_1.randomJid)();
29
- const chats = [];
30
- ev.on('chats.upsert', c => chats.push(...c));
31
- ev.on('chats.update', () => fail('should not emit update event'));
32
- ev.buffer();
33
- yield Promise.all([
34
- (() => __awaiter(void 0, void 0, void 0, function* () {
35
- ev.buffer();
36
- yield (0, Utils_1.delay)(100);
37
- ev.emit('chats.upsert', [{ id: chatId, conversationTimestamp: 123, unreadCount: 1 }]);
38
- const flushed = ev.flush();
39
- expect(flushed).toBeFalsy();
40
- }))(),
41
- (() => __awaiter(void 0, void 0, void 0, function* () {
42
- ev.buffer();
43
- yield (0, Utils_1.delay)(200);
44
- ev.emit('chats.update', [{ id: chatId, conversationTimestamp: 124, unreadCount: 1 }]);
45
- const flushed = ev.flush();
46
- expect(flushed).toBeFalsy();
47
- }))()
48
- ]);
49
- const flushed = ev.flush();
50
- expect(flushed).toBeTruthy();
51
- expect(chats).toHaveLength(1);
52
- expect(chats[0].conversationTimestamp).toEqual(124);
53
- expect(chats[0].unreadCount).toEqual(2);
54
- }));
55
- it('should overwrite a chats.delete event', () => __awaiter(void 0, void 0, void 0, function* () {
56
- const chatId = (0, utils_1.randomJid)();
57
- const chats = [];
58
- ev.on('chats.update', c => chats.push(...c));
59
- ev.on('chats.delete', () => fail('not should have emitted'));
60
- ev.buffer();
61
- ev.emit('chats.update', [{ id: chatId, conversationTimestamp: 123, unreadCount: 1 }]);
62
- ev.emit('chats.delete', [chatId]);
63
- ev.emit('chats.update', [{ id: chatId, conversationTimestamp: 124, unreadCount: 1 }]);
64
- ev.flush();
65
- expect(chats).toHaveLength(1);
66
- }));
67
- it('should overwrite a chats.update event', () => __awaiter(void 0, void 0, void 0, function* () {
68
- const chatId = (0, utils_1.randomJid)();
69
- const chatsDeleted = [];
70
- ev.on('chats.delete', c => chatsDeleted.push(...c));
71
- ev.on('chats.update', () => fail('not should have emitted'));
72
- ev.buffer();
73
- ev.emit('chats.update', [{ id: chatId, conversationTimestamp: 123, unreadCount: 1 }]);
74
- ev.emit('chats.delete', [chatId]);
75
- ev.flush();
76
- expect(chatsDeleted).toHaveLength(1);
77
- }));
78
- it('should release a conditional update at the right time', () => __awaiter(void 0, void 0, void 0, function* () {
79
- const chatId = (0, utils_1.randomJid)();
80
- const chatId2 = (0, utils_1.randomJid)();
81
- const chatsUpserted = [];
82
- const chatsSynced = [];
83
- ev.on('chats.upsert', c => chatsUpserted.push(...c));
84
- ev.on('messaging-history.set', c => chatsSynced.push(...c.chats));
85
- ev.on('chats.update', () => fail('not should have emitted'));
86
- ev.buffer();
87
- ev.emit('chats.update', [{
88
- id: chatId,
89
- archived: true,
90
- conditional(buff) {
91
- if (buff.chatUpserts[chatId]) {
92
- return true;
93
- }
94
- }
95
- }]);
96
- ev.emit('chats.update', [{
97
- id: chatId2,
98
- archived: true,
99
- conditional(buff) {
100
- if (buff.historySets.chats[chatId2]) {
101
- return true;
102
- }
103
- }
104
- }]);
105
- ev.flush();
106
- ev.buffer();
107
- ev.emit('chats.upsert', [{
108
- id: chatId,
109
- conversationTimestamp: 123,
110
- unreadCount: 1,
111
- muteEndTime: 123
112
- }]);
113
- ev.emit('messaging-history.set', {
114
- chats: [{
115
- id: chatId2,
116
- conversationTimestamp: 123,
117
- unreadCount: 1,
118
- muteEndTime: 123
119
- }],
120
- contacts: [],
121
- messages: [],
122
- isLatest: false
123
- });
124
- ev.flush();
125
- expect(chatsUpserted).toHaveLength(1);
126
- expect(chatsUpserted[0].id).toEqual(chatId);
127
- expect(chatsUpserted[0].archived).toEqual(true);
128
- expect(chatsUpserted[0].muteEndTime).toEqual(123);
129
- expect(chatsSynced).toHaveLength(1);
130
- expect(chatsSynced[0].id).toEqual(chatId2);
131
- expect(chatsSynced[0].archived).toEqual(true);
132
- }));
133
- it('should discard a conditional update', () => __awaiter(void 0, void 0, void 0, function* () {
134
- const chatId = (0, utils_1.randomJid)();
135
- const chatsUpserted = [];
136
- ev.on('chats.upsert', c => chatsUpserted.push(...c));
137
- ev.on('chats.update', () => fail('not should have emitted'));
138
- ev.buffer();
139
- ev.emit('chats.update', [{
140
- id: chatId,
141
- archived: true,
142
- conditional(buff) {
143
- if (buff.chatUpserts[chatId]) {
144
- return false;
145
- }
146
- }
147
- }]);
148
- ev.emit('chats.upsert', [{
149
- id: chatId,
150
- conversationTimestamp: 123,
151
- unreadCount: 1,
152
- muteEndTime: 123
153
- }]);
154
- ev.flush();
155
- expect(chatsUpserted).toHaveLength(1);
156
- expect(chatsUpserted[0].archived).toBeUndefined();
157
- }));
158
- it('should overwrite a chats.update event with a history event', () => __awaiter(void 0, void 0, void 0, function* () {
159
- const chatId = (0, utils_1.randomJid)();
160
- let chatRecv;
161
- ev.on('messaging-history.set', ({ chats }) => {
162
- chatRecv = chats[0];
163
- });
164
- ev.on('chats.update', () => fail('not should have emitted'));
165
- ev.buffer();
166
- ev.emit('messaging-history.set', {
167
- chats: [{ id: chatId, conversationTimestamp: 123, unreadCount: 1 }],
168
- messages: [],
169
- contacts: [],
170
- isLatest: true
171
- });
172
- ev.emit('chats.update', [{ id: chatId, archived: true }]);
173
- ev.flush();
174
- expect(chatRecv).toBeDefined();
175
- expect(chatRecv === null || chatRecv === void 0 ? void 0 : chatRecv.archived).toBeTruthy();
176
- }));
177
- it('should buffer message upsert events', () => __awaiter(void 0, void 0, void 0, function* () {
178
- const messageTimestamp = (0, Utils_1.unixTimestampSeconds)();
179
- const msg = {
180
- key: {
181
- remoteJid: (0, utils_1.randomJid)(),
182
- id: (0, Utils_1.generateMessageID)(),
183
- fromMe: false
184
- },
185
- messageStubType: Types_1.WAMessageStubType.CIPHERTEXT,
186
- messageTimestamp
187
- };
188
- const msgs = [];
189
- ev.on('messages.upsert', c => {
190
- msgs.push(...c.messages);
191
- expect(c.type).toEqual('notify');
192
- });
193
- ev.buffer();
194
- ev.emit('messages.upsert', { messages: [WAProto_1.proto.WebMessageInfo.fromObject(msg)], type: 'notify' });
195
- msg.messageTimestamp = (0, Utils_1.unixTimestampSeconds)() + 1;
196
- msg.messageStubType = undefined;
197
- msg.message = { conversation: 'Test' };
198
- ev.emit('messages.upsert', { messages: [WAProto_1.proto.WebMessageInfo.fromObject(msg)], type: 'notify' });
199
- ev.emit('messages.update', [{ key: msg.key, update: { status: Types_1.WAMessageStatus.READ } }]);
200
- ev.flush();
201
- expect(msgs).toHaveLength(1);
202
- expect(msgs[0].message).toBeTruthy();
203
- expect((0, Utils_1.toNumber)(msgs[0].messageTimestamp)).toEqual(messageTimestamp);
204
- expect(msgs[0].status).toEqual(Types_1.WAMessageStatus.READ);
205
- }));
206
- it('should buffer a message receipt update', () => __awaiter(void 0, void 0, void 0, function* () {
207
- const msg = {
208
- key: {
209
- remoteJid: (0, utils_1.randomJid)(),
210
- id: (0, Utils_1.generateMessageID)(),
211
- fromMe: false
212
- },
213
- messageStubType: Types_1.WAMessageStubType.CIPHERTEXT,
214
- messageTimestamp: (0, Utils_1.unixTimestampSeconds)()
215
- };
216
- const msgs = [];
217
- ev.on('messages.upsert', c => msgs.push(...c.messages));
218
- ev.on('message-receipt.update', () => fail('should not emit'));
219
- ev.buffer();
220
- ev.emit('messages.upsert', { messages: [WAProto_1.proto.WebMessageInfo.fromObject(msg)], type: 'notify' });
221
- ev.emit('message-receipt.update', [
222
- {
223
- key: msg.key,
224
- receipt: {
225
- userJid: (0, utils_1.randomJid)(),
226
- readTimestamp: (0, Utils_1.unixTimestampSeconds)()
227
- }
228
- }
229
- ]);
230
- ev.flush();
231
- expect(msgs).toHaveLength(1);
232
- expect(msgs[0].userReceipt).toHaveLength(1);
233
- }));
234
- it('should buffer multiple status updates', () => __awaiter(void 0, void 0, void 0, function* () {
235
- const key = {
236
- remoteJid: (0, utils_1.randomJid)(),
237
- id: (0, Utils_1.generateMessageID)(),
238
- fromMe: false
239
- };
240
- const msgs = [];
241
- ev.on('messages.update', c => msgs.push(...c));
242
- ev.buffer();
243
- ev.emit('messages.update', [{ key, update: { status: Types_1.WAMessageStatus.DELIVERY_ACK } }]);
244
- ev.emit('messages.update', [{ key, update: { status: Types_1.WAMessageStatus.READ } }]);
245
- ev.flush();
246
- expect(msgs).toHaveLength(1);
247
- expect(msgs[0].update.status).toEqual(Types_1.WAMessageStatus.READ);
248
- }));
249
- it('should remove chat unread counter', () => __awaiter(void 0, void 0, void 0, function* () {
250
- const msg = {
251
- key: {
252
- remoteJid: '12345@s.whatsapp.net',
253
- id: (0, Utils_1.generateMessageID)(),
254
- fromMe: false
255
- },
256
- message: {
257
- conversation: 'abcd'
258
- },
259
- messageTimestamp: (0, Utils_1.unixTimestampSeconds)()
260
- };
261
- const chats = [];
262
- ev.on('chats.update', c => chats.push(...c));
263
- ev.buffer();
264
- ev.emit('messages.upsert', { messages: [WAProto_1.proto.WebMessageInfo.fromObject(msg)], type: 'notify' });
265
- ev.emit('chats.update', [{ id: msg.key.remoteJid, unreadCount: 1, conversationTimestamp: msg.messageTimestamp }]);
266
- ev.emit('messages.update', [{ key: msg.key, update: { status: Types_1.WAMessageStatus.READ } }]);
267
- ev.flush();
268
- expect(chats[0].unreadCount).toBeUndefined();
269
- }));
270
- });