@ubedsockets/baileys 1.6.4 → 1.6.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 (172) hide show
  1. package/lib/Socket/Client/index.d.ts +3 -0
  2. package/lib/Socket/Client/index.d.ts.map +1 -0
  3. package/lib/Socket/Client/index.js +3 -18
  4. package/lib/Socket/Client/index.js.map +1 -0
  5. package/lib/Socket/Client/types.d.ts +16 -0
  6. package/lib/Socket/Client/types.d.ts.map +1 -0
  7. package/lib/Socket/Client/types.js +4 -6
  8. package/lib/Socket/Client/types.js.map +1 -0
  9. package/lib/Socket/Client/websocket.d.ts +13 -0
  10. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  11. package/lib/Socket/Client/websocket.js +21 -78
  12. package/lib/Socket/Client/websocket.js.map +1 -0
  13. package/lib/Socket/business.d.ts +217 -0
  14. package/lib/Socket/business.d.ts.map +1 -0
  15. package/lib/Socket/business.js +162 -43
  16. package/lib/Socket/business.js.map +1 -0
  17. package/lib/Socket/chats.d.ts +124 -0
  18. package/lib/Socket/chats.d.ts.map +1 -0
  19. package/lib/Socket/chats.js +571 -249
  20. package/lib/Socket/chats.js.map +1 -0
  21. package/lib/Socket/communities.d.ts +273 -0
  22. package/lib/Socket/communities.d.ts.map +1 -0
  23. package/lib/Socket/communities.js +431 -0
  24. package/lib/Socket/communities.js.map +1 -0
  25. package/lib/Socket/groups.d.ts +161 -0
  26. package/lib/Socket/groups.d.ts.map +1 -0
  27. package/lib/Socket/groups.js +114 -99
  28. package/lib/Socket/groups.js.map +1 -0
  29. package/lib/Socket/index.d.ts +260 -0
  30. package/lib/Socket/index.d.ts.map +1 -0
  31. package/lib/Socket/index.js +11 -9
  32. package/lib/Socket/index.js.map +1 -0
  33. package/lib/Socket/messages-recv.d.ts +203 -0
  34. package/lib/Socket/messages-recv.d.ts.map +1 -0
  35. package/lib/Socket/messages-recv.js +1277 -559
  36. package/lib/Socket/messages-recv.js.map +1 -0
  37. package/lib/Socket/messages-send.d.ts +199 -0
  38. package/lib/Socket/messages-send.d.ts.map +1 -0
  39. package/lib/Socket/messages-send.js +674 -669
  40. package/lib/Socket/messages-send.js.map +1 -0
  41. package/lib/Socket/mex.d.ts +3 -0
  42. package/lib/Socket/mex.d.ts.map +1 -0
  43. package/lib/Socket/mex.js +42 -0
  44. package/lib/Socket/mex.js.map +1 -0
  45. package/lib/Socket/newsletter.d.ts +170 -0
  46. package/lib/Socket/newsletter.d.ts.map +1 -0
  47. package/lib/Socket/newsletter.js +149 -286
  48. package/lib/Socket/newsletter.js.map +1 -0
  49. package/lib/Socket/socket.d.ts +59 -0
  50. package/lib/Socket/socket.d.ts.map +1 -0
  51. package/lib/Socket/socket.js.map +1 -0
  52. package/lib/Utils/auth-utils.d.ts +24 -0
  53. package/lib/Utils/auth-utils.d.ts.map +1 -0
  54. package/lib/Utils/auth-utils.js +239 -136
  55. package/lib/Utils/auth-utils.js.map +1 -0
  56. package/lib/Utils/browser-utils.d.ts +4 -0
  57. package/lib/Utils/browser-utils.d.ts.map +1 -0
  58. package/lib/Utils/browser-utils.js +28 -0
  59. package/lib/Utils/browser-utils.js.map +1 -0
  60. package/lib/Utils/business.d.ts +23 -0
  61. package/lib/Utils/business.d.ts.map +1 -0
  62. package/lib/Utils/business.js +66 -69
  63. package/lib/Utils/business.js.map +1 -0
  64. package/lib/Utils/chat-utils.d.ts +100 -0
  65. package/lib/Utils/chat-utils.d.ts.map +1 -0
  66. package/lib/Utils/chat-utils.js +380 -238
  67. package/lib/Utils/chat-utils.js.map +1 -0
  68. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  69. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  70. package/lib/Utils/companion-reg-client-utils.js +35 -0
  71. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  72. package/lib/Utils/crypto.d.ts +37 -0
  73. package/lib/Utils/crypto.d.ts.map +1 -0
  74. package/lib/Utils/crypto.js +56 -127
  75. package/lib/Utils/crypto.js.map +1 -0
  76. package/lib/Utils/decode-wa-message.d.ts +66 -0
  77. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  78. package/lib/Utils/decode-wa-message.js +173 -63
  79. package/lib/Utils/decode-wa-message.js.map +1 -0
  80. package/lib/Utils/event-buffer.d.ts +36 -0
  81. package/lib/Utils/event-buffer.d.ts.map +1 -0
  82. package/lib/Utils/event-buffer.js +174 -70
  83. package/lib/Utils/event-buffer.js.map +1 -0
  84. package/lib/Utils/generics.d.ts +91 -0
  85. package/lib/Utils/generics.d.ts.map +1 -0
  86. package/lib/Utils/generics.js +159 -207
  87. package/lib/Utils/generics.js.map +1 -0
  88. package/lib/Utils/history.d.ts +24 -0
  89. package/lib/Utils/history.d.ts.map +1 -0
  90. package/lib/Utils/history.js +93 -53
  91. package/lib/Utils/history.js.map +1 -0
  92. package/lib/Utils/identity-change-handler.d.ts +44 -0
  93. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  94. package/lib/Utils/identity-change-handler.js +50 -0
  95. package/lib/Utils/identity-change-handler.js.map +1 -0
  96. package/lib/Utils/index.d.ts +22 -0
  97. package/lib/Utils/index.d.ts.map +1 -0
  98. package/lib/Utils/index.js +22 -33
  99. package/lib/Utils/index.js.map +1 -0
  100. package/lib/Utils/link-preview.d.ts +21 -0
  101. package/lib/Utils/link-preview.d.ts.map +1 -0
  102. package/lib/Utils/link-preview.js +17 -58
  103. package/lib/Utils/link-preview.js.map +1 -0
  104. package/lib/Utils/logger.d.ts +12 -0
  105. package/lib/Utils/logger.d.ts.map +1 -0
  106. package/lib/Utils/logger.js +3 -7
  107. package/lib/Utils/logger.js.map +1 -0
  108. package/lib/Utils/lt-hash.d.ts +8 -0
  109. package/lib/Utils/lt-hash.d.ts.map +1 -0
  110. package/lib/Utils/lt-hash.js +3 -46
  111. package/lib/Utils/lt-hash.js.map +1 -0
  112. package/lib/Utils/make-mutex.d.ts +9 -0
  113. package/lib/Utils/make-mutex.d.ts.map +1 -0
  114. package/lib/Utils/make-mutex.js +24 -34
  115. package/lib/Utils/make-mutex.js.map +1 -0
  116. package/lib/Utils/message-retry-manager.d.ts +115 -0
  117. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  118. package/lib/Utils/message-retry-manager.js +265 -0
  119. package/lib/Utils/message-retry-manager.js.map +1 -0
  120. package/lib/Utils/messages-media.d.ts +133 -0
  121. package/lib/Utils/messages-media.d.ts.map +1 -0
  122. package/lib/Utils/messages-media.js +483 -744
  123. package/lib/Utils/messages-media.js.map +1 -0
  124. package/lib/Utils/messages.d.ts +91 -0
  125. package/lib/Utils/messages.d.ts.map +1 -0
  126. package/lib/Utils/messages.js +411 -621
  127. package/lib/Utils/messages.js.map +1 -0
  128. package/lib/Utils/noise-handler.d.ts +20 -0
  129. package/lib/Utils/noise-handler.d.ts.map +1 -0
  130. package/lib/Utils/noise-handler.js +149 -99
  131. package/lib/Utils/noise-handler.js.map +1 -0
  132. package/lib/Utils/offline-node-processor.d.ts +17 -0
  133. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  134. package/lib/Utils/offline-node-processor.js +40 -0
  135. package/lib/Utils/offline-node-processor.js.map +1 -0
  136. package/lib/Utils/pre-key-manager.d.ts +28 -0
  137. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  138. package/lib/Utils/pre-key-manager.js +106 -0
  139. package/lib/Utils/pre-key-manager.js.map +1 -0
  140. package/lib/Utils/process-message.d.ts +60 -0
  141. package/lib/Utils/process-message.d.ts.map +1 -0
  142. package/lib/Utils/process-message.js +459 -150
  143. package/lib/Utils/process-message.js.map +1 -0
  144. package/lib/Utils/reporting-utils.d.ts +11 -0
  145. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  146. package/lib/Utils/reporting-utils.js +258 -0
  147. package/lib/Utils/reporting-utils.js.map +1 -0
  148. package/lib/Utils/signal.d.ts +47 -0
  149. package/lib/Utils/signal.d.ts.map +1 -0
  150. package/lib/Utils/signal.js +112 -73
  151. package/lib/Utils/signal.js.map +1 -0
  152. package/lib/Utils/stanza-ack.d.ts +11 -0
  153. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  154. package/lib/Utils/stanza-ack.js +38 -0
  155. package/lib/Utils/stanza-ack.js.map +1 -0
  156. package/lib/Utils/sync-action-utils.d.ts +19 -0
  157. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  158. package/lib/Utils/sync-action-utils.js +49 -0
  159. package/lib/Utils/sync-action-utils.js.map +1 -0
  160. package/lib/Utils/tc-token-utils.d.ts +37 -0
  161. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  162. package/lib/Utils/tc-token-utils.js +163 -0
  163. package/lib/Utils/tc-token-utils.js.map +1 -0
  164. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  165. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  166. package/lib/Utils/use-multi-file-auth-state.js +23 -27
  167. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  168. package/lib/Utils/validate-connection.d.ts +11 -0
  169. package/lib/Utils/validate-connection.d.ts.map +1 -0
  170. package/lib/Utils/validate-connection.js +74 -104
  171. package/lib/Utils/validate-connection.js.map +1 -0
  172. package/package.json +1 -1
@@ -1,26 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractGroupMetadata = exports.makeGroupsSocket = void 0;
4
- const WAProto_1 = require("../../WAProto");
5
- const Types_1 = require("../Types");
6
- const Utils_1 = require("../Utils");
7
- const WABinary_1 = require("../WABinary");
8
- const chats_1 = require("./chats");
9
- const makeGroupsSocket = (config) => {
10
- const sock = (0, chats_1.makeChatsSocket)(config);
1
+ import { Boom } from '@hapi/boom';
2
+ import { proto } from '../../WAProto/index.js';
3
+ import { WAMessageAddressingMode, WAMessageStubType } from '../Types/index.js';
4
+ import { generateMessageIDV2, unixTimestampSeconds } from '../Utils/index.js';
5
+ import { getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, isLidUser, isPnUser, jidEncode, jidNormalizedUser } from '../WABinary/index.js';
6
+ import { makeChatsSocket } from './chats.js';
7
+ export const makeGroupsSocket = (config) => {
8
+ const sock = makeChatsSocket(config);
11
9
  const { authState, ev, query, upsertMessage } = sock;
12
- const groupQuery = async (jid, type, content) => (query({
10
+ const groupQuery = async (jid, type, content) => query({
13
11
  tag: 'iq',
14
12
  attrs: {
15
13
  type,
16
14
  xmlns: 'w:g2',
17
- to: jid,
15
+ to: jid
18
16
  },
19
17
  content
20
- }));
18
+ });
21
19
  const groupMetadata = async (jid) => {
22
20
  const result = await groupQuery(jid, 'get', [{ tag: 'query', attrs: { request: 'interactive' } }]);
23
- return (0, exports.extractGroupMetadata)(result);
21
+ return extractGroupMetadata(result);
24
22
  };
25
23
  const groupFetchAllParticipating = async () => {
26
24
  const result = await query({
@@ -28,7 +26,7 @@ const makeGroupsSocket = (config) => {
28
26
  attrs: {
29
27
  to: '@g.us',
30
28
  xmlns: 'w:g2',
31
- type: 'get',
29
+ type: 'get'
32
30
  },
33
31
  content: [
34
32
  {
@@ -42,11 +40,11 @@ const makeGroupsSocket = (config) => {
42
40
  ]
43
41
  });
44
42
  const data = {};
45
- const groupsChild = (0, WABinary_1.getBinaryNodeChild)(result, 'groups');
43
+ const groupsChild = getBinaryNodeChild(result, 'groups');
46
44
  if (groupsChild) {
47
- const groups = (0, WABinary_1.getBinaryNodeChildren)(groupsChild, 'group');
45
+ const groups = getBinaryNodeChildren(groupsChild, 'group');
48
46
  for (const groupNode of groups) {
49
- const meta = (0, exports.extractGroupMetadata)({
47
+ const meta = extractGroupMetadata({
50
48
  tag: 'result',
51
49
  attrs: {},
52
50
  content: [groupNode]
@@ -54,11 +52,12 @@ const makeGroupsSocket = (config) => {
54
52
  data[meta.id] = meta;
55
53
  }
56
54
  }
55
+ // TODO: properly parse LID / PN DATA
57
56
  sock.ev.emit('groups.update', Object.values(data));
58
57
  return data;
59
58
  };
60
59
  sock.ws.on('CB:ib,,dirty', async (node) => {
61
- const { attrs } = (0, WABinary_1.getBinaryNodeChild)(node, 'dirty');
60
+ const { attrs } = getBinaryNodeChild(node, 'dirty');
62
61
  if (attrs.type !== 'groups') {
63
62
  return;
64
63
  }
@@ -67,10 +66,9 @@ const makeGroupsSocket = (config) => {
67
66
  });
68
67
  return {
69
68
  ...sock,
70
- groupQuery,
71
69
  groupMetadata,
72
70
  groupCreate: async (subject, participants) => {
73
- const key = (0, Utils_1.generateMessageIDV2)();
71
+ const key = generateMessageIDV2();
74
72
  const result = await groupQuery('@g.us', 'set', [
75
73
  {
76
74
  tag: 'create',
@@ -84,16 +82,14 @@ const makeGroupsSocket = (config) => {
84
82
  }))
85
83
  }
86
84
  ]);
87
- return (0, exports.extractGroupMetadata)(result);
85
+ return extractGroupMetadata(result);
88
86
  },
89
87
  groupLeave: async (id) => {
90
88
  await groupQuery('@g.us', 'set', [
91
89
  {
92
90
  tag: 'leave',
93
91
  attrs: {},
94
- content: [
95
- { tag: 'group', attrs: { id } }
96
- ]
92
+ content: [{ tag: 'group', attrs: { id } }]
97
93
  }
98
94
  ]);
99
95
  },
@@ -113,12 +109,13 @@ const makeGroupsSocket = (config) => {
113
109
  attrs: {}
114
110
  }
115
111
  ]);
116
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'membership_approval_requests');
117
- const participants = (0, WABinary_1.getBinaryNodeChildren)(node, 'membership_approval_request');
112
+ const node = getBinaryNodeChild(result, 'membership_approval_requests');
113
+ const participants = getBinaryNodeChildren(node, 'membership_approval_request');
118
114
  return participants.map(v => v.attrs);
119
115
  },
120
116
  groupRequestParticipantsUpdate: async (jid, participants, action) => {
121
- const result = await groupQuery(jid, 'set', [{
117
+ const result = await groupQuery(jid, 'set', [
118
+ {
122
119
  tag: 'membership_requests_action',
123
120
  attrs: {},
124
121
  content: [
@@ -131,10 +128,11 @@ const makeGroupsSocket = (config) => {
131
128
  }))
132
129
  }
133
130
  ]
134
- }]);
135
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'membership_requests_action');
136
- const nodeAction = (0, WABinary_1.getBinaryNodeChild)(node, action);
137
- const participantsAffected = (0, WABinary_1.getBinaryNodeChildren)(nodeAction, 'participant');
131
+ }
132
+ ]);
133
+ const node = getBinaryNodeChild(result, 'membership_requests_action');
134
+ const nodeAction = getBinaryNodeChild(node, action);
135
+ const participantsAffected = getBinaryNodeChildren(nodeAction, 'participant');
138
136
  return participantsAffected.map(p => {
139
137
  return { status: p.attrs.error || '200', jid: p.attrs.jid };
140
138
  });
@@ -150,43 +148,40 @@ const makeGroupsSocket = (config) => {
150
148
  }))
151
149
  }
152
150
  ]);
153
- const node = (0, WABinary_1.getBinaryNodeChild)(result, action);
154
- const participantsAffected = (0, WABinary_1.getBinaryNodeChildren)(node, 'participant');
151
+ const node = getBinaryNodeChild(result, action);
152
+ const participantsAffected = getBinaryNodeChildren(node, 'participant');
155
153
  return participantsAffected.map(p => {
156
154
  return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p };
157
155
  });
158
156
  },
159
157
  groupUpdateDescription: async (jid, description) => {
160
- var _a;
161
158
  const metadata = await groupMetadata(jid);
162
- const prev = (_a = metadata.descId) !== null && _a !== void 0 ? _a : null;
159
+ const prev = metadata.descId ?? null;
163
160
  await groupQuery(jid, 'set', [
164
161
  {
165
162
  tag: 'description',
166
163
  attrs: {
167
- ...(description ? { id: (0, Utils_1.generateMessageIDV2)() } : { delete: 'true' }),
164
+ ...(description ? { id: generateMessageIDV2() } : { delete: 'true' }),
168
165
  ...(prev ? { prev } : {})
169
166
  },
170
- content: description ? [
171
- { tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }
172
- ] : undefined
167
+ content: description ? [{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }] : undefined
173
168
  }
174
169
  ]);
175
170
  },
176
171
  groupInviteCode: async (jid) => {
177
172
  const result = await groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }]);
178
- const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite');
179
- return inviteNode === null || inviteNode === void 0 ? void 0 : inviteNode.attrs.code;
173
+ const inviteNode = getBinaryNodeChild(result, 'invite');
174
+ return inviteNode?.attrs.code;
180
175
  },
181
176
  groupRevokeInvite: async (jid) => {
182
177
  const result = await groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }]);
183
- const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite');
184
- return inviteNode === null || inviteNode === void 0 ? void 0 : inviteNode.attrs.code;
178
+ const inviteNode = getBinaryNodeChild(result, 'invite');
179
+ return inviteNode?.attrs.code;
185
180
  },
186
181
  groupAcceptInvite: async (code) => {
187
182
  const results = await groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }]);
188
- const result = (0, WABinary_1.getBinaryNodeChild)(results, 'group');
189
- return result === null || result === void 0 ? void 0 : result.attrs.jid;
183
+ const result = getBinaryNodeChild(results, 'group');
184
+ return result?.attrs.jid;
190
185
  },
191
186
  /**
192
187
  * revoke a v4 invite for someone
@@ -195,7 +190,9 @@ const makeGroupsSocket = (config) => {
195
190
  * @returns true if successful
196
191
  */
197
192
  groupRevokeInviteV4: async (groupJid, invitedJid) => {
198
- const result = await groupQuery(groupJid, 'set', [{ tag: 'revoke', attrs: {}, content: [{ tag: 'participant', attrs: { jid: invitedJid } }] }]);
193
+ const result = await groupQuery(groupJid, 'set', [
194
+ { tag: 'revoke', attrs: {}, content: [{ tag: 'participant', attrs: { jid: invitedJid } }] }
195
+ ]);
199
196
  return !!result;
200
197
  },
201
198
  /**
@@ -204,21 +201,22 @@ const makeGroupsSocket = (config) => {
204
201
  * @param inviteMessage the message to accept
205
202
  */
206
203
  groupAcceptInviteV4: ev.createBufferedFunction(async (key, inviteMessage) => {
207
- var _a;
208
204
  key = typeof key === 'string' ? { remoteJid: key } : key;
209
- const results = await groupQuery(inviteMessage.groupJid, 'set', [{
205
+ const results = await groupQuery(inviteMessage.groupJid, 'set', [
206
+ {
210
207
  tag: 'accept',
211
208
  attrs: {
212
209
  code: inviteMessage.inviteCode,
213
210
  expiration: inviteMessage.inviteExpiration.toString(),
214
211
  admin: key.remoteJid
215
212
  }
216
- }]);
213
+ }
214
+ ]);
217
215
  // if we have the full message key
218
216
  // update the invite message to be expired
219
217
  if (key.id) {
220
218
  // create new invite message that is expired
221
- inviteMessage = WAProto_1.proto.Message.GroupInviteMessage.fromObject(inviteMessage);
219
+ inviteMessage = proto.Message.GroupInviteMessage.fromObject(inviteMessage);
222
220
  inviteMessage.inviteExpiration = 0;
223
221
  inviteMessage.inviteCode = '';
224
222
  ev.emit('messages.update', [
@@ -236,27 +234,25 @@ const makeGroupsSocket = (config) => {
236
234
  await upsertMessage({
237
235
  key: {
238
236
  remoteJid: inviteMessage.groupJid,
239
- id: (0, Utils_1.generateMessageIDV2)((_a = sock.user) === null || _a === void 0 ? void 0 : _a.id),
237
+ id: generateMessageIDV2(sock.user?.id),
240
238
  fromMe: false,
241
- participant: key.remoteJid,
239
+ participant: key.remoteJid
242
240
  },
243
- messageStubType: Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD,
244
- messageStubParameters: [
245
- authState.creds.me.id
246
- ],
241
+ messageStubType: WAMessageStubType.GROUP_PARTICIPANT_ADD,
242
+ messageStubParameters: [JSON.stringify(authState.creds.me)],
247
243
  participant: key.remoteJid,
248
- messageTimestamp: (0, Utils_1.unixTimestampSeconds)()
244
+ messageTimestamp: unixTimestampSeconds()
249
245
  }, 'notify');
250
246
  return results.attrs.from;
251
247
  }),
252
248
  groupGetInviteInfo: async (code) => {
253
249
  const results = await groupQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
254
- return (0, exports.extractGroupMetadata)(results);
250
+ return extractGroupMetadata(results);
255
251
  },
256
252
  groupToggleEphemeral: async (jid, ephemeralExpiration) => {
257
- const content = ephemeralExpiration ?
258
- { tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } } :
259
- { tag: 'not_ephemeral', attrs: {} };
253
+ const content = ephemeralExpiration
254
+ ? { tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } }
255
+ : { tag: 'not_ephemeral', attrs: {} };
260
256
  await groupQuery(jid, 'set', [content]);
261
257
  },
262
258
  groupSettingUpdate: async (jid, setting) => {
@@ -266,67 +262,86 @@ const makeGroupsSocket = (config) => {
266
262
  await groupQuery(jid, 'set', [{ tag: 'member_add_mode', attrs: {}, content: mode }]);
267
263
  },
268
264
  groupJoinApprovalMode: async (jid, mode) => {
269
- await groupQuery(jid, 'set', [{ tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'group_join', attrs: { state: mode } }] }]);
265
+ await groupQuery(jid, 'set', [
266
+ { tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'group_join', attrs: { state: mode } }] }
267
+ ]);
270
268
  },
271
269
  groupFetchAllParticipating
272
270
  };
273
271
  };
274
- exports.makeGroupsSocket = makeGroupsSocket;
275
- const extractGroupMetadata = (result) => {
276
- var _a, _b;
277
- const group = (0, WABinary_1.getBinaryNodeChild)(result, 'group');
278
- const descChild = (0, WABinary_1.getBinaryNodeChild)(group, 'description');
272
+ export const extractGroupMetadata = (result) => {
273
+ const group = getBinaryNodeChild(result, 'group');
274
+ if (!group) {
275
+ // Mirror WAWeb: surface server/client errors with their code+text instead of crashing.
276
+ const errorNode = getBinaryNodeChild(result, 'error');
277
+ if (errorNode) {
278
+ const code = errorNode.attrs.code ? +errorNode.attrs.code : 500;
279
+ const text = errorNode.attrs.text || 'group metadata query failed';
280
+ throw new Boom(text, { statusCode: code, data: errorNode });
281
+ }
282
+ throw new Boom('Invalid group metadata response: missing <group> node', { data: result });
283
+ }
284
+ if (!group.attrs.id) {
285
+ throw new Boom('Invalid group metadata response: missing group id', { data: group });
286
+ }
287
+ const descChild = getBinaryNodeChild(group, 'description');
279
288
  let desc;
280
289
  let descId;
281
290
  let descOwner;
282
- let descOwnerLid;
291
+ let descOwnerPn;
292
+ let descOwnerUsername;
283
293
  let descTime;
284
294
  if (descChild) {
285
- desc = (0, WABinary_1.getBinaryNodeChildString)(descChild, 'body');
286
- descOwner = (0, WABinary_1.jidNormalizedUser)(descChild.attrs.participant_pn || descChild.attrs.participant);
287
- if (group.attrs.addressing_mode === 'lid') {
288
- descOwnerLid = (0, WABinary_1.jidNormalizedUser)(descChild.attrs.participant);
289
- }
295
+ desc = getBinaryNodeChildString(descChild, 'body');
296
+ descOwner = descChild.attrs.participant ? jidNormalizedUser(descChild.attrs.participant) : undefined;
297
+ descOwnerPn = descChild.attrs.participant_pn ? jidNormalizedUser(descChild.attrs.participant_pn) : undefined;
298
+ descOwnerUsername = descChild.attrs.participant_username || undefined;
299
+ descTime = +descChild.attrs.t;
290
300
  descId = descChild.attrs.id;
291
- descTime = descChild.attrs.t ? +descChild.attrs.t : undefined;
292
301
  }
293
- const groupSize = group.attrs.size ? Number(group.attrs.size) : undefined;
294
- const groupId = group.attrs.id.includes('@') ? group.attrs.id : (0, WABinary_1.jidEncode)(group.attrs.id, 'g.us');
295
- const eph = (_a = (0, WABinary_1.getBinaryNodeChild)(group, 'ephemeral')) === null || _a === void 0 ? void 0 : _a.attrs.expiration;
296
- const memberAddMode = (0, WABinary_1.getBinaryNodeChildString)(group, 'member_add_mode') === 'all_member_add';
302
+ const groupId = group.attrs.id.includes('@') ? group.attrs.id : jidEncode(group.attrs.id, 'g.us');
303
+ const eph = getBinaryNodeChild(group, 'ephemeral')?.attrs.expiration;
304
+ const memberAddMode = getBinaryNodeChildString(group, 'member_add_mode') === 'all_member_add';
297
305
  const metadata = {
298
306
  id: groupId,
299
- addressingMode: group.attrs.addressing_mode,
307
+ notify: group.attrs.notify,
308
+ addressingMode: group.attrs.addressing_mode === 'lid' ? WAMessageAddressingMode.LID : WAMessageAddressingMode.PN,
300
309
  subject: group.attrs.subject,
301
- subjectOwner: (0, WABinary_1.jidNormalizedUser)(group.attrs.s_o_pn || group.attrs.s_o),
302
- ...(group.attrs.addressing_mode === 'lid' ? { subjectOwnerLid: (0, WABinary_1.jidNormalizedUser)(group.attrs.s_o) } : {}),
303
- subjectTime: group.attrs.s_t ? +group.attrs.s_t : undefined,
304
- size: groupSize || (0, WABinary_1.getBinaryNodeChildren)(group, 'participant').length,
305
- creation: group.attrs.creation ? +group.attrs.creation : undefined,
306
- owner: (0, WABinary_1.jidNormalizedUser)(group.attrs.creator_pn || group.attrs.creator),
307
- ...(group.attrs.addressing_mode === 'lid' ? { ownerLid: (0, WABinary_1.jidNormalizedUser)(group.attrs.creator) } : {}),
310
+ subjectOwner: group.attrs.s_o,
311
+ subjectOwnerPn: group.attrs.s_o_pn,
312
+ subjectOwnerUsername: group.attrs.s_o_username,
313
+ subjectTime: +group.attrs.s_t,
314
+ size: group.attrs.size ? +group.attrs.size : getBinaryNodeChildren(group, 'participant').length,
315
+ creation: +group.attrs.creation,
316
+ owner: group.attrs.creator ? jidNormalizedUser(group.attrs.creator) : undefined,
317
+ ownerPn: group.attrs.creator_pn ? jidNormalizedUser(group.attrs.creator_pn) : undefined,
318
+ ownerUsername: group.attrs.creator_username || undefined,
319
+ owner_country_code: group.attrs.creator_country_code,
308
320
  desc,
309
321
  descId,
310
322
  descOwner,
311
- descOwnerLid,
323
+ descOwnerPn,
324
+ descOwnerUsername,
312
325
  descTime,
313
- linkedParent: ((_b = (0, WABinary_1.getBinaryNodeChild)(group, 'linked_parent')) === null || _b === void 0 ? void 0 : _b.attrs.jid) || undefined,
314
- restrict: !!(0, WABinary_1.getBinaryNodeChild)(group, 'locked'),
315
- announce: !!(0, WABinary_1.getBinaryNodeChild)(group, 'announcement'),
316
- isCommunity: !!(0, WABinary_1.getBinaryNodeChild)(group, 'parent'),
317
- isCommunityAnnounce: !!(0, WABinary_1.getBinaryNodeChild)(group, 'default_sub_group'),
318
- joinApprovalMode: !!(0, WABinary_1.getBinaryNodeChild)(group, 'membership_approval_mode'),
326
+ linkedParent: getBinaryNodeChild(group, 'linked_parent')?.attrs.jid || undefined,
327
+ restrict: !!getBinaryNodeChild(group, 'locked'),
328
+ announce: !!getBinaryNodeChild(group, 'announcement'),
329
+ isCommunity: !!getBinaryNodeChild(group, 'parent'),
330
+ isCommunityAnnounce: !!getBinaryNodeChild(group, 'default_sub_group'),
331
+ joinApprovalMode: !!getBinaryNodeChild(group, 'membership_approval_mode'),
319
332
  memberAddMode,
320
- participants: (0, WABinary_1.getBinaryNodeChildren)(group, 'participant').map(({ attrs }) => {
333
+ participants: getBinaryNodeChildren(group, 'participant').map(({ attrs }) => {
334
+ // TODO: Store LID MAPPINGS
321
335
  return {
322
336
  id: attrs.jid,
323
- jid: attrs.phone_number || attrs.jid,
324
- lid: attrs.lid || attrs.jid,
325
- admin: (attrs.type || null),
337
+ phoneNumber: isLidUser(attrs.jid) && isPnUser(attrs.phone_number) ? attrs.phone_number : undefined,
338
+ lid: isPnUser(attrs.jid) && isLidUser(attrs.lid) ? attrs.lid : undefined,
339
+ username: attrs.participant_username || attrs.username || undefined,
340
+ admin: (attrs.type || null)
326
341
  };
327
342
  }),
328
343
  ephemeralDuration: eph ? +eph : undefined
329
344
  };
330
345
  return metadata;
331
346
  };
332
- exports.extractGroupMetadata = extractGroupMetadata;
347
+ //# sourceMappingURL=groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/Socket/groups.ts"],"names":[],"mappings":"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"}