gifted-baileys 1.5.5 → 1.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.md +6 -1642
  2. package/WAProto/WAProto.proto +969 -88
  3. package/WAProto/index.d.ts +13199 -1260
  4. package/WAProto/index.js +124901 -74525
  5. package/lib/Defaults/baileys-version.json +3 -0
  6. package/lib/Defaults/index.d.ts +284 -0
  7. package/{src → lib}/Defaults/index.js +7 -14
  8. package/lib/Signal/libsignal.d.ts +3 -0
  9. package/lib/Signal/libsignal.js +161 -0
  10. package/lib/Socket/Client/abstract-socket-client.d.ts +15 -0
  11. package/lib/Socket/Client/index.d.ts +2 -0
  12. package/{src → lib}/Socket/Client/index.js +2 -3
  13. package/lib/Socket/Client/mobile-socket-client.d.ts +12 -0
  14. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  15. package/lib/Socket/Client/types.d.ts +17 -0
  16. package/lib/Socket/Client/types.js +13 -0
  17. package/lib/Socket/Client/websocket.d.ts +12 -0
  18. package/lib/Socket/Client/websocket.js +62 -0
  19. package/lib/Socket/business.d.ts +170 -0
  20. package/{src → lib}/Socket/business.js +28 -33
  21. package/lib/Socket/chats.d.ts +81 -0
  22. package/{src → lib}/Socket/chats.js +174 -176
  23. package/lib/Socket/groups.d.ts +115 -0
  24. package/{src → lib}/Socket/groups.js +80 -68
  25. package/lib/Socket/index.d.ts +172 -0
  26. package/{src → lib}/Socket/index.js +4 -1
  27. package/lib/Socket/messages-recv.d.ts +158 -0
  28. package/{src → lib}/Socket/messages-recv.js +378 -211
  29. package/lib/Socket/messages-send.d.ts +155 -0
  30. package/{src → lib}/Socket/messages-send.js +452 -177
  31. package/lib/Socket/newsletter.d.ts +132 -0
  32. package/{src → lib}/Socket/newsletter.js +107 -98
  33. package/lib/Socket/registration.d.ts +264 -0
  34. package/{src → lib}/Socket/registration.js +56 -48
  35. package/lib/Socket/socket.d.ts +44 -0
  36. package/{src → lib}/Socket/socket.js +77 -77
  37. package/lib/Socket/usync.d.ts +37 -0
  38. package/lib/Socket/usync.js +70 -0
  39. package/lib/Store/index.d.ts +3 -0
  40. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  41. package/{src → lib}/Store/make-cache-manager-store.js +25 -34
  42. package/lib/Store/make-in-memory-store.d.ts +118 -0
  43. package/{src → lib}/Store/make-in-memory-store.js +36 -32
  44. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  45. package/lib/Store/object-repository.d.ts +10 -0
  46. package/{src → lib}/Store/object-repository.js +1 -1
  47. package/lib/Types/Auth.d.ts +109 -0
  48. package/lib/Types/Call.d.ts +13 -0
  49. package/lib/Types/Chat.d.ts +107 -0
  50. package/{src/Types/Contact.ts → lib/Types/Contact.d.ts} +8 -9
  51. package/lib/Types/Events.d.ts +172 -0
  52. package/lib/Types/GroupMetadata.d.ts +56 -0
  53. package/lib/Types/Label.d.ts +46 -0
  54. package/{src/Types/LabelAssociation.ts → lib/Types/LabelAssociation.d.ts} +16 -22
  55. package/lib/Types/Message.d.ts +433 -0
  56. package/lib/Types/Newsletter.d.ts +92 -0
  57. package/lib/Types/Product.d.ts +78 -0
  58. package/lib/Types/Signal.d.ts +57 -0
  59. package/{src/Types/Socket.ts → lib/Types/Socket.d.ts} +61 -68
  60. package/lib/Types/State.d.ts +27 -0
  61. package/lib/Types/USync.d.ts +25 -0
  62. package/lib/Types/index.d.ts +66 -0
  63. package/lib/Utils/auth-utils.d.ts +18 -0
  64. package/{src → lib}/Utils/auth-utils.js +73 -90
  65. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  66. package/lib/Utils/baileys-event-stream.js +63 -0
  67. package/lib/Utils/business.d.ts +22 -0
  68. package/{src → lib}/Utils/business.js +15 -43
  69. package/lib/Utils/chat-utils.d.ts +70 -0
  70. package/{src → lib}/Utils/chat-utils.js +87 -94
  71. package/lib/Utils/crypto.d.ts +40 -0
  72. package/{src → lib}/Utils/crypto.js +4 -2
  73. package/lib/Utils/decode-wa-message.d.ts +36 -0
  74. package/lib/Utils/decode-wa-message.js +226 -0
  75. package/lib/Utils/event-buffer.d.ts +35 -0
  76. package/{src → lib}/Utils/event-buffer.js +4 -13
  77. package/lib/Utils/generics.d.ts +88 -0
  78. package/{src → lib}/Utils/generics.js +67 -86
  79. package/lib/Utils/history.d.ts +19 -0
  80. package/{src → lib}/Utils/history.js +13 -39
  81. package/lib/Utils/index.d.ts +17 -0
  82. package/lib/Utils/link-preview.d.ts +21 -0
  83. package/{src → lib}/Utils/link-preview.js +17 -54
  84. package/lib/Utils/logger.d.ts +2 -0
  85. package/lib/Utils/lt-hash.d.ts +12 -0
  86. package/lib/Utils/make-mutex.d.ts +7 -0
  87. package/{src → lib}/Utils/make-mutex.js +4 -13
  88. package/lib/Utils/messages-media.d.ts +113 -0
  89. package/{src → lib}/Utils/messages-media.js +193 -255
  90. package/lib/Utils/messages.d.ts +77 -0
  91. package/{src → lib}/Utils/messages.js +588 -118
  92. package/lib/Utils/noise-handler.d.ts +20 -0
  93. package/lib/Utils/process-message.d.ts +41 -0
  94. package/{src → lib}/Utils/process-message.js +27 -30
  95. package/lib/Utils/signal.d.ts +33 -0
  96. package/{src → lib}/Utils/signal.js +25 -42
  97. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -0
  98. package/{src → lib}/Utils/use-multi-file-auth-state.js +27 -28
  99. package/lib/Utils/validate-connection.d.ts +11 -0
  100. package/{src → lib}/Utils/validate-connection.js +40 -9
  101. package/lib/WABinary/constants.d.ts +27 -0
  102. package/lib/WABinary/decode.d.ts +6 -0
  103. package/lib/WABinary/encode.d.ts +2 -0
  104. package/{src → lib}/WABinary/encode.js +16 -10
  105. package/lib/WABinary/generic-utils.d.ts +14 -0
  106. package/lib/WABinary/index.d.ts +5 -0
  107. package/lib/WABinary/jid-utils.d.ts +31 -0
  108. package/lib/WABinary/types.d.ts +18 -0
  109. package/lib/WABinary/types.js +2 -0
  110. package/lib/WAM/BinaryInfo.d.ts +8 -0
  111. package/lib/WAM/constants.d.ts +38 -0
  112. package/lib/WAM/encode.d.ts +2 -0
  113. package/lib/WAM/index.d.ts +3 -0
  114. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  115. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  116. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  117. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  118. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  119. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  120. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  121. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  122. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  123. package/lib/WAUSync/Protocols/index.js +20 -0
  124. package/lib/WAUSync/USyncQuery.d.ts +26 -0
  125. package/lib/WAUSync/USyncQuery.js +79 -0
  126. package/lib/WAUSync/USyncUser.d.ts +10 -0
  127. package/lib/WAUSync/USyncUser.js +22 -0
  128. package/lib/WAUSync/index.d.ts +3 -0
  129. package/lib/WAUSync/index.js +19 -0
  130. package/{src → lib}/index.js +1 -0
  131. package/package.json +26 -8
  132. package/LICENSE +0 -21
  133. package/src/Defaults/baileys-version.json +0 -3
  134. package/src/Defaults/index.ts +0 -131
  135. package/src/Signal/libsignal.js +0 -180
  136. package/src/Signal/libsignal.ts +0 -141
  137. package/src/Socket/Client/abstract-socket-client.ts +0 -19
  138. package/src/Socket/Client/index.ts +0 -3
  139. package/src/Socket/Client/mobile-socket-client.js +0 -78
  140. package/src/Socket/Client/mobile-socket-client.ts +0 -66
  141. package/src/Socket/Client/web-socket-client.js +0 -75
  142. package/src/Socket/Client/web-socket-client.ts +0 -57
  143. package/src/Socket/business.ts +0 -281
  144. package/src/Socket/chats.ts +0 -1030
  145. package/src/Socket/groups.ts +0 -356
  146. package/src/Socket/index.ts +0 -13
  147. package/src/Socket/messages-recv.ts +0 -985
  148. package/src/Socket/messages-send.ts +0 -871
  149. package/src/Socket/newsletter.ts +0 -282
  150. package/src/Socket/registration.ts +0 -250
  151. package/src/Socket/socket.ts +0 -777
  152. package/src/Store/index.ts +0 -3
  153. package/src/Store/make-cache-manager-store.ts +0 -100
  154. package/src/Store/make-in-memory-store.ts +0 -475
  155. package/src/Store/make-ordered-dictionary.ts +0 -86
  156. package/src/Store/object-repository.ts +0 -32
  157. package/src/Tests/test.app-state-sync.js +0 -204
  158. package/src/Tests/test.app-state-sync.ts +0 -207
  159. package/src/Tests/test.event-buffer.js +0 -270
  160. package/src/Tests/test.event-buffer.ts +0 -319
  161. package/src/Tests/test.key-store.js +0 -76
  162. package/src/Tests/test.key-store.ts +0 -92
  163. package/src/Tests/test.libsignal.js +0 -141
  164. package/src/Tests/test.libsignal.ts +0 -186
  165. package/src/Tests/test.media-download.js +0 -93
  166. package/src/Tests/test.media-download.ts +0 -76
  167. package/src/Tests/test.messages.js +0 -33
  168. package/src/Tests/test.messages.ts +0 -37
  169. package/src/Tests/utils.js +0 -34
  170. package/src/Tests/utils.ts +0 -36
  171. package/src/Types/Auth.ts +0 -113
  172. package/src/Types/Call.ts +0 -15
  173. package/src/Types/Chat.ts +0 -106
  174. package/src/Types/Events.ts +0 -93
  175. package/src/Types/GroupMetadata.ts +0 -53
  176. package/src/Types/Label.ts +0 -36
  177. package/src/Types/Message.ts +0 -288
  178. package/src/Types/Newsletter.ts +0 -98
  179. package/src/Types/Product.ts +0 -85
  180. package/src/Types/Signal.ts +0 -68
  181. package/src/Types/State.ts +0 -29
  182. package/src/Types/index.ts +0 -59
  183. package/src/Utils/auth-utils.ts +0 -222
  184. package/src/Utils/baileys-event-stream.js +0 -92
  185. package/src/Utils/baileys-event-stream.ts +0 -66
  186. package/src/Utils/business.ts +0 -275
  187. package/src/Utils/chat-utils.ts +0 -860
  188. package/src/Utils/crypto.ts +0 -131
  189. package/src/Utils/decode-wa-message.js +0 -211
  190. package/src/Utils/decode-wa-message.ts +0 -228
  191. package/src/Utils/event-buffer.ts +0 -613
  192. package/src/Utils/generics.ts +0 -434
  193. package/src/Utils/history.ts +0 -112
  194. package/src/Utils/index.ts +0 -17
  195. package/src/Utils/link-preview.ts +0 -122
  196. package/src/Utils/logger.ts +0 -3
  197. package/src/Utils/lt-hash.ts +0 -61
  198. package/src/Utils/make-mutex.ts +0 -44
  199. package/src/Utils/messages-media.ts +0 -847
  200. package/src/Utils/messages.ts +0 -956
  201. package/src/Utils/noise-handler.ts +0 -197
  202. package/src/Utils/process-message.ts +0 -414
  203. package/src/Utils/signal.ts +0 -177
  204. package/src/Utils/use-multi-file-auth-state.ts +0 -90
  205. package/src/Utils/validate-connection.ts +0 -238
  206. package/src/WABinary/constants.ts +0 -42
  207. package/src/WABinary/decode.ts +0 -265
  208. package/src/WABinary/encode.ts +0 -236
  209. package/src/WABinary/generic-utils.ts +0 -121
  210. package/src/WABinary/index.ts +0 -5
  211. package/src/WABinary/jid-utils.ts +0 -68
  212. package/src/WABinary/types.ts +0 -17
  213. package/src/WAM/BinaryInfo.ts +0 -12
  214. package/src/WAM/constants.ts +0 -15382
  215. package/src/WAM/encode.ts +0 -174
  216. package/src/WAM/index.ts +0 -3
  217. package/src/gifted +0 -1
  218. package/src/index.ts +0 -13
  219. /package/{src → lib}/Defaults/phonenumber-mcc.json +0 -0
  220. /package/{src → lib}/Socket/Client/abstract-socket-client.js +0 -0
  221. /package/{src → lib}/Store/index.js +0 -0
  222. /package/{src → lib}/Store/make-ordered-dictionary.js +0 -0
  223. /package/{src → lib}/Types/Auth.js +0 -0
  224. /package/{src → lib}/Types/Call.js +0 -0
  225. /package/{src → lib}/Types/Chat.js +0 -0
  226. /package/{src → lib}/Types/Contact.js +0 -0
  227. /package/{src → lib}/Types/Events.js +0 -0
  228. /package/{src → lib}/Types/GroupMetadata.js +0 -0
  229. /package/{src → lib}/Types/Label.js +0 -0
  230. /package/{src → lib}/Types/LabelAssociation.js +0 -0
  231. /package/{src → lib}/Types/Message.js +0 -0
  232. /package/{src → lib}/Types/Newsletter.js +0 -0
  233. /package/{src → lib}/Types/Product.js +0 -0
  234. /package/{src → lib}/Types/Signal.js +0 -0
  235. /package/{src → lib}/Types/Socket.js +0 -0
  236. /package/{src → lib}/Types/State.js +0 -0
  237. /package/{src/WABinary/types.js → lib/Types/USync.js} +0 -0
  238. /package/{src → lib}/Types/index.js +0 -0
  239. /package/{src → lib}/Utils/index.js +0 -0
  240. /package/{src → lib}/Utils/logger.js +0 -0
  241. /package/{src → lib}/Utils/lt-hash.js +0 -0
  242. /package/{src → lib}/Utils/noise-handler.js +0 -0
  243. /package/{src → lib}/WABinary/constants.js +0 -0
  244. /package/{src → lib}/WABinary/decode.js +0 -0
  245. /package/{src → lib}/WABinary/generic-utils.js +0 -0
  246. /package/{src → lib}/WABinary/index.js +0 -0
  247. /package/{src → lib}/WABinary/jid-utils.js +0 -0
  248. /package/{src → lib}/WAM/BinaryInfo.js +0 -0
  249. /package/{src → lib}/WAM/constants.js +0 -0
  250. /package/{src → lib}/WAM/encode.js +0 -0
  251. /package/{src → lib}/WAM/index.js +0 -0
