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,186 +0,0 @@
1
- import { makeLibSignalRepository } from '../Signal/libsignal'
2
- import { SignalAuthState, SignalDataTypeMap } from '../Types'
3
- import { Curve, generateRegistrationId, generateSignalPubKey, signedKeyPair } from '../Utils'
4
-
5
- describe('Signal Tests', () => {
6
-
7
- it('should correctly encrypt/decrypt 1 message', async() => {
8
- const user1 = makeUser()
9
- const user2 = makeUser()
10
-
11
- const msg = Buffer.from('hello there!')
12
-
13
- await prepareForSendingMessage(user1, user2)
14
-
15
- const result = await user1.repository.encryptMessage(
16
- { jid: user2.jid, data: msg }
17
- )
18
-
19
- const dec = await user2.repository.decryptMessage(
20
- { jid: user1.jid, ...result }
21
- )
22
-
23
- expect(dec).toEqual(msg)
24
- })
25
-
26
- it('should correctly override a session', async() => {
27
- const user1 = makeUser()
28
- const user2 = makeUser()
29
-
30
- const msg = Buffer.from('hello there!')
31
-
32
- for(let preKeyId = 2; preKeyId <= 3;preKeyId++) {
33
- await prepareForSendingMessage(user1, user2, preKeyId)
34
-
35
- const result = await user1.repository.encryptMessage(
36
- { jid: user2.jid, data: msg }
37
- )
38
-
39
- const dec = await user2.repository.decryptMessage(
40
- { jid: user1.jid, ...result }
41
- )
42
-
43
- expect(dec).toEqual(msg)
44
- }
45
- })
46
-
47
- it('should correctly encrypt/decrypt multiple messages', async() => {
48
- const user1 = makeUser()
49
- const user2 = makeUser()
50
-
51
- const msg = Buffer.from('hello there!')
52
-
53
- await prepareForSendingMessage(user1, user2)
54
-
55
- for(let i = 0;i < 10;i++) {
56
- const result = await user1.repository.encryptMessage(
57
- { jid: user2.jid, data: msg }
58
- )
59
-
60
- const dec = await user2.repository.decryptMessage(
61
- { jid: user1.jid, ...result }
62
- )
63
-
64
- expect(dec).toEqual(msg)
65
- }
66
- })
67
-
68
- it('should encrypt/decrypt messages from group', async() => {
69
- const groupId = '123456@g.us'
70
- const participants = [...Array(5)].map(makeUser)
71
-
72
- const msg = Buffer.from('hello there!')
73
-
74
- const sender = participants[0]
75
- const enc = await sender.repository.encryptGroupMessage(
76
- {
77
- group: groupId,
78
- meId: sender.jid,
79
- data: msg
80
- }
81
- )
82
-
83
- for(const participant of participants) {
84
- if(participant === sender) {
85
- continue
86
- }
87
-
88
- await participant.repository.processSenderKeyDistributionMessage(
89
- {
90
- item: {
91
- groupId,
92
- axolotlSenderKeyDistributionMessage: enc.senderKeyDistributionMessage
93
- },
94
- authorJid: sender.jid
95
- }
96
- )
97
-
98
- const dec = await participant.repository.decryptGroupMessage(
99
- {
100
- group: groupId,
101
- authorJid: sender.jid,
102
- msg: enc.ciphertext
103
- }
104
- )
105
- expect(dec).toEqual(msg)
106
- }
107
- })
108
- })
109
-
110
- type User = ReturnType<typeof makeUser>
111
-
112
- function makeUser() {
113
- const store = makeTestAuthState()
114
- const jid = `${Math.random().toString().replace('.', '')}@s.whatsapp.net`
115
- const repository = makeLibSignalRepository(store)
116
- return { store, jid, repository }
117
- }
118
-
119
- async function prepareForSendingMessage(
120
- sender: User,
121
- receiver: User,
122
- preKeyId = 2
123
- ) {
124
- const preKey = Curve.generateKeyPair()
125
- await sender.repository.injectE2ESession(
126
- {
127
- jid: receiver.jid,
128
- session: {
129
- registrationId: receiver.store.creds.registrationId,
130
- identityKey: generateSignalPubKey(receiver.store.creds.signedIdentityKey.public),
131
- signedPreKey: {
132
- keyId: receiver.store.creds.signedPreKey.keyId,
133
- publicKey: generateSignalPubKey(receiver.store.creds.signedPreKey.keyPair.public),
134
- signature: receiver.store.creds.signedPreKey.signature,
135
- },
136
- preKey: {
137
- keyId: preKeyId,
138
- publicKey: generateSignalPubKey(preKey.public),
139
- }
140
- }
141
- }
142
- )
143
-
144
- await receiver.store.keys.set({
145
- 'pre-key': {
146
- [preKeyId]: preKey
147
- }
148
- })
149
- }
150
-
151
- function makeTestAuthState(): SignalAuthState {
152
- const identityKey = Curve.generateKeyPair()
153
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
154
- const store: { [_: string]: any } = {}
155
- return {
156
- creds: {
157
- signedIdentityKey: identityKey,
158
- registrationId: generateRegistrationId(),
159
- signedPreKey: signedKeyPair(identityKey, 1),
160
- },
161
- keys: {
162
- get(type, ids) {
163
- const data: { [_: string]: SignalDataTypeMap[typeof type] } = { }
164
- for(const id of ids) {
165
- const item = store[getUniqueId(type, id)]
166
- if(typeof item !== 'undefined') {
167
- data[id] = item
168
- }
169
- }
170
-
171
- return data
172
- },
173
- set(data) {
174
- for(const type in data) {
175
- for(const id in data[type]) {
176
- store[getUniqueId(type, id)] = data[type][id]
177
- }
178
- }
179
- },
180
- }
181
- }
182
-
183
- function getUniqueId(type: string, id: string) {
184
- return `${type}.${id}`
185
- }
186
- }
@@ -1,93 +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 __asyncValues = (this && this.__asyncValues) || function (o) {
12
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
- var m = o[Symbol.asyncIterator], i;
14
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
15
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
16
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17
- };
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- const fs_1 = require("fs");
20
- const WAProto_1 = require("../../WAProto");
21
- const Utils_1 = require("../Utils");
22
- jest.setTimeout(20000);
23
- const TEST_VECTORS = [
24
- {
25
- type: 'image',
26
- message: WAProto_1.proto.Message.ImageMessage.decode(Buffer.from('Ck1odHRwczovL21tZy53aGF0c2FwcC5uZXQvZC9mL0FwaHR4WG9fWXZZcDZlUVNSa0tjOHE5d2ozVUpleWdoY3poM3ExX3I0ektnLmVuYxIKaW1hZ2UvanBlZyIgKTuVFyxDc6mTm4GXPlO3Z911Wd8RBeTrPLSWAEdqW8MomcUBQiB7wH5a4nXMKyLOT0A2nFgnnM/DUH8YjQf8QtkCIekaSkogTB+BXKCWDFrmNzozY0DCPn0L4VKd7yG1ZbZwbgRhzVc=', 'base64')),
27
- plaintext: (0, fs_1.readFileSync)('./Media/cat.jpeg')
28
- },
29
- {
30
- type: 'image',
31
- message: WAProto_1.proto.Message.ImageMessage.decode(Buffer.from('Ck1odHRwczovL21tZy53aGF0c2FwcC5uZXQvZC9mL0Ftb2tnWkphNWF6QWZxa3dVRzc0eUNUdTlGeWpjMmd5akpqcXNmMUFpZEU5LmVuYxIKaW1hZ2UvanBlZyIg8IS5TQzdzcuvcR7F8HMhWnXmlsV+GOo9JE1/t2k+o9Yoz6o6QiA7kDk8j5KOEQC0kDFE1qW7lBBDYhm5z06N3SirfUj3CUog/CjYF8e670D5wUJwWv2B2mKzDEo8IJLStDv76YmtPfs=', 'base64')),
32
- plaintext: (0, fs_1.readFileSync)('./Media/icon.png')
33
- },
34
- ];
35
- describe('Media Download Tests', () => {
36
- it('should download a full encrypted media correctly', () => __awaiter(void 0, void 0, void 0, function* () {
37
- var _a, e_1, _b, _c;
38
- for (const { type, message, plaintext } of TEST_VECTORS) {
39
- const readPipe = yield (0, Utils_1.downloadContentFromMessage)(message, type);
40
- let buffer = Buffer.alloc(0);
41
- try {
42
- for (var _d = true, readPipe_1 = (e_1 = void 0, __asyncValues(readPipe)), readPipe_1_1; readPipe_1_1 = yield readPipe_1.next(), _a = readPipe_1_1.done, !_a; _d = true) {
43
- _c = readPipe_1_1.value;
44
- _d = false;
45
- const read = _c;
46
- buffer = Buffer.concat([buffer, read]);
47
- }
48
- }
49
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
50
- finally {
51
- try {
52
- if (!_d && !_a && (_b = readPipe_1.return)) yield _b.call(readPipe_1);
53
- }
54
- finally { if (e_1) throw e_1.error; }
55
- }
56
- expect(buffer).toEqual(plaintext);
57
- }
58
- }));
59
- it('should download an encrypted media correctly piece', () => __awaiter(void 0, void 0, void 0, function* () {
60
- var _a, e_2, _b, _c;
61
- for (const { type, message, plaintext } of TEST_VECTORS) {
62
- // check all edge cases
63
- const ranges = [
64
- { startByte: 51, endByte: plaintext.length - 100 }, // random numbers
65
- { startByte: 1024, endByte: 2038 }, // larger random multiples of 16
66
- { startByte: 1, endByte: plaintext.length - 1 } // borders
67
- ];
68
- for (const range of ranges) {
69
- const readPipe = yield (0, Utils_1.downloadContentFromMessage)(message, type, range);
70
- let buffer = Buffer.alloc(0);
71
- try {
72
- for (var _d = true, readPipe_2 = (e_2 = void 0, __asyncValues(readPipe)), readPipe_2_1; readPipe_2_1 = yield readPipe_2.next(), _a = readPipe_2_1.done, !_a; _d = true) {
73
- _c = readPipe_2_1.value;
74
- _d = false;
75
- const read = _c;
76
- buffer = Buffer.concat([buffer, read]);
77
- }
78
- }
79
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
80
- finally {
81
- try {
82
- if (!_d && !_a && (_b = readPipe_2.return)) yield _b.call(readPipe_2);
83
- }
84
- finally { if (e_2) throw e_2.error; }
85
- }
86
- const hex = buffer.toString('hex');
87
- const expectedHex = plaintext.slice(range.startByte || 0, range.endByte || undefined).toString('hex');
88
- expect(hex).toBe(expectedHex);
89
- console.log('success on ', range);
90
- }
91
- }
92
- }));
93
- });
@@ -1,76 +0,0 @@
1
- import { readFileSync } from 'fs'
2
- import { proto } from '../../WAProto'
3
- import { DownloadableMessage, MediaType } from '../Types'
4
- import { downloadContentFromMessage } from '../Utils'
5
-
6
- jest.setTimeout(20_000)
7
-
8
- type TestVector = {
9
- type: MediaType
10
- message: DownloadableMessage
11
- plaintext: Buffer
12
- }
13
-
14
- const TEST_VECTORS: TestVector[] = [
15
- {
16
- type: 'image',
17
- message: proto.Message.ImageMessage.decode(
18
- Buffer.from(
19
- 'Ck1odHRwczovL21tZy53aGF0c2FwcC5uZXQvZC9mL0FwaHR4WG9fWXZZcDZlUVNSa0tjOHE5d2ozVUpleWdoY3poM3ExX3I0ektnLmVuYxIKaW1hZ2UvanBlZyIgKTuVFyxDc6mTm4GXPlO3Z911Wd8RBeTrPLSWAEdqW8MomcUBQiB7wH5a4nXMKyLOT0A2nFgnnM/DUH8YjQf8QtkCIekaSkogTB+BXKCWDFrmNzozY0DCPn0L4VKd7yG1ZbZwbgRhzVc=',
20
- 'base64'
21
- )
22
- ),
23
- plaintext: readFileSync('./Media/cat.jpeg')
24
- },
25
- {
26
- type: 'image',
27
- message: proto.Message.ImageMessage.decode(
28
- Buffer.from(
29
- 'Ck1odHRwczovL21tZy53aGF0c2FwcC5uZXQvZC9mL0Ftb2tnWkphNWF6QWZxa3dVRzc0eUNUdTlGeWpjMmd5akpqcXNmMUFpZEU5LmVuYxIKaW1hZ2UvanBlZyIg8IS5TQzdzcuvcR7F8HMhWnXmlsV+GOo9JE1/t2k+o9Yoz6o6QiA7kDk8j5KOEQC0kDFE1qW7lBBDYhm5z06N3SirfUj3CUog/CjYF8e670D5wUJwWv2B2mKzDEo8IJLStDv76YmtPfs=',
30
- 'base64'
31
- )
32
- ),
33
- plaintext: readFileSync('./Media/icon.png')
34
- },
35
- ]
36
-
37
- describe('Media Download Tests', () => {
38
-
39
- it('should download a full encrypted media correctly', async() => {
40
- for(const { type, message, plaintext } of TEST_VECTORS) {
41
- const readPipe = await downloadContentFromMessage(message, type)
42
-
43
- let buffer = Buffer.alloc(0)
44
- for await (const read of readPipe) {
45
- buffer = Buffer.concat([ buffer, read ])
46
- }
47
-
48
- expect(buffer).toEqual(plaintext)
49
- }
50
- })
51
-
52
- it('should download an encrypted media correctly piece', async() => {
53
- for(const { type, message, plaintext } of TEST_VECTORS) {
54
- // check all edge cases
55
- const ranges = [
56
- { startByte: 51, endByte: plaintext.length - 100 }, // random numbers
57
- { startByte: 1024, endByte: 2038 }, // larger random multiples of 16
58
- { startByte: 1, endByte: plaintext.length - 1 } // borders
59
- ]
60
- for(const range of ranges) {
61
- const readPipe = await downloadContentFromMessage(message, type, range)
62
-
63
- let buffer = Buffer.alloc(0)
64
- for await (const read of readPipe) {
65
- buffer = Buffer.concat([ buffer, read ])
66
- }
67
-
68
- const hex = buffer.toString('hex')
69
- const expectedHex = plaintext.slice(range.startByte || 0, range.endByte || undefined).toString('hex')
70
- expect(hex).toBe(expectedHex)
71
-
72
- console.log('success on ', range)
73
- }
74
- }
75
- })
76
- })
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Utils_1 = require("../Utils");
4
- describe('Messages Tests', () => {
5
- it('should correctly unwrap messages', () => {
6
- const CONTENT = { imageMessage: {} };
7
- expectRightContent(CONTENT);
8
- expectRightContent({
9
- ephemeralMessage: { message: CONTENT }
10
- });
11
- expectRightContent({
12
- viewOnceMessage: {
13
- message: {
14
- ephemeralMessage: { message: CONTENT }
15
- }
16
- }
17
- });
18
- expectRightContent({
19
- viewOnceMessage: {
20
- message: {
21
- viewOnceMessageV2: {
22
- message: {
23
- ephemeralMessage: { message: CONTENT }
24
- }
25
- }
26
- }
27
- }
28
- });
29
- function expectRightContent(content) {
30
- expect((0, Utils_1.normalizeMessageContent)(content)).toHaveProperty('imageMessage');
31
- }
32
- });
33
- });
@@ -1,37 +0,0 @@
1
- import { WAMessageContent } from '../Types'
2
- import { normalizeMessageContent } from '../Utils'
3
-
4
- describe('Messages Tests', () => {
5
-
6
- it('should correctly unwrap messages', () => {
7
- const CONTENT = { imageMessage: { } }
8
- expectRightContent(CONTENT)
9
- expectRightContent({
10
- ephemeralMessage: { message: CONTENT }
11
- })
12
- expectRightContent({
13
- viewOnceMessage: {
14
- message: {
15
- ephemeralMessage: { message: CONTENT }
16
- }
17
- }
18
- })
19
- expectRightContent({
20
- viewOnceMessage: {
21
- message: {
22
- viewOnceMessageV2: {
23
- message: {
24
- ephemeralMessage: { message: CONTENT }
25
- }
26
- }
27
- }
28
- }
29
- })
30
-
31
- function expectRightContent(content: WAMessageContent) {
32
- expect(
33
- normalizeMessageContent(content)
34
- ).toHaveProperty('imageMessage')
35
- }
36
- })
37
- })
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.randomJid = randomJid;
4
- exports.makeMockSignalKeyStore = makeMockSignalKeyStore;
5
- const WABinary_1 = require("../WABinary");
6
- function randomJid() {
7
- return (0, WABinary_1.jidEncode)(Math.floor(Math.random() * 1000000), Math.random() < 0.5 ? 's.whatsapp.net' : 'g.us');
8
- }
9
- function makeMockSignalKeyStore() {
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
- const store = {};
12
- return {
13
- get(type, ids) {
14
- const data = {};
15
- for (const id of ids) {
16
- const item = store[getUniqueId(type, id)];
17
- if (typeof item !== 'undefined') {
18
- data[id] = item;
19
- }
20
- }
21
- return data;
22
- },
23
- set(data) {
24
- for (const type in data) {
25
- for (const id in data[type]) {
26
- store[getUniqueId(type, id)] = data[type][id];
27
- }
28
- }
29
- },
30
- };
31
- function getUniqueId(type, id) {
32
- return `${type}.${id}`;
33
- }
34
- }
@@ -1,36 +0,0 @@
1
- import { SignalDataTypeMap, SignalKeyStore } from '../Types'
2
- import { jidEncode } from '../WABinary'
3
-
4
- export function randomJid() {
5
- return jidEncode(Math.floor(Math.random() * 1000000), Math.random() < 0.5 ? 's.whatsapp.net' : 'g.us')
6
- }
7
-
8
- export function makeMockSignalKeyStore(): SignalKeyStore {
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- const store: { [_: string]: any } = {}
11
-
12
- return {
13
- get(type, ids) {
14
- const data: { [_: string]: SignalDataTypeMap[typeof type] } = { }
15
- for(const id of ids) {
16
- const item = store[getUniqueId(type, id)]
17
- if(typeof item !== 'undefined') {
18
- data[id] = item
19
- }
20
- }
21
-
22
- return data
23
- },
24
- set(data) {
25
- for(const type in data) {
26
- for(const id in data[type]) {
27
- store[getUniqueId(type, id)] = data[type][id]
28
- }
29
- }
30
- },
31
- }
32
-
33
- function getUniqueId(type: string, id: string) {
34
- return `${type}.${id}`
35
- }
36
- }
package/src/Types/Auth.ts DELETED
@@ -1,113 +0,0 @@
1
- import type { proto } from '../../WAProto'
2
- import { RegistrationOptions } from '../Socket/registration'
3
- import type { Contact } from './Contact'
4
- import type { MinimalMessage } from './Message'
5
-
6
- export type KeyPair = { public: Uint8Array, private: Uint8Array }
7
- export type SignedKeyPair = {
8
- keyPair: KeyPair
9
- signature: Uint8Array
10
- keyId: number
11
- timestampS?: number
12
- }
13
-
14
- export type ProtocolAddress = {
15
- name: string // jid
16
- deviceId: number
17
- }
18
- export type SignalIdentity = {
19
- identifier: ProtocolAddress
20
- identifierKey: Uint8Array
21
- }
22
-
23
- export type LTHashState = {
24
- version: number
25
- hash: Buffer
26
- indexValueMap: {
27
- [indexMacBase64: string]: { valueMac: Uint8Array | Buffer }
28
- }
29
- }
30
-
31
- export type SignalCreds = {
32
- readonly signedIdentityKey: KeyPair
33
- readonly signedPreKey: SignedKeyPair
34
- readonly registrationId: number
35
- }
36
-
37
- export type AccountSettings = {
38
- /** unarchive chats when a new message is received */
39
- unarchiveChats: boolean
40
- /** the default mode to start new conversations with */
41
- defaultDisappearingMode?: Pick<proto.IConversation, 'ephemeralExpiration' | 'ephemeralSettingTimestamp'>
42
- }
43
-
44
- export type AuthenticationCreds = SignalCreds & {
45
- readonly noiseKey: KeyPair
46
- readonly pairingEphemeralKeyPair: KeyPair
47
- advSecretKey: string
48
-
49
- me?: Contact
50
- account?: proto.IADVSignedDeviceIdentity
51
- signalIdentities?: SignalIdentity[]
52
- myAppStateKeyId?: string
53
- firstUnuploadedPreKeyId: number
54
- nextPreKeyId: number
55
-
56
- lastAccountSyncTimestamp?: number
57
- platform?: string
58
-
59
- processedHistoryMessages: MinimalMessage[]
60
- /** number of times history & app state has been synced */
61
- accountSyncCounter: number
62
- accountSettings: AccountSettings
63
- // mobile creds
64
- deviceId: string
65
- phoneId: string
66
- identityId: Buffer
67
- registered: boolean
68
- backupToken: Buffer
69
- registration: RegistrationOptions
70
- pairingCode: string | undefined
71
- lastPropHash: string | undefined
72
- routingInfo: Buffer | undefined
73
- }
74
-
75
- export type SignalDataTypeMap = {
76
- 'pre-key': KeyPair
77
- 'session': Uint8Array
78
- 'sender-key': Uint8Array
79
- 'sender-key-memory': { [jid: string]: boolean }
80
- 'app-state-sync-key': proto.Message.IAppStateSyncKeyData
81
- 'app-state-sync-version': LTHashState
82
- }
83
-
84
- export type SignalDataSet = { [T in keyof SignalDataTypeMap]?: { [id: string]: SignalDataTypeMap[T] | null } }
85
-
86
- type Awaitable<T> = T | Promise<T>
87
-
88
- export type SignalKeyStore = {
89
- get<T extends keyof SignalDataTypeMap>(type: T, ids: string[]): Awaitable<{ [id: string]: SignalDataTypeMap[T] }>
90
- set(data: SignalDataSet): Awaitable<void>
91
- /** clear all the data in the store */
92
- clear?(): Awaitable<void>
93
- }
94
-
95
- export type SignalKeyStoreWithTransaction = SignalKeyStore & {
96
- isInTransaction: () => boolean
97
- transaction<T>(exec: () => Promise<T>): Promise<T>
98
- }
99
-
100
- export type TransactionCapabilityOptions = {
101
- maxCommitRetries: number
102
- delayBetweenTriesMs: number
103
- }
104
-
105
- export type SignalAuthState = {
106
- creds: SignalCreds
107
- keys: SignalKeyStore | SignalKeyStoreWithTransaction
108
- }
109
-
110
- export type AuthenticationState = {
111
- creds: AuthenticationCreds
112
- keys: SignalKeyStore
113
- }
package/src/Types/Call.ts DELETED
@@ -1,15 +0,0 @@
1
-
2
- export type WACallUpdateType = 'offer' | 'ringing' | 'timeout' | 'reject' | 'accept'
3
-
4
- export type WACallEvent = {
5
- chatId: string
6
- from: string
7
- isGroup?: boolean
8
- groupJid?: string
9
- id: string
10
- date: Date
11
- isVideo?: boolean
12
- status: WACallUpdateType
13
- offline: boolean
14
- latencyMs?: number
15
- }