gifted-baileys 1.5.0 → 1.5.5

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 (222) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1429 -684
  3. package/package.json +11 -26
  4. package/src/Defaults/baileys-version.json +3 -0
  5. package/{lib → src}/Defaults/index.js +16 -8
  6. package/src/Defaults/index.ts +131 -0
  7. package/src/Defaults/phonenumber-mcc.json +223 -0
  8. package/src/Signal/libsignal.js +180 -0
  9. package/src/Signal/libsignal.ts +141 -0
  10. package/src/Socket/Client/abstract-socket-client.ts +19 -0
  11. package/src/Socket/Client/index.ts +3 -0
  12. package/src/Socket/Client/mobile-socket-client.js +78 -0
  13. package/src/Socket/Client/mobile-socket-client.ts +66 -0
  14. package/src/Socket/Client/web-socket-client.js +75 -0
  15. package/src/Socket/Client/web-socket-client.ts +57 -0
  16. package/{lib → src}/Socket/business.js +33 -27
  17. package/src/Socket/business.ts +281 -0
  18. package/{lib → src}/Socket/chats.js +197 -178
  19. package/src/Socket/chats.ts +1030 -0
  20. package/{lib → src}/Socket/groups.js +69 -79
  21. package/src/Socket/groups.ts +356 -0
  22. package/{lib → src}/Socket/index.js +1 -4
  23. package/src/Socket/index.ts +13 -0
  24. package/{lib → src}/Socket/messages-recv.js +160 -108
  25. package/src/Socket/messages-recv.ts +985 -0
  26. package/{lib → src}/Socket/messages-send.js +183 -100
  27. package/src/Socket/messages-send.ts +871 -0
  28. package/src/Socket/newsletter.js +227 -0
  29. package/src/Socket/newsletter.ts +282 -0
  30. package/{lib → src}/Socket/registration.js +55 -63
  31. package/src/Socket/registration.ts +250 -0
  32. package/{lib → src}/Socket/socket.js +107 -66
  33. package/src/Socket/socket.ts +777 -0
  34. package/src/Store/index.ts +3 -0
  35. package/{lib → src}/Store/make-cache-manager-store.js +34 -25
  36. package/src/Store/make-cache-manager-store.ts +100 -0
  37. package/{lib → src}/Store/make-in-memory-store.js +51 -61
  38. package/src/Store/make-in-memory-store.ts +475 -0
  39. package/src/Store/make-ordered-dictionary.ts +86 -0
  40. package/{lib → src}/Store/object-repository.js +1 -1
  41. package/src/Store/object-repository.ts +32 -0
  42. package/src/Tests/test.app-state-sync.js +204 -0
  43. package/src/Tests/test.app-state-sync.ts +207 -0
  44. package/src/Tests/test.event-buffer.js +270 -0
  45. package/src/Tests/test.event-buffer.ts +319 -0
  46. package/src/Tests/test.key-store.js +76 -0
  47. package/src/Tests/test.key-store.ts +92 -0
  48. package/src/Tests/test.libsignal.js +141 -0
  49. package/src/Tests/test.libsignal.ts +186 -0
  50. package/src/Tests/test.media-download.js +93 -0
  51. package/src/Tests/test.media-download.ts +76 -0
  52. package/src/Tests/test.messages.js +33 -0
  53. package/src/Tests/test.messages.ts +37 -0
  54. package/src/Tests/utils.js +34 -0
  55. package/src/Tests/utils.ts +36 -0
  56. package/src/Types/Auth.ts +113 -0
  57. package/src/Types/Call.ts +15 -0
  58. package/src/Types/Chat.ts +106 -0
  59. package/{lib/Types/Contact.d.ts → src/Types/Contact.ts} +9 -8
  60. package/src/Types/Events.ts +93 -0
  61. package/src/Types/GroupMetadata.ts +53 -0
  62. package/{lib → src}/Types/Label.js +1 -1
  63. package/src/Types/Label.ts +36 -0
  64. package/{lib → src}/Types/LabelAssociation.js +1 -1
  65. package/{lib/Types/LabelAssociation.d.ts → src/Types/LabelAssociation.ts} +22 -16
  66. package/src/Types/Message.ts +288 -0
  67. package/src/Types/Newsletter.js +32 -0
  68. package/src/Types/Newsletter.ts +98 -0
  69. package/src/Types/Product.ts +85 -0
  70. package/src/Types/Signal.ts +68 -0
  71. package/{lib/Types/Socket.d.ts → src/Types/Socket.ts} +68 -56
  72. package/src/Types/State.ts +29 -0
  73. package/{lib → src}/Types/index.js +2 -1
  74. package/src/Types/index.ts +59 -0
  75. package/{lib → src}/Utils/auth-utils.js +95 -76
  76. package/src/Utils/auth-utils.ts +222 -0
  77. package/src/Utils/baileys-event-stream.js +92 -0
  78. package/src/Utils/baileys-event-stream.ts +66 -0
  79. package/{lib → src}/Utils/business.js +45 -17
  80. package/src/Utils/business.ts +275 -0
  81. package/{lib → src}/Utils/chat-utils.js +74 -46
  82. package/src/Utils/chat-utils.ts +860 -0
  83. package/{lib → src}/Utils/crypto.js +31 -21
  84. package/src/Utils/crypto.ts +131 -0
  85. package/src/Utils/decode-wa-message.js +211 -0
  86. package/src/Utils/decode-wa-message.ts +228 -0
  87. package/{lib → src}/Utils/event-buffer.js +13 -4
  88. package/src/Utils/event-buffer.ts +613 -0
  89. package/{lib → src}/Utils/generics.js +98 -45
  90. package/src/Utils/generics.ts +434 -0
  91. package/{lib → src}/Utils/history.js +39 -10
  92. package/src/Utils/history.ts +112 -0
  93. package/src/Utils/index.ts +17 -0
  94. package/{lib → src}/Utils/link-preview.js +54 -17
  95. package/src/Utils/link-preview.ts +122 -0
  96. package/src/Utils/logger.ts +3 -0
  97. package/src/Utils/lt-hash.ts +61 -0
  98. package/{lib → src}/Utils/make-mutex.js +13 -4
  99. package/src/Utils/make-mutex.ts +44 -0
  100. package/{lib → src}/Utils/messages-media.js +296 -192
  101. package/src/Utils/messages-media.ts +847 -0
  102. package/{lib → src}/Utils/messages.js +124 -113
  103. package/src/Utils/messages.ts +956 -0
  104. package/{lib → src}/Utils/noise-handler.js +16 -3
  105. package/src/Utils/noise-handler.ts +197 -0
  106. package/{lib → src}/Utils/process-message.js +33 -29
  107. package/src/Utils/process-message.ts +414 -0
  108. package/{lib → src}/Utils/signal.js +23 -14
  109. package/src/Utils/signal.ts +177 -0
  110. package/{lib → src}/Utils/use-multi-file-auth-state.js +28 -19
  111. package/src/Utils/use-multi-file-auth-state.ts +90 -0
  112. package/{lib → src}/Utils/validate-connection.js +25 -42
  113. package/src/Utils/validate-connection.ts +238 -0
  114. package/src/WABinary/constants.ts +42 -0
  115. package/{lib → src}/WABinary/decode.js +17 -7
  116. package/src/WABinary/decode.ts +265 -0
  117. package/{lib → src}/WABinary/encode.js +17 -7
  118. package/src/WABinary/encode.ts +236 -0
  119. package/{lib → src}/WABinary/generic-utils.js +2 -2
  120. package/src/WABinary/generic-utils.ts +121 -0
  121. package/src/WABinary/index.ts +5 -0
  122. package/{lib → src}/WABinary/jid-utils.js +4 -1
  123. package/src/WABinary/jid-utils.ts +68 -0
  124. package/src/WABinary/types.ts +17 -0
  125. package/src/WAM/BinaryInfo.js +13 -0
  126. package/src/WAM/BinaryInfo.ts +12 -0
  127. package/src/WAM/constants.js +15350 -0
  128. package/src/WAM/constants.ts +15382 -0
  129. package/src/WAM/encode.js +155 -0
  130. package/src/WAM/encode.ts +174 -0
  131. package/src/WAM/index.js +19 -0
  132. package/src/WAM/index.ts +3 -0
  133. package/src/gifted +1 -0
  134. package/{lib → src}/index.js +1 -0
  135. package/src/index.ts +13 -0
  136. package/lib/Defaults/baileys-version.json +0 -3
  137. package/lib/Defaults/index.d.ts +0 -284
  138. package/lib/Defaults/phonenumber-mcc.json +0 -223
  139. package/lib/Signal/libsignal.d.ts +0 -3
  140. package/lib/Signal/libsignal.js +0 -152
  141. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  142. package/lib/Socket/Client/index.d.ts +0 -3
  143. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  144. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  145. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  146. package/lib/Socket/Client/web-socket-client.js +0 -62
  147. package/lib/Socket/business.d.ts +0 -135
  148. package/lib/Socket/chats.d.ts +0 -79
  149. package/lib/Socket/groups.d.ts +0 -113
  150. package/lib/Socket/index.d.ts +0 -137
  151. package/lib/Socket/messages-recv.d.ts +0 -124
  152. package/lib/Socket/messages-send.d.ts +0 -119
  153. package/lib/Socket/registration.d.ts +0 -232
  154. package/lib/Socket/socket.d.ts +0 -42
  155. package/lib/Store/index.d.ts +0 -3
  156. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  157. package/lib/Store/make-in-memory-store.d.ts +0 -117
  158. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  159. package/lib/Store/object-repository.d.ts +0 -10
  160. package/lib/Types/Auth.d.ts +0 -108
  161. package/lib/Types/Call.d.ts +0 -13
  162. package/lib/Types/Chat.d.ts +0 -102
  163. package/lib/Types/Events.d.ts +0 -157
  164. package/lib/Types/GroupMetadata.d.ts +0 -52
  165. package/lib/Types/Label.d.ts +0 -35
  166. package/lib/Types/Message.d.ts +0 -261
  167. package/lib/Types/Product.d.ts +0 -78
  168. package/lib/Types/Signal.d.ts +0 -57
  169. package/lib/Types/State.d.ts +0 -27
  170. package/lib/Types/index.d.ts +0 -56
  171. package/lib/Utils/auth-utils.d.ts +0 -18
  172. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  173. package/lib/Utils/baileys-event-stream.js +0 -63
  174. package/lib/Utils/business.d.ts +0 -22
  175. package/lib/Utils/chat-utils.d.ts +0 -71
  176. package/lib/Utils/crypto.d.ts +0 -41
  177. package/lib/Utils/decode-wa-message.d.ts +0 -19
  178. package/lib/Utils/decode-wa-message.js +0 -174
  179. package/lib/Utils/event-buffer.d.ts +0 -35
  180. package/lib/Utils/generics.d.ts +0 -94
  181. package/lib/Utils/history.d.ts +0 -15
  182. package/lib/Utils/index.d.ts +0 -17
  183. package/lib/Utils/link-preview.d.ts +0 -21
  184. package/lib/Utils/logger.d.ts +0 -4
  185. package/lib/Utils/lt-hash.d.ts +0 -12
  186. package/lib/Utils/make-mutex.d.ts +0 -7
  187. package/lib/Utils/messages-media.d.ts +0 -107
  188. package/lib/Utils/messages.d.ts +0 -76
  189. package/lib/Utils/noise-handler.d.ts +0 -20
  190. package/lib/Utils/process-message.d.ts +0 -41
  191. package/lib/Utils/signal.d.ts +0 -32
  192. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -12
  193. package/lib/Utils/validate-connection.d.ts +0 -11
  194. package/lib/WABinary/constants.d.ts +0 -27
  195. package/lib/WABinary/decode.d.ts +0 -7
  196. package/lib/WABinary/encode.d.ts +0 -3
  197. package/lib/WABinary/generic-utils.d.ts +0 -15
  198. package/lib/WABinary/index.d.ts +0 -5
  199. package/lib/WABinary/jid-utils.d.ts +0 -29
  200. package/lib/WABinary/types.d.ts +0 -18
  201. package/lib/index.d.ts +0 -10
  202. /package/{lib → src}/Socket/Client/abstract-socket-client.js +0 -0
  203. /package/{lib → src}/Socket/Client/index.js +0 -0
  204. /package/{lib → src}/Store/index.js +0 -0
  205. /package/{lib → src}/Store/make-ordered-dictionary.js +0 -0
  206. /package/{lib → src}/Types/Auth.js +0 -0
  207. /package/{lib → src}/Types/Call.js +0 -0
  208. /package/{lib → src}/Types/Chat.js +0 -0
  209. /package/{lib → src}/Types/Contact.js +0 -0
  210. /package/{lib → src}/Types/Events.js +0 -0
  211. /package/{lib → src}/Types/GroupMetadata.js +0 -0
  212. /package/{lib → src}/Types/Message.js +0 -0
  213. /package/{lib → src}/Types/Product.js +0 -0
  214. /package/{lib → src}/Types/Signal.js +0 -0
  215. /package/{lib → src}/Types/Socket.js +0 -0
  216. /package/{lib → src}/Types/State.js +0 -0
  217. /package/{lib → src}/Utils/index.js +0 -0
  218. /package/{lib → src}/Utils/logger.js +0 -0
  219. /package/{lib → src}/Utils/lt-hash.js +0 -0
  220. /package/{lib → src}/WABinary/constants.js +0 -0
  221. /package/{lib → src}/WABinary/index.js +0 -0
  222. /package/{lib → src}/WABinary/types.js +0 -0
