socketon 1.31.2-rc → 1.51.16

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 (213) hide show
  1. package/README.md +313 -159
  2. package/WAProto/WAProto.proto +5311 -0
  3. package/WAProto/index.js +65801 -141371
  4. package/lib/Defaults/index.js +117 -141
  5. package/lib/KeyDB/BinarySearch.js +20 -0
  6. package/lib/KeyDB/KeyedDB.js +167 -0
  7. package/lib/KeyDB/index.js +4 -0
  8. package/lib/Signal/Group/ciphertext-message.js +12 -14
  9. package/lib/Signal/Group/group-session-builder.js +10 -42
  10. package/lib/Signal/Group/group_cipher.js +75 -87
  11. package/lib/Signal/Group/index.js +13 -57
  12. package/lib/Signal/Group/keyhelper.js +17 -52
  13. package/lib/Signal/Group/sender-chain-key.js +27 -33
  14. package/lib/Signal/Group/sender-key-distribution-message.js +62 -63
  15. package/lib/Signal/Group/sender-key-message.js +65 -66
  16. package/lib/Signal/Group/sender-key-name.js +45 -44
  17. package/lib/Signal/Group/sender-key-record.js +39 -49
  18. package/lib/Signal/Group/sender-key-state.js +80 -93
  19. package/lib/Signal/Group/sender-message-key.js +27 -28
  20. package/lib/Signal/libsignal.js +313 -163
  21. package/lib/Signal/lid-mapping.js +155 -0
  22. package/lib/Socket/Client/index.js +4 -19
  23. package/lib/Socket/Client/types.js +13 -0
  24. package/lib/Socket/Client/websocket.js +52 -0
  25. package/lib/Socket/Client/websocket.js.bak +53 -0
  26. package/lib/Socket/business.js +359 -242
  27. package/lib/Socket/chats.js +846 -935
  28. package/lib/Socket/communities.js +413 -0
  29. package/lib/Socket/groups.js +304 -309
  30. package/lib/Socket/index.js +15 -10
  31. package/lib/Socket/messages-recv.js +1107 -1054
  32. package/lib/Socket/messages-send.js +639 -448
  33. package/lib/Socket/mex.js +45 -0
  34. package/lib/Socket/newsletter.js +240 -324
  35. package/lib/Socket/socket.js +794 -651
  36. package/lib/Socket/socketon.js +402 -0
  37. package/lib/Store/index.js +6 -10
  38. package/lib/Store/make-cache-manager-store.js +73 -81
  39. package/lib/Store/make-in-memory-store.js +286 -423
  40. package/lib/Store/make-ordered-dictionary.js +77 -79
  41. package/lib/Store/object-repository.js +24 -26
  42. package/lib/Types/Auth.js +3 -2
  43. package/lib/Types/Bussines.js +3 -0
  44. package/lib/Types/Call.js +3 -2
  45. package/lib/Types/Chat.js +9 -4
  46. package/lib/Types/Contact.js +3 -2
  47. package/lib/Types/Events.js +3 -2
  48. package/lib/Types/GroupMetadata.js +3 -2
  49. package/lib/Types/Label.js +24 -26
  50. package/lib/Types/LabelAssociation.js +6 -8
  51. package/lib/Types/Message.js +12 -9
  52. package/lib/Types/Newsletter.js +33 -38
  53. package/lib/Types/Newsletter.js.bak +33 -0
  54. package/lib/Types/Product.js +3 -2
  55. package/lib/Types/Signal.js +3 -2
  56. package/lib/Types/Socket.js +4 -2
  57. package/lib/Types/State.js +11 -2
  58. package/lib/Types/USync.js +3 -2
  59. package/lib/Types/index.js +27 -41
  60. package/lib/Utils/auth-utils.js +211 -198
  61. package/lib/Utils/baileys-event-stream.js +42 -61
  62. package/lib/Utils/browser-utils.js +25 -0
  63. package/lib/Utils/business.js +213 -214
  64. package/lib/Utils/chat-utils.js +710 -687
  65. package/lib/Utils/crypto.js +112 -133
  66. package/lib/Utils/decode-wa-message.js +252 -183
  67. package/lib/Utils/decode-wa-message.js.bak +267 -0
  68. package/lib/Utils/event-buffer.js +510 -496
  69. package/lib/Utils/generics.js +319 -392
  70. package/lib/Utils/history.js +83 -92
  71. package/lib/Utils/index.js +21 -33
  72. package/lib/Utils/link-preview.js +71 -83
  73. package/lib/Utils/logger.js +5 -7
  74. package/lib/Utils/lt-hash.js +40 -46
  75. package/lib/Utils/make-mutex.js +34 -41
  76. package/lib/Utils/message-retry-manager.js +113 -0
  77. package/lib/Utils/messages-media.js +550 -768
  78. package/lib/Utils/messages.js +354 -263
  79. package/lib/Utils/noise-handler.js +138 -149
  80. package/lib/Utils/pre-key-manager.js +85 -0
  81. package/lib/Utils/process-message.js +323 -303
  82. package/lib/Utils/signal.js +149 -141
  83. package/lib/Utils/use-multi-file-auth-state.js +95 -103
  84. package/lib/Utils/validate-connection.js +183 -214
  85. package/lib/WABinary/constants.js +1298 -35
  86. package/lib/WABinary/decode.js +237 -249
  87. package/lib/WABinary/encode.js +213 -260
  88. package/lib/WABinary/generic-utils.js +56 -65
  89. package/lib/WABinary/index.js +7 -21
  90. package/lib/WABinary/jid-utils.js +89 -58
  91. package/lib/WABinary/types.js +3 -2
  92. package/lib/WAM/BinaryInfo.js +10 -12
  93. package/lib/WAM/constants.js +22851 -15348
  94. package/lib/WAM/encode.js +135 -136
  95. package/lib/WAM/index.js +5 -19
  96. package/lib/WAUSync/Protocols/USyncContactProtocol.js +28 -30
  97. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +49 -53
  98. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -28
  99. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +36 -39
  100. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -50
  101. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +26 -20
  102. package/lib/WAUSync/Protocols/index.js +6 -20
  103. package/lib/WAUSync/USyncQuery.js +86 -85
  104. package/lib/WAUSync/USyncUser.js +23 -25
  105. package/lib/WAUSync/index.js +5 -19
  106. package/lib/index.js +27 -35
  107. package/package.json +85 -95
  108. package/engine-requirements.js +0 -10
  109. package/lib/Defaults/baileys-version.json +0 -3
  110. package/lib/Defaults/index.d.ts +0 -53
  111. package/lib/Defaults/phonenumber-mcc.json +0 -223
  112. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  113. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  114. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  115. package/lib/Signal/Group/index.d.ts +0 -11
  116. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  117. package/lib/Signal/Group/queue-job.d.ts +0 -1
  118. package/lib/Signal/Group/queue-job.js +0 -57
  119. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  120. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  121. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  122. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  123. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  124. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  125. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  126. package/lib/Signal/libsignal.d.ts +0 -3
  127. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  128. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  129. package/lib/Socket/Client/index.d.ts +0 -3
  130. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  131. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  132. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  133. package/lib/Socket/Client/web-socket-client.js +0 -62
  134. package/lib/Socket/business.d.ts +0 -171
  135. package/lib/Socket/chats.d.ts +0 -267
  136. package/lib/Socket/dugong.d.ts +0 -254
  137. package/lib/Socket/dugong.js +0 -484
  138. package/lib/Socket/groups.d.ts +0 -115
  139. package/lib/Socket/index.d.ts +0 -173
  140. package/lib/Socket/messages-recv.d.ts +0 -161
  141. package/lib/Socket/messages-send.d.ts +0 -149
  142. package/lib/Socket/newsletter.d.ts +0 -134
  143. package/lib/Socket/registration.d.ts +0 -267
  144. package/lib/Socket/registration.js +0 -166
  145. package/lib/Socket/socket.d.ts +0 -43
  146. package/lib/Socket/usync.d.ts +0 -36
  147. package/lib/Socket/usync.js +0 -70
  148. package/lib/Store/index.d.ts +0 -3
  149. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  150. package/lib/Store/make-in-memory-store.d.ts +0 -118
  151. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  152. package/lib/Store/object-repository.d.ts +0 -10
  153. package/lib/Types/Auth.d.ts +0 -110
  154. package/lib/Types/Call.d.ts +0 -13
  155. package/lib/Types/Chat.d.ts +0 -102
  156. package/lib/Types/Contact.d.ts +0 -19
  157. package/lib/Types/Events.d.ts +0 -157
  158. package/lib/Types/GroupMetadata.d.ts +0 -55
  159. package/lib/Types/Label.d.ts +0 -35
  160. package/lib/Types/LabelAssociation.d.ts +0 -29
  161. package/lib/Types/Message.d.ts +0 -273
  162. package/lib/Types/Newsletter.d.ts +0 -103
  163. package/lib/Types/Product.d.ts +0 -78
  164. package/lib/Types/Signal.d.ts +0 -57
  165. package/lib/Types/Socket.d.ts +0 -111
  166. package/lib/Types/State.d.ts +0 -27
  167. package/lib/Types/USync.d.ts +0 -25
  168. package/lib/Types/index.d.ts +0 -57
  169. package/lib/Utils/auth-utils.d.ts +0 -18
  170. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  171. package/lib/Utils/business.d.ts +0 -22
  172. package/lib/Utils/chat-utils.d.ts +0 -71
  173. package/lib/Utils/crypto.d.ts +0 -41
  174. package/lib/Utils/decode-wa-message.d.ts +0 -19
  175. package/lib/Utils/event-buffer.d.ts +0 -35
  176. package/lib/Utils/generics.d.ts +0 -92
  177. package/lib/Utils/generics.js.bak +0 -433
  178. package/lib/Utils/history.d.ts +0 -15
  179. package/lib/Utils/index.d.ts +0 -17
  180. package/lib/Utils/link-preview.d.ts +0 -21
  181. package/lib/Utils/logger.d.ts +0 -4
  182. package/lib/Utils/lt-hash.d.ts +0 -12
  183. package/lib/Utils/make-mutex.d.ts +0 -7
  184. package/lib/Utils/messages-media.d.ts +0 -116
  185. package/lib/Utils/messages.d.ts +0 -77
  186. package/lib/Utils/noise-handler.d.ts +0 -21
  187. package/lib/Utils/process-message.d.ts +0 -41
  188. package/lib/Utils/signal.d.ts +0 -32
  189. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  190. package/lib/Utils/validate-connection.d.ts +0 -11
  191. package/lib/Utils/validate-connection.js.bak +0 -237
  192. package/lib/WABinary/constants.d.ts +0 -30
  193. package/lib/WABinary/decode.d.ts +0 -7
  194. package/lib/WABinary/encode.d.ts +0 -3
  195. package/lib/WABinary/generic-utils.d.ts +0 -17
  196. package/lib/WABinary/index.d.ts +0 -5
  197. package/lib/WABinary/jid-utils.d.ts +0 -31
  198. package/lib/WABinary/types.d.ts +0 -18
  199. package/lib/WAM/BinaryInfo.d.ts +0 -17
  200. package/lib/WAM/constants.d.ts +0 -38
  201. package/lib/WAM/encode.d.ts +0 -3
  202. package/lib/WAM/index.d.ts +0 -3
  203. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  204. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  205. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  206. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  207. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  208. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  209. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  210. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  211. package/lib/WAUSync/USyncUser.d.ts +0 -12
  212. package/lib/WAUSync/index.d.ts +0 -3
  213. package/lib/index.d.ts +0 -12
@@ -1,77 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { Logger } from 'pino';
4
- import { type Transform } from 'stream';
5
- import { proto } from '../../WAProto';
6
- import { AnyMediaMessageContent, AnyMessageContent, MediaGenerationOptions, MessageContentGenerationOptions, MessageGenerationOptions, MessageGenerationOptionsFromContent, MessageUserReceipt, WAMessage, WAMessageContent, WAProto } from '../Types';
7
- import { MediaDownloadOptions } from './messages-media';
8
- /**
9
- * Uses a regex to test whether the string contains a URL, and returns the URL if it does.
10
- * @param text eg. hello https://google.com
11
- * @returns the URL, eg. https://google.com
12
- */
13
- export declare const extractUrlFromText: (text: string) => string | undefined;
14
- export declare const generateLinkPreviewIfRequired: (text: string, getUrlInfo: MessageGenerationOptions['getUrlInfo'], logger: MessageGenerationOptions['logger']) => Promise<import("../Types").WAUrlInfo | undefined>;
15
- export declare const prepareWAMessageMedia: (message: AnyMediaMessageContent, options: MediaGenerationOptions) => Promise<proto.Message>;
16
- export declare const prepareDisappearingMessageSettingContent: (ephemeralExpiration?: number) => proto.Message;
17
- /**
18
- * Generate forwarded message content like WA does
19
- * @param message the message to forward
20
- * @param options.forceForward will show the message as forwarded even if it is from you
21
- */
22
- export declare const generateForwardMessageContent: (message: WAMessage, forceForward?: boolean) => proto.IMessage;
23
- export declare const generateWAMessageContent: (message: AnyMessageContent, options: MessageContentGenerationOptions) => Promise<proto.Message>;
24
- export declare const generateWAMessageFromContent: (jid: string, message: WAMessageContent, options: MessageGenerationOptionsFromContent) => proto.WebMessageInfo;
25
- export declare const generateWAMessage: (jid: string, content: AnyMessageContent, options: MessageGenerationOptions) => Promise<proto.WebMessageInfo>;
26
- /** Get the key to access the true type of content */
27
- export declare const getContentType: (content: WAProto.IMessage | undefined) => keyof proto.IMessage | undefined;
28
- /**
29
- * Normalizes ephemeral, view once messages to regular message content
30
- * Eg. image messages in ephemeral messages, in view once messages etc.
31
- * @param content
32
- * @returns
33
- */
34
- export declare const normalizeMessageContent: (content: WAMessageContent | null | undefined) => WAMessageContent | undefined;
35
- /**
36
- * Extract the true message content from a message
37
- * Eg. extracts the inner message from a disappearing message/view once message
38
- */
39
- export declare const extractMessageContent: (content: WAMessageContent | undefined | null) => WAMessageContent | undefined;
40
- /**
41
- * Returns the device predicted by message ID
42
- */
43
- export declare const getDevice: (id: string) => "android" | "unknown" | "web" | "ios" | "desktop";
44
- /** Upserts a receipt in the message */
45
- export declare const updateMessageWithReceipt: (msg: Pick<WAMessage, 'userReceipt'>, receipt: MessageUserReceipt) => void;
46
- /** Update the message with a new reaction */
47
- export declare const updateMessageWithReaction: (msg: Pick<WAMessage, 'reactions'>, reaction: proto.IReaction) => void;
48
- /** Update the message with a new poll update */
49
- export declare const updateMessageWithPollUpdate: (msg: Pick<WAMessage, 'pollUpdates'>, update: proto.IPollUpdate) => void;
50
- type VoteAggregation = {
51
- name: string;
52
- voters: string[];
53
- };
54
- /**
55
- * Aggregates all poll updates in a poll.
56
- * @param msg the poll creation message
57
- * @param meId your jid
58
- * @returns A list of options & their voters
59
- */
60
- export declare function getAggregateVotesInPollMessage({ message, pollUpdates }: Pick<WAMessage, 'pollUpdates' | 'message'>, meId?: string): VoteAggregation[];
61
- /** Given a list of message keys, aggregates them by chat & sender. Useful for sending read receipts in bulk */
62
- export declare const aggregateMessageKeysNotFromMe: (keys: proto.IMessageKey[]) => {
63
- jid: string;
64
- participant: string | undefined;
65
- messageIds: string[];
66
- }[];
67
- type DownloadMediaMessageContext = {
68
- reuploadRequest: (msg: WAMessage) => Promise<WAMessage>;
69
- logger: Logger;
70
- };
71
- /**
72
- * Downloads the given message. Throws an error if it's not a media message
73
- */
74
- export declare const downloadMediaMessage: <Type extends "stream" | "buffer">(message: WAMessage, type: Type, options: MediaDownloadOptions, ctx?: DownloadMediaMessageContext) => Promise<Type extends "buffer" ? Buffer : Transform>;
75
- /** Checks whether the given message is a media message; if it is returns the inner content */
76
- export declare const assertMediaContent: (content: proto.IMessage | null | undefined) => proto.Message.IVideoMessage | proto.Message.IImageMessage | proto.Message.IAudioMessage | proto.Message.IDocumentMessage | proto.Message.IStickerMessage;
77
- export {};
@@ -1,21 +0,0 @@
1
- /// <reference types="node" />
2
- import { Logger } from 'pino';
3
- import { proto } from '../../WAProto';
4
- import { KeyPair } from '../Types';
5
- import { BinaryNode } from '../WABinary';
6
- export declare const makeNoiseHandler: ({ keyPair: { private: privateKey, public: publicKey }, NOISE_HEADER, mobile, logger, routingInfo }: {
7
- keyPair: KeyPair;
8
- NOISE_HEADER: Uint8Array;
9
- mobile: boolean;
10
- logger: Logger;
11
- routingInfo?: Buffer | undefined;
12
- }) => {
13
- encrypt: (plaintext: Uint8Array) => Buffer;
14
- decrypt: (ciphertext: Uint8Array) => Buffer;
15
- authenticate: (data: Uint8Array) => void;
16
- mixIntoKey: (data: Uint8Array) => void;
17
- finishInit: () => void;
18
- processHandshake: ({ serverHello }: proto.HandshakeMessage, noiseKey: KeyPair) => Buffer;
19
- encodeFrame: (data: Buffer | Uint8Array) => Buffer;
20
- decodeFrame: (newData: Buffer | Uint8Array, onFrame: (buff: Uint8Array | BinaryNode) => void) => void;
21
- };
@@ -1,41 +0,0 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import type { Logger } from 'pino';
3
- import { proto } from '../../WAProto';
4
- import { AuthenticationCreds, BaileysEventEmitter, SignalKeyStoreWithTransaction, SocketConfig } from '../Types';
5
- type ProcessMessageContext = {
6
- shouldProcessHistoryMsg: boolean;
7
- creds: AuthenticationCreds;
8
- keyStore: SignalKeyStoreWithTransaction;
9
- ev: BaileysEventEmitter;
10
- getMessage: SocketConfig['getMessage'];
11
- logger?: Logger;
12
- options: AxiosRequestConfig<{}>;
13
- };
14
- /** Cleans a received message to further processing */
15
- export declare const cleanMessage: (message: proto.IWebMessageInfo, meId: string) => void;
16
- export declare const isRealMessage: (message: proto.IWebMessageInfo, meId: string) => boolean | undefined;
17
- export declare const shouldIncrementChatUnread: (message: proto.IWebMessageInfo) => boolean;
18
- /**
19
- * Get the ID of the chat from the given key.
20
- * Typically -- that'll be the remoteJid, but for broadcasts, it'll be the participant
21
- */
22
- export declare const getChatId: ({ remoteJid, participant, fromMe }: proto.IMessageKey) => string;
23
- type PollContext = {
24
- /** normalised jid of the person that created the poll */
25
- pollCreatorJid: string;
26
- /** ID of the poll creation message */
27
- pollMsgId: string;
28
- /** poll creation message enc key */
29
- pollEncKey: Uint8Array;
30
- /** jid of the person that voted */
31
- voterJid: string;
32
- };
33
- /**
34
- * Decrypt a poll vote
35
- * @param vote encrypted vote
36
- * @param ctx additional info about the poll required for decryption
37
- * @returns list of SHA256 options
38
- */
39
- export declare function decryptPollVote({ encPayload, encIv }: proto.Message.IPollEncValue, { pollCreatorJid, pollMsgId, pollEncKey, voterJid, }: PollContext): proto.Message.PollVoteMessage;
40
- declare const processMessage: (message: proto.IWebMessageInfo, { shouldProcessHistoryMsg, ev, creds, keyStore, logger, options, getMessage }: ProcessMessageContext) => Promise<void>;
41
- export default processMessage;
@@ -1,32 +0,0 @@
1
- import { SignalRepository } from '../Types';
2
- import { AuthenticationCreds, AuthenticationState, KeyPair, SignalIdentity, SignalKeyStore, SignedKeyPair } from '../Types/Auth';
3
- import { BinaryNode, JidWithDevice } from '../WABinary';
4
- export declare const createSignalIdentity: (wid: string, accountSignatureKey: Uint8Array) => SignalIdentity;
5
- export declare const getPreKeys: ({ get }: SignalKeyStore, min: number, limit: number) => Promise<{
6
- [id: string]: KeyPair;
7
- }>;
8
- export declare const generateOrGetPreKeys: (creds: AuthenticationCreds, range: number) => {
9
- newPreKeys: {
10
- [id: number]: KeyPair;
11
- };
12
- lastPreKeyId: number;
13
- preKeysRange: readonly [number, number];
14
- };
15
- export declare const xmppSignedPreKey: (key: SignedKeyPair) => BinaryNode;
16
- export declare const xmppPreKey: (pair: KeyPair, id: number) => BinaryNode;
17
- export declare const parseAndInjectE2ESessions: (node: BinaryNode, repository: SignalRepository) => Promise<void>;
18
- export declare const extractDeviceJids: (result: BinaryNode, myJid: string, excludeZeroDevices: boolean) => JidWithDevice[];
19
- /**
20
- * get the next N keys for upload or processing
21
- * @param count number of pre-keys to get or generate
22
- */
23
- export declare const getNextPreKeys: ({ creds, keys }: AuthenticationState, count: number) => Promise<{
24
- update: Partial<AuthenticationCreds>;
25
- preKeys: {
26
- [id: string]: KeyPair;
27
- };
28
- }>;
29
- export declare const getNextPreKeysNode: (state: AuthenticationState, count: number) => Promise<{
30
- update: Partial<AuthenticationCreds>;
31
- node: BinaryNode;
32
- }>;
@@ -1,13 +0,0 @@
1
- import { AuthenticationState } from '../Types';
2
- /**
3
- * stores the full authentication state in a single folder.
4
- * Far more efficient than singlefileauthstate
5
- *
6
- * Again, I wouldn't endorse this for any production level use other than perhaps a bot.
7
- * Would recommend writing an auth state for use with a proper SQL or No-SQL DB
8
- * */
9
- export declare const useMultiFileAuthState: (folder: string) => Promise<{
10
- state: AuthenticationState;
11
- saveCreds: () => Promise<void>;
12
- }>;
13
-
@@ -1,11 +0,0 @@
1
- import { proto } from '../../WAProto';
2
- import type { AuthenticationCreds, SignalCreds, SocketConfig } from '../Types';
3
- import { BinaryNode } from '../WABinary';
4
- export declare const generateMobileNode: (config: SocketConfig) => proto.IClientPayload;
5
- export declare const generateLoginNode: (userJid: string, config: SocketConfig) => proto.IClientPayload;
6
- export declare const generateRegistrationNode: ({ registrationId, signedPreKey, signedIdentityKey }: SignalCreds, config: SocketConfig) => proto.ClientPayload;
7
- export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecretKey, signedIdentityKey, signalIdentities }: Pick<AuthenticationCreds, 'advSecretKey' | 'signedIdentityKey' | 'signalIdentities'>) => {
8
- creds: Partial<AuthenticationCreds>;
9
- reply: BinaryNode;
10
- };
11
- export declare const encodeSignedDeviceIdentity: (account: proto.IADVSignedDeviceIdentity, includeSignatureKey: boolean) => Uint8Array;
@@ -1,237 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encodeSignedDeviceIdentity = exports.configureSuccessfulPairing = exports.generateRegistrationNode = exports.generateLoginNode = void 0;
4
- const boom_1 = require("@hapi/boom");
5
- const crypto_1 = require("crypto");
6
- const WAProto_1 = require("../../WAProto");
7
- const Defaults_1 = require("../Defaults");
8
- const WABinary_1 = require("../WABinary");
9
- const crypto_2 = require("./crypto");
10
- const generics_1 = require("./generics");
11
- const signal_1 = require("./signal");
12
-
13
- const getUserAgent = (config) => {
14
- return {
15
- appVersion: {
16
- primary: config.version[0],
17
- secondary: config.version[1],
18
- tertiary: config.version[2],
19
- },
20
- platform: WAProto_1.proto.ClientPayload.UserAgent.Platform.WEB,
21
- releaseChannel: WAProto_1.proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
22
- osVersion: '0.1',
23
- device: 'Desktop',
24
- osBuildNumber: '0.1',
25
- localeLanguageIso6391: 'en',
26
- mnc: '000',
27
- mcc: '000',
28
- localeCountryIso31661Alpha2: config.countryCode || 'US'
29
- };
30
- };
31
-
32
- exports.Browsers = {
33
- iOS: (browser) => ["ios", browser, "18.2"],
34
- ubuntu: (browser) => ['Ubuntu', browser, '22.04.4'],
35
- macOS: (browser) => ['Mac OS', browser, '14.4.1'],
36
- baileys: (browser) => ['Baileys', browser, '6.5.0'],
37
- windows: (browser) => ['Windows', browser, '10.0.22631']
38
- };
39
-
40
- const PLATFORM_MAP = {
41
- 'Mac OS': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
42
- 'Windows': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
43
- };
44
-
45
- const getWebInfo = (config) => {
46
- let webSubPlatform = WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
47
- if (config.syncFullHistory && PLATFORM_MAP[config.browser[0]] && config.browser[1] === 'Desktop') {
48
- webSubPlatform = PLATFORM_MAP[config.browser[0]];
49
- }
50
- return { webSubPlatform };
51
- };
52
-
53
- const getClientPayload = (config) => {
54
- const payload = {
55
- connectType: WAProto_1.proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
56
- connectReason: WAProto_1.proto.ClientPayload.ConnectReason.USER_ACTIVATED,
57
- userAgent: getUserAgent(config),
58
- };
59
- payload.webInfo = getWebInfo(config);
60
- return payload;
61
- };
62
-
63
- const generateLoginNode = (userJid, config) => {
64
- const { user, device } = (0, WABinary_1.jidDecode)(userJid);
65
- const payload = {
66
- ...getClientPayload(config),
67
- passive: true,
68
- pull: true,
69
- username: +user,
70
- device: device,
71
- lidDbMigrated: false
72
- };
73
- return WAProto_1.proto.ClientPayload.fromObject(payload);
74
- };
75
- exports.generateLoginNode = generateLoginNode;
76
-
77
- const getPlatformType = (platform) => {
78
- const platformType = platform.toUpperCase();
79
- return WAProto_1.proto.DeviceProps.PlatformType[platformType] || WAProto_1.proto.DeviceProps.PlatformType.CHROME;
80
- };
81
-
82
- const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
83
- const appVersionBuf = (0, crypto_1.createHash)('md5')
84
- .update(config.version.join('.'))
85
- .digest();
86
-
87
- const companion = {
88
- os: config.browser[0],
89
- platformType: getPlatformType(config.browser[1]),
90
- requireFullSync: config.syncFullHistory,
91
- historySyncConfig: {
92
- storageQuotaMb: 10240,
93
- inlineInitialPayloadInE2EeMsg: true,
94
- recentSyncDaysLimit: undefined,
95
- supportCallLogHistory: false,
96
- supportBotUserAgentChatHistory: true,
97
- supportCagReactionsAndPolls: true,
98
- supportBizHostedMsg: true,
99
- supportRecentSyncChunkMessageCountTuning: true,
100
- supportHostedGroupMsg: true,
101
- supportFbidBotChatHistory: true,
102
- supportAddOnHistorySyncMigration: undefined,
103
- supportMessageAssociation: true,
104
- supportGroupHistory: false,
105
- onDemandReady: undefined,
106
- supportGuestChat: undefined
107
- },
108
- version: {
109
- primary: 10,
110
- secondary: 15,
111
- tertiary: 7
112
- }
113
- };
114
-
115
- const companionProto = WAProto_1.proto.DeviceProps.encode(companion).finish();
116
-
117
- const registerPayload = {
118
- ...getClientPayload(config),
119
- passive: false,
120
- pull: false,
121
- devicePairingData: {
122
- buildHash: appVersionBuf,
123
- deviceProps: companionProto,
124
- eRegid: (0, generics_1.encodeBigEndian)(registrationId),
125
- eKeytype: Defaults_1.KEY_BUNDLE_TYPE,
126
- eIdent: signedIdentityKey.public,
127
- eSkeyId: (0, generics_1.encodeBigEndian)(signedPreKey.keyId, 3),
128
- eSkeyVal: signedPreKey.keyPair.public,
129
- eSkeySig: signedPreKey.signature,
130
- },
131
- };
132
- return WAProto_1.proto.ClientPayload.fromObject(registerPayload);
133
- };
134
- exports.generateRegistrationNode = generateRegistrationNode;
135
-
136
- const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, signalIdentities }) => {
137
- const msgId = stanza.attrs.id;
138
- const pairSuccessNode = (0, WABinary_1.getBinaryNodeChild)(stanza, 'pair-success');
139
- const deviceIdentityNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'device-identity');
140
- const platformNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'platform');
141
- const deviceNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'device');
142
- const businessNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'biz');
143
-
144
- if (!deviceIdentityNode || !deviceNode) {
145
- throw new boom_1.Boom('Missing device-identity or device in pair success node', { data: stanza });
146
- }
147
-
148
- const bizName = businessNode?.attrs.name;
149
- const jid = deviceNode.attrs.jid;
150
- const lid = deviceNode.attrs.lid;
151
-
152
- const { details, hmac, accountType } = WAProto_1.proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
153
-
154
- let hmacPrefix = Buffer.from([]);
155
- if (accountType !== undefined && accountType === WAProto_1.proto.ADVEncryptionType.HOSTED) {
156
- hmacPrefix = Buffer.from([0x06, 0x05]);
157
- }
158
-
159
- const advSign = (0, crypto_2.hmacSign)(Buffer.concat([hmacPrefix, details]), Buffer.from(advSecretKey, 'base64'));
160
- if (Buffer.compare(hmac, advSign) !== 0) {
161
- throw new boom_1.Boom('Invalid account signature');
162
- }
163
-
164
- const account = WAProto_1.proto.ADVSignedDeviceIdentity.decode(details);
165
- const { accountSignatureKey, accountSignature, details: deviceDetails } = account;
166
-
167
- const deviceIdentity = WAProto_1.proto.ADVDeviceIdentity.decode(deviceDetails);
168
-
169
- const accountSignaturePrefix = deviceIdentity.deviceType === WAProto_1.proto.ADVEncryptionType.HOSTED
170
- ? Buffer.from([0x06, 0x05])
171
- : Buffer.from([0x06, 0x00]);
172
- const accountMsg = Buffer.concat([accountSignaturePrefix, deviceDetails, signedIdentityKey.public]);
173
-
174
- if (!crypto_2.Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
175
- throw new boom_1.Boom('Failed to verify account signature');
176
- }
177
-
178
- const deviceMsg = Buffer.concat([
179
- Buffer.from([0x06, 0x01]),
180
- deviceDetails,
181
- signedIdentityKey.public,
182
- accountSignatureKey
183
- ]);
184
- account.deviceSignature = crypto_2.Curve.sign(signedIdentityKey.private, deviceMsg);
185
-
186
- const identity = (0, signal_1.createSignalIdentity)(jid, accountSignatureKey);
187
- const accountEnc = (0, exports.encodeSignedDeviceIdentity)(account, false);
188
-
189
- const reply = {
190
- tag: 'iq',
191
- attrs: {
192
- to: WABinary_1.S_WHATSAPP_NET,
193
- type: 'result',
194
- id: msgId,
195
- },
196
- content: [
197
- {
198
- tag: 'pair-device-sign',
199
- attrs: {},
200
- content: [
201
- {
202
- tag: 'device-identity',
203
- attrs: { 'key-index': deviceIdentity.keyIndex.toString() },
204
- content: accountEnc
205
- }
206
- ]
207
- }
208
- ]
209
- };
210
-
211
- const authUpdate = {
212
- account,
213
- me: { id: jid, name: bizName, lid },
214
- signalIdentities: [
215
- ...(signalIdentities || []),
216
- identity
217
- ],
218
- platform: platformNode?.attrs.name
219
- };
220
-
221
- return {
222
- creds: authUpdate,
223
- reply
224
- };
225
- };
226
- exports.configureSuccessfulPairing = configureSuccessfulPairing;
227
-
228
- const encodeSignedDeviceIdentity = (account, includeSignatureKey) => {
229
- account = { ...account };
230
- if (!includeSignatureKey || !account.accountSignatureKey?.length) {
231
- account.accountSignatureKey = null;
232
- }
233
- return WAProto_1.proto.ADVSignedDeviceIdentity
234
- .encode(account)
235
- .finish();
236
- };
237
- exports.encodeSignedDeviceIdentity = encodeSignedDeviceIdentity;
@@ -1,30 +0,0 @@
1
- export declare const TAGS: {
2
- LIST_EMPTY: number
3
- DICTIONARY_0: number
4
- DICTIONARY_1: number
5
- DICTIONARY_2: number
6
- DICTIONARY_3: number
7
- INTEROP_JID: number
8
- FB_JID: number
9
- AD_JID: number
10
- LIST_8: number
11
- LIST_16: number
12
- JID_PAIR: number
13
- HEX_8: number
14
- BINARY_8: number
15
- BINARY_20: number
16
- BINARY_32: number
17
- NIBBLE_8: number
18
- PACKED_MAX: number
19
- }
20
-
21
- export declare const DOUBLE_BYTE_TOKENS: string[][]
22
-
23
- export declare const SINGLE_BYTE_TOKENS: (string | null)[]
24
-
25
- export declare const TOKEN_MAP: {
26
- [token: string]: {
27
- dict?: number
28
- index: number
29
- }
30
- }
@@ -1,7 +0,0 @@
1
- /// <reference types="node" />
2
- import type { BinaryNode, BinaryNodeCodingOptions } from './types';
3
- export declare const decompressingIfRequired: (buffer: Buffer) => Buffer;
4
- export declare const decodeDecompressedBinaryNode: (buffer: Buffer, opts: Pick<BinaryNodeCodingOptions, 'DOUBLE_BYTE_TOKENS' | 'SINGLE_BYTE_TOKENS' | 'TAGS'>, indexRef?: {
5
- index: number;
6
- }) => BinaryNode;
7
- export declare const decodeBinaryNode: (buff: Buffer) => BinaryNode;
@@ -1,3 +0,0 @@
1
- /// <reference types="node" />
2
- import type { BinaryNode, BinaryNodeCodingOptions } from './types';
3
- export declare const encodeBinaryNode: ({ tag, attrs, content }: BinaryNode, opts?: Pick<BinaryNodeCodingOptions, 'TAGS' | 'TOKEN_MAP'>, buffer?: number[]) => Buffer;
@@ -1,17 +0,0 @@
1
- /// <reference types="node" />
2
- import { proto } from '../../WAProto';
3
- import { BinaryNode } from './types';
4
- export declare const getBinaryNodeChildren: (node: BinaryNode | undefined, childTag: string) => BinaryNode[];
5
- export declare const getAllBinaryNodeChildren: ({ content }: BinaryNode) => BinaryNode[];
6
- export declare const getBinaryNodeChild: (node: BinaryNode | undefined, childTag: string) => BinaryNode | undefined;
7
- export declare const getBinaryNodeChildBuffer: (node: BinaryNode | undefined, childTag: string) => Uint8Array | Buffer | undefined;
8
- export declare const getBinaryNodeChildString: (node: BinaryNode | undefined, childTag: string) => string | undefined;
9
- export declare const getBinaryNodeChildUInt: (node: BinaryNode, childTag: string, length: number) => number | undefined;
10
- export declare const assertNodeErrorFree: (node: BinaryNode) => void;
11
- export declare const reduceBinaryNodeToDictionary: (node: BinaryNode, tag: string) => {
12
- [_: string]: string;
13
- };
14
- export declare const getBinaryNodeMessages: ({ content }: BinaryNode) => proto.WebMessageInfo[];
15
- export declare function binaryNodeToString(node: BinaryNode | BinaryNode['content'], i?: number): any;
16
- export declare const getBinaryNodeFilter: (node: BinaryNode[]) => boolean;
17
- export declare const getAdditionalNode: (name: string) => BinaryNode[];
@@ -1,5 +0,0 @@
1
- export * from './encode';
2
- export * from './decode';
3
- export * from './generic-utils';
4
- export * from './jid-utils';
5
- export * from './types';
@@ -1,31 +0,0 @@
1
- export declare const S_WHATSAPP_NET = "@s.whatsapp.net";
2
- export declare const OFFICIAL_BIZ_JID = "16505361212@c.us";
3
- export declare const SERVER_JID = "server@c.us";
4
- export declare const PSA_WID = "0@c.us";
5
- export declare const STORIES_JID = "status@broadcast";
6
- export type JidServer = 'c.us' | 'g.us' | 'broadcast' | 's.whatsapp.net' | 'call' | 'lid' | 'newsletter';
7
- export type JidWithDevice = {
8
- user: string;
9
- device?: number;
10
- };
11
- export type FullJid = JidWithDevice & {
12
- server: JidServer | string;
13
- domainType?: number;
14
- };
15
- export declare const jidEncode: (user: string | number | null, server: JidServer, device?: number, agent?: number) => string;
16
- export declare const jidDecode: (jid: string | undefined) => FullJid | undefined;
17
- /** is the jid a user */
18
- export declare const areJidsSameUser: (jid1: string | undefined, jid2: string | undefined) => boolean;
19
- /** is the jid a user */
20
- export declare const isJidUser: (jid: string | undefined) => boolean | undefined;
21
- /** is the jid a group */
22
- export declare const isLidUser: (jid: string | undefined) => boolean | undefined;
23
- /** is the jid a broadcast */
24
- export declare const isJidBroadcast: (jid: string | undefined) => boolean | undefined;
25
- /** is the jid a group */
26
- export declare const isJidGroup: (jid: string | undefined) => boolean | undefined;
27
- /** is the jid the status broadcast */
28
- export declare const isJidStatusBroadcast: (jid: string) => boolean;
29
- /** is the jid the newsletter */
30
- export declare const isJidNewsLetter: (jid: string | undefined) => boolean | undefined;
31
- export declare const jidNormalizedUser: (jid: string | undefined) => string;
@@ -1,18 +0,0 @@
1
- import * as constants from './constants';
2
- /**
3
- * the binary node WA uses internally for communication
4
- *
5
- * this is manipulated soley as an object and it does not have any functions.
6
- * This is done for easy serialization, to prevent running into issues with prototypes &
7
- * to maintain functional code structure
8
- * */
9
- export type BinaryNode = {
10
- tag: string;
11
- attrs: {
12
- [key: string]: string;
13
- };
14
- content?: BinaryNode[] | string | Uint8Array;
15
- };
16
- export type BinaryNodeAttributes = BinaryNode['attrs'];
17
- export type BinaryNodeData = BinaryNode['content'];
18
- export type BinaryNodeCodingOptions = typeof constants;
@@ -1,17 +0,0 @@
1
- /// <reference types="node" />
2
- export declare class BinaryInfo {
3
- protocolVersion: number;
4
- sequence: number;
5
- events: {
6
- [x: string]: {
7
- props: {
8
- [x: string]: any;
9
- };
10
- globals: {
11
- [x: string]: any;
12
- };
13
- };
14
- }[];
15
- buffer: Buffer[];
16
- constructor(options?: Partial<BinaryInfo>);
17
- }
@@ -1,38 +0,0 @@
1
- export declare const WEB_EVENTS: Event[];
2
- export declare const WEB_GLOBALS: Global[];
3
- export declare const FLAG_BYTE = 8, FLAG_GLOBAL = 0, FLAG_EVENT = 1, FLAG_FIELD = 2, FLAG_EXTENDED = 4;
4
- export type Event = {
5
- name: string;
6
- id: number;
7
- props: {
8
- [key: string]: [number, string | {
9
- [key: string]: number;
10
- }];
11
- };
12
- weight: number;
13
- wamChannel: string;
14
- privateStatsIdInt: number;
15
- };
16
- export type Global = {
17
- name: string;
18
- id: number;
19
- type: string | {
20
- [key: string]: number;
21
- };
22
- validator?: string;
23
- channels: string[];
24
- };
25
- type EventByName<T extends Event['name']> = Extract<Event, {
26
- name: T;
27
- }>;
28
- export type EventInputType = {
29
- [key in Event['name']]: {
30
- props: {
31
- [k in keyof EventByName<key>['props']]: any;
32
- };
33
- globals: {
34
- [x: string]: any;
35
- };
36
- };
37
- } & {};
38
- export {};
@@ -1,3 +0,0 @@
1
- /// <reference types="node" />
2
- import { BinaryInfo } from './BinaryInfo';
3
- export declare const encodeWAM: (binaryInfo: BinaryInfo) => Buffer;
@@ -1,3 +0,0 @@
1
- export * from './constants';
2
- export * from './encode';
3
- export * from './BinaryInfo';
@@ -1,9 +0,0 @@
1
- import { USyncQueryProtocol } from '../../Types/USync';
2
- import { BinaryNode } from '../../WABinary';
3
- import { USyncUser } from '../USyncUser';
4
- export declare class USyncContactProtocol implements USyncQueryProtocol {
5
- name: string;
6
- getQueryElement(): BinaryNode;
7
- getUserElement(user: USyncUser): BinaryNode;
8
- parser(node: BinaryNode): boolean;
9
- }
@@ -1,22 +0,0 @@
1
- import { USyncQueryProtocol } from '../../Types/USync';
2
- import { BinaryNode } from '../../WABinary';
3
- export type KeyIndexData = {
4
- timestamp: number;
5
- signedKeyIndex?: Uint8Array;
6
- expectedTimestamp?: number;
7
- };
8
- export type DeviceListData = {
9
- id: number;
10
- keyIndex?: number;
11
- isHosted?: boolean;
12
- };
13
- export type ParsedDeviceInfo = {
14
- deviceList?: DeviceListData[];
15
- keyIndex?: KeyIndexData;
16
- };
17
- export declare class USyncDeviceProtocol implements USyncQueryProtocol {
18
- name: string;
19
- getQueryElement(): BinaryNode;
20
- getUserElement(): BinaryNode | null;
21
- parser(node: BinaryNode): ParsedDeviceInfo;
22
- }