@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,56 +0,0 @@
1
- import WebSocket from 'ws'
2
- import { DEFAULT_ORIGIN } from '../../Defaults'
3
- import { AbstractSocketClient } from './types'
4
-
5
- export class WebSocketClient extends AbstractSocketClient {
6
- protected socket: WebSocket | null = null
7
-
8
- get isOpen(): boolean {
9
- return this.socket?.readyState === WebSocket.OPEN
10
- }
11
- get isClosed(): boolean {
12
- return this.socket === null || this.socket?.readyState === WebSocket.CLOSED
13
- }
14
- get isClosing(): boolean {
15
- return this.socket === null || this.socket?.readyState === WebSocket.CLOSING
16
- }
17
- get isConnecting(): boolean {
18
- return this.socket?.readyState === WebSocket.CONNECTING
19
- }
20
-
21
- connect() {
22
- if (this.socket) {
23
- return
24
- }
25
-
26
- this.socket = new WebSocket(this.url, {
27
- origin: DEFAULT_ORIGIN,
28
- headers: this.config.options?.headers as {},
29
- handshakeTimeout: this.config.connectTimeoutMs,
30
- timeout: this.config.connectTimeoutMs,
31
- agent: this.config.agent
32
- })
33
-
34
- this.socket.setMaxListeners(0)
35
-
36
- const events = ['close', 'error', 'upgrade', 'message', 'open', 'ping', 'pong', 'unexpected-response']
37
-
38
- for (const event of events) {
39
- this.socket?.on(event, (...args: any[]) => this.emit(event, ...args))
40
- }
41
- }
42
-
43
- close() {
44
- if (!this.socket) {
45
- return
46
- }
47
-
48
- this.socket.close()
49
- this.socket = null
50
- }
51
- send(str: string | Uint8Array, cb?: (err?: Error) => void): boolean {
52
- this.socket?.send(str, cb)
53
-
54
- return Boolean(this.socket)
55
- }
56
- }
@@ -1,421 +0,0 @@
1
- import type { GetCatalogOptions, ProductCreate, ProductUpdate, SocketConfig, WAMediaUpload } from '../Types'
2
- import type { UpdateBussinesProfileProps } from '../Types/Bussines'
3
- import { getRawMediaUploadData } from '../Utils'
4
- import {
5
- parseCatalogNode,
6
- parseCollectionsNode,
7
- parseOrderDetailsNode,
8
- parseProductNode,
9
- toProductNode,
10
- uploadingNecessaryImagesOfProduct
11
- } from '../Utils/business'
12
- import { type BinaryNode, jidNormalizedUser, S_WHATSAPP_NET } from '../WABinary'
13
- import { getBinaryNodeChild } from '../WABinary/generic-utils'
14
- import { makeMessagesRecvSocket } from './messages-recv'
15
-
16
- export const makeBusinessSocket = (config: SocketConfig) => {
17
- const sock = makeMessagesRecvSocket(config)
18
- const { authState, query, waUploadToServer } = sock
19
-
20
- const updateBussinesProfile = async (args: UpdateBussinesProfileProps) => {
21
- const node: BinaryNode[] = []
22
- const simpleFields: (keyof UpdateBussinesProfileProps)[] = ['address', 'email', 'description']
23
-
24
- node.push(
25
- ...simpleFields
26
- .filter(key => args[key])
27
- .map(key => ({
28
- tag: key,
29
- attrs: {},
30
- content: args[key] as string
31
- }))
32
- )
33
-
34
- if (args.websites) {
35
- node.push(
36
- ...args.websites.map(website => ({
37
- tag: 'website',
38
- attrs: {},
39
- content: website
40
- }))
41
- )
42
- }
43
-
44
- if (args.hours) {
45
- node.push({
46
- tag: 'business_hours',
47
- attrs: { timezone: args.hours.timezone },
48
- content: args.hours.days.map(config => {
49
- const base = {
50
- tag: 'business_hours_config',
51
- attrs: { day_of_week: config.day, mode: config.mode }
52
- }
53
-
54
- if (config.mode === 'specific_hours') {
55
- return {
56
- ...base,
57
- attrs: {
58
- ...base.attrs,
59
- open_time: config.openTimeInMinutes,
60
- close_time: config.closeTimeInMinutes
61
- }
62
- }
63
- }
64
-
65
- return base
66
- })
67
- })
68
- }
69
-
70
- const result = await query({
71
- tag: 'iq',
72
- attrs: {
73
- to: S_WHATSAPP_NET,
74
- type: 'set',
75
- xmlns: 'w:biz'
76
- },
77
- content: [
78
- {
79
- tag: 'business_profile',
80
- attrs: {
81
- v: '3',
82
- mutation_type: 'delta'
83
- },
84
- content: node
85
- }
86
- ]
87
- })
88
-
89
- return result
90
- }
91
-
92
- const updateCoverPhoto = async (photo: WAMediaUpload) => {
93
- const { fileSha256, filePath } = await getRawMediaUploadData(photo, 'biz-cover-photo')
94
- const fileSha256B64 = fileSha256.toString('base64')
95
-
96
- const { meta_hmac, fbid, ts } = await waUploadToServer(filePath, {
97
- fileEncSha256B64: fileSha256B64,
98
- mediaType: 'biz-cover-photo'
99
- })
100
-
101
- await query({
102
- tag: 'iq',
103
- attrs: {
104
- to: S_WHATSAPP_NET,
105
- type: 'set',
106
- xmlns: 'w:biz'
107
- },
108
- content: [
109
- {
110
- tag: 'business_profile',
111
- attrs: {
112
- v: '3',
113
- mutation_type: 'delta'
114
- },
115
- content: [
116
- {
117
- tag: 'cover_photo',
118
- attrs: { id: String(fbid), op: 'update', token: meta_hmac!, ts: String(ts) }
119
- }
120
- ]
121
- }
122
- ]
123
- })
124
-
125
- return fbid!
126
- }
127
-
128
- const removeCoverPhoto = async (id: string) => {
129
- return await query({
130
- tag: 'iq',
131
- attrs: {
132
- to: S_WHATSAPP_NET,
133
- type: 'set',
134
- xmlns: 'w:biz'
135
- },
136
- content: [
137
- {
138
- tag: 'business_profile',
139
- attrs: {
140
- v: '3',
141
- mutation_type: 'delta'
142
- },
143
- content: [
144
- {
145
- tag: 'cover_photo',
146
- attrs: { op: 'delete', id }
147
- }
148
- ]
149
- }
150
- ]
151
- })
152
- }
153
-
154
- const getCatalog = async ({ jid, limit, cursor }: GetCatalogOptions) => {
155
- jid = jid || authState.creds.me?.id
156
- jid = jidNormalizedUser(jid)
157
-
158
- const queryParamNodes: BinaryNode[] = [
159
- {
160
- tag: 'limit',
161
- attrs: {},
162
- content: Buffer.from((limit || 10).toString())
163
- },
164
- {
165
- tag: 'width',
166
- attrs: {},
167
- content: Buffer.from('100')
168
- },
169
- {
170
- tag: 'height',
171
- attrs: {},
172
- content: Buffer.from('100')
173
- }
174
- ]
175
-
176
- if (cursor) {
177
- queryParamNodes.push({
178
- tag: 'after',
179
- attrs: {},
180
- content: cursor
181
- })
182
- }
183
-
184
- const result = await query({
185
- tag: 'iq',
186
- attrs: {
187
- to: S_WHATSAPP_NET,
188
- type: 'get',
189
- xmlns: 'w:biz:catalog'
190
- },
191
- content: [
192
- {
193
- tag: 'product_catalog',
194
- attrs: {
195
- jid,
196
- allow_shop_source: 'true'
197
- },
198
- content: queryParamNodes
199
- }
200
- ]
201
- })
202
- return parseCatalogNode(result)
203
- }
204
-
205
- const getCollections = async (jid?: string, limit = 51) => {
206
- jid = jid || authState.creds.me?.id
207
- jid = jidNormalizedUser(jid)
208
- const result = await query({
209
- tag: 'iq',
210
- attrs: {
211
- to: S_WHATSAPP_NET,
212
- type: 'get',
213
- xmlns: 'w:biz:catalog',
214
- smax_id: '35'
215
- },
216
- content: [
217
- {
218
- tag: 'collections',
219
- attrs: {
220
- biz_jid: jid
221
- },
222
- content: [
223
- {
224
- tag: 'collection_limit',
225
- attrs: {},
226
- content: Buffer.from(limit.toString())
227
- },
228
- {
229
- tag: 'item_limit',
230
- attrs: {},
231
- content: Buffer.from(limit.toString())
232
- },
233
- {
234
- tag: 'width',
235
- attrs: {},
236
- content: Buffer.from('100')
237
- },
238
- {
239
- tag: 'height',
240
- attrs: {},
241
- content: Buffer.from('100')
242
- }
243
- ]
244
- }
245
- ]
246
- })
247
-
248
- return parseCollectionsNode(result)
249
- }
250
-
251
- const getOrderDetails = async (orderId: string, tokenBase64: string) => {
252
- const result = await query({
253
- tag: 'iq',
254
- attrs: {
255
- to: S_WHATSAPP_NET,
256
- type: 'get',
257
- xmlns: 'fb:thrift_iq',
258
- smax_id: '5'
259
- },
260
- content: [
261
- {
262
- tag: 'order',
263
- attrs: {
264
- op: 'get',
265
- id: orderId
266
- },
267
- content: [
268
- {
269
- tag: 'image_dimensions',
270
- attrs: {},
271
- content: [
272
- {
273
- tag: 'width',
274
- attrs: {},
275
- content: Buffer.from('100')
276
- },
277
- {
278
- tag: 'height',
279
- attrs: {},
280
- content: Buffer.from('100')
281
- }
282
- ]
283
- },
284
- {
285
- tag: 'token',
286
- attrs: {},
287
- content: Buffer.from(tokenBase64)
288
- }
289
- ]
290
- }
291
- ]
292
- })
293
-
294
- return parseOrderDetailsNode(result)
295
- }
296
-
297
- const productUpdate = async (productId: string, update: ProductUpdate) => {
298
- update = await uploadingNecessaryImagesOfProduct(update, waUploadToServer)
299
- const editNode = toProductNode(productId, update)
300
-
301
- const result = await query({
302
- tag: 'iq',
303
- attrs: {
304
- to: S_WHATSAPP_NET,
305
- type: 'set',
306
- xmlns: 'w:biz:catalog'
307
- },
308
- content: [
309
- {
310
- tag: 'product_catalog_edit',
311
- attrs: { v: '1' },
312
- content: [
313
- editNode,
314
- {
315
- tag: 'width',
316
- attrs: {},
317
- content: '100'
318
- },
319
- {
320
- tag: 'height',
321
- attrs: {},
322
- content: '100'
323
- }
324
- ]
325
- }
326
- ]
327
- })
328
-
329
- const productCatalogEditNode = getBinaryNodeChild(result, 'product_catalog_edit')
330
- const productNode = getBinaryNodeChild(productCatalogEditNode, 'product')
331
-
332
- return parseProductNode(productNode!)
333
- }
334
-
335
- const productCreate = async (create: ProductCreate) => {
336
- // ensure isHidden is defined
337
- create.isHidden = !!create.isHidden
338
- create = await uploadingNecessaryImagesOfProduct(create, waUploadToServer)
339
- const createNode = toProductNode(undefined, create)
340
-
341
- const result = await query({
342
- tag: 'iq',
343
- attrs: {
344
- to: S_WHATSAPP_NET,
345
- type: 'set',
346
- xmlns: 'w:biz:catalog'
347
- },
348
- content: [
349
- {
350
- tag: 'product_catalog_add',
351
- attrs: { v: '1' },
352
- content: [
353
- createNode,
354
- {
355
- tag: 'width',
356
- attrs: {},
357
- content: '100'
358
- },
359
- {
360
- tag: 'height',
361
- attrs: {},
362
- content: '100'
363
- }
364
- ]
365
- }
366
- ]
367
- })
368
-
369
- const productCatalogAddNode = getBinaryNodeChild(result, 'product_catalog_add')
370
- const productNode = getBinaryNodeChild(productCatalogAddNode, 'product')
371
-
372
- return parseProductNode(productNode!)
373
- }
374
-
375
- const productDelete = async (productIds: string[]) => {
376
- const result = await query({
377
- tag: 'iq',
378
- attrs: {
379
- to: S_WHATSAPP_NET,
380
- type: 'set',
381
- xmlns: 'w:biz:catalog'
382
- },
383
- content: [
384
- {
385
- tag: 'product_catalog_delete',
386
- attrs: { v: '1' },
387
- content: productIds.map(id => ({
388
- tag: 'product',
389
- attrs: {},
390
- content: [
391
- {
392
- tag: 'id',
393
- attrs: {},
394
- content: Buffer.from(id)
395
- }
396
- ]
397
- }))
398
- }
399
- ]
400
- })
401
-
402
- const productCatalogDelNode = getBinaryNodeChild(result, 'product_catalog_delete')
403
- return {
404
- deleted: +(productCatalogDelNode?.attrs.deleted_count || 0)
405
- }
406
- }
407
-
408
- return {
409
- ...sock,
410
- logger: config.logger,
411
- getOrderDetails,
412
- getCatalog,
413
- getCollections,
414
- productCreate,
415
- productDelete,
416
- productUpdate,
417
- updateBussinesProfile,
418
- updateCoverPhoto,
419
- removeCoverPhoto
420
- }
421
- }