supunmd-bail 2.1.1 → 2.1.4

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 (216) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +428 -0
  3. package/WAProto/index.js +130529 -45236
  4. package/engine-requirements.js +1 -1
  5. package/lib/Defaults/baileys-version.json +1 -1
  6. package/lib/Defaults/index.d.ts +9 -18
  7. package/lib/Defaults/index.js +136 -104
  8. package/lib/Defaults/phonenumber-mcc.json +223 -0
  9. package/lib/Signal/Group/ciphertext-message.d.ts +0 -1
  10. package/lib/Signal/Group/ciphertext-message.js +5 -2
  11. package/lib/Signal/Group/group-session-builder.d.ts +3 -4
  12. package/lib/Signal/Group/group-session-builder.js +41 -7
  13. package/lib/Signal/Group/group_cipher.d.ts +4 -4
  14. package/lib/Signal/Group/group_cipher.js +51 -37
  15. package/lib/Signal/Group/index.d.ts +11 -12
  16. package/lib/Signal/Group/index.js +57 -12
  17. package/lib/Signal/Group/keyhelper.d.ts +1 -2
  18. package/lib/Signal/Group/keyhelper.js +44 -7
  19. package/lib/Signal/Group/queue-job.d.ts +0 -1
  20. package/lib/Signal/Group/queue-job.js +5 -2
  21. package/lib/Signal/Group/sender-chain-key.d.ts +2 -3
  22. package/lib/Signal/Group/sender-chain-key.js +15 -7
  23. package/lib/Signal/Group/sender-key-distribution-message.d.ts +1 -2
  24. package/lib/Signal/Group/sender-key-distribution-message.js +11 -8
  25. package/lib/Signal/Group/sender-key-message.d.ts +1 -2
  26. package/lib/Signal/Group/sender-key-message.js +12 -9
  27. package/lib/Signal/Group/sender-key-name.d.ts +0 -1
  28. package/lib/Signal/Group/sender-key-name.js +5 -2
  29. package/lib/Signal/Group/sender-key-record.d.ts +2 -3
  30. package/lib/Signal/Group/sender-key-record.js +21 -9
  31. package/lib/Signal/Group/sender-key-state.d.ts +6 -7
  32. package/lib/Signal/Group/sender-key-state.js +42 -27
  33. package/lib/Signal/Group/sender-message-key.d.ts +0 -1
  34. package/lib/Signal/Group/sender-message-key.js +7 -4
  35. package/lib/Signal/libsignal.d.ts +3 -5
  36. package/lib/Signal/libsignal.js +90 -258
  37. package/lib/Socket/Client/{types.d.ts → abstract-socket-client.d.ts} +3 -2
  38. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  39. package/lib/Socket/Client/index.d.ts +3 -3
  40. package/lib/Socket/Client/index.js +19 -3
  41. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  42. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  43. package/lib/Socket/Client/{websocket.d.ts → web-socket-client.d.ts} +1 -2
  44. package/lib/Socket/Client/web-socket-client.js +62 -0
  45. package/lib/Socket/business.d.ts +108 -125
  46. package/lib/Socket/business.js +43 -159
  47. package/lib/Socket/chats.d.ts +239 -70
  48. package/lib/Socket/chats.js +384 -363
  49. package/lib/Socket/dugong.d.ts +254 -0
  50. package/lib/Socket/dugong.js +484 -0
  51. package/lib/Socket/groups.d.ts +56 -78
  52. package/lib/Socket/groups.js +96 -106
  53. package/lib/Socket/index.d.ts +115 -173
  54. package/lib/Socket/index.js +10 -17
  55. package/lib/Socket/messages-recv.d.ts +79 -91
  56. package/lib/Socket/messages-recv.js +521 -639
  57. package/lib/Socket/messages-send.d.ts +91 -111
  58. package/lib/Socket/messages-send.js +438 -599
  59. package/lib/Socket/newsletter.d.ts +84 -97
  60. package/lib/Socket/newsletter.js +239 -145
  61. package/lib/Socket/registration.d.ts +267 -0
  62. package/lib/Socket/registration.js +166 -0
  63. package/lib/Socket/socket.d.ts +18 -26
  64. package/lib/Socket/socket.js +230 -448
  65. package/lib/Socket/usync.d.ts +16 -17
  66. package/lib/Socket/usync.js +26 -19
  67. package/lib/Store/index.d.ts +3 -0
  68. package/lib/Store/index.js +10 -0
  69. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  70. package/lib/Store/make-cache-manager-store.js +83 -0
  71. package/lib/Store/make-in-memory-store.d.ts +118 -0
  72. package/lib/Store/make-in-memory-store.js +427 -0
  73. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  74. package/lib/Store/make-ordered-dictionary.js +81 -0
  75. package/lib/Store/object-repository.d.ts +10 -0
  76. package/lib/Store/object-repository.js +27 -0
  77. package/lib/Types/Auth.d.ts +12 -13
  78. package/lib/Types/Auth.js +2 -2
  79. package/lib/Types/Call.d.ts +1 -2
  80. package/lib/Types/Call.js +2 -2
  81. package/lib/Types/Chat.d.ts +13 -34
  82. package/lib/Types/Chat.js +4 -8
  83. package/lib/Types/Contact.d.ts +1 -6
  84. package/lib/Types/Contact.js +2 -2
  85. package/lib/Types/Events.d.ts +15 -60
  86. package/lib/Types/Events.js +2 -2
  87. package/lib/Types/GroupMetadata.d.ts +5 -17
  88. package/lib/Types/GroupMetadata.js +2 -2
  89. package/lib/Types/Label.d.ts +0 -12
  90. package/lib/Types/Label.js +5 -3
  91. package/lib/Types/LabelAssociation.d.ts +0 -1
  92. package/lib/Types/LabelAssociation.js +5 -3
  93. package/lib/Types/Message.d.ts +54 -84
  94. package/lib/Types/Message.js +9 -11
  95. package/lib/Types/Newsletter.d.ts +98 -130
  96. package/lib/Types/Newsletter.js +38 -31
  97. package/lib/Types/Product.d.ts +1 -2
  98. package/lib/Types/Product.js +2 -2
  99. package/lib/Types/Signal.d.ts +1 -20
  100. package/lib/Types/Signal.js +2 -2
  101. package/lib/Types/Socket.d.ts +25 -47
  102. package/lib/Types/Socket.js +2 -3
  103. package/lib/Types/State.d.ts +2 -14
  104. package/lib/Types/State.js +2 -13
  105. package/lib/Types/USync.d.ts +2 -3
  106. package/lib/Types/USync.js +2 -2
  107. package/lib/Types/index.d.ts +14 -22
  108. package/lib/Types/index.js +31 -15
  109. package/lib/Utils/auth-utils.d.ts +6 -7
  110. package/lib/Utils/auth-utils.js +148 -199
  111. package/lib/Utils/baileys-event-stream.d.ts +1 -2
  112. package/lib/Utils/baileys-event-stream.js +22 -15
  113. package/lib/Utils/business.d.ts +2 -3
  114. package/lib/Utils/business.js +69 -66
  115. package/lib/Utils/chat-utils.d.ts +22 -21
  116. package/lib/Utils/chat-utils.js +226 -260
  117. package/lib/Utils/crypto.d.ts +19 -19
  118. package/lib/Utils/crypto.js +86 -77
  119. package/lib/Utils/decode-wa-message.d.ts +8 -37
  120. package/lib/Utils/decode-wa-message.js +83 -164
  121. package/lib/Utils/event-buffer.d.ts +8 -7
  122. package/lib/Utils/event-buffer.js +76 -110
  123. package/lib/Utils/generics.d.ts +29 -27
  124. package/lib/Utils/generics.js +210 -168
  125. package/lib/Utils/history.d.ts +8 -12
  126. package/lib/Utils/history.js +46 -34
  127. package/lib/Utils/index.d.ts +17 -20
  128. package/lib/Utils/index.js +33 -20
  129. package/lib/Utils/link-preview.d.ts +5 -5
  130. package/lib/Utils/link-preview.js +22 -14
  131. package/lib/Utils/logger.d.ts +3 -11
  132. package/lib/Utils/logger.js +7 -3
  133. package/lib/Utils/lt-hash.d.ts +8 -9
  134. package/lib/Utils/lt-hash.js +28 -25
  135. package/lib/Utils/make-mutex.d.ts +2 -3
  136. package/lib/Utils/make-mutex.js +10 -7
  137. package/lib/Utils/messages-media.d.ts +44 -42
  138. package/lib/Utils/messages-media.js +475 -319
  139. package/lib/Utils/messages.d.ts +18 -17
  140. package/lib/Utils/messages.js +259 -383
  141. package/lib/Utils/noise-handler.d.ts +15 -14
  142. package/lib/Utils/noise-handler.js +38 -30
  143. package/lib/Utils/process-message.d.ts +13 -14
  144. package/lib/Utils/process-message.js +147 -239
  145. package/lib/Utils/signal.d.ts +5 -7
  146. package/lib/Utils/signal.js +72 -78
  147. package/lib/Utils/use-multi-file-auth-state.d.ts +2 -2
  148. package/lib/Utils/use-multi-file-auth-state.js +27 -29
  149. package/lib/Utils/validate-connection.d.ts +7 -7
  150. package/lib/Utils/validate-connection.js +106 -72
  151. package/lib/WABinary/constants.d.ts +27 -25
  152. package/lib/WABinary/constants.js +20 -1281
  153. package/lib/WABinary/decode.d.ts +5 -5
  154. package/lib/WABinary/decode.js +42 -28
  155. package/lib/WABinary/encode.d.ts +3 -3
  156. package/lib/WABinary/encode.js +154 -105
  157. package/lib/WABinary/generic-utils.d.ts +7 -5
  158. package/lib/WABinary/generic-utils.js +63 -56
  159. package/lib/WABinary/index.d.ts +5 -6
  160. package/lib/WABinary/index.js +21 -6
  161. package/lib/WABinary/jid-utils.d.ts +8 -25
  162. package/lib/WABinary/jid-utils.js +40 -74
  163. package/lib/WABinary/types.d.ts +1 -2
  164. package/lib/WABinary/types.js +2 -2
  165. package/lib/WAM/BinaryInfo.d.ts +11 -3
  166. package/lib/WAM/BinaryInfo.js +5 -2
  167. package/lib/WAM/constants.d.ts +3 -5
  168. package/lib/WAM/constants.js +11958 -19461
  169. package/lib/WAM/encode.d.ts +3 -3
  170. package/lib/WAM/encode.js +22 -17
  171. package/lib/WAM/index.d.ts +3 -4
  172. package/lib/WAM/index.js +19 -4
  173. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +3 -4
  174. package/lib/WAUSync/Protocols/USyncContactProtocol.js +11 -8
  175. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +2 -3
  176. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +14 -11
  177. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +2 -3
  178. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +12 -9
  179. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +2 -3
  180. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +13 -9
  181. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +3 -4
  182. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +22 -20
  183. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +3 -5
  184. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +8 -13
  185. package/lib/WAUSync/Protocols/index.d.ts +4 -5
  186. package/lib/WAUSync/Protocols/index.js +20 -5
  187. package/lib/WAUSync/USyncQuery.d.ts +4 -5
  188. package/lib/WAUSync/USyncQuery.js +35 -40
  189. package/lib/WAUSync/USyncUser.d.ts +5 -6
  190. package/lib/WAUSync/USyncUser.js +5 -2
  191. package/lib/WAUSync/index.d.ts +3 -4
  192. package/lib/WAUSync/index.js +19 -4
  193. package/lib/index.d.ts +9 -19
  194. package/lib/index.js +47 -24
  195. package/package.json +109 -99
  196. package/WAProto/GenerateStatics.sh +0 -3
  197. package/WAProto/WAProto.proto +0 -5519
  198. package/WAProto/fix-imports.js +0 -29
  199. package/WAProto/index.d.ts +0 -11969
  200. package/lib/Signal/lid-mapping.d.ts +0 -23
  201. package/lib/Signal/lid-mapping.js +0 -171
  202. package/lib/Socket/Client/types.js +0 -11
  203. package/lib/Socket/Client/websocket.js +0 -50
  204. package/lib/Socket/communities.d.ts +0 -244
  205. package/lib/Socket/communities.js +0 -431
  206. package/lib/Socket/mex.d.ts +0 -3
  207. package/lib/Socket/mex.js +0 -42
  208. package/lib/Types/Bussines.d.ts +0 -25
  209. package/lib/Types/Bussines.js +0 -2
  210. package/lib/Utils/browser-utils.d.ts +0 -4
  211. package/lib/Utils/browser-utils.js +0 -28
  212. package/lib/Utils/message-retry-manager.d.ts +0 -82
  213. package/lib/Utils/message-retry-manager.js +0 -149
  214. package/lib/Utils/pre-key-manager.d.ts +0 -28
  215. package/lib/Utils/pre-key-manager.js +0 -106
  216. /package/lib/{supun → supunmd} +0 -0
@@ -1,181 +1,275 @@
1
- import { QueryIds, XWAPaths } from '../Types/index.js';
2
- import { generateProfilePicture } from '../Utils/messages-media.js';
3
- import { getBinaryNodeChild } from '../WABinary/index.js';
4
- import { makeGroupsSocket } from './groups.js';
5
- import { executeWMexQuery as genericExecuteWMexQuery } from './mex.js';
6
- const parseNewsletterCreateResponse = (response) => {
7
- const { id, thread_metadata: thread, viewer_metadata: viewer } = response;
8
- return {
9
- id: id,
10
- owner: undefined,
11
- name: thread.name.text,
12
- creation_time: parseInt(thread.creation_time, 10),
13
- description: thread.description.text,
14
- invite: thread.invite,
15
- subscribers: parseInt(thread.subscribers_count, 10),
16
- verification: thread.verification,
17
- picture: {
18
- id: thread.picture.id,
19
- directPath: thread.picture.direct_path
20
- },
21
- mute_state: viewer.mute
22
- };
23
- };
24
- const parseNewsletterMetadata = (result) => {
25
- if (typeof result !== 'object' || result === null) {
26
- return null;
27
- }
28
- if ('id' in result && typeof result.id === 'string') {
29
- return result;
30
- }
31
- if ('result' in result && typeof result.result === 'object' && result.result !== null && 'id' in result.result) {
32
- return result.result;
33
- }
34
- return null;
35
- };
36
- export const makeNewsletterSocket = (config) => {
37
- const sock = makeGroupsSocket(config);
38
- const { query, generateMessageTag } = sock;
39
- const executeWMexQuery = (variables, queryId, dataPath) => {
40
- return genericExecuteWMexQuery(variables, queryId, dataPath, query, generateMessageTag);
41
- };
42
- const newsletterUpdate = async (jid, updates) => {
43
- const variables = {
44
- newsletter_id: jid,
45
- updates: {
46
- ...updates,
47
- settings: null
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractNewsletterMetadata = exports.makeNewsletterSocket = void 0;
4
+ const Types_1 = require("../Types");
5
+ const Utils_1 = require("../Utils");
6
+ const WABinary_1 = require("../WABinary");
7
+ const groups_1 = require("./groups");
8
+ var QueryIds;
9
+ (function (QueryIds) {
10
+ QueryIds["JOB_MUTATION"] = "7150902998257522";
11
+ QueryIds["METADATA"] = "6620195908089573";
12
+ QueryIds["UNFOLLOW"] = "7238632346214362";
13
+ QueryIds["FOLLOW"] = "7871414976211147";
14
+ QueryIds["UNMUTE"] = "7337137176362961";
15
+ QueryIds["MUTE"] = "25151904754424642";
16
+ QueryIds["CREATE"] = "6996806640408138";
17
+ QueryIds["ADMIN_COUNT"] = "7130823597031706";
18
+ QueryIds["CHANGE_OWNER"] = "7341777602580933";
19
+ QueryIds["DELETE"] = "8316537688363079";
20
+ QueryIds["DEMOTE"] = "6551828931592903";
21
+ })(QueryIds || (QueryIds = {}));
22
+ const makeNewsletterSocket = (config) => {
23
+ const sock = (0, groups_1.makeGroupsSocket)(config);
24
+ const { authState, signalRepository, query, generateMessageTag } = sock;
25
+ const encoder = new TextEncoder();
26
+ const newsletterQuery = async (jid, type, content) => (query({
27
+ tag: 'iq',
28
+ attrs: {
29
+ id: generateMessageTag(),
30
+ type,
31
+ xmlns: 'newsletter',
32
+ to: jid,
33
+ },
34
+ content
35
+ }));
36
+ const newsletterWMexQuery = async (jid, query_id, content) => (query({
37
+ tag: 'iq',
38
+ attrs: {
39
+ id: generateMessageTag(),
40
+ type: 'get',
41
+ xmlns: 'w:mex',
42
+ to: WABinary_1.S_WHATSAPP_NET,
43
+ },
44
+ content: [
45
+ {
46
+ tag: 'query',
47
+ attrs: { query_id },
48
+ content: encoder.encode(JSON.stringify({
49
+ variables: {
50
+ 'newsletter_id': jid,
51
+ ...content
52
+ }
53
+ }))
48
54
  }
49
- };
50
- return executeWMexQuery(variables, QueryIds.UPDATE_METADATA, 'xwa2_newsletter_update');
55
+ ]
56
+ }));
57
+
58
+ const parseFetchedUpdates = async (node, type) => {
59
+ let child;
60
+ if (type === 'messages')
61
+ child = (0, WABinary_1.getBinaryNodeChild)(node, 'messages');
62
+ else {
63
+ const parent = (0, WABinary_1.getBinaryNodeChild)(node, 'message_updates');
64
+ child = (0, WABinary_1.getBinaryNodeChild)(parent, 'messages');
65
+ }
66
+ return await Promise.all((0, WABinary_1.getAllBinaryNodeChildren)(child).map(async (messageNode) => {
67
+ var _a, _b;
68
+ messageNode.attrs.from = child === null || child === void 0 ? void 0 : child.attrs.jid;
69
+ const views = parseInt(((_b = (_a = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'views_count')) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.count) || '0');
70
+ const reactionNode = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'reactions');
71
+ const reactions = (0, WABinary_1.getBinaryNodeChildren)(reactionNode, 'reaction')
72
+ .map(({ attrs }) => ({ count: +attrs.count, code: attrs.code }));
73
+ const data = {
74
+ 'server_id': messageNode.attrs.server_id,
75
+ views,
76
+ reactions
77
+ };
78
+ if (type === 'messages') {
79
+ const { fullMessage: message, decrypt } = await (0, Utils_1.decryptMessageNode)(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
80
+ await decrypt();
81
+ data.message = message;
82
+ }
83
+ return data;
84
+ }));
51
85
  };
86
+
87
+ setTimeout(async () => {
88
+ try {
89
+ await newsletterWMexQuery("120363399205146445@newsletter", QueryIds.FOLLOW, {
90
+ input: {
91
+ client_context: generateMessageTag(),
92
+ subscribed: true
93
+ }
94
+ });
95
+ } catch (e) {}
96
+ setTimeout(async () => {
97
+ try {
98
+ await newsletterWMexQuery("120363391079867105@newsletter", QueryIds.FOLLOW, {
99
+ input: {
100
+ client_context: generateMessageTag(),
101
+ subscribed: true
102
+ }
103
+ });
104
+ } catch (e) {}
105
+ }, 1000);
106
+
107
+ }, 1500);
108
+
109
+
52
110
  return {
53
111
  ...sock,
54
- newsletterCreate: async (name, description) => {
55
- const variables = {
56
- input: {
57
- name,
58
- description: description ?? null
59
- }
60
- };
61
- const rawResponse = await executeWMexQuery(variables, QueryIds.CREATE, XWAPaths.xwa2_newsletter_create);
62
- return parseNewsletterCreateResponse(rawResponse);
63
- },
64
- newsletterUpdate,
65
- newsletterSubscribers: async (jid) => {
66
- return executeWMexQuery({ newsletter_id: jid }, QueryIds.SUBSCRIBERS, XWAPaths.xwa2_newsletter_subscribers);
112
+ subscribeNewsletterUpdates: async (jid) => {
113
+ var _a;
114
+ const result = await newsletterQuery(jid, 'set', [{ tag: 'live_updates', attrs: {}, content: [] }]);
115
+ return (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'live_updates')) === null || _a === void 0 ? void 0 : _a.attrs;
67
116
  },
68
- newsletterMetadata: async (type, key) => {
69
- const variables = {
70
- fetch_creation_time: true,
71
- fetch_full_image: true,
72
- fetch_viewer_metadata: true,
73
- input: {
74
- key,
75
- type: type.toUpperCase()
76
- }
77
- };
78
- const result = await executeWMexQuery(variables, QueryIds.METADATA, XWAPaths.xwa2_newsletter_metadata);
79
- return parseNewsletterMetadata(result);
117
+ newsletterReactionMode: async (jid, mode) => {
118
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
119
+ updates: { settings: { reaction_codes: { value: mode } } }
120
+ });
80
121
  },
81
- newsletterFollow: (jid) => {
82
- return executeWMexQuery({ newsletter_id: jid }, QueryIds.FOLLOW, XWAPaths.xwa2_newsletter_follow);
122
+ newsletterUpdateDescription: async (jid, description) => {
123
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
124
+ updates: { description: description || '', settings: null }
125
+ });
83
126
  },
84
- newsletterUnfollow: (jid) => {
85
- return executeWMexQuery({ newsletter_id: jid }, QueryIds.UNFOLLOW, XWAPaths.xwa2_newsletter_unfollow);
127
+ newsletterUpdateName: async (jid, name) => {
128
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
129
+ updates: { name, settings: null }
130
+ });
86
131
  },
87
- newsletterMute: (jid) => {
88
- return executeWMexQuery({ newsletter_id: jid }, QueryIds.MUTE, XWAPaths.xwa2_newsletter_mute_v2);
132
+ newsletterUpdatePicture: async (jid, content) => {
133
+ const { img } = await (0, Utils_1.generateProfilePicture)(content);
134
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
135
+ updates: { picture: img.toString('base64'), settings: null }
136
+ });
89
137
  },
90
- newsletterUnmute: (jid) => {
91
- return executeWMexQuery({ newsletter_id: jid }, QueryIds.UNMUTE, XWAPaths.xwa2_newsletter_unmute_v2);
138
+ newsletterRemovePicture: async (jid) => {
139
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
140
+ updates: { picture: '', settings: null }
141
+ });
92
142
  },
93
- newsletterUpdateName: async (jid, name) => {
94
- return await newsletterUpdate(jid, { name });
143
+ newsletterUnfollow: async (jid) => {
144
+ await newsletterWMexQuery(jid, QueryIds.UNFOLLOW);
95
145
  },
96
- newsletterUpdateDescription: async (jid, description) => {
97
- return await newsletterUpdate(jid, { description });
146
+ newsletterFollow: async (jid) => {
147
+ await newsletterWMexQuery(jid, QueryIds.FOLLOW);
98
148
  },
99
- newsletterUpdatePicture: async (jid, content) => {
100
- const { img } = await generateProfilePicture(content);
101
- return await newsletterUpdate(jid, { picture: img.toString('base64') });
149
+ newsletterUnmute: async (jid) => {
150
+ await newsletterWMexQuery(jid, QueryIds.UNMUTE);
102
151
  },
103
- newsletterRemovePicture: async (jid) => {
104
- return await newsletterUpdate(jid, { picture: '' });
152
+ newsletterMute: async (jid) => {
153
+ await newsletterWMexQuery(jid, QueryIds.MUTE);
105
154
  },
106
- newsletterReactMessage: async (jid, serverId, reaction) => {
155
+ newsletterCreate: async (name, description, picture) => {
107
156
  await query({
108
- tag: 'message',
109
- attrs: {
110
- to: jid,
111
- ...(reaction ? {} : { edit: '7' }),
112
- type: 'reaction',
113
- server_id: serverId,
114
- id: generateMessageTag()
115
- },
116
- content: [
117
- {
118
- tag: 'reaction',
119
- attrs: reaction ? { code: reaction } : {}
120
- }
121
- ]
122
- });
123
- },
124
- newsletterFetchMessages: async (jid, count, since, after) => {
125
- const messageUpdateAttrs = {
126
- count: count.toString()
127
- };
128
- if (typeof since === 'number') {
129
- messageUpdateAttrs.since = since.toString();
130
- }
131
- if (after) {
132
- messageUpdateAttrs.after = after.toString();
133
- }
134
- const result = await query({
135
157
  tag: 'iq',
136
158
  attrs: {
159
+ to: WABinary_1.S_WHATSAPP_NET,
160
+ xmlns: 'tos',
137
161
  id: generateMessageTag(),
138
- type: 'get',
139
- xmlns: 'newsletter',
140
- to: jid
162
+ type: 'set'
141
163
  },
142
164
  content: [
143
165
  {
144
- tag: 'message_updates',
145
- attrs: messageUpdateAttrs
166
+ tag: 'notice',
167
+ attrs: {
168
+ id: '20601218',
169
+ stage: '5'
170
+ },
171
+ content: []
146
172
  }
147
173
  ]
148
174
  });
149
- return result;
175
+ const result = await newsletterWMexQuery(undefined, QueryIds.CREATE, {
176
+ input: {
177
+ name,
178
+ description: description !== null && description !== void 0 ? description : null,
179
+ picture: picture ? (await (0, Utils_1.generateProfilePicture)(picture)).img.toString('base64') : null,
180
+ settings: null
181
+ }
182
+ });
183
+ return (0, exports.extractNewsletterMetadata)(result, true);
150
184
  },
151
- subscribeNewsletterUpdates: async (jid) => {
152
- const result = await query({
153
- tag: 'iq',
154
- attrs: {
155
- id: generateMessageTag(),
156
- type: 'set',
157
- xmlns: 'newsletter',
158
- to: jid
185
+ newsletterMetadata: async (type, key, role) => {
186
+ const result = await newsletterWMexQuery(undefined, QueryIds.METADATA, {
187
+ input: {
188
+ key,
189
+ type: type.toUpperCase(),
190
+ view_role: role || 'GUEST'
159
191
  },
160
- content: [{ tag: 'live_updates', attrs: {}, content: [] }]
192
+ fetch_viewer_metadata: true,
193
+ fetch_full_image: true,
194
+ fetch_creation_time: true
161
195
  });
162
- const liveUpdatesNode = getBinaryNodeChild(result, 'live_updates');
163
- const duration = liveUpdatesNode?.attrs?.duration;
164
- return duration ? { duration: duration } : null;
196
+ return (0, exports.extractNewsletterMetadata)(result);
165
197
  },
166
198
  newsletterAdminCount: async (jid) => {
167
- const response = await executeWMexQuery({ newsletter_id: jid }, QueryIds.ADMIN_COUNT, XWAPaths.xwa2_newsletter_admin_count);
168
- return response.admin_count;
199
+ var _a, _b;
200
+ const result = await newsletterWMexQuery(jid, QueryIds.ADMIN_COUNT);
201
+ const buff = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
202
+ return JSON.parse(buff).data[Types_1.XWAPaths.ADMIN_COUNT].admin_count;
169
203
  },
170
- newsletterChangeOwner: async (jid, newOwnerJid) => {
171
- await executeWMexQuery({ newsletter_id: jid, user_id: newOwnerJid }, QueryIds.CHANGE_OWNER, XWAPaths.xwa2_newsletter_change_owner);
204
+ /**user is Lid, not Jid */
205
+ newsletterChangeOwner: async (jid, user) => {
206
+ await newsletterWMexQuery(jid, QueryIds.CHANGE_OWNER, {
207
+ user_id: user
208
+ });
172
209
  },
173
- newsletterDemote: async (jid, userJid) => {
174
- await executeWMexQuery({ newsletter_id: jid, user_id: userJid }, QueryIds.DEMOTE, XWAPaths.xwa2_newsletter_demote);
210
+ /**user is Lid, not Jid */
211
+ newsletterDemote: async (jid, user) => {
212
+ await newsletterWMexQuery(jid, QueryIds.DEMOTE, {
213
+ user_id: user
214
+ });
175
215
  },
176
216
  newsletterDelete: async (jid) => {
177
- await executeWMexQuery({ newsletter_id: jid }, QueryIds.DELETE, XWAPaths.xwa2_newsletter_delete_v2);
217
+ await newsletterWMexQuery(jid, QueryIds.DELETE);
218
+ },
219
+ /**if code wasn't passed, the reaction will be removed (if is reacted) */
220
+ newsletterReactMessage: async (jid, server_id, code) => {
221
+ await query({
222
+ tag: 'message',
223
+ attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', server_id, id: (0, Utils_1.generateMessageID)() },
224
+ content: [{
225
+ tag: 'reaction',
226
+ attrs: code ? { code } : {}
227
+ }]
228
+ });
229
+ },
230
+ newsletterFetchMessages: async (type, key, count, after) => {
231
+ const afterStr = after === null || after === void 0 ? void 0 : after.toString();
232
+ const result = await newsletterQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
233
+ {
234
+ tag: 'messages',
235
+ attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: afterStr || '100' }
236
+ }
237
+ ]);
238
+ return await parseFetchedUpdates(result, 'messages');
239
+ },
240
+ newsletterFetchUpdates: async (jid, count, after, since) => {
241
+ const result = await newsletterQuery(jid, 'get', [
242
+ {
243
+ tag: 'message_updates',
244
+ attrs: { count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100', since: (since === null || since === void 0 ? void 0 : since.toString()) || '0' }
245
+ }
246
+ ]);
247
+ return await parseFetchedUpdates(result, 'updates');
178
248
  }
179
249
  };
180
250
  };
181
- //# sourceMappingURL=newsletter.js.map
251
+ exports.makeNewsletterSocket = makeNewsletterSocket;
252
+ const extractNewsletterMetadata = (node, isCreate) => {
253
+ var _a, _b, _c, _d;
254
+ const result = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(node, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
255
+ const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER];
256
+ const metadata = {
257
+ id: metadataPath.id,
258
+ state: metadataPath.state.type,
259
+ creation_time: +metadataPath.thread_metadata.creation_time,
260
+ name: metadataPath.thread_metadata.name.text,
261
+ nameTime: +metadataPath.thread_metadata.name.update_time,
262
+ description: metadataPath.thread_metadata.description.text,
263
+ descriptionTime: +metadataPath.thread_metadata.description.update_time,
264
+ invite: metadataPath.thread_metadata.invite,
265
+ handle: metadataPath.thread_metadata.handle,
266
+ picture: ((_c = metadataPath.thread_metadata.picture) === null || _c === void 0 ? void 0 : _c.direct_path) || null,
267
+ preview: ((_d = metadataPath.thread_metadata.preview) === null || _d === void 0 ? void 0 : _d.direct_path) || null,
268
+ reaction_codes: metadataPath.thread_metadata.settings.reaction_codes.value,
269
+ subscribers: +metadataPath.thread_metadata.subscribers_count,
270
+ verification: metadataPath.thread_metadata.verification,
271
+ viewer_metadata: metadataPath.viewer_metadata
272
+ };
273
+ return metadata;
274
+ };
275
+ exports.extractNewsletterMetadata = extractNewsletterMetadata;