@@ -1,356 +0,0 @@
1
- import { proto } from '../../WAProto'
2
- import { GroupMetadata, GroupParticipant, ParticipantAction, SocketConfig, WAMessageKey, WAMessageStubType } from '../Types'
3
- import { generateMessageID, unixTimestampSeconds } from '../Utils'
4
- import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, jidEncode, jidNormalizedUser } from '../WABinary'
5
- import { makeChatsSocket } from './chats'
6
-
7
- export const makeGroupsSocket = (config: SocketConfig) => {
8
- const sock = makeChatsSocket(config)
9
- const { authState, ev, query, upsertMessage } = sock
10
-
11
- const groupQuery = async(jid: string, type: 'get' | 'set', content: BinaryNode[]) => (
12
- query({
13
- tag: 'iq',
14
- attrs: {
15
- type,
16
- xmlns: 'w:g2',
17
- to: jid,
18
- },
19
- content
20
- })
21
- )
22
-
23
- const groupMetadata = async(jid: string) => {
24
- const result = await groupQuery(
25
- jid,
26
- 'get',
27
- [ { tag: 'query', attrs: { request: 'interactive' } } ]
28
- )
29
- return extractGroupMetadata(result)
30
- }
31
-
32
-
33
- const groupFetchAllParticipating = async() => {
34
- const result = await query({
35
- tag: 'iq',
36
- attrs: {
37
- to: '@g.us',
38
- xmlns: 'w:g2',
39
- type: 'get',
40
- },
41
- content: [
42
- {
43
- tag: 'participating',
44
- attrs: { },
45
- content: [
46
- { tag: 'participants', attrs: { } },
47
- { tag: 'description', attrs: { } }
48
- ]
49
- }
50
- ]
51
- })
52
- const data: { [_: string]: GroupMetadata } = { }
53
- const groupsChild = getBinaryNodeChild(result, 'groups')
54
- if(groupsChild) {
55
- const groups = getBinaryNodeChildren(groupsChild, 'group')
56
- for(const groupNode of groups) {
57
- const meta = extractGroupMetadata({
58
- tag: 'result',
59
- attrs: { },
60
- content: [groupNode]
61
- })
62
- data[meta.id] = meta
63
- }
64
- }
65
-
66
- sock.ev.emit('groups.update', Object.values(data))
67
-
68
- return data
69
- }
70
-
71
- sock.ws.on('CB:ib,,dirty', async(node: BinaryNode) => {
72
- const { attrs } = getBinaryNodeChild(node, 'dirty')!
73
- if(attrs.type !== 'groups') {
74
- return
75
- }
76
-
77
- await groupFetchAllParticipating()
78
- await sock.cleanDirtyBits('groups')
79
- })
80
-
81
- return {
82
- ...sock,
83
- groupMetadata,
84
- groupCreate: async(subject: string, participants: string[]) => {
85
- const key = generateMessageID()
86
- const result = await groupQuery(
87
- '@g.us',
88
- 'set',
89
- [
90
- {
91
- tag: 'create',
92
- attrs: {
93
- subject,
94
- key
95
- },
96
- content: participants.map(jid => ({
97
- tag: 'participant',
98
- attrs: { jid }
99
- }))
100
- }
101
- ]
102
- )
103
- return extractGroupMetadata(result)
104
- },
105
- groupLeave: async(id: string) => {
106
- await groupQuery(
107
- '@g.us',
108
- 'set',
109
- [
110
- {
111
- tag: 'leave',
112
- attrs: { },
113
- content: [
114
- { tag: 'group', attrs: { id } }
115
- ]
116
- }
117
- ]
118
- )
119
- },
120
- groupUpdateSubject: async(jid: string, subject: string) => {
121
- await groupQuery(
122
- jid,
123
- 'set',
124
- [
125
- {
126
- tag: 'subject',
127
- attrs: { },
128
- content: Buffer.from(subject, 'utf-8')
129
- }
130
- ]
131
- )
132
- },
133
- groupRequestParticipantsList: async(jid: string) => {
134
- const result = await groupQuery(
135
- jid,
136
- 'get',
137
- [
138
- {
139
- tag: 'membership_approval_requests',
140
- attrs: {}
141
- }
142
- ]
143
- )
144
- const node = getBinaryNodeChild(result, 'membership_approval_requests')
145
- const participants = getBinaryNodeChildren(node, 'membership_approval_request')
146
- return participants.map(v => v.attrs)
147
- },
148
- groupRequestParticipantsUpdate: async(jid: string, participants: string[], action: 'approve' | 'reject') => {
149
- const result = await groupQuery(
150
- jid,
151
- 'set',
152
- [{
153
- tag: 'membership_requests_action',
154
- attrs: {},
155
- content: [
156
- {
157
- tag: action,
158
- attrs: { },
159
- content: participants.map(jid => ({
160
- tag: 'participant',
161
- attrs: { jid }
162
- }))
163
- }
164
- ]
165
- }]
166
- )
167
- const node = getBinaryNodeChild(result, 'membership_requests_action')
168
- const nodeAction = getBinaryNodeChild(node, action)
169
- const participantsAffected = getBinaryNodeChildren(nodeAction, 'participant')
170
- return participantsAffected.map(p => {
171
- return { status: p.attrs.error || '200', jid: p.attrs.jid }
172
- })
173
- },
174
- groupParticipantsUpdate: async(
175
- jid: string,
176
- participants: string[],
177
- action: ParticipantAction
178
- ) => {
179
- const result = await groupQuery(
180
- jid,
181
- 'set',
182
- [
183
- {
184
- tag: action,
185
- attrs: { },
186
- content: participants.map(jid => ({
187
- tag: 'participant',
188
- attrs: { jid }
189
- }))
190
- }
191
- ]
192
- )
193
- const node = getBinaryNodeChild(result, action)
194
- const participantsAffected = getBinaryNodeChildren(node!, 'participant')
195
- return participantsAffected.map(p => {
196
- return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p }
197
- })
198
- },
199
- groupUpdateDescription: async(jid: string, description?: string) => {
200
- const metadata = await groupMetadata(jid)
201
- const prev = metadata.descId ?? null
202
-
203
- await groupQuery(
204
- jid,
205
- 'set',
206
- [
207
- {
208
- tag: 'description',
209
- attrs: {
210
- ...(description ? { id: generateMessageID() } : { delete: 'true' }),
211
- ...(prev ? { prev } : {})
212
- },
213
- content: description ? [
214
- { tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }
215
- ] : undefined
216
- }
217
- ]
218
- )
219
- },
220
- groupInviteCode: async(jid: string) => {
221
- const result = await groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }])
222
- const inviteNode = getBinaryNodeChild(result, 'invite')
223
- return inviteNode?.attrs.code
224
- },
225
- groupRevokeInvite: async(jid: string) => {
226
- const result = await groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }])
227
- const inviteNode = getBinaryNodeChild(result, 'invite')
228
- return inviteNode?.attrs.code
229
- },
230
- groupAcceptInvite: async(code: string) => {
231
- const results = await groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }])
232
- const result = getBinaryNodeChild(results, 'group')
233
- return result?.attrs.jid
234
- },
235
- /**
236
- * accept a GroupInviteMessage
237
- * @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
238
- * @param inviteMessage the message to accept
239
- */
240
- groupAcceptInviteV4: ev.createBufferedFunction(async(key: string | WAMessageKey, inviteMessage: proto.Message.IGroupInviteMessage) => {
241
- key = typeof key === 'string' ? { remoteJid: key } : key
242
- const results = await groupQuery(inviteMessage.groupJid!, 'set', [{
243
- tag: 'accept',
244
- attrs: {
245
- code: inviteMessage.inviteCode!,
246
- expiration: inviteMessage.inviteExpiration!.toString(),
247
- admin: key.remoteJid!
248
- }
249
- }])
250
-
251
- // if we have the full message key
252
- // update the invite message to be expired
253
- if(key.id) {
254
- // create new invite message that is expired
255
- inviteMessage = proto.Message.GroupInviteMessage.fromObject(inviteMessage)
256
- inviteMessage.inviteExpiration = 0
257
- inviteMessage.inviteCode = ''
258
- ev.emit('messages.update', [
259
- {
260
- key,
261
- update: {
262
- message: {
263
- groupInviteMessage: inviteMessage
264
- }
265
- }
266
- }
267
- ])
268
- }
269
-
270
- // generate the group add message
271
- await upsertMessage(
272
- {
273
- key: {
274
- remoteJid: inviteMessage.groupJid,
275
- id: generateMessageID(),
276
- fromMe: false,
277
- participant: key.remoteJid,
278
- },
279
- messageStubType: WAMessageStubType.GROUP_PARTICIPANT_ADD,
280
- messageStubParameters: [
281
- authState.creds.me!.id
282
- ],
283
- participant: key.remoteJid,
284
- messageTimestamp: unixTimestampSeconds()
285
- },
286
- 'notify'
287
- )
288
-
289
- return results.attrs.from
290
- }),
291
- groupGetInviteInfo: async(code: string) => {
292
- const results = await groupQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }])
293
- return extractGroupMetadata(results)
294
- },
295
- groupToggleEphemeral: async(jid: string, ephemeralExpiration: number) => {
296
- const content: BinaryNode = ephemeralExpiration ?
297
- { tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } } :
298
- { tag: 'not_ephemeral', attrs: { } }
299
- await groupQuery(jid, 'set', [content])
300
- },
301
- groupSettingUpdate: async(jid: string, setting: 'announcement' | 'not_announcement' | 'locked' | 'unlocked') => {
302
- await groupQuery(jid, 'set', [ { tag: setting, attrs: { } } ])
303
- },
304
- groupMemberAddMode: async(jid: string, mode: 'admin_add' | 'all_member_add') => {
305
- await groupQuery(jid, 'set', [ { tag: 'member_add_mode', attrs: { }, content: mode } ])
306
- },
307
- groupJoinApprovalMode: async(jid: string, mode: 'on' | 'off') => {
308
- await groupQuery(jid, 'set', [ { tag: 'membership_approval_mode', attrs: { }, content: [ { tag: 'group_join', attrs: { state: mode } } ] } ])
309
- },
310
- groupFetchAllParticipating
311
- }
312
- }
313
-
314
-
315
- export const extractGroupMetadata = (result: BinaryNode) => {
316
- const group = getBinaryNodeChild(result, 'group')!
317
- const descChild = getBinaryNodeChild(group, 'description')
318
- let desc: string | undefined
319
- let descId: string | undefined
320
- if(descChild) {
321
- desc = getBinaryNodeChildString(descChild, 'body')
322
- descId = descChild.attrs.id
323
- }
324
-
325
- const groupId = group.attrs.id.includes('@') ? group.attrs.id : jidEncode(group.attrs.id, 'g.us')
326
- const eph = getBinaryNodeChild(group, 'ephemeral')?.attrs.expiration
327
- const memberAddMode = getBinaryNodeChildString(group, 'member_add_mode') === 'all_member_add'
328
- const metadata: GroupMetadata = {
329
- id: groupId,
330
- subject: group.attrs.subject,
331
- subjectOwner: group.attrs.s_o,
332
- subjectTime: +group.attrs.s_t,
333
- size: getBinaryNodeChildren(group, 'participant').length,
334
- creation: +group.attrs.creation,
335
- owner: group.attrs.creator ? jidNormalizedUser(group.attrs.creator) : undefined,
336
- desc,
337
- descId,
338
- linkedParent: getBinaryNodeChild(group, 'linked_parent')?.attrs.jid || undefined,
339
- restrict: !!getBinaryNodeChild(group, 'locked'),
340
- announce: !!getBinaryNodeChild(group, 'announcement'),
341
- isCommunity: !!getBinaryNodeChild(group, 'parent'),
342
- isCommunityAnnounce: !!getBinaryNodeChild(group, 'default_sub_group'),
343
- joinApprovalMode: !!getBinaryNodeChild(group, 'membership_approval_mode'),
344
- memberAddMode,
345
- participants: getBinaryNodeChildren(group, 'participant').map(
346
- ({ attrs }) => {
347
- return {
348
- id: attrs.jid,
349
- admin: (attrs.type || null) as GroupParticipant['admin'],
350
- }
351
- }
352
- ),
353
- ephemeralDuration: eph ? +eph : undefined
354
- }
355
- return metadata
356
- }
@@ -1,13 +0,0 @@
1
- import { DEFAULT_CONNECTION_CONFIG } from '../Defaults'
2
- import { UserFacingSocketConfig } from '../Types'
3
- import { makeRegistrationSocket as _makeSocket } from './registration'
4
-
5
- // export the last socket layer
6
- const makeWASocket = (config: UserFacingSocketConfig) => (
7
- _makeSocket({
8
- ...DEFAULT_CONNECTION_CONFIG,
9
- ...config
10
- })
11
- )
12
-
13
- export default makeWASocket