@@ -0,0 +1,281 @@
1
+ import { GetCatalogOptions, ProductCreate, ProductUpdate, SocketConfig } from '../Types'
2
+ import { parseCatalogNode, parseCollectionsNode, parseOrderDetailsNode, parseProductNode, toProductNode, uploadingNecessaryImagesOfProduct } from '../Utils/business'
3
+ import { BinaryNode, jidNormalizedUser, S_WHATSAPP_NET } from '../WABinary'
4
+ import { getBinaryNodeChild } from '../WABinary/generic-utils'
5
+ import { makeMessagesRecvSocket } from './messages-recv'
6
+
7
+ export const makeBusinessSocket = (config: SocketConfig) => {
8
+ const sock = makeMessagesRecvSocket(config)
9
+ const {
10
+ authState,
11
+ query,
12
+ waUploadToServer
13
+ } = sock
14
+
15
+ const getCatalog = async({ jid, limit, cursor }: GetCatalogOptions) => {
16
+ jid = jid || authState.creds.me?.id
17
+ jid = jidNormalizedUser(jid)
18
+
19
+ const queryParamNodes: BinaryNode[] = [
20
+ {
21
+ tag: 'limit',
22
+ attrs: { },
23
+ content: Buffer.from((limit || 10).toString())
24
+ },
25
+ {
26
+ tag: 'width',
27
+ attrs: { },
28
+ content: Buffer.from('100')
29
+ },
30
+ {
31
+ tag: 'height',
32
+ attrs: { },
33
+ content: Buffer.from('100')
34
+ },
35
+ ]
36
+
37
+ if(cursor) {
38
+ queryParamNodes.push({
39
+ tag: 'after',
40
+ attrs: { },
41
+ content: cursor
42
+ })
43
+ }
44
+
45
+ const result = await query({
46
+ tag: 'iq',
47
+ attrs: {
48
+ to: S_WHATSAPP_NET,
49
+ type: 'get',
50
+ xmlns: 'w:biz:catalog'
51
+ },
52
+ content: [
53
+ {
54
+ tag: 'product_catalog',
55
+ attrs: {
56
+ jid,
57
+ 'allow_shop_source': 'true'
58
+ },
59
+ content: queryParamNodes
60
+ }
61
+ ]
62
+ })
63
+ return parseCatalogNode(result)
64
+ }
65
+
66
+ const getCollections = async(jid?: string, limit = 51) => {
67
+ jid = jid || authState.creds.me?.id
68
+ jid = jidNormalizedUser(jid)
69
+ const result = await query({
70
+ tag: 'iq',
71
+ attrs: {
72
+ to: S_WHATSAPP_NET,
73
+ type: 'get',
74
+ xmlns: 'w:biz:catalog',
75
+ 'smax_id': '35'
76
+ },
77
+ content: [
78
+ {
79
+ tag: 'collections',
80
+ attrs: {
81
+ 'biz_jid': jid,
82
+ },
83
+ content: [
84
+ {
85
+ tag: 'collection_limit',
86
+ attrs: { },
87
+ content: Buffer.from(limit.toString())
88
+ },
89
+ {
90
+ tag: 'item_limit',
91
+ attrs: { },
92
+ content: Buffer.from(limit.toString())
93
+ },
94
+ {
95
+ tag: 'width',
96
+ attrs: { },
97
+ content: Buffer.from('100')
98
+ },
99
+ {
100
+ tag: 'height',
101
+ attrs: { },
102
+ content: Buffer.from('100')
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ })
108
+
109
+ return parseCollectionsNode(result)
110
+ }
111
+
112
+ const getOrderDetails = async(orderId: string, tokenBase64: string) => {
113
+ const result = await query({
114
+ tag: 'iq',
115
+ attrs: {
116
+ to: S_WHATSAPP_NET,
117
+ type: 'get',
118
+ xmlns: 'fb:thrift_iq',
119
+ 'smax_id': '5'
120
+ },
121
+ content: [
122
+ {
123
+ tag: 'order',
124
+ attrs: {
125
+ op: 'get',
126
+ id: orderId
127
+ },
128
+ content: [
129
+ {
130
+ tag: 'image_dimensions',
131
+ attrs: { },
132
+ content: [
133
+ {
134
+ tag: 'width',
135
+ attrs: { },
136
+ content: Buffer.from('100')
137
+ },
138
+ {
139
+ tag: 'height',
140
+ attrs: { },
141
+ content: Buffer.from('100')
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ tag: 'token',
147
+ attrs: { },
148
+ content: Buffer.from(tokenBase64)
149
+ }
150
+ ]
151
+ }
152
+ ]
153
+ })
154
+
155
+ return parseOrderDetailsNode(result)
156
+ }
157
+
158
+ const productUpdate = async(productId: string, update: ProductUpdate) => {
159
+ update = await uploadingNecessaryImagesOfProduct(update, waUploadToServer)
160
+ const editNode = toProductNode(productId, update)
161
+
162
+ const result = await query({
163
+ tag: 'iq',
164
+ attrs: {
165
+ to: S_WHATSAPP_NET,
166
+ type: 'set',
167
+ xmlns: 'w:biz:catalog'
168
+ },
169
+ content: [
170
+ {
171
+ tag: 'product_catalog_edit',
172
+ attrs: { v: '1' },
173
+ content: [
174
+ editNode,
175
+ {
176
+ tag: 'width',
177
+ attrs: { },
178
+ content: '100'
179
+ },
180
+ {
181
+ tag: 'height',
182
+ attrs: { },
183
+ content: '100'
184
+ }
185
+ ]
186
+ }
187
+ ]
188
+ })
189
+
190
+ const productCatalogEditNode = getBinaryNodeChild(result, 'product_catalog_edit')
191
+ const productNode = getBinaryNodeChild(productCatalogEditNode, 'product')
192
+
193
+ return parseProductNode(productNode!)
194
+ }
195
+
196
+ const productCreate = async(create: ProductCreate) => {
197
+ // ensure isHidden is defined
198
+ create.isHidden = !!create.isHidden
199
+ create = await uploadingNecessaryImagesOfProduct(create, waUploadToServer)
200
+ const createNode = toProductNode(undefined, create)
201
+
202
+ const result = await query({
203
+ tag: 'iq',
204
+ attrs: {
205
+ to: S_WHATSAPP_NET,
206
+ type: 'set',
207
+ xmlns: 'w:biz:catalog'
208
+ },
209
+ content: [
210
+ {
211
+ tag: 'product_catalog_add',
212
+ attrs: { v: '1' },
213
+ content: [
214
+ createNode,
215
+ {
216
+ tag: 'width',
217
+ attrs: { },
218
+ content: '100'
219
+ },
220
+ {
221
+ tag: 'height',
222
+ attrs: { },
223
+ content: '100'
224
+ }
225
+ ]
226
+ }
227
+ ]
228
+ })
229
+
230
+ const productCatalogAddNode = getBinaryNodeChild(result, 'product_catalog_add')
231
+ const productNode = getBinaryNodeChild(productCatalogAddNode, 'product')
232
+
233
+ return parseProductNode(productNode!)
234
+ }
235
+
236
+ const productDelete = async(productIds: string[]) => {
237
+ const result = await query({
238
+ tag: 'iq',
239
+ attrs: {
240
+ to: S_WHATSAPP_NET,
241
+ type: 'set',
242
+ xmlns: 'w:biz:catalog'
243
+ },
244
+ content: [
245
+ {
246
+ tag: 'product_catalog_delete',
247
+ attrs: { v: '1' },
248
+ content: productIds.map(
249
+ id => ({
250
+ tag: 'product',
251
+ attrs: { },
252
+ content: [
253
+ {
254
+ tag: 'id',
255
+ attrs: { },
256
+ content: Buffer.from(id)
257
+ }
258
+ ]
259
+ })
260
+ )
261
+ }
262
+ ]
263
+ })
264
+
265
+ const productCatalogDelNode = getBinaryNodeChild(result, 'product_catalog_delete')
266
+ return {
267
+ deleted: +(productCatalogDelNode?.attrs.deleted_count || 0)
268
+ }
269
+ }
270
+
271
+ return {
272
+ ...sock,
273
+ logger: config.logger,
274
+ getOrderDetails,
275
+ getCatalog,
276
+ getCollections,
277
+ productCreate,
278
+ productDelete,
279
+ productUpdate
280
+ }
281
+ }