@sixcore/baileys 1.0.0 → 1.0.2

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 (228) hide show
  1. package/WAProto/index.js +14270 -302
  2. package/jessica.js +91 -0
  3. package/lib/Defaults/baileys-version.json +1 -1
  4. package/lib/Defaults/index.js +117 -79
  5. package/lib/Defaults/phonenumber-mcc.json +223 -0
  6. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  7. package/lib/Signal/Group/ciphertext-message.js +15 -0
  8. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  9. package/lib/Signal/Group/group-session-builder.js +64 -0
  10. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  11. package/lib/Signal/Group/group_cipher.js +96 -0
  12. package/lib/Signal/Group/index.d.ts +11 -0
  13. package/lib/Signal/Group/index.js +57 -0
  14. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  15. package/lib/Signal/Group/keyhelper.js +55 -0
  16. package/lib/Signal/Group/queue-job.d.ts +1 -0
  17. package/lib/Signal/Group/queue-job.js +57 -0
  18. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  19. package/lib/Signal/Group/sender-chain-key.js +34 -0
  20. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  21. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  22. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  23. package/lib/Signal/Group/sender-key-message.js +69 -0
  24. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  25. package/lib/Signal/Group/sender-key-name.js +51 -0
  26. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  27. package/lib/Signal/Group/sender-key-record.js +53 -0
  28. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  29. package/lib/Signal/Group/sender-key-state.js +99 -0
  30. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  31. package/{WASignalGroup/sender_message_key.js → lib/Signal/Group/sender-message-key.js} +6 -16
  32. package/lib/Signal/libsignal.js +51 -29
  33. package/lib/Socket/business.d.ts +43 -42
  34. package/lib/Socket/chats.d.ts +222 -36
  35. package/lib/Socket/chats.js +173 -153
  36. package/lib/Socket/dugong.d.ts +254 -0
  37. package/lib/Socket/dugong.js +484 -0
  38. package/lib/Socket/groups.d.ts +7 -7
  39. package/lib/Socket/groups.js +37 -35
  40. package/lib/Socket/index.d.ts +52 -51
  41. package/lib/Socket/index.js +1 -0
  42. package/lib/Socket/messages-recv.d.ts +37 -34
  43. package/lib/Socket/messages-recv.js +175 -37
  44. package/lib/Socket/messages-send.d.ts +12 -18
  45. package/lib/Socket/messages-send.js +396 -574
  46. package/lib/Socket/newsletter.d.ts +28 -26
  47. package/lib/Socket/newsletter.js +132 -121
  48. package/lib/Socket/registration.d.ts +52 -49
  49. package/lib/Socket/registration.js +7 -7
  50. package/lib/Socket/socket.d.ts +0 -1
  51. package/lib/Socket/socket.js +49 -27
  52. package/lib/Socket/usync.d.ts +10 -11
  53. package/lib/Store/make-cache-manager-store.d.ts +1 -2
  54. package/lib/Store/make-in-memory-store.d.ts +2 -2
  55. package/lib/Store/make-in-memory-store.js +1 -5
  56. package/lib/Store/make-ordered-dictionary.js +2 -2
  57. package/lib/Types/Auth.d.ts +1 -0
  58. package/lib/Types/Call.d.ts +1 -1
  59. package/lib/Types/Chat.d.ts +7 -12
  60. package/lib/Types/Events.d.ts +2 -17
  61. package/lib/Types/GroupMetadata.d.ts +2 -3
  62. package/lib/Types/Label.d.ts +0 -11
  63. package/lib/Types/Label.js +1 -1
  64. package/lib/Types/LabelAssociation.js +1 -1
  65. package/lib/Types/Message.d.ts +10 -170
  66. package/lib/Types/Newsletter.d.ts +97 -86
  67. package/lib/Types/Newsletter.js +38 -32
  68. package/lib/Types/Socket.d.ts +2 -7
  69. package/lib/Types/index.d.ts +0 -9
  70. package/lib/Types/index.js +1 -1
  71. package/lib/Utils/auth-utils.js +14 -35
  72. package/lib/Utils/business.d.ts +1 -1
  73. package/lib/Utils/business.js +2 -2
  74. package/lib/Utils/chat-utils.d.ts +12 -11
  75. package/lib/Utils/chat-utils.js +36 -52
  76. package/lib/Utils/crypto.d.ts +16 -15
  77. package/lib/Utils/crypto.js +26 -74
  78. package/lib/Utils/decode-wa-message.d.ts +0 -17
  79. package/lib/Utils/decode-wa-message.js +17 -53
  80. package/lib/Utils/event-buffer.js +7 -10
  81. package/lib/Utils/generics.d.ts +17 -13
  82. package/lib/Utils/generics.js +79 -58
  83. package/lib/Utils/history.d.ts +2 -6
  84. package/lib/Utils/history.js +6 -4
  85. package/lib/Utils/logger.d.ts +3 -1
  86. package/lib/Utils/lt-hash.js +12 -12
  87. package/lib/Utils/make-mutex.d.ts +2 -2
  88. package/lib/Utils/messages-media.d.ts +28 -25
  89. package/lib/Utils/messages-media.js +733 -557
  90. package/lib/Utils/messages.js +68 -473
  91. package/lib/Utils/noise-handler.d.ts +5 -4
  92. package/lib/Utils/noise-handler.js +14 -19
  93. package/lib/Utils/process-message.d.ts +5 -5
  94. package/lib/Utils/process-message.js +23 -75
  95. package/lib/Utils/signal.d.ts +1 -2
  96. package/lib/Utils/signal.js +26 -32
  97. package/lib/Utils/use-multi-file-auth-state.d.ts +1 -0
  98. package/lib/Utils/use-multi-file-auth-state.js +66 -242
  99. package/lib/Utils/validate-connection.d.ts +1 -1
  100. package/lib/Utils/validate-connection.js +88 -64
  101. package/lib/WABinary/constants.d.ts +27 -24
  102. package/lib/WABinary/decode.d.ts +2 -1
  103. package/lib/WABinary/decode.js +11 -23
  104. package/lib/WABinary/encode.d.ts +2 -1
  105. package/lib/WABinary/encode.js +147 -134
  106. package/lib/WABinary/generic-utils.d.ts +5 -2
  107. package/lib/WABinary/generic-utils.js +125 -37
  108. package/lib/WABinary/jid-utils.d.ts +1 -1
  109. package/lib/WAM/BinaryInfo.d.ts +11 -2
  110. package/lib/WAM/encode.d.ts +2 -1
  111. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +3 -3
  112. package/lib/WAUSync/USyncUser.d.ts +2 -0
  113. package/lib/index.d.ts +12 -0
  114. package/lib/index.js +64 -1
  115. package/package.json +113 -51
  116. package/WAProto/GenerateStatics.sh +0 -4
  117. package/WAProto/WAProto.proto +0 -4357
  118. package/WAProto/index.d.ts +0 -50383
  119. package/WASignalGroup/GroupProtocol.js +0 -1697
  120. package/WASignalGroup/ciphertext_message.js +0 -16
  121. package/WASignalGroup/generate-proto.sh +0 -1
  122. package/WASignalGroup/group.proto +0 -42
  123. package/WASignalGroup/group_cipher.js +0 -120
  124. package/WASignalGroup/group_session_builder.js +0 -46
  125. package/WASignalGroup/index.js +0 -5
  126. package/WASignalGroup/keyhelper.js +0 -21
  127. package/WASignalGroup/protobufs.js +0 -3
  128. package/WASignalGroup/queue_job.js +0 -69
  129. package/WASignalGroup/sender_chain_key.js +0 -50
  130. package/WASignalGroup/sender_key_distribution_message.js +0 -78
  131. package/WASignalGroup/sender_key_message.js +0 -92
  132. package/WASignalGroup/sender_key_name.js +0 -70
  133. package/WASignalGroup/sender_key_record.js +0 -56
  134. package/WASignalGroup/sender_key_state.js +0 -129
  135. package/lib/Utils/use-single-file-auth-state.d.ts +0 -12
  136. package/lib/Utils/use-single-file-auth-state.js +0 -75
  137. package/src/Defaults/baileys-version.json +0 -3
  138. package/src/Defaults/index.ts +0 -133
  139. package/src/Signal/Group/ciphertext-message.ts +0 -9
  140. package/src/Signal/Group/group-session-builder.ts +0 -56
  141. package/src/Signal/Group/group_cipher.ts +0 -117
  142. package/src/Signal/Group/index.ts +0 -11
  143. package/src/Signal/Group/keyhelper.ts +0 -28
  144. package/src/Signal/Group/sender-chain-key.ts +0 -34
  145. package/src/Signal/Group/sender-key-distribution-message.ts +0 -95
  146. package/src/Signal/Group/sender-key-message.ts +0 -96
  147. package/src/Signal/Group/sender-key-name.ts +0 -66
  148. package/src/Signal/Group/sender-key-record.ts +0 -69
  149. package/src/Signal/Group/sender-key-state.ts +0 -134
  150. package/src/Signal/Group/sender-message-key.ts +0 -36
  151. package/src/Signal/libsignal.ts +0 -447
  152. package/src/Signal/lid-mapping.ts +0 -209
  153. package/src/Socket/Client/index.ts +0 -2
  154. package/src/Socket/Client/types.ts +0 -22
  155. package/src/Socket/Client/websocket.ts +0 -56
  156. package/src/Socket/business.ts +0 -421
  157. package/src/Socket/chats.ts +0 -1223
  158. package/src/Socket/communities.ts +0 -477
  159. package/src/Socket/groups.ts +0 -361
  160. package/src/Socket/index.ts +0 -22
  161. package/src/Socket/messages-recv.ts +0 -1563
  162. package/src/Socket/messages-send.ts +0 -1210
  163. package/src/Socket/mex.ts +0 -58
  164. package/src/Socket/newsletter.ts +0 -229
  165. package/src/Socket/socket.ts +0 -1072
  166. package/src/Types/Auth.ts +0 -115
  167. package/src/Types/Bussines.ts +0 -20
  168. package/src/Types/Call.ts +0 -14
  169. package/src/Types/Chat.ts +0 -138
  170. package/src/Types/Contact.ts +0 -24
  171. package/src/Types/Events.ts +0 -132
  172. package/src/Types/GroupMetadata.ts +0 -70
  173. package/src/Types/Label.ts +0 -48
  174. package/src/Types/LabelAssociation.ts +0 -35
  175. package/src/Types/Message.ts +0 -424
  176. package/src/Types/Newsletter.ts +0 -98
  177. package/src/Types/Product.ts +0 -85
  178. package/src/Types/Signal.ts +0 -76
  179. package/src/Types/Socket.ts +0 -150
  180. package/src/Types/State.ts +0 -43
  181. package/src/Types/USync.ts +0 -27
  182. package/src/Types/globals.d.ts +0 -8
  183. package/src/Types/index.ts +0 -67
  184. package/src/Utils/auth-utils.ts +0 -331
  185. package/src/Utils/browser-utils.ts +0 -31
  186. package/src/Utils/business.ts +0 -286
  187. package/src/Utils/chat-utils.ts +0 -933
  188. package/src/Utils/crypto.ts +0 -184
  189. package/src/Utils/decode-wa-message.ts +0 -355
  190. package/src/Utils/event-buffer.ts +0 -662
  191. package/src/Utils/generics.ts +0 -470
  192. package/src/Utils/history.ts +0 -114
  193. package/src/Utils/index.ts +0 -18
  194. package/src/Utils/link-preview.ts +0 -111
  195. package/src/Utils/logger.ts +0 -13
  196. package/src/Utils/lt-hash.ts +0 -65
  197. package/src/Utils/make-mutex.ts +0 -45
  198. package/src/Utils/message-retry-manager.ts +0 -229
  199. package/src/Utils/messages-media.ts +0 -820
  200. package/src/Utils/messages.ts +0 -1137
  201. package/src/Utils/noise-handler.ts +0 -192
  202. package/src/Utils/pre-key-manager.ts +0 -126
  203. package/src/Utils/process-message.ts +0 -622
  204. package/src/Utils/signal.ts +0 -214
  205. package/src/Utils/use-multi-file-auth-state.ts +0 -136
  206. package/src/Utils/validate-connection.ts +0 -253
  207. package/src/WABinary/constants.ts +0 -1305
  208. package/src/WABinary/decode.ts +0 -281
  209. package/src/WABinary/encode.ts +0 -253
  210. package/src/WABinary/generic-utils.ts +0 -127
  211. package/src/WABinary/index.ts +0 -5
  212. package/src/WABinary/jid-utils.ts +0 -128
  213. package/src/WABinary/types.ts +0 -17
  214. package/src/WAM/BinaryInfo.ts +0 -12
  215. package/src/WAM/constants.ts +0 -22889
  216. package/src/WAM/encode.ts +0 -169
  217. package/src/WAM/index.ts +0 -3
  218. package/src/WAUSync/Protocols/USyncContactProtocol.ts +0 -32
  219. package/src/WAUSync/Protocols/USyncDeviceProtocol.ts +0 -78
  220. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.ts +0 -35
  221. package/src/WAUSync/Protocols/USyncStatusProtocol.ts +0 -44
  222. package/src/WAUSync/Protocols/UsyncBotProfileProtocol.ts +0 -76
  223. package/src/WAUSync/Protocols/UsyncLIDProtocol.ts +0 -33
  224. package/src/WAUSync/Protocols/index.ts +0 -4
  225. package/src/WAUSync/USyncQuery.ts +0 -133
  226. package/src/WAUSync/USyncUser.ts +0 -32
  227. package/src/WAUSync/index.ts +0 -3
  228. package/src/index.ts +0 -13
@@ -1,286 +0,0 @@
1
- import { Boom } from '@hapi/boom'
2
- import { createHash } from 'crypto'
3
- import { createWriteStream, promises as fs } from 'fs'
4
- import { tmpdir } from 'os'
5
- import { join } from 'path'
6
- import type {
7
- CatalogCollection,
8
- CatalogStatus,
9
- OrderDetails,
10
- OrderProduct,
11
- Product,
12
- ProductCreate,
13
- ProductUpdate,
14
- WAMediaUpload,
15
- WAMediaUploadFunction
16
- } from '../Types'
17
- import { type BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString } from '../WABinary'
18
- import { generateMessageIDV2 } from './generics'
19
- import { getStream, getUrlFromDirectPath } from './messages-media'
20
-
21
- export const parseCatalogNode = (node: BinaryNode) => {
22
- const catalogNode = getBinaryNodeChild(node, 'product_catalog')
23
- const products = getBinaryNodeChildren(catalogNode, 'product').map(parseProductNode)
24
- const paging = getBinaryNodeChild(catalogNode, 'paging')
25
-
26
- return {
27
- products,
28
- nextPageCursor: paging ? getBinaryNodeChildString(paging, 'after') : undefined
29
- }
30
- }
31
-
32
- export const parseCollectionsNode = (node: BinaryNode) => {
33
- const collectionsNode = getBinaryNodeChild(node, 'collections')
34
- const collections = getBinaryNodeChildren(collectionsNode, 'collection').map<CatalogCollection>(collectionNode => {
35
- const id = getBinaryNodeChildString(collectionNode, 'id')!
36
- const name = getBinaryNodeChildString(collectionNode, 'name')!
37
-
38
- const products = getBinaryNodeChildren(collectionNode, 'product').map(parseProductNode)
39
- return {
40
- id,
41
- name,
42
- products,
43
- status: parseStatusInfo(collectionNode)
44
- }
45
- })
46
-
47
- return {
48
- collections
49
- }
50
- }
51
-
52
- export const parseOrderDetailsNode = (node: BinaryNode) => {
53
- const orderNode = getBinaryNodeChild(node, 'order')
54
- const products = getBinaryNodeChildren(orderNode, 'product').map<OrderProduct>(productNode => {
55
- const imageNode = getBinaryNodeChild(productNode, 'image')!
56
- return {
57
- id: getBinaryNodeChildString(productNode, 'id')!,
58
- name: getBinaryNodeChildString(productNode, 'name')!,
59
- imageUrl: getBinaryNodeChildString(imageNode, 'url')!,
60
- price: +getBinaryNodeChildString(productNode, 'price')!,
61
- currency: getBinaryNodeChildString(productNode, 'currency')!,
62
- quantity: +getBinaryNodeChildString(productNode, 'quantity')!
63
- }
64
- })
65
-
66
- const priceNode = getBinaryNodeChild(orderNode, 'price')
67
-
68
- const orderDetails: OrderDetails = {
69
- price: {
70
- total: +getBinaryNodeChildString(priceNode, 'total')!,
71
- currency: getBinaryNodeChildString(priceNode, 'currency')!
72
- },
73
- products
74
- }
75
-
76
- return orderDetails
77
- }
78
-
79
- export const toProductNode = (productId: string | undefined, product: ProductCreate | ProductUpdate) => {
80
- const attrs: BinaryNode['attrs'] = {}
81
- const content: BinaryNode[] = []
82
-
83
- if (typeof productId !== 'undefined') {
84
- content.push({
85
- tag: 'id',
86
- attrs: {},
87
- content: Buffer.from(productId)
88
- })
89
- }
90
-
91
- if (typeof product.name !== 'undefined') {
92
- content.push({
93
- tag: 'name',
94
- attrs: {},
95
- content: Buffer.from(product.name)
96
- })
97
- }
98
-
99
- if (typeof product.description !== 'undefined') {
100
- content.push({
101
- tag: 'description',
102
- attrs: {},
103
- content: Buffer.from(product.description)
104
- })
105
- }
106
-
107
- if (typeof product.retailerId !== 'undefined') {
108
- content.push({
109
- tag: 'retailer_id',
110
- attrs: {},
111
- content: Buffer.from(product.retailerId)
112
- })
113
- }
114
-
115
- if (product.images.length) {
116
- content.push({
117
- tag: 'media',
118
- attrs: {},
119
- content: product.images.map(img => {
120
- if (!('url' in img)) {
121
- throw new Boom('Expected img for product to already be uploaded', { statusCode: 400 })
122
- }
123
-
124
- return {
125
- tag: 'image',
126
- attrs: {},
127
- content: [
128
- {
129
- tag: 'url',
130
- attrs: {},
131
- content: Buffer.from(img.url.toString())
132
- }
133
- ]
134
- }
135
- })
136
- })
137
- }
138
-
139
- if (typeof product.price !== 'undefined') {
140
- content.push({
141
- tag: 'price',
142
- attrs: {},
143
- content: Buffer.from(product.price.toString())
144
- })
145
- }
146
-
147
- if (typeof product.currency !== 'undefined') {
148
- content.push({
149
- tag: 'currency',
150
- attrs: {},
151
- content: Buffer.from(product.currency)
152
- })
153
- }
154
-
155
- if ('originCountryCode' in product) {
156
- if (typeof product.originCountryCode === 'undefined') {
157
- attrs['compliance_category'] = 'COUNTRY_ORIGIN_EXEMPT'
158
- } else {
159
- content.push({
160
- tag: 'compliance_info',
161
- attrs: {},
162
- content: [
163
- {
164
- tag: 'country_code_origin',
165
- attrs: {},
166
- content: Buffer.from(product.originCountryCode)
167
- }
168
- ]
169
- })
170
- }
171
- }
172
-
173
- if (typeof product.isHidden !== 'undefined') {
174
- attrs['is_hidden'] = product.isHidden.toString()
175
- }
176
-
177
- const node: BinaryNode = {
178
- tag: 'product',
179
- attrs,
180
- content
181
- }
182
- return node
183
- }
184
-
185
- export const parseProductNode = (productNode: BinaryNode) => {
186
- const isHidden = productNode.attrs.is_hidden === 'true'
187
- const id = getBinaryNodeChildString(productNode, 'id')!
188
-
189
- const mediaNode = getBinaryNodeChild(productNode, 'media')!
190
- const statusInfoNode = getBinaryNodeChild(productNode, 'status_info')!
191
-
192
- const product: Product = {
193
- id,
194
- imageUrls: parseImageUrls(mediaNode),
195
- reviewStatus: {
196
- whatsapp: getBinaryNodeChildString(statusInfoNode, 'status')!
197
- },
198
- availability: 'in stock',
199
- name: getBinaryNodeChildString(productNode, 'name')!,
200
- retailerId: getBinaryNodeChildString(productNode, 'retailer_id'),
201
- url: getBinaryNodeChildString(productNode, 'url'),
202
- description: getBinaryNodeChildString(productNode, 'description')!,
203
- price: +getBinaryNodeChildString(productNode, 'price')!,
204
- currency: getBinaryNodeChildString(productNode, 'currency')!,
205
- isHidden
206
- }
207
-
208
- return product
209
- }
210
-
211
- /**
212
- * Uploads images not already uploaded to WA's servers
213
- */
214
- export async function uploadingNecessaryImagesOfProduct<T extends ProductUpdate | ProductCreate>(
215
- product: T,
216
- waUploadToServer: WAMediaUploadFunction,
217
- timeoutMs = 30_000
218
- ) {
219
- product = {
220
- ...product,
221
- images: product.images
222
- ? await uploadingNecessaryImages(product.images, waUploadToServer, timeoutMs)
223
- : product.images
224
- }
225
- return product
226
- }
227
-
228
- /**
229
- * Uploads images not already uploaded to WA's servers
230
- */
231
- export const uploadingNecessaryImages = async (
232
- images: WAMediaUpload[],
233
- waUploadToServer: WAMediaUploadFunction,
234
- timeoutMs = 30_000
235
- ) => {
236
- const results = await Promise.all(
237
- images.map<Promise<{ url: string }>>(async img => {
238
- if ('url' in img) {
239
- const url = img.url.toString()
240
- if (url.includes('.whatsapp.net')) {
241
- return { url }
242
- }
243
- }
244
-
245
- const { stream } = await getStream(img)
246
- const hasher = createHash('sha256')
247
-
248
- const filePath = join(tmpdir(), 'img' + generateMessageIDV2())
249
- const encFileWriteStream = createWriteStream(filePath)
250
-
251
- for await (const block of stream) {
252
- hasher.update(block)
253
- encFileWriteStream.write(block)
254
- }
255
-
256
- const sha = hasher.digest('base64')
257
-
258
- const { directPath } = await waUploadToServer(filePath, {
259
- mediaType: 'product-catalog-image',
260
- fileEncSha256B64: sha,
261
- timeoutMs
262
- })
263
-
264
- await fs.unlink(filePath).catch(err => console.log('Error deleting temp file ', err))
265
-
266
- return { url: getUrlFromDirectPath(directPath) }
267
- })
268
- )
269
- return results
270
- }
271
-
272
- const parseImageUrls = (mediaNode: BinaryNode) => {
273
- const imgNode = getBinaryNodeChild(mediaNode, 'image')
274
- return {
275
- requested: getBinaryNodeChildString(imgNode, 'request_image_url')!,
276
- original: getBinaryNodeChildString(imgNode, 'original_image_url')!
277
- }
278
- }
279
-
280
- const parseStatusInfo = (mediaNode: BinaryNode): CatalogStatus => {
281
- const node = getBinaryNodeChild(mediaNode, 'status_info')
282
- return {
283
- status: getBinaryNodeChildString(node, 'status')!,
284
- canAppeal: getBinaryNodeChildString(node, 'can_appeal') === 'true'
285
- }
286
- }