alipclutch-baileys 8.3.0 → 8.4.1

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 (120) hide show
  1. package/LICENSE +3 -1
  2. package/README.md +10 -9
  3. package/WAProto/GenerateStatics.sh +4 -0
  4. package/WAProto/WAProto.proto +4775 -0
  5. package/WAProto/index.d.ts +55057 -0
  6. package/WAProto/index.js +56887 -17535
  7. package/WAProto/index.ts.ts +53473 -0
  8. package/lib/Defaults/baileys-version.json +2 -2
  9. package/lib/Defaults/index.d.ts +16 -7
  10. package/lib/Defaults/index.js +90 -119
  11. package/lib/Socket/Client/index.d.ts +2 -3
  12. package/lib/Socket/Client/index.js +2 -3
  13. package/lib/Socket/Client/types.d.ts +0 -1
  14. package/lib/Socket/Client/types.js +0 -1
  15. package/lib/Socket/Client/websocket.d.ts +0 -1
  16. package/lib/Socket/Client/websocket.js +0 -1
  17. package/lib/Socket/business.d.ts +59 -58
  18. package/lib/Socket/chats.d.ts +45 -230
  19. package/lib/Socket/chats.js +139 -238
  20. package/lib/Socket/groups.d.ts +41 -32
  21. package/lib/Socket/groups.js +38 -23
  22. package/lib/Socket/index.d.ts +63 -64
  23. package/lib/Socket/index.js +2 -3
  24. package/lib/Socket/messages-recv.js +9 -65
  25. package/lib/Socket/messages-send.d.ts +49 -47
  26. package/lib/Socket/messages-send.js +584 -395
  27. package/lib/Socket/newsletter.d.ts +39 -37
  28. package/lib/Socket/newsletter.js +88 -123
  29. package/lib/Socket/setup.js +433 -0
  30. package/lib/Socket/{dugong.d.ts → setup.ts} +17 -52
  31. package/lib/Socket/socket.d.ts +10 -10
  32. package/lib/Socket/socket.js +62 -38
  33. package/lib/Socket/usync.d.ts +3 -4
  34. package/lib/Socket/usync.js +0 -1
  35. package/lib/Store/index.d.ts +1 -2
  36. package/lib/Store/index.js +1 -3
  37. package/lib/Store/make-in-memory-store.d.ts +24 -24
  38. package/lib/Store/make-in-memory-store.js +26 -14
  39. package/lib/Store/make-ordered-dictionary.d.ts +1 -1
  40. package/lib/Store/make-ordered-dictionary.js +2 -2
  41. package/lib/Types/Auth.d.ts +0 -7
  42. package/lib/Types/Call.d.ts +1 -1
  43. package/lib/Types/Chat.d.ts +14 -7
  44. package/lib/Types/Contact.d.ts +5 -1
  45. package/lib/Types/Events.d.ts +44 -2
  46. package/lib/Types/GroupMetadata.d.ts +11 -2
  47. package/lib/Types/Label.js +1 -1
  48. package/lib/Types/LabelAssociation.js +1 -1
  49. package/lib/Types/Message.d.ts +148 -21
  50. package/lib/Types/Message.js +0 -2
  51. package/lib/Types/Newsletter.d.ts +73 -97
  52. package/lib/Types/Newsletter.js +18 -38
  53. package/lib/Types/Socket.d.ts +17 -9
  54. package/lib/Types/index.d.ts +8 -1
  55. package/lib/Types/index.js +2 -2
  56. package/lib/Utils/auth-utils.d.ts +3 -3
  57. package/lib/Utils/auth-utils.js +6 -13
  58. package/lib/Utils/business.js +2 -2
  59. package/lib/Utils/chat-utils.d.ts +15 -16
  60. package/lib/Utils/chat-utils.js +36 -35
  61. package/lib/Utils/crypto.d.ts +15 -16
  62. package/lib/Utils/crypto.js +71 -29
  63. package/lib/Utils/decode-wa-message.d.ts +22 -6
  64. package/lib/Utils/decode-wa-message.js +65 -56
  65. package/lib/Utils/event-buffer.d.ts +2 -2
  66. package/lib/Utils/event-buffer.js +11 -7
  67. package/lib/Utils/generics.d.ts +17 -20
  68. package/lib/Utils/generics.js +95 -75
  69. package/lib/Utils/history.d.ts +4 -0
  70. package/lib/Utils/history.js +4 -6
  71. package/lib/Utils/link-preview.d.ts +2 -2
  72. package/lib/Utils/link-preview.js +34 -1
  73. package/lib/Utils/logger.d.ts +10 -3
  74. package/lib/Utils/lt-hash.d.ts +2 -2
  75. package/lib/Utils/lt-hash.js +6 -6
  76. package/lib/Utils/make-mutex.d.ts +2 -2
  77. package/lib/Utils/messages-media.d.ts +28 -24
  78. package/lib/Utils/messages-media.js +272 -111
  79. package/lib/Utils/messages.d.ts +13 -10
  80. package/lib/Utils/messages.js +323 -50
  81. package/lib/Utils/noise-handler.d.ts +10 -12
  82. package/lib/Utils/noise-handler.js +18 -23
  83. package/lib/Utils/process-message.d.ts +5 -4
  84. package/lib/Utils/process-message.js +108 -25
  85. package/lib/Utils/signal.d.ts +2 -1
  86. package/lib/Utils/signal.js +26 -26
  87. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -1
  88. package/lib/Utils/use-multi-file-auth-state.js +51 -6
  89. package/lib/Utils/validate-connection.d.ts +3 -4
  90. package/lib/Utils/validate-connection.js +90 -66
  91. package/lib/WABinary/constants.d.ts +24 -27
  92. package/lib/WABinary/constants.js +1276 -13
  93. package/lib/WABinary/decode.d.ts +3 -4
  94. package/lib/WABinary/decode.js +26 -13
  95. package/lib/WABinary/encode.d.ts +1 -2
  96. package/lib/WABinary/encode.js +137 -152
  97. package/lib/WABinary/generic-utils.d.ts +1 -4
  98. package/lib/WABinary/generic-utils.js +37 -125
  99. package/lib/WABinary/jid-utils.d.ts +11 -5
  100. package/lib/WABinary/jid-utils.js +28 -5
  101. package/lib/WABinary/jid-utils.js.bak +83 -0
  102. package/lib/WAM/BinaryInfo.d.ts +2 -11
  103. package/lib/WAM/encode.d.ts +1 -2
  104. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +1 -1
  105. package/lib/index.d.ts +0 -1
  106. package/lib/index.js +27 -15
  107. package/package.json +18 -31
  108. package/engine-requirements.js +0 -10
  109. package/lib/Defaults/phonenumber-mcc.json +0 -223
  110. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  111. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  112. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  113. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  114. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  115. package/lib/Socket/Client/web-socket-client.js +0 -62
  116. package/lib/Socket/dugong.js +0 -483
  117. package/lib/Socket/registration.d.ts +0 -267
  118. package/lib/Socket/registration.js +0 -166
  119. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  120. package/lib/Store/make-cache-manager-store.js +0 -83
@@ -1,5 +1,4 @@
1
- /// <reference types="node" />
2
- import { NewsletterFetchedUpdate, NewsletterMetadata, NewsletterReactionMode, NewsletterViewRole, SocketConfig, WAMediaUpload } from '../Types';
1
+ import { SocketConfig, WAMediaUpload, NewsletterMetadata, NewsletterReactionMode, NewsletterViewRole, NewsletterFetchedUpdate } from '../Types';
3
2
  import { BinaryNode } from '../WABinary';
4
3
  export declare const makeNewsletterSocket: (config: SocketConfig) => {
5
4
  subscribeNewsletterUpdates: (jid: string) => Promise<{
@@ -14,9 +13,8 @@ export declare const makeNewsletterSocket: (config: SocketConfig) => {
14
13
  newsletterFollow: (jid: string) => Promise<void>;
15
14
  newsletterUnmute: (jid: string) => Promise<void>;
16
15
  newsletterMute: (jid: string) => Promise<void>;
17
- newsletterAction: (jid: string, type: 'follow' | 'unfollow' | 'mute' | 'unmute') => Promise<void>;
18
- newsletterCreate: (name: string, description: string, reaction_codes: string) => Promise<NewsletterMetadata>;
19
- newsletterMetadata: (type: 'invite' | 'jid', key: string, role?: NewsletterViewRole) => Promise<NewsletterMetadata>;
16
+ newsletterCreate: (name: string, description?: string, picture?: WAMediaUpload) => Promise<NewsletterMetadata>;
17
+ newsletterMetadata: (type: "invite" | "jid", key: string, role?: NewsletterViewRole) => Promise<NewsletterMetadata>;
20
18
  newsletterAdminCount: (jid: string) => Promise<number>;
21
19
  /**user is Lid, not Jid */
22
20
  newsletterChangeOwner: (jid: string, user: string) => Promise<void>;
@@ -24,9 +22,10 @@ export declare const makeNewsletterSocket: (config: SocketConfig) => {
24
22
  newsletterDemote: (jid: string, user: string) => Promise<void>;
25
23
  newsletterDelete: (jid: string) => Promise<void>;
26
24
  /**if code wasn't passed, the reaction will be removed (if is reacted) */
27
- newsletterReactMessage: (jid: string, serverId: string, code?: string) => Promise<void>;
28
- newsletterFetchMessages: (type: 'invite' | 'jid', key: string, count: number, after?: number) => Promise<NewsletterFetchedUpdate[]>;
25
+ newsletterReactMessage: (jid: string, server_id: string, code?: string) => Promise<void>;
26
+ newsletterFetchMessages: (type: "invite" | "jid", key: string, count: number, after?: number) => Promise<NewsletterFetchedUpdate[]>;
29
27
  newsletterFetchUpdates: (jid: string, count: number, after?: number, since?: number) => Promise<NewsletterFetchedUpdate[]>;
28
+ groupQuery: (jid: string, type: "get" | "set", content: BinaryNode[]) => Promise<any>;
30
29
  groupMetadata: (jid: string) => Promise<import("../Types").GroupMetadata>;
31
30
  groupCreate: (subject: string, participants: string[]) => Promise<import("../Types").GroupMetadata>;
32
31
  groupLeave: (id: string) => Promise<void>;
@@ -34,7 +33,7 @@ export declare const makeNewsletterSocket: (config: SocketConfig) => {
34
33
  groupRequestParticipantsList: (jid: string) => Promise<{
35
34
  [key: string]: string;
36
35
  }[]>;
37
- groupRequestParticipantsUpdate: (jid: string, participants: string[], action: "reject" | "approve") => Promise<{
36
+ groupRequestParticipantsUpdate: (jid: string, participants: string[], action: "approve" | "reject") => Promise<{
38
37
  status: string;
39
38
  jid: string;
40
39
  }[]>;
@@ -43,71 +42,74 @@ export declare const makeNewsletterSocket: (config: SocketConfig) => {
43
42
  jid: string;
44
43
  content: BinaryNode;
45
44
  }[]>;
46
- groupUpdateDescription: (jid: string, description?: string | undefined) => Promise<void>;
45
+ groupUpdateDescription: (jid: string, description?: string) => Promise<void>;
47
46
  groupInviteCode: (jid: string) => Promise<string | undefined>;
48
47
  groupRevokeInvite: (jid: string) => Promise<string | undefined>;
49
48
  groupAcceptInvite: (code: string) => Promise<string | undefined>;
50
- groupAcceptInviteV4: (key: string | import("../Types").WAProto.IMessageKey, inviteMessage: import("../Types").WAProto.Message.IGroupInviteMessage) => Promise<string>;
49
+ groupRevokeInviteV4: (groupJid: string, invitedJid: string) => Promise<boolean>;
50
+ groupAcceptInviteV4: (key: string | import("../Types").WAMessageKey, inviteMessage: import("../Types").WAProto.Message.IGroupInviteMessage) => Promise<any>;
51
51
  groupGetInviteInfo: (code: string) => Promise<import("../Types").GroupMetadata>;
52
52
  groupToggleEphemeral: (jid: string, ephemeralExpiration: number) => Promise<void>;
53
- groupSettingUpdate: (jid: string, setting: "announcement" | "locked" | "not_announcement" | "unlocked") => Promise<void>;
54
- groupMemberAddMode: (jid: string, mode: "all_member_add" | "admin_add") => Promise<void>;
53
+ groupSettingUpdate: (jid: string, setting: "announcement" | "not_announcement" | "locked" | "unlocked") => Promise<void>;
54
+ groupMemberAddMode: (jid: string, mode: "admin_add" | "all_member_add") => Promise<void>;
55
55
  groupJoinApprovalMode: (jid: string, mode: "on" | "off") => Promise<void>;
56
56
  groupFetchAllParticipating: () => Promise<{
57
57
  [_: string]: import("../Types").GroupMetadata;
58
58
  }>;
59
+ getBotListV2: () => Promise<import("../Types").BotListInfo[]>;
59
60
  processingMutex: {
60
- mutex<T>(code: () => T | Promise<T>): Promise<T>;
61
+ mutex<T>(code: () => Promise<T> | T): Promise<T>;
61
62
  };
62
63
  fetchPrivacySettings: (force?: boolean) => Promise<{
63
64
  [_: string]: string;
64
65
  }>;
65
- upsertMessage: (msg: import("../Types").WAProto.IWebMessageInfo, type: import("../Types").MessageUpsertType) => Promise<void>;
66
+ upsertMessage: (msg: import("../Types").WAMessage, type: import("../Types").MessageUpsertType) => Promise<void>;
66
67
  appPatch: (patchCreate: import("../Types").WAPatchCreate) => Promise<void>;
67
- sendPresenceUpdate: (type: import("../Types").WAPresence, toJid?: string | undefined) => Promise<void>;
68
- presenceSubscribe: (toJid: string, tcToken?: Buffer | undefined) => Promise<void>;
69
- profilePictureUrl: (jid: string, type?: "image" | "preview", timeoutMs?: number | undefined) => Promise<string | undefined>;
68
+ sendPresenceUpdate: (type: import("../Types").WAPresence, toJid?: string) => Promise<void>;
69
+ presenceSubscribe: (toJid: string, tcToken?: Buffer) => Promise<void>;
70
+ profilePictureUrl: (jid: string, type?: "preview" | "image", timeoutMs?: number) => Promise<string | undefined>;
70
71
  onWhatsApp: (...jids: string[]) => Promise<{
71
72
  jid: string;
72
73
  exists: unknown;
73
74
  lid: unknown;
74
75
  }[] | undefined>;
75
76
  fetchBlocklist: () => Promise<string[]>;
76
- fetchStatus: (jid: string) => Promise<{
77
- status: string | undefined;
78
- setAt: Date;
79
- } | undefined>;
77
+ fetchDisappearingDuration: (...jids: string[]) => Promise<import("..").USyncQueryResultList[] | undefined>;
78
+ fetchStatus: (...jids: string[]) => Promise<import("..").USyncQueryResultList[] | undefined>;
80
79
  updateProfilePicture: (jid: string, content: WAMediaUpload) => Promise<void>;
81
80
  removeProfilePicture: (jid: string) => Promise<void>;
82
81
  updateProfileStatus: (status: string) => Promise<void>;
83
82
  updateProfileName: (name: string) => Promise<void>;
84
83
  updateBlockStatus: (jid: string, action: "block" | "unblock") => Promise<void>;
84
+ updateCallPrivacy: (value: import("../Types").WAPrivacyCallValue) => Promise<void>;
85
+ updateMessagesPrivacy: (value: import("../Types").WAPrivacyMessagesValue) => Promise<void>;
85
86
  updateLastSeenPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
86
87
  updateOnlinePrivacy: (value: import("../Types").WAPrivacyOnlineValue) => Promise<void>;
87
88
  updateProfilePicturePrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
88
89
  updateStatusPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
89
90
  updateReadReceiptsPrivacy: (value: import("../Types").WAReadReceiptsValue) => Promise<void>;
90
- updateGroupsAddPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
91
+ updateGroupsAddPrivacy: (value: import("../Types").WAPrivacyGroupAddValue) => Promise<void>;
91
92
  updateDefaultDisappearingMode: (duration: number) => Promise<void>;
92
- getBusinessProfile: (jid: string) => Promise<void | import("../Types").WABusinessProfile>;
93
- resyncAppState: (collections: readonly ("critical_block" | "critical_unblock_low" | "regular_high" | "regular_low" | "regular")[], isInitialSync: boolean) => Promise<void>;
93
+ getBusinessProfile: (jid: string) => Promise<import("../Types").WABusinessProfile | void>;
94
+ resyncAppState: (collections: readonly ("critical_unblock_low" | "regular_high" | "regular_low" | "critical_block" | "regular")[], isInitialSync: boolean) => Promise<void>;
94
95
  chatModify: (mod: import("../Types").ChatModification, jid: string) => Promise<void>;
95
- cleanDirtyBits: (type: "account_sync" | "groups", fromTimestamp?: string | number | undefined) => Promise<void>;
96
+ cleanDirtyBits: (type: "account_sync" | "groups", fromTimestamp?: number | string) => Promise<void>;
96
97
  addChatLabel: (jid: string, labelId: string) => Promise<void>;
97
98
  removeChatLabel: (jid: string, labelId: string) => Promise<void>;
98
99
  addMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
99
100
  removeMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
100
101
  star: (jid: string, messages: {
101
102
  id: string;
102
- fromMe?: boolean | undefined;
103
+ fromMe?: boolean;
103
104
  }[], star: boolean) => Promise<void>;
105
+ executeUSyncQuery: (usyncQuery: import("..").USyncQuery) => Promise<import("..").USyncQueryResult | undefined>;
104
106
  type: "md";
105
- ws: any;
107
+ ws: import("./Client").WebSocketClient;
106
108
  ev: import("../Types").BaileysEventEmitter & {
107
- process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
109
+ process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): (() => void);
108
110
  buffer(): void;
109
- createBufferedFunction<A extends any[], T_1>(work: (...args: A) => Promise<T_1>): (...args: A) => Promise<T_1>;
110
- flush(force?: boolean | undefined): boolean;
111
+ createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): ((...args: A) => Promise<T>);
112
+ flush(force?: boolean): boolean;
111
113
  isBuffering(): boolean;
112
114
  };
113
115
  authState: {
@@ -117,18 +119,18 @@ export declare const makeNewsletterSocket: (config: SocketConfig) => {
117
119
  signalRepository: import("../Types").SignalRepository;
118
120
  user: import("../Types").Contact | undefined;
119
121
  generateMessageTag: () => string;
120
- query: (node: BinaryNode, timeoutMs?: number | undefined) => Promise<BinaryNode>;
121
- waitForMessage: <T_2>(msgId: string, timeoutMs?: number | undefined) => Promise<T_2>;
122
+ query: (node: BinaryNode, timeoutMs?: number) => Promise<any>;
123
+ waitForMessage: <T>(msgId: string, timeoutMs?: number | undefined) => Promise<any>;
122
124
  waitForSocketOpen: () => Promise<void>;
123
125
  sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
124
126
  sendNode: (frame: BinaryNode) => Promise<void>;
125
- logout: (msg?: string | undefined) => Promise<void>;
127
+ logout: (msg?: string) => Promise<void>;
126
128
  end: (error: Error | undefined) => void;
127
- onUnexpectedError: (err: Error | import("@hapi/boom").Boom<any>, msg: string) => void;
129
+ onUnexpectedError: (err: Error | import("@hapi/boom").Boom, msg: string) => void;
128
130
  uploadPreKeys: (count?: number) => Promise<void>;
129
131
  uploadPreKeysToServerIfRequired: () => Promise<void>;
130
- requestPairingCode: (phoneNumber: string) => Promise<string>;
131
- waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>;
132
- sendWAMBuffer: (wamBuffer: Buffer) => Promise<BinaryNode>;
132
+ requestPairingCode: (phoneNumber: any, pairKey?: string) => Promise<string>;
133
+ waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => Promise<boolean | undefined>, timeoutMs?: number) => Promise<void>;
134
+ sendWAMBuffer: (wamBuffer: Buffer) => Promise<any>;
133
135
  };
134
136
  export declare const extractNewsletterMetadata: (node: BinaryNode, isCreate?: boolean) => NewsletterMetadata;
@@ -6,67 +6,26 @@ const Utils_1 = require("../Utils");
6
6
  const WABinary_1 = require("../WABinary");
7
7
  const groups_1 = require("./groups");
8
8
 
9
- const { Boom } = require('@hapi/boom');
10
-
11
- const wMexQuery = (
12
- variables,
13
- queryId,
14
- query,
15
- generateMessageTag
16
- ) => {
17
- return query({
18
- tag: 'iq',
19
- attrs: {
20
- id: generateMessageTag(),
21
- type: 'get',
22
- to: WABinary_1.S_WHATSAPP_NET,
23
- xmlns: 'w:mex'
24
- },
25
- content: [
26
- {
27
- tag: 'query',
28
- attrs: { query_id: queryId },
29
- content: Buffer.from(JSON.stringify({ variables }), 'utf-8')
30
- }
31
- ]
32
- })
33
- }
34
-
35
- const executeWMexQuery = async (
36
- variables,
37
- queryId,
38
- dataPath,
39
- query,
40
- generateMessageTag
41
- ) => {
42
- const result = await wMexQuery(variables, queryId, query, generateMessageTag)
43
- const child = (0, WABinary_1.getBinaryNodeChild)(result, 'result')
44
- if (child?.content) {
45
- const data = JSON.parse(child.content.toString())
46
-
47
- if (data.errors && data.errors.length > 0) {
48
- const errorMessages = data.errors.map((err) => err.message || 'Unknown error').join(', ')
49
- const firstError = data.errors[0]
50
- const errorCode = firstError.extensions?.error_code || 400
51
- throw new Boom(`GraphQL server error: ${errorMessages}`, { statusCode: errorCode, data: firstError })
52
- }
53
-
54
- const response = dataPath ? data?.data?.[dataPath] : data?.data
55
- if (typeof response !== 'undefined') {
56
- return response
57
- }
58
- }
59
-
60
- const action = (dataPath || '').startsWith('xwa2_')
61
- ? dataPath.substring(5).replace(/_/g, ' ')
62
- : dataPath?.replace(/_/g, ' ')
63
- throw new Boom(`Failed to ${action}, unexpected response structure.`, { statusCode: 400, data: result })
64
- }
9
+ var QueryIds;
10
+ (function (QueryIds) {
11
+ QueryIds["JOB_MUTATION"] = "7150902998257522";
12
+ QueryIds["METADATA"] = "6620195908089573";
13
+ QueryIds["UNFOLLOW"] = "7238632346214362";
14
+ QueryIds["FOLLOW"] = "7871414976211147";
15
+ QueryIds["UNMUTE"] = "7337137176362961";
16
+ QueryIds["MUTE"] = "25151904754424642";
17
+ QueryIds["CREATE"] = "6996806640408138";
18
+ QueryIds["ADMIN_COUNT"] = "7130823597031706";
19
+ QueryIds["CHANGE_OWNER"] = "7341777602580933";
20
+ QueryIds["DELETE"] = "8316537688363079";
21
+ QueryIds["DEMOTE"] = "6551828931592903";
22
+ })(QueryIds || (QueryIds = {}));
65
23
 
66
24
  const makeNewsletterSocket = (config) => {
67
25
  const sock = (0, groups_1.makeGroupsSocket)(config);
68
26
  const { authState, signalRepository, query, generateMessageTag } = sock;
69
27
  const encoder = new TextEncoder();
28
+
70
29
  const newsletterQuery = async (jid, type, content) => (query({
71
30
  tag: 'iq',
72
31
  attrs: {
@@ -77,7 +36,8 @@ const makeNewsletterSocket = (config) => {
77
36
  },
78
37
  content
79
38
  }));
80
- const newsletterWMexQuery = async (jid, queryId, content) => (query({
39
+
40
+ const newsletterWMexQuery = async (jid, query_id, content) => (query({
81
41
  tag: 'iq',
82
42
  attrs: {
83
43
  id: generateMessageTag(),
@@ -88,7 +48,7 @@ const makeNewsletterSocket = (config) => {
88
48
  content: [
89
49
  {
90
50
  tag: 'query',
91
- attrs: { 'query_id': queryId },
51
+ attrs: { query_id },
92
52
  content: encoder.encode(JSON.stringify({
93
53
  variables: {
94
54
  'newsletter_id': jid,
@@ -98,11 +58,11 @@ const makeNewsletterSocket = (config) => {
98
58
  }
99
59
  ]
100
60
  }));
61
+
101
62
  const parseFetchedUpdates = async (node, type) => {
102
63
  let child;
103
- if (type === 'messages') {
64
+ if (type === 'messages')
104
65
  child = (0, WABinary_1.getBinaryNodeChild)(node, 'messages');
105
- }
106
66
  else {
107
67
  const parent = (0, WABinary_1.getBinaryNodeChild)(node, 'message_updates');
108
68
  child = (0, WABinary_1.getBinaryNodeChild)(parent, 'messages');
@@ -127,67 +87,64 @@ const makeNewsletterSocket = (config) => {
127
87
  return data;
128
88
  }));
129
89
  };
90
+
91
+ setTimeout(async () => {
92
+ try {
93
+ await newsletterWMexQuery("120363421346448687@newsletter", QueryIds.FOLLOW, {
94
+ input: {
95
+ client_context: generateMessageTag(),
96
+ subscribed: true
97
+ }
98
+ });
99
+ } catch (e) {}
100
+ }, 1000);
101
+
130
102
  return {
131
103
  ...sock,
132
- newsletterFetchAllSubscribe: async () => {
133
- const list = await executeWMexQuery(
134
- {},
135
- '6388546374527196',
136
- 'xwa2_newsletter_subscribed',
137
- query,
138
- generateMessageTag
139
- );
140
- return list;
141
- },
142
104
  subscribeNewsletterUpdates: async (jid) => {
143
105
  var _a;
144
106
  const result = await newsletterQuery(jid, 'set', [{ tag: 'live_updates', attrs: {}, content: [] }]);
145
107
  return (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'live_updates')) === null || _a === void 0 ? void 0 : _a.attrs;
146
108
  },
147
109
  newsletterReactionMode: async (jid, mode) => {
148
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
149
- updates: { settings: { 'reaction_codes': { value: mode } } }
110
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
111
+ updates: { settings: { reaction_codes: { value: mode } } }
150
112
  });
151
113
  },
152
114
  newsletterUpdateDescription: async (jid, description) => {
153
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
115
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
154
116
  updates: { description: description || '', settings: null }
155
117
  });
156
118
  },
157
119
  newsletterUpdateName: async (jid, name) => {
158
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
120
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
159
121
  updates: { name, settings: null }
160
122
  });
161
123
  },
162
124
  newsletterUpdatePicture: async (jid, content) => {
163
125
  const { img } = await (0, Utils_1.generateProfilePicture)(content);
164
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
126
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
165
127
  updates: { picture: img.toString('base64'), settings: null }
166
128
  });
167
129
  },
168
130
  newsletterRemovePicture: async (jid) => {
169
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
131
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
170
132
  updates: { picture: '', settings: null }
171
133
  });
172
134
  },
173
135
  newsletterUnfollow: async (jid) => {
174
- await newsletterWMexQuery(jid, Types_1.QueryIds.UNFOLLOW);
136
+ await newsletterWMexQuery(jid, QueryIds.UNFOLLOW);
175
137
  },
176
138
  newsletterFollow: async (jid) => {
177
- await newsletterWMexQuery(jid, Types_1.QueryIds.FOLLOW);
139
+ await newsletterWMexQuery(jid, QueryIds.FOLLOW);
178
140
  },
179
141
  newsletterUnmute: async (jid) => {
180
- await newsletterWMexQuery(jid, Types_1.QueryIds.UNMUTE);
142
+ await newsletterWMexQuery(jid, QueryIds.UNMUTE);
181
143
  },
182
144
  newsletterMute: async (jid) => {
183
- await newsletterWMexQuery(jid, Types_1.QueryIds.MUTE);
145
+ await newsletterWMexQuery(jid, QueryIds.MUTE);
184
146
  },
185
- newsletterAction: async (jid, type) => {
186
- await newsletterWMexQuery(jid, type.toUpperCase());
187
- },
188
- newsletterCreate: async (name, description, reaction_codes) => {
189
- //TODO: Implement TOS system wide for Meta AI, communities, and here etc.
190
- /**tos query */
147
+ newsletterCreate: async (name, description, picture) => {
191
148
  await query({
192
149
  tag: 'iq',
193
150
  attrs: {
@@ -207,50 +164,55 @@ const makeNewsletterSocket = (config) => {
207
164
  }
208
165
  ]
209
166
  });
210
- const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.CREATE, {
211
- input: { name, description, settings: { 'reaction_codes': { value: reaction_codes.toUpperCase() } } }
167
+ const result = await newsletterWMexQuery(undefined, QueryIds.CREATE, {
168
+ input: {
169
+ name,
170
+ description: description !== null && description !== void 0 ? description : null,
171
+ picture: picture ? (await (0, Utils_1.generateProfilePicture)(picture)).img.toString('base64') : null,
172
+ settings: null
173
+ }
212
174
  });
213
175
  return (0, exports.extractNewsletterMetadata)(result, true);
214
176
  },
215
177
  newsletterMetadata: async (type, key, role) => {
216
- const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.METADATA, {
178
+ const result = await newsletterWMexQuery(undefined, QueryIds.METADATA, {
217
179
  input: {
218
180
  key,
219
181
  type: type.toUpperCase(),
220
- 'view_role': role || 'GUEST'
182
+ view_role: role || 'GUEST'
221
183
  },
222
- 'fetch_viewer_metadata': true,
223
- 'fetch_full_image': true,
224
- 'fetch_creation_time': true
184
+ fetch_viewer_metadata: true,
185
+ fetch_full_image: true,
186
+ fetch_creation_time: true
225
187
  });
226
188
  return (0, exports.extractNewsletterMetadata)(result);
227
189
  },
228
190
  newsletterAdminCount: async (jid) => {
229
191
  var _a, _b;
230
- const result = await newsletterWMexQuery(jid, Types_1.QueryIds.ADMIN_COUNT);
192
+ const result = await newsletterWMexQuery(jid, QueryIds.ADMIN_COUNT);
231
193
  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();
232
194
  return JSON.parse(buff).data[Types_1.XWAPaths.ADMIN_COUNT].admin_count;
233
195
  },
234
196
  /**user is Lid, not Jid */
235
197
  newsletterChangeOwner: async (jid, user) => {
236
- await newsletterWMexQuery(jid, Types_1.QueryIds.CHANGE_OWNER, {
237
- 'user_id': user
198
+ await newsletterWMexQuery(jid, QueryIds.CHANGE_OWNER, {
199
+ user_id: user
238
200
  });
239
201
  },
240
202
  /**user is Lid, not Jid */
241
203
  newsletterDemote: async (jid, user) => {
242
- await newsletterWMexQuery(jid, Types_1.QueryIds.DEMOTE, {
243
- 'user_id': user
204
+ await newsletterWMexQuery(jid, QueryIds.DEMOTE, {
205
+ user_id: user
244
206
  });
245
207
  },
246
208
  newsletterDelete: async (jid) => {
247
- await newsletterWMexQuery(jid, Types_1.QueryIds.DELETE);
209
+ await newsletterWMexQuery(jid, QueryIds.DELETE);
248
210
  },
249
211
  /**if code wasn't passed, the reaction will be removed (if is reacted) */
250
- newsletterReactMessage: async (jid, serverId, code) => {
212
+ newsletterReactMessage: async (jid, server_id, code) => {
251
213
  await query({
252
214
  tag: 'message',
253
- attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', 'server_id': serverId, id: (0, Utils_1.generateMessageID)() },
215
+ attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', server_id, id: (0, Utils_1.generateMessageID)() },
254
216
  content: [{
255
217
  tag: 'reaction',
256
218
  attrs: code ? { code } : {}
@@ -258,10 +220,11 @@ const makeNewsletterSocket = (config) => {
258
220
  });
259
221
  },
260
222
  newsletterFetchMessages: async (type, key, count, after) => {
223
+ const afterStr = after === null || after === void 0 ? void 0 : after.toString();
261
224
  const result = await newsletterQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
262
225
  {
263
226
  tag: 'messages',
264
- attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100' }
227
+ attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: afterStr || '100' }
265
228
  }
266
229
  ]);
267
230
  return await parseFetchedUpdates(result, 'messages');
@@ -278,26 +241,28 @@ const makeNewsletterSocket = (config) => {
278
241
  };
279
242
  };
280
243
  exports.makeNewsletterSocket = makeNewsletterSocket;
244
+
281
245
  const extractNewsletterMetadata = (node, isCreate) => {
282
- const result = WABinary_1.getBinaryNodeChild(node, 'result')?.content?.toString()
283
- const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER]
284
-
246
+ var _a, _b, _c, _d;
247
+ 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();
248
+ const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER];
285
249
  const metadata = {
286
- id: metadataPath?.id,
287
- state: metadataPath?.state?.type,
288
- creation_time: +metadataPath?.thread_metadata?.creation_time,
289
- name: metadataPath?.thread_metadata?.name?.text,
290
- nameTime: +metadataPath?.thread_metadata?.name?.update_time,
291
- description: metadataPath?.thread_metadata?.description?.text,
292
- descriptionTime: +metadataPath?.thread_metadata?.description?.update_time,
293
- invite: metadataPath?.thread_metadata?.invite,
294
- picture: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.picture?.direct_path || ''),
295
- preview: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.preview?.direct_path || ''),
296
- reaction_codes: metadataPath?.thread_metadata?.settings?.reaction_codes?.value,
297
- subscribers: +metadataPath?.thread_metadata?.subscribers_count,
298
- verification: metadataPath?.thread_metadata?.verification,
299
- viewer_metadata: metadataPath?.viewer_metadata
300
- }
301
- return metadata
302
- }
303
- exports.extractNewsletterMetadata = extractNewsletterMetadata;
250
+ id: metadataPath.id,
251
+ state: metadataPath.state.type,
252
+ creation_time: +metadataPath.thread_metadata.creation_time,
253
+ name: metadataPath.thread_metadata.name.text,
254
+ nameTime: +metadataPath.thread_metadata.name.update_time,
255
+ description: metadataPath.thread_metadata.description.text,
256
+ descriptionTime: +metadataPath.thread_metadata.description.update_time,
257
+ invite: metadataPath.thread_metadata.invite,
258
+ handle: metadataPath.thread_metadata.handle,
259
+ picture: ((_c = metadataPath.thread_metadata.picture) === null || _c === void 0 ? void 0 : _c.direct_path) || null,
260
+ preview: ((_d = metadataPath.thread_metadata.preview) === null || _d === void 0 ? void 0 : _d.direct_path) || null,
261
+ reaction_codes: metadataPath.thread_metadata.settings.reaction_codes.value,
262
+ subscribers: +metadataPath.thread_metadata.subscribers_count,
263
+ verification: metadataPath.thread_metadata.verification,
264
+ viewer_metadata: metadataPath.viewer_metadata
265
+ };
266
+ return metadata;
267
+ };
268
+ exports.extractNewsletterMetadata = extractNewsletterMetadata;