ruby-baileys 0.0.0-stage → 1.5.17

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 (296) hide show
  1. package/EXPERIMENTAL.md +350 -0
  2. package/LICENSE +23 -0
  3. package/NOTICE.md +14 -0
  4. package/README.md +6265 -2
  5. package/WAProto/GenerateStatics.sh +3 -0
  6. package/WAProto/WAProto.proto +5479 -0
  7. package/WAProto/fix-imports.js +81 -0
  8. package/WAProto/index.d.ts +16877 -0
  9. package/WAProto/index.js +122159 -0
  10. package/assets/ruby_aspirant.jpg +0 -0
  11. package/assets/ruby_aspirant_4k.jpg +88 -0
  12. package/assets/ruby_aspirant_full.jpg +0 -0
  13. package/assets/ruby_aspirant_render.png +1 -0
  14. package/assets/ruby_aspirants_hd.jpg +0 -0
  15. package/assets/thumb.jpg +0 -0
  16. package/engine-requirements.js +14 -0
  17. package/index.cjs +29 -0
  18. package/index.d.ts +2 -0
  19. package/package.json +178 -4
  20. package/src/Defaults/index.d.ts +153 -0
  21. package/src/Defaults/index.js +165 -0
  22. package/src/MessageBuilder/bot-signature.d.ts +22 -0
  23. package/src/MessageBuilder/bot-signature.js +123 -0
  24. package/src/MessageBuilder/extras.d.ts +396 -0
  25. package/src/MessageBuilder/extras.js +1229 -0
  26. package/src/MessageBuilder/index.d.ts +210 -0
  27. package/src/MessageBuilder/index.js +3521 -0
  28. package/src/MessageBuilder/metaai.d.ts +438 -0
  29. package/src/MessageBuilder/metaai.js +891 -0
  30. package/src/Signal/Group/ciphertext-message.d.ts +10 -0
  31. package/src/Signal/Group/ciphertext-message.js +12 -0
  32. package/src/Signal/Group/group-session-builder.d.ts +8 -0
  33. package/src/Signal/Group/group-session-builder.js +28 -0
  34. package/src/Signal/Group/group_cipher.d.ts +11 -0
  35. package/src/Signal/Group/group_cipher.js +79 -0
  36. package/src/Signal/Group/index.d.ts +12 -0
  37. package/src/Signal/Group/index.js +12 -0
  38. package/src/Signal/Group/keyhelper.d.ts +7 -0
  39. package/src/Signal/Group/keyhelper.js +18 -0
  40. package/src/Signal/Group/sender-chain-key.d.ts +14 -0
  41. package/src/Signal/Group/sender-chain-key.js +26 -0
  42. package/src/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  43. package/src/Signal/Group/sender-key-distribution-message.js +63 -0
  44. package/src/Signal/Group/sender-key-message.d.ts +19 -0
  45. package/src/Signal/Group/sender-key-message.js +66 -0
  46. package/src/Signal/Group/sender-key-name.d.ts +12 -0
  47. package/src/Signal/Group/sender-key-name.js +48 -0
  48. package/src/Signal/Group/sender-key-record.d.ts +13 -0
  49. package/src/Signal/Group/sender-key-record.js +41 -0
  50. package/src/Signal/Group/sender-key-state.d.ts +17 -0
  51. package/src/Signal/Group/sender-key-state.js +84 -0
  52. package/src/Signal/Group/sender-message-key.d.ts +12 -0
  53. package/src/Signal/Group/sender-message-key.js +26 -0
  54. package/src/Signal/libsignal.d.ts +55 -0
  55. package/src/Signal/libsignal.js +429 -0
  56. package/src/Signal/lid-mapping.d.ts +21 -0
  57. package/src/Signal/lid-mapping.js +275 -0
  58. package/src/Socket/Client/index.d.ts +3 -0
  59. package/src/Socket/Client/index.js +3 -0
  60. package/src/Socket/Client/types.d.ts +6 -0
  61. package/src/Socket/Client/types.js +10 -0
  62. package/src/Socket/Client/websocket.d.ts +13 -0
  63. package/src/Socket/Client/websocket.js +54 -0
  64. package/src/Socket/business.d.ts +432 -0
  65. package/src/Socket/business.js +380 -0
  66. package/src/Socket/chats.d.ts +248 -0
  67. package/src/Socket/chats.js +1485 -0
  68. package/src/Socket/communities.d.ts +599 -0
  69. package/src/Socket/communities.js +422 -0
  70. package/src/Socket/groups.d.ts +299 -0
  71. package/src/Socket/groups.js +340 -0
  72. package/src/Socket/index.d.ts +582 -0
  73. package/src/Socket/index.js +48 -0
  74. package/src/Socket/messages-recv.d.ts +371 -0
  75. package/src/Socket/messages-recv.js +1803 -0
  76. package/src/Socket/messages-send.d.ts +391 -0
  77. package/src/Socket/messages-send.js +1575 -0
  78. package/src/Socket/mex.d.ts +2 -0
  79. package/src/Socket/mex.js +45 -0
  80. package/src/Socket/newsletter.d.ts +469 -0
  81. package/src/Socket/newsletter.js +643 -0
  82. package/src/Socket/socket.d.ts +78 -0
  83. package/src/Socket/socket.js +1088 -0
  84. package/src/Store/index.d.ts +4 -0
  85. package/src/Store/index.js +4 -0
  86. package/src/Store/make-in-memory-store.d.ts +63 -0
  87. package/src/Store/make-in-memory-store.js +398 -0
  88. package/src/Store/make-ordered-dictionary.d.ts +13 -0
  89. package/src/Store/make-ordered-dictionary.js +79 -0
  90. package/src/Store/object-repository.d.ts +11 -0
  91. package/src/Store/object-repository.js +24 -0
  92. package/src/Types/Auth.d.ts +2 -0
  93. package/src/Types/Auth.js +2 -0
  94. package/src/Types/Bussines.d.ts +2 -0
  95. package/src/Types/Bussines.js +2 -0
  96. package/src/Types/Call.d.ts +2 -0
  97. package/src/Types/Call.js +2 -0
  98. package/src/Types/Chat.d.ts +3 -0
  99. package/src/Types/Chat.js +25 -0
  100. package/src/Types/Contact.d.ts +2 -0
  101. package/src/Types/Contact.js +2 -0
  102. package/src/Types/Events.d.ts +2 -0
  103. package/src/Types/Events.js +1 -0
  104. package/src/Types/GroupMetadata.d.ts +6 -0
  105. package/src/Types/GroupMetadata.js +7 -0
  106. package/src/Types/Label.d.ts +3 -0
  107. package/src/Types/Label.js +25 -0
  108. package/src/Types/LabelAssociation.d.ts +3 -0
  109. package/src/Types/LabelAssociation.js +7 -0
  110. package/src/Types/Message.d.ts +14 -0
  111. package/src/Types/Message.js +24 -0
  112. package/src/Types/Mex.d.ts +3 -0
  113. package/src/Types/Mex.js +96 -0
  114. package/src/Types/Product.d.ts +2 -0
  115. package/src/Types/Product.js +2 -0
  116. package/src/Types/Signal.d.ts +2 -0
  117. package/src/Types/Signal.js +1 -0
  118. package/src/Types/Socket.d.ts +2 -0
  119. package/src/Types/Socket.js +1 -0
  120. package/src/Types/State.d.ts +6 -0
  121. package/src/Types/State.js +55 -0
  122. package/src/Types/USync.d.ts +2 -0
  123. package/src/Types/USync.js +1 -0
  124. package/src/Types/index.d.ts +14 -0
  125. package/src/Types/index.js +26 -0
  126. package/src/Utils/auth-store.d.ts +30 -0
  127. package/src/Utils/auth-store.js +77 -0
  128. package/src/Utils/auth-utils.d.ts +59 -0
  129. package/src/Utils/auth-utils.js +274 -0
  130. package/src/Utils/browser-utils.d.ts +10 -0
  131. package/src/Utils/browser-utils.js +29 -0
  132. package/src/Utils/business.d.ts +50 -0
  133. package/src/Utils/business.js +227 -0
  134. package/src/Utils/chat-utils.d.ts +409 -0
  135. package/src/Utils/chat-utils.js +847 -0
  136. package/src/Utils/companion-reg-client-utils.d.ts +5 -0
  137. package/src/Utils/companion-reg-client-utils.js +40 -0
  138. package/src/Utils/crypto.d.ts +40 -0
  139. package/src/Utils/crypto.js +111 -0
  140. package/src/Utils/decode-wa-message.d.ts +100 -0
  141. package/src/Utils/decode-wa-message.js +374 -0
  142. package/src/Utils/event-buffer.d.ts +23 -0
  143. package/src/Utils/event-buffer.js +625 -0
  144. package/src/Utils/generics.d.ts +64 -0
  145. package/src/Utils/generics.js +376 -0
  146. package/src/Utils/group-metadata-cache.d.ts +5 -0
  147. package/src/Utils/group-metadata-cache.js +26 -0
  148. package/src/Utils/history.d.ts +76 -0
  149. package/src/Utils/history.js +132 -0
  150. package/src/Utils/html-app.d.ts +19 -0
  151. package/src/Utils/html-app.js +97 -0
  152. package/src/Utils/html-multiplayer.d.ts +10 -0
  153. package/src/Utils/html-multiplayer.js +95 -0
  154. package/src/Utils/identity-change-handler.d.ts +14 -0
  155. package/src/Utils/identity-change-handler.js +49 -0
  156. package/src/Utils/index.d.ts +45 -0
  157. package/src/Utils/index.js +45 -0
  158. package/src/Utils/link-preview-metadata.d.ts +47 -0
  159. package/src/Utils/link-preview-metadata.js +89 -0
  160. package/src/Utils/link-preview.d.ts +13 -0
  161. package/src/Utils/link-preview.js +80 -0
  162. package/src/Utils/logger.d.ts +3 -0
  163. package/src/Utils/logger.js +3 -0
  164. package/src/Utils/lt-hash.d.ts +7 -0
  165. package/src/Utils/lt-hash.js +4 -0
  166. package/src/Utils/make-mutex.d.ts +7 -0
  167. package/src/Utils/make-mutex.js +33 -0
  168. package/src/Utils/message-retry-manager.d.ts +80 -0
  169. package/src/Utils/message-retry-manager.js +256 -0
  170. package/src/Utils/messages-media.d.ts +137 -0
  171. package/src/Utils/messages-media.js +815 -0
  172. package/src/Utils/messages.d.ts +63 -0
  173. package/src/Utils/messages.js +2149 -0
  174. package/src/Utils/modern-messages.d.ts +150 -0
  175. package/src/Utils/modern-messages.js +496 -0
  176. package/src/Utils/native-flow.d.ts +11 -0
  177. package/src/Utils/native-flow.js +116 -0
  178. package/src/Utils/newsletter-status.d.ts +158 -0
  179. package/src/Utils/newsletter-status.js +651 -0
  180. package/src/Utils/noise-handler.d.ts +21 -0
  181. package/src/Utils/noise-handler.js +201 -0
  182. package/src/Utils/offline-node-processor.d.ts +10 -0
  183. package/src/Utils/offline-node-processor.js +34 -0
  184. package/src/Utils/optional-media.d.ts +3 -0
  185. package/src/Utils/optional-media.js +46 -0
  186. package/src/Utils/payment-messages.d.ts +66 -0
  187. package/src/Utils/payment-messages.js +161 -0
  188. package/src/Utils/pre-key-manager.d.ts +26 -0
  189. package/src/Utils/pre-key-manager.js +96 -0
  190. package/src/Utils/process-message.d.ts +61 -0
  191. package/src/Utils/process-message.js +689 -0
  192. package/src/Utils/reporting-utils.d.ts +13 -0
  193. package/src/Utils/reporting-utils.js +257 -0
  194. package/src/Utils/scheduled-message.d.ts +51 -0
  195. package/src/Utils/scheduled-message.js +113 -0
  196. package/src/Utils/sender-key-memory.d.ts +20 -0
  197. package/src/Utils/sender-key-memory.js +52 -0
  198. package/src/Utils/signal.d.ts +83 -0
  199. package/src/Utils/signal.js +194 -0
  200. package/src/Utils/stanza-ack.d.ts +17 -0
  201. package/src/Utils/stanza-ack.js +31 -0
  202. package/src/Utils/status-stickers.d.ts +127 -0
  203. package/src/Utils/status-stickers.js +261 -0
  204. package/src/Utils/sync-action-utils.d.ts +3 -0
  205. package/src/Utils/sync-action-utils.js +45 -0
  206. package/src/Utils/tc-token-utils.d.ts +30 -0
  207. package/src/Utils/tc-token-utils.js +156 -0
  208. package/src/Utils/ttl-cache.d.ts +29 -0
  209. package/src/Utils/ttl-cache.js +121 -0
  210. package/src/Utils/use-mongo-auth-state.d.ts +22 -0
  211. package/src/Utils/use-mongo-auth-state.js +68 -0
  212. package/src/Utils/use-multi-file-auth-state.d.ts +12 -0
  213. package/src/Utils/use-multi-file-auth-state.js +107 -0
  214. package/src/Utils/use-mysql-auth-state.d.ts +20 -0
  215. package/src/Utils/use-mysql-auth-state.js +80 -0
  216. package/src/Utils/use-postgres-auth-state.d.ts +20 -0
  217. package/src/Utils/use-postgres-auth-state.js +80 -0
  218. package/src/Utils/use-redis-auth-state.d.ts +20 -0
  219. package/src/Utils/use-redis-auth-state.js +90 -0
  220. package/src/Utils/use-single-file-auth-state.d.ts +11 -0
  221. package/src/Utils/use-single-file-auth-state.js +109 -0
  222. package/src/Utils/use-sqlite-auth-state.d.ts +13 -0
  223. package/src/Utils/use-sqlite-auth-state.js +121 -0
  224. package/src/Utils/useNekoDBAuth.d.ts +19 -0
  225. package/src/Utils/useNekoDBAuth.js +111 -0
  226. package/src/Utils/username.d.ts +12 -0
  227. package/src/Utils/username.js +59 -0
  228. package/src/Utils/validate-connection.d.ts +44 -0
  229. package/src/Utils/validate-connection.js +208 -0
  230. package/src/Utils/voice-recognition.d.ts +53 -0
  231. package/src/Utils/voice-recognition.js +219 -0
  232. package/src/Voip/audio-feeder.d.ts +25 -0
  233. package/src/Voip/audio-feeder.js +269 -0
  234. package/src/Voip/index.d.ts +89 -0
  235. package/src/Voip/index.js +937 -0
  236. package/src/Voip/relay-transport.d.ts +6 -0
  237. package/src/Voip/relay-transport.js +825 -0
  238. package/src/Voip/signaling.d.ts +12 -0
  239. package/src/Voip/signaling.js +1100 -0
  240. package/src/Voip/types.d.ts +3 -0
  241. package/src/Voip/types.js +13 -0
  242. package/src/Voip/video-feeder.d.ts +25 -0
  243. package/src/Voip/video-feeder.js +269 -0
  244. package/src/Voip/wasm-engine.d.ts +27 -0
  245. package/src/Voip/wasm-engine.js +1308 -0
  246. package/src/Voip/worker-bootstrap.js +1024 -0
  247. package/src/WABinary/constants.d.ts +23 -0
  248. package/src/WABinary/constants.js +1301 -0
  249. package/src/WABinary/decode.d.ts +10 -0
  250. package/src/WABinary/decode.js +262 -0
  251. package/src/WABinary/encode.d.ts +3 -0
  252. package/src/WABinary/encode.js +220 -0
  253. package/src/WABinary/generic-utils.d.ts +77 -0
  254. package/src/WABinary/generic-utils.js +214 -0
  255. package/src/WABinary/index.d.ts +6 -0
  256. package/src/WABinary/index.js +6 -0
  257. package/src/WABinary/jid-utils.d.ts +31 -0
  258. package/src/WABinary/jid-utils.js +98 -0
  259. package/src/WABinary/types.d.ts +2 -0
  260. package/src/WABinary/types.js +1 -0
  261. package/src/WAM/BinaryInfo.d.ts +8 -0
  262. package/src/WAM/BinaryInfo.js +10 -0
  263. package/src/WAM/constants.d.ts +34927 -0
  264. package/src/WAM/constants.js +22853 -0
  265. package/src/WAM/encode.d.ts +2 -0
  266. package/src/WAM/encode.js +149 -0
  267. package/src/WAM/index.d.ts +4 -0
  268. package/src/WAM/index.js +4 -0
  269. package/src/WAUSync/Protocols/USyncContactProtocol.d.ts +37 -0
  270. package/src/WAUSync/Protocols/USyncContactProtocol.js +51 -0
  271. package/src/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  272. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +52 -0
  273. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  274. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  275. package/src/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  276. package/src/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  277. package/src/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  278. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +24 -0
  279. package/src/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +39 -0
  280. package/src/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -0
  281. package/src/WAUSync/Protocols/UsyncLIDProtocol.d.ts +15 -0
  282. package/src/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  283. package/src/WAUSync/Protocols/index.d.ts +6 -0
  284. package/src/WAUSync/Protocols/index.js +6 -0
  285. package/src/WAUSync/USyncQuery.d.ts +21 -0
  286. package/src/WAUSync/USyncQuery.js +94 -0
  287. package/src/WAUSync/USyncUser.d.ts +17 -0
  288. package/src/WAUSync/USyncUser.js +31 -0
  289. package/src/WAUSync/index.d.ts +4 -0
  290. package/src/WAUSync/index.js +4 -0
  291. package/src/assets/wasm/README.md +76 -0
  292. package/src/assets/wasm/loader.js +5 -0
  293. package/src/assets/wasm/whatsapp.wasm +0 -0
  294. package/src/assets/wasm/worker-modules.js +273 -0
  295. package/src/index.d.ts +49 -0
  296. package/src/index.js +54 -0
@@ -0,0 +1,380 @@
1
+ /* Elaina Baileys maintained distribution. Upstream notices and license are preserved in LICENSE and NOTICE.md. */
2
+ import { getRawMediaUploadData } from '../Utils/index.js';
3
+ import { parseCatalogNode, parseCollectionsNode, parseOrderDetailsNode, parseProductNode, toProductNode, uploadingNecessaryImagesOfProduct } from '../Utils/business.js';
4
+ import { jidNormalizedUser, S_WHATSAPP_NET } from '../WABinary/index.js';
5
+ import { getBinaryNodeChild } from '../WABinary/generic-utils.js';
6
+ import { makeMessagesRecvSocket } from './messages-recv.js';
7
+ export const makeBusinessSocket = (config) => {
8
+ const sock = makeMessagesRecvSocket(config);
9
+ const { authState, query, waUploadToServer } = sock;
10
+ const updateBussinesProfile = async (args) => {
11
+ const node = [];
12
+ const simpleFields = ['address', 'email', 'description'];
13
+ node.push(...simpleFields
14
+ .filter(key => args[key] !== undefined && args[key] !== null)
15
+ .map(key => ({
16
+ tag: key,
17
+ attrs: {},
18
+ content: args[key]
19
+ })));
20
+ if (args.websites !== undefined) {
21
+ node.push(...args.websites.map(website => ({
22
+ tag: 'website',
23
+ attrs: {},
24
+ content: website
25
+ })));
26
+ }
27
+ if (args.hours !== undefined) {
28
+ node.push({
29
+ tag: 'business_hours',
30
+ attrs: { timezone: args.hours.timezone },
31
+ content: args.hours.days.map(dayConfig => {
32
+ const base = {
33
+ tag: 'business_hours_config',
34
+ attrs: {
35
+ day_of_week: dayConfig.day,
36
+ mode: dayConfig.mode
37
+ }
38
+ };
39
+ if (dayConfig.mode === 'specific_hours') {
40
+ return {
41
+ ...base,
42
+ attrs: {
43
+ ...base.attrs,
44
+ open_time: dayConfig.openTimeInMinutes,
45
+ close_time: dayConfig.closeTimeInMinutes
46
+ }
47
+ };
48
+ }
49
+ return base;
50
+ })
51
+ });
52
+ }
53
+ const result = await query({
54
+ tag: 'iq',
55
+ attrs: {
56
+ to: S_WHATSAPP_NET,
57
+ type: 'set',
58
+ xmlns: 'w:biz'
59
+ },
60
+ content: [
61
+ {
62
+ tag: 'business_profile',
63
+ attrs: {
64
+ v: '3',
65
+ mutation_type: 'delta'
66
+ },
67
+ content: node
68
+ }
69
+ ]
70
+ });
71
+ return result;
72
+ };
73
+ const updateCoverPhoto = async (photo) => {
74
+ const { fileSha256, filePath } = await getRawMediaUploadData(photo, 'biz-cover-photo');
75
+ const fileSha256B64 = fileSha256.toString('base64');
76
+ const { meta_hmac, fbid, ts } = await waUploadToServer(filePath, {
77
+ fileEncSha256B64: fileSha256B64,
78
+ mediaType: 'biz-cover-photo'
79
+ });
80
+ await query({
81
+ tag: 'iq',
82
+ attrs: {
83
+ to: S_WHATSAPP_NET,
84
+ type: 'set',
85
+ xmlns: 'w:biz'
86
+ },
87
+ content: [
88
+ {
89
+ tag: 'business_profile',
90
+ attrs: {
91
+ v: '3',
92
+ mutation_type: 'delta'
93
+ },
94
+ content: [
95
+ {
96
+ tag: 'cover_photo',
97
+ attrs: { id: String(fbid), op: 'update', token: meta_hmac, ts: String(ts) }
98
+ }
99
+ ]
100
+ }
101
+ ]
102
+ });
103
+ return fbid;
104
+ };
105
+ const removeCoverPhoto = async (id) => {
106
+ return await query({
107
+ tag: 'iq',
108
+ attrs: {
109
+ to: S_WHATSAPP_NET,
110
+ type: 'set',
111
+ xmlns: 'w:biz'
112
+ },
113
+ content: [
114
+ {
115
+ tag: 'business_profile',
116
+ attrs: {
117
+ v: '3',
118
+ mutation_type: 'delta'
119
+ },
120
+ content: [
121
+ {
122
+ tag: 'cover_photo',
123
+ attrs: { op: 'delete', id }
124
+ }
125
+ ]
126
+ }
127
+ ]
128
+ });
129
+ };
130
+ const getCatalog = async ({ jid, limit, cursor }) => {
131
+ jid = jid || authState.creds.me?.id;
132
+ jid = jidNormalizedUser(jid);
133
+ const queryParamNodes = [
134
+ {
135
+ tag: 'limit',
136
+ attrs: {},
137
+ content: Buffer.from((limit || 10).toString())
138
+ },
139
+ {
140
+ tag: 'width',
141
+ attrs: {},
142
+ content: Buffer.from('100')
143
+ },
144
+ {
145
+ tag: 'height',
146
+ attrs: {},
147
+ content: Buffer.from('100')
148
+ }
149
+ ];
150
+ if (cursor) {
151
+ queryParamNodes.push({
152
+ tag: 'after',
153
+ attrs: {},
154
+ content: cursor
155
+ });
156
+ }
157
+ const result = await query({
158
+ tag: 'iq',
159
+ attrs: {
160
+ to: S_WHATSAPP_NET,
161
+ type: 'get',
162
+ xmlns: 'w:biz:catalog'
163
+ },
164
+ content: [
165
+ {
166
+ tag: 'product_catalog',
167
+ attrs: {
168
+ jid,
169
+ allow_shop_source: 'true'
170
+ },
171
+ content: queryParamNodes
172
+ }
173
+ ]
174
+ });
175
+ return parseCatalogNode(result);
176
+ };
177
+ const getCollections = async (jid, limit = 51) => {
178
+ jid = jid || authState.creds.me?.id;
179
+ jid = jidNormalizedUser(jid);
180
+ const result = await query({
181
+ tag: 'iq',
182
+ attrs: {
183
+ to: S_WHATSAPP_NET,
184
+ type: 'get',
185
+ xmlns: 'w:biz:catalog',
186
+ smax_id: '35'
187
+ },
188
+ content: [
189
+ {
190
+ tag: 'collections',
191
+ attrs: {
192
+ biz_jid: jid
193
+ },
194
+ content: [
195
+ {
196
+ tag: 'collection_limit',
197
+ attrs: {},
198
+ content: Buffer.from(limit.toString())
199
+ },
200
+ {
201
+ tag: 'item_limit',
202
+ attrs: {},
203
+ content: Buffer.from(limit.toString())
204
+ },
205
+ {
206
+ tag: 'width',
207
+ attrs: {},
208
+ content: Buffer.from('100')
209
+ },
210
+ {
211
+ tag: 'height',
212
+ attrs: {},
213
+ content: Buffer.from('100')
214
+ }
215
+ ]
216
+ }
217
+ ]
218
+ });
219
+ return parseCollectionsNode(result);
220
+ };
221
+ const getOrderDetails = async (orderId, tokenBase64) => {
222
+ const result = await query({
223
+ tag: 'iq',
224
+ attrs: {
225
+ to: S_WHATSAPP_NET,
226
+ type: 'get',
227
+ xmlns: 'fb:thrift_iq',
228
+ smax_id: '5'
229
+ },
230
+ content: [
231
+ {
232
+ tag: 'order',
233
+ attrs: {
234
+ op: 'get',
235
+ id: orderId
236
+ },
237
+ content: [
238
+ {
239
+ tag: 'image_dimensions',
240
+ attrs: {},
241
+ content: [
242
+ {
243
+ tag: 'width',
244
+ attrs: {},
245
+ content: Buffer.from('100')
246
+ },
247
+ {
248
+ tag: 'height',
249
+ attrs: {},
250
+ content: Buffer.from('100')
251
+ }
252
+ ]
253
+ },
254
+ {
255
+ tag: 'token',
256
+ attrs: {},
257
+ content: Buffer.from(tokenBase64)
258
+ }
259
+ ]
260
+ }
261
+ ]
262
+ });
263
+ return parseOrderDetailsNode(result);
264
+ };
265
+ const productUpdate = async (productId, update) => {
266
+ update = await uploadingNecessaryImagesOfProduct(update, waUploadToServer);
267
+ const editNode = toProductNode(productId, update);
268
+ const result = await query({
269
+ tag: 'iq',
270
+ attrs: {
271
+ to: S_WHATSAPP_NET,
272
+ type: 'set',
273
+ xmlns: 'w:biz:catalog'
274
+ },
275
+ content: [
276
+ {
277
+ tag: 'product_catalog_edit',
278
+ attrs: { v: '1' },
279
+ content: [
280
+ editNode,
281
+ {
282
+ tag: 'width',
283
+ attrs: {},
284
+ content: '100'
285
+ },
286
+ {
287
+ tag: 'height',
288
+ attrs: {},
289
+ content: '100'
290
+ }
291
+ ]
292
+ }
293
+ ]
294
+ });
295
+ const productCatalogEditNode = getBinaryNodeChild(result, 'product_catalog_edit');
296
+ const productNode = getBinaryNodeChild(productCatalogEditNode, 'product');
297
+ return parseProductNode(productNode);
298
+ };
299
+ const productCreate = async (create) => {
300
+
301
+ create.isHidden = !!create.isHidden;
302
+ create = await uploadingNecessaryImagesOfProduct(create, waUploadToServer);
303
+ const createNode = toProductNode(undefined, create);
304
+ const result = await query({
305
+ tag: 'iq',
306
+ attrs: {
307
+ to: S_WHATSAPP_NET,
308
+ type: 'set',
309
+ xmlns: 'w:biz:catalog'
310
+ },
311
+ content: [
312
+ {
313
+ tag: 'product_catalog_add',
314
+ attrs: { v: '1' },
315
+ content: [
316
+ createNode,
317
+ {
318
+ tag: 'width',
319
+ attrs: {},
320
+ content: '100'
321
+ },
322
+ {
323
+ tag: 'height',
324
+ attrs: {},
325
+ content: '100'
326
+ }
327
+ ]
328
+ }
329
+ ]
330
+ });
331
+ const productCatalogAddNode = getBinaryNodeChild(result, 'product_catalog_add');
332
+ const productNode = getBinaryNodeChild(productCatalogAddNode, 'product');
333
+ return parseProductNode(productNode);
334
+ };
335
+ const productDelete = async (productIds) => {
336
+ const result = await query({
337
+ tag: 'iq',
338
+ attrs: {
339
+ to: S_WHATSAPP_NET,
340
+ type: 'set',
341
+ xmlns: 'w:biz:catalog'
342
+ },
343
+ content: [
344
+ {
345
+ tag: 'product_catalog_delete',
346
+ attrs: { v: '1' },
347
+ content: productIds.map(id => ({
348
+ tag: 'product',
349
+ attrs: {},
350
+ content: [
351
+ {
352
+ tag: 'id',
353
+ attrs: {},
354
+ content: Buffer.from(id)
355
+ }
356
+ ]
357
+ }))
358
+ }
359
+ ]
360
+ });
361
+ const productCatalogDelNode = getBinaryNodeChild(result, 'product_catalog_delete');
362
+ return {
363
+ deleted: +(productCatalogDelNode?.attrs.deleted_count || 0)
364
+ };
365
+ };
366
+ return {
367
+ ...sock,
368
+ logger: config.logger,
369
+ getOrderDetails,
370
+ getCatalog,
371
+ getCollections,
372
+ productCreate,
373
+ productDelete,
374
+ productUpdate,
375
+ updateBussinesProfile,
376
+ updateBusinessProfile: updateBussinesProfile,
377
+ updateCoverPhoto,
378
+ removeCoverPhoto
379
+ };
380
+ };
@@ -0,0 +1,248 @@
1
+ /* Elaina Baileys maintained distribution. Upstream notices and license are preserved in LICENSE and NOTICE.md. */
2
+ export function buildProfilePictureQueryContent(type: any, tcTokenContent: any): {
3
+ tag: string;
4
+ attrs: {
5
+ type: any;
6
+ query: string;
7
+ };
8
+ }[];
9
+ export function readSpamReportResult(sent: {
10
+ tag: string;
11
+ attrs: Record<string, string>;
12
+ }, result: any): {
13
+ jid: string;
14
+ flow: string;
15
+ reported: true;
16
+ node: any;
17
+ };
18
+ export function buildSpamListNode(jid: string, options?: {
19
+ flow?: string;
20
+ source?: string;
21
+ subject?: string;
22
+ isKnownChat?: boolean;
23
+ }): {
24
+ tag: string;
25
+ attrs: Record<string, string>;
26
+ };
27
+ export function makeChatsSocket(config: any): {
28
+ checkAccountHealth: (jid: string) => Promise<{
29
+ jid: string;
30
+ exists: boolean;
31
+ isBusiness: boolean;
32
+ verifiedName: string | null;
33
+ about: string | null;
34
+ hasProfilePhoto: boolean;
35
+ self: {
36
+ capped: boolean;
37
+ warned: boolean;
38
+ unlimited: boolean;
39
+ remaining: number | null;
40
+ } | null;
41
+ notes: string[];
42
+ }>;
43
+ findUserId: (pnLid: any) => Promise<{
44
+ lid: undefined;
45
+ phoneNumber: undefined;
46
+ }>;
47
+ serverProps: {
48
+ /** AB prop 10518: gate tctoken on 1:1 messages. Default true (safe: avoids 463). */
49
+ privacyTokenOn1to1: boolean;
50
+ /** AB prop 9666: gate tctoken on profile picture IQs. WA Web default: true. */
51
+ profilePicPrivacyToken: boolean;
52
+ /** AB prop 14303: issue tctokens to LID instead of PN. WA Web default: false. */
53
+ lidTrustedTokenIssueToLid: boolean;
54
+ };
55
+ /** Every AB prop the server pushed, keyed by both its number and its name. */
56
+ fetchProps: () => Promise<Record<string, string>>;
57
+ getServerProps: (options?: { refresh?: boolean }) => Promise<Record<string, string>>;
58
+ createCallLink: (type: any, event: any, timeoutMs: any) => Promise<any>;
59
+ getBotListV2: () => Promise<{
60
+ jid: any;
61
+ personaId: any;
62
+ }[]>;
63
+ messageMutex: {
64
+ mutex(code: any): any;
65
+ };
66
+ receiptMutex: {
67
+ mutex(code: any): any;
68
+ };
69
+ appStatePatchMutex: {
70
+ mutex(code: any): any;
71
+ };
72
+ notificationMutex: {
73
+ mutex(code: any): any;
74
+ };
75
+ fetchPrivacySettings: (force?: boolean) => Promise<any>;
76
+ upsertMessage: (...args: any[]) => Promise<any>;
77
+ appPatch: (patchCreate: any) => Promise<void>;
78
+ sendPresenceUpdate: (type: any, toJid: any) => Promise<void>;
79
+ presenceSubscribe: (toJid: any) => Promise<void>;
80
+ profilePictureUrl: (jid: any, type?: string, timeoutMs?: number, shouldIncludeTcToken?: boolean) => Promise<any>;
81
+ fetchBlocklist: () => Promise<any>;
82
+ fetchStatus: (...jids: any[]) => Promise<any>;
83
+ fetchDisappearingDuration: (...jids: any[]) => Promise<any>;
84
+ updateProfilePicture: (jid: any, content: any, dimensions: any) => Promise<void>;
85
+ removeProfilePicture: (jid: any) => Promise<void>;
86
+ updateProfileStatus: (status: any) => Promise<void>;
87
+ getUsername: () => Promise<{
88
+ username: string | null;
89
+ state: string | null;
90
+ pin: string | null;
91
+ }>;
92
+ setUsername: (username?: string, options?: {
93
+ reserved?: boolean;
94
+ sessionId?: string;
95
+ source?: string;
96
+ }) => Promise<boolean>;
97
+ removeUsername: () => Promise<boolean>;
98
+ setUsernamePin: (pin: string) => Promise<boolean>;
99
+ removeUsernamePin: () => Promise<boolean>;
100
+ checkUsernameAvailability: (username: string, options?: {
101
+ sessionId?: string;
102
+ source?: string;
103
+ }) => Promise<{
104
+ available: boolean;
105
+ suggestions: string[];
106
+ response: any;
107
+ }>;
108
+ updateTextStatus: (text?: string | null, options?: {
109
+ emoji?: string;
110
+ ephemeralDurationSec?: number;
111
+ }) => Promise<any>;
112
+ fetchTextStatus: (jids: string[] | string) => Promise<any>;
113
+ fetchAbout: (jid: string) => Promise<{
114
+ jid: string;
115
+ status: string | null;
116
+ response: any;
117
+ }>;
118
+ fetchServerLinkPreview: (url: string) => Promise<any>;
119
+ fetchUserNotices: (since?: number) => Promise<{
120
+ id?: string;
121
+ stage?: string;
122
+ t?: string;
123
+ version?: string;
124
+ type?: string;
125
+ }[]>;
126
+ updateUserNoticeStage: (noticeId: string | number, stage: string | number) => Promise<void>;
127
+ fetchOptOutList: (options?: {
128
+ category?: string;
129
+ dhash?: string;
130
+ }) => Promise<any[]>;
131
+ updateOptOut: (input: {
132
+ jid: string;
133
+ category: string;
134
+ action: string;
135
+ dhash?: string;
136
+ reason?: string;
137
+ entryPoint?: string;
138
+ signupId?: string;
139
+ duration?: number;
140
+ }) => Promise<void>;
141
+ fetchPushSettings: () => Promise<any>;
142
+ updateProfileName: (name: any) => Promise<void>;
143
+ updateBlockStatus: (jid: any, action: any) => Promise<void>;
144
+ reportSpam: (jid: string, options?: {
145
+ flow?: string;
146
+ source?: string;
147
+ subject?: string;
148
+ isKnownChat?: boolean;
149
+ }) => Promise<{
150
+ jid: string;
151
+ flow: string;
152
+ reported: true;
153
+ node: any;
154
+ }>;
155
+ updateDisableLinkPreviewsPrivacy: (isPreviewsDisabled: any) => Promise<void>;
156
+ updateCallPrivacy: (value: any) => Promise<void>;
157
+ updateMessagesPrivacy: (value: any) => Promise<void>;
158
+ updateLastSeenPrivacy: (value: any) => Promise<void>;
159
+ updateOnlinePrivacy: (value: any) => Promise<void>;
160
+ updateProfilePicturePrivacy: (value: any) => Promise<void>;
161
+ updateStatusPrivacy: (value: any) => Promise<void>;
162
+ updateReadReceiptsPrivacy: (value: any) => Promise<void>;
163
+ updateGroupsAddPrivacy: (value: any) => Promise<void>;
164
+ updateDefaultDisappearingMode: (duration: any) => Promise<void>;
165
+ getBusinessProfile: (jid: any) => Promise<{
166
+ wid: any;
167
+ address: any;
168
+ description: any;
169
+ website: any[];
170
+ email: any;
171
+ category: any;
172
+ business_hours: {
173
+ timezone: any;
174
+ business_config: any;
175
+ };
176
+ } | undefined>;
177
+ resyncAppState: (...args: any[]) => Promise<any>;
178
+ chatModify: (mod: any, jid: any) => Promise<void>;
179
+ cleanDirtyBits: (type: any, fromTimestamp: any) => Promise<void>;
180
+ addOrEditContact: (jid: any, contact: any) => Promise<void>;
181
+ removeContact: (jid: any) => Promise<void>;
182
+ placeholderResendCache: any;
183
+ addLabel: (jid: any, labels: any) => Promise<void>;
184
+ addChatLabel: (jid: any, labelId: any) => Promise<void>;
185
+ removeChatLabel: (jid: any, labelId: any) => Promise<void>;
186
+ addMessageLabel: (jid: any, messageId: any, labelId: any) => Promise<void>;
187
+ removeMessageLabel: (jid: any, messageId: any, labelId: any) => Promise<void>;
188
+ star: (jid: any, messages: any, star: any) => Promise<void>;
189
+ addOrEditQuickReply: (quickReply: any) => Promise<void>;
190
+ removeQuickReply: (timestamp: any) => Promise<void>;
191
+ type: string;
192
+ ws: import("./Client/websocket.js").WebSocketClient;
193
+ ev: {
194
+ process(handler: any): () => void;
195
+ emit(event: any, evData: any): any;
196
+ isBuffering(): boolean;
197
+ buffer: () => void;
198
+ flush: () => boolean;
199
+ createBufferedFunction(work: any): (...args: any[]) => Promise<any>;
200
+ on: (...args: any[]) => any;
201
+ off: (...args: any[]) => any;
202
+ removeAllListeners: (...args: any[]) => any;
203
+ destroy(): void;
204
+ };
205
+ authState: {
206
+ creds: any;
207
+ keys: {
208
+ get: (type: any, ids: any) => Promise<any>;
209
+ set: (data: any) => Promise<void>;
210
+ isInTransaction: () => boolean;
211
+ transaction: (work: any, key: any) => Promise<any>;
212
+ };
213
+ };
214
+ signalRepository: any;
215
+ user: any;
216
+ generateMessageTag: () => string;
217
+ query: (node: any, timeoutMs: any) => Promise<any>;
218
+ waitForMessage: (msgId: any, timeoutMs?: any) => Promise<any>;
219
+ waitForSocketOpen: () => Promise<void>;
220
+ sendRawMessage: (data: any) => Promise<void>;
221
+ sendNode: (frame: any) => Promise<void>;
222
+ logout: (msg: any) => Promise<void>;
223
+ end: (error: any) => Promise<void>;
224
+ registerSocketEndHandler: (handler: any) => void;
225
+ onUnexpectedError: (err: any, msg: any) => void;
226
+ uploadPreKeys: (count?: number) => Promise<void>;
227
+ uploadPreKeysToServerIfRequired: () => Promise<void>;
228
+ digestKeyBundle: () => Promise<void>;
229
+ rotateSignedPreKey: () => Promise<void>;
230
+ requestPairingCode: (phoneNumber: any, customPairingCode: any) => Promise<any>;
231
+ updateServerTimeOffset: ({ attrs }: {
232
+ attrs: any;
233
+ }) => void;
234
+ sendUnifiedSession: () => Promise<void>;
235
+ wamBuffer: import("../index.js").BinaryInfo;
236
+ waitForConnectionUpdate: (check: any, timeoutMs: any) => Promise<void>;
237
+ sendWAMBuffer: (wamBuffer: any) => Promise<any>;
238
+ executeUSyncQuery: (usyncQuery: any) => Promise<any>;
239
+ onWhatsApp: (...phoneNumber: any[]) => Promise<any>;
240
+ onWhatsAppUsername: (...usernames: any[]) => Promise<any>;
241
+ getUsernames: (...jids: any[]) => Promise<any>;
242
+ fetchAccountReachoutTimelock: () => Promise<{
243
+ isActive: boolean;
244
+ timeEnforcementEnds: Date | undefined;
245
+ enforcementType: any;
246
+ }>;
247
+ fetchNewChatMessageCap: () => Promise<any>;
248
+ };