gifted-baileys 1.5.5 → 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 (251) hide show
  1. package/README.md +6 -1642
  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/Signal/libsignal.js +0 -180
  136. package/src/Signal/libsignal.ts +0 -141
  137. package/src/Socket/Client/abstract-socket-client.ts +0 -19
  138. package/src/Socket/Client/index.ts +0 -3
  139. package/src/Socket/Client/mobile-socket-client.js +0 -78
  140. package/src/Socket/Client/mobile-socket-client.ts +0 -66
  141. package/src/Socket/Client/web-socket-client.js +0 -75
  142. package/src/Socket/Client/web-socket-client.ts +0 -57
  143. package/src/Socket/business.ts +0 -281
  144. package/src/Socket/chats.ts +0 -1030
  145. package/src/Socket/groups.ts +0 -356
  146. package/src/Socket/index.ts +0 -13
  147. package/src/Socket/messages-recv.ts +0 -985
  148. package/src/Socket/messages-send.ts +0 -871
  149. package/src/Socket/newsletter.ts +0 -282
  150. package/src/Socket/registration.ts +0 -250
  151. package/src/Socket/socket.ts +0 -777
  152. package/src/Store/index.ts +0 -3
  153. package/src/Store/make-cache-manager-store.ts +0 -100
  154. package/src/Store/make-in-memory-store.ts +0 -475
  155. package/src/Store/make-ordered-dictionary.ts +0 -86
  156. package/src/Store/object-repository.ts +0 -32
  157. package/src/Tests/test.app-state-sync.js +0 -204
  158. package/src/Tests/test.app-state-sync.ts +0 -207
  159. package/src/Tests/test.event-buffer.js +0 -270
  160. package/src/Tests/test.event-buffer.ts +0 -319
  161. package/src/Tests/test.key-store.js +0 -76
  162. package/src/Tests/test.key-store.ts +0 -92
  163. package/src/Tests/test.libsignal.js +0 -141
  164. package/src/Tests/test.libsignal.ts +0 -186
  165. package/src/Tests/test.media-download.js +0 -93
  166. package/src/Tests/test.media-download.ts +0 -76
  167. package/src/Tests/test.messages.js +0 -33
  168. package/src/Tests/test.messages.ts +0 -37
  169. package/src/Tests/utils.js +0 -34
  170. package/src/Tests/utils.ts +0 -36
  171. package/src/Types/Auth.ts +0 -113
  172. package/src/Types/Call.ts +0 -15
  173. package/src/Types/Chat.ts +0 -106
  174. package/src/Types/Events.ts +0 -93
  175. package/src/Types/GroupMetadata.ts +0 -53
  176. package/src/Types/Label.ts +0 -36
  177. package/src/Types/Message.ts +0 -288
  178. package/src/Types/Newsletter.ts +0 -98
  179. package/src/Types/Product.ts +0 -85
  180. package/src/Types/Signal.ts +0 -68
  181. package/src/Types/State.ts +0 -29
  182. package/src/Types/index.ts +0 -59
  183. package/src/Utils/auth-utils.ts +0 -222
  184. package/src/Utils/baileys-event-stream.js +0 -92
  185. package/src/Utils/baileys-event-stream.ts +0 -66
  186. package/src/Utils/business.ts +0 -275
  187. package/src/Utils/chat-utils.ts +0 -860
  188. package/src/Utils/crypto.ts +0 -131
  189. package/src/Utils/decode-wa-message.js +0 -211
  190. package/src/Utils/decode-wa-message.ts +0 -228
  191. package/src/Utils/event-buffer.ts +0 -613
  192. package/src/Utils/generics.ts +0 -434
  193. package/src/Utils/history.ts +0 -112
  194. package/src/Utils/index.ts +0 -17
  195. package/src/Utils/link-preview.ts +0 -122
  196. package/src/Utils/logger.ts +0 -3
  197. package/src/Utils/lt-hash.ts +0 -61
  198. package/src/Utils/make-mutex.ts +0 -44
  199. package/src/Utils/messages-media.ts +0 -847
  200. package/src/Utils/messages.ts +0 -956
  201. package/src/Utils/noise-handler.ts +0 -197
  202. package/src/Utils/process-message.ts +0 -414
  203. package/src/Utils/signal.ts +0 -177
  204. package/src/Utils/use-multi-file-auth-state.ts +0 -90
  205. package/src/Utils/validate-connection.ts +0 -238
  206. package/src/WABinary/constants.ts +0 -42
  207. package/src/WABinary/decode.ts +0 -265
  208. package/src/WABinary/encode.ts +0 -236
  209. package/src/WABinary/generic-utils.ts +0 -121
  210. package/src/WABinary/index.ts +0 -5
  211. package/src/WABinary/jid-utils.ts +0 -68
  212. package/src/WABinary/types.ts +0 -17
  213. package/src/WAM/BinaryInfo.ts +0 -12
  214. package/src/WAM/constants.ts +0 -15382
  215. package/src/WAM/encode.ts +0 -174
  216. package/src/WAM/index.ts +0 -3
  217. package/src/gifted +0 -1
  218. package/src/index.ts +0 -13
  219. /package/{src → lib}/Defaults/phonenumber-mcc.json +0 -0
  220. /package/{src → lib}/Socket/Client/abstract-socket-client.js +0 -0
  221. /package/{src → lib}/Store/index.js +0 -0
  222. /package/{src → lib}/Store/make-ordered-dictionary.js +0 -0
  223. /package/{src → lib}/Types/Auth.js +0 -0
  224. /package/{src → lib}/Types/Call.js +0 -0
  225. /package/{src → lib}/Types/Chat.js +0 -0
  226. /package/{src → lib}/Types/Contact.js +0 -0
  227. /package/{src → lib}/Types/Events.js +0 -0
  228. /package/{src → lib}/Types/GroupMetadata.js +0 -0
  229. /package/{src → lib}/Types/Label.js +0 -0
  230. /package/{src → lib}/Types/LabelAssociation.js +0 -0
  231. /package/{src → lib}/Types/Message.js +0 -0
  232. /package/{src → lib}/Types/Newsletter.js +0 -0
  233. /package/{src → lib}/Types/Product.js +0 -0
  234. /package/{src → lib}/Types/Signal.js +0 -0
  235. /package/{src → lib}/Types/Socket.js +0 -0
  236. /package/{src → lib}/Types/State.js +0 -0
  237. /package/{src/WABinary/types.js → lib/Types/USync.js} +0 -0
  238. /package/{src → lib}/Types/index.js +0 -0
  239. /package/{src → lib}/Utils/index.js +0 -0
  240. /package/{src → lib}/Utils/logger.js +0 -0
  241. /package/{src → lib}/Utils/lt-hash.js +0 -0
  242. /package/{src → lib}/Utils/noise-handler.js +0 -0
  243. /package/{src → lib}/WABinary/constants.js +0 -0
  244. /package/{src → lib}/WABinary/decode.js +0 -0
  245. /package/{src → lib}/WABinary/generic-utils.js +0 -0
  246. /package/{src → lib}/WABinary/index.js +0 -0
  247. /package/{src → lib}/WABinary/jid-utils.js +0 -0
  248. /package/{src → lib}/WAM/BinaryInfo.js +0 -0
  249. /package/{src → lib}/WAM/constants.js +0 -0
  250. /package/{src → lib}/WAM/encode.js +0 -0
  251. /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
- }