socketon 0.31.0 → 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 (211) 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 +270 -282
  35. package/lib/Socket/socket.js +798 -635
  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 -464
  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 +385 -261
  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 -212
  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 -36
  107. package/package.json +61 -85
  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/history.d.ts +0 -15
  178. package/lib/Utils/index.d.ts +0 -17
  179. package/lib/Utils/link-preview.d.ts +0 -21
  180. package/lib/Utils/logger.d.ts +0 -4
  181. package/lib/Utils/lt-hash.d.ts +0 -12
  182. package/lib/Utils/make-mutex.d.ts +0 -7
  183. package/lib/Utils/messages-media.d.ts +0 -116
  184. package/lib/Utils/messages.d.ts +0 -77
  185. package/lib/Utils/noise-handler.d.ts +0 -21
  186. package/lib/Utils/process-message.d.ts +0 -41
  187. package/lib/Utils/signal.d.ts +0 -32
  188. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  189. package/lib/Utils/validate-connection.d.ts +0 -11
  190. package/lib/WABinary/constants.d.ts +0 -30
  191. package/lib/WABinary/decode.d.ts +0 -7
  192. package/lib/WABinary/encode.d.ts +0 -3
  193. package/lib/WABinary/generic-utils.d.ts +0 -17
  194. package/lib/WABinary/index.d.ts +0 -5
  195. package/lib/WABinary/jid-utils.d.ts +0 -31
  196. package/lib/WABinary/types.d.ts +0 -18
  197. package/lib/WAM/BinaryInfo.d.ts +0 -17
  198. package/lib/WAM/constants.d.ts +0 -38
  199. package/lib/WAM/encode.d.ts +0 -3
  200. package/lib/WAM/index.d.ts +0 -3
  201. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  202. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  203. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  204. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  205. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  206. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  207. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  208. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  209. package/lib/WAUSync/USyncUser.d.ts +0 -12
  210. package/lib/WAUSync/index.d.ts +0 -3
  211. package/lib/index.d.ts +0 -12
@@ -1,267 +0,0 @@
1
- /// <reference types="node" />
2
- import { AxiosRequestConfig } from 'axios';
3
- import { KeyPair, SignedKeyPair, SocketConfig } from '../Types';
4
- export declare const makeRegistrationSocket: (config: SocketConfig) => {
5
- register: (code: string) => Promise<ExistsResponse>;
6
- requestRegistrationCode: (registrationOptions?: RegistrationOptions) => Promise<ExistsResponse>;
7
- logger: import("pino").Logger<import("pino").LoggerOptions>;
8
- getOrderDetails: (orderId: string, tokenBase64: string) => Promise<import("../Types").OrderDetails>;
9
- getCatalog: ({ jid, limit, cursor }: import("../Types").GetCatalogOptions) => Promise<{
10
- products: import("../Types").Product[];
11
- nextPageCursor: string | undefined;
12
- }>;
13
- getCollections: (jid?: string | undefined, limit?: number) => Promise<{
14
- collections: import("../Types").CatalogCollection[];
15
- }>;
16
- productCreate: (create: import("../Types").ProductCreate) => Promise<import("../Types").Product>;
17
- productDelete: (productIds: string[]) => Promise<{
18
- deleted: number;
19
- }>;
20
- productUpdate: (productId: string, update: import("../Types").ProductUpdate) => Promise<import("../Types").Product>;
21
- sendMessageAck: ({ tag, attrs, content }: import("../WABinary").BinaryNode) => Promise<void>;
22
- sendRetryRequest: (node: import("../WABinary").BinaryNode, forceIncludeKeys?: boolean) => Promise<void>;
23
- offerCall: (toJid: string, isVideo?: boolean) => Promise<{
24
- id: string;
25
- to: string;
26
- }>;
27
- rejectCall: (callId: string, callFrom: string) => Promise<void>;
28
- getPrivacyTokens: (jids: string[]) => Promise<import("../WABinary").BinaryNode>;
29
- assertSessions: (jids: string[], force: boolean) => Promise<boolean>;
30
- relayMessage: (jid: string, message: import("../Types").WAProto.IMessage, { messageId: msgId, participant, additionalAttributes, additionalNodes, useUserDevicesCache, cachedGroupMetadata, statusJidList }: import("../Types").MessageRelayOptions) => Promise<string>;
31
- sendReceipt: (jid: string, participant: string | undefined, messageIds: string[], type: import("../Types").MessageReceiptType) => Promise<void>;
32
- sendReceipts: (keys: import("../Types").WAProto.IMessageKey[], type: import("../Types").MessageReceiptType) => Promise<void>;
33
- getButtonArgs: (message: import("../Types").WAProto.IMessage) => {
34
- [key: string]: string;
35
- };
36
- readMessages: (keys: import("../Types").WAProto.IMessageKey[]) => Promise<void>;
37
- refreshMediaConn: (forceGet?: boolean) => Promise<import("../Types").MediaConnInfo>;
38
- getUSyncDevices: (jids: string[], useCache: boolean, ignoreZeroDevices: boolean) => Promise<import("../WABinary").JidWithDevice[]>;
39
- createParticipantNodes: (jids: string[], message: import("../Types").WAProto.IMessage, extraAttrs?: {
40
- [key: string]: string;
41
- } | undefined) => Promise<{
42
- nodes: import("../WABinary").BinaryNode[];
43
- shouldIncludeDeviceIdentity: boolean;
44
- }>;
45
- waUploadToServer: import("../Types").WAMediaUploadFunction;
46
- fetchPrivacySettings: (force?: boolean) => Promise<{
47
- [_: string]: string;
48
- }>;
49
- updateMediaMessage: (message: import("../Types").WAProto.IWebMessageInfo) => Promise<import("../Types").WAProto.IWebMessageInfo>;
50
- sendMessage: (jid: string, content: import("../Types").AnyMessageContent, options?: import("../Types").MiscMessageGenerationOptions) => Promise<import("../Types").WAProto.WebMessageInfo | undefined>;
51
- subscribeNewsletterUpdates: (jid: string) => Promise<{
52
- duration: string;
53
- }>;
54
- newsletterReactionMode: (jid: string, mode: import("../Types").NewsletterReactionMode) => Promise<void>;
55
- newsletterUpdateDescription: (jid: string, description?: string | undefined) => Promise<void>;
56
- newsletterUpdateName: (jid: string, name: string) => Promise<void>;
57
- newsletterUpdatePicture: (jid: string, content: import("../Types").WAMediaUpload) => Promise<void>;
58
- newsletterRemovePicture: (jid: string) => Promise<void>;
59
- newsletterUnfollow: (jid: string) => Promise<void>;
60
- newsletterFollow: (jid: string) => Promise<void>;
61
- newsletterUnmute: (jid: string) => Promise<void>;
62
- newsletterMute: (jid: string) => Promise<void>;
63
- newsletterAction: (jid: string, type: "mute" | "follow" | "unfollow" | "unmute") => Promise<void>;
64
- newsletterCreate: (name: string, description: string, reaction_codes: string) => Promise<import("../Types").NewsletterMetadata>;
65
- newsletterMetadata: (type: "invite" | "jid", key: string, role?: import("../Types").NewsletterViewRole | undefined) => Promise<import("../Types").NewsletterMetadata>;
66
- newsletterAdminCount: (jid: string) => Promise<number>;
67
- newsletterChangeOwner: (jid: string, user: string) => Promise<void>;
68
- newsletterDemote: (jid: string, user: string) => Promise<void>;
69
- newsletterDelete: (jid: string) => Promise<void>;
70
- newsletterReactMessage: (jid: string, serverId: string, code?: string | undefined) => Promise<void>;
71
- newsletterFetchMessages: (type: "invite" | "jid", key: string, count: number, after?: number | undefined) => Promise<import("../Types").NewsletterFetchedUpdate[]>;
72
- newsletterFetchUpdates: (jid: string, count: number, after?: number | undefined, since?: number | undefined) => Promise<import("../Types").NewsletterFetchedUpdate[]>;
73
- groupMetadata: (jid: string) => Promise<import("../Types").GroupMetadata>;
74
- groupCreate: (subject: string, participants: string[]) => Promise<import("../Types").GroupMetadata>;
75
- groupLeave: (id: string) => Promise<void>;
76
- /** the network code of your mobile network
77
- * @see {@link https://de.wikipedia.org/wiki/Mobile_Network_Code}
78
- */
79
- groupUpdateSubject: (jid: string, subject: string) => Promise<void>;
80
- groupRequestParticipantsList: (jid: string) => Promise<{
81
- [key: string]: string;
82
- }[]>;
83
- groupRequestParticipantsUpdate: (jid: string, participants: string[], action: "reject" | "approve") => Promise<{
84
- status: string;
85
- jid: string;
86
- }[]>;
87
- groupParticipantsUpdate: (jid: string, participants: string[], action: import("../Types").ParticipantAction) => Promise<{
88
- status: string;
89
- jid: string;
90
- content: import("../WABinary").BinaryNode;
91
- }[]>;
92
- groupUpdateDescription: (jid: string, description?: string | undefined) => Promise<void>;
93
- groupInviteCode: (jid: string) => Promise<string | undefined>;
94
- groupRevokeInvite: (jid: string) => Promise<string | undefined>;
95
- groupAcceptInvite: (code: string) => Promise<string | undefined>;
96
- groupAcceptInviteV4: (key: string | import("../Types").WAProto.IMessageKey, inviteMessage: import("../Types").WAProto.Message.IGroupInviteMessage) => Promise<string>;
97
- groupGetInviteInfo: (code: string) => Promise<import("../Types").GroupMetadata>;
98
- groupToggleEphemeral: (jid: string, ephemeralExpiration: number) => Promise<void>;
99
- groupSettingUpdate: (jid: string, setting: "announcement" | "locked" | "not_announcement" | "unlocked") => Promise<void>;
100
- groupMemberAddMode: (jid: string, mode: "all_member_add" | "admin_add") => Promise<void>;
101
- groupJoinApprovalMode: (jid: string, mode: "on" | "off") => Promise<void>;
102
- groupFetchAllParticipating: () => Promise<{
103
- [_: string]: import("../Types").GroupMetadata;
104
- }>;
105
- processingMutex: {
106
- mutex<T>(code: () => T | Promise<T>): Promise<T>;
107
- };
108
- upsertMessage: (msg: import("../Types").WAProto.IWebMessageInfo, type: import("../Types").MessageUpsertType) => Promise<void>;
109
- appPatch: (patchCreate: import("../Types").WAPatchCreate) => Promise<void>;
110
- sendPresenceUpdate: (type: import("../Types").WAPresence, toJid?: string | undefined) => Promise<void>;
111
- presenceSubscribe: (toJid: string, tcToken?: Buffer | undefined) => Promise<void>;
112
- profilePictureUrl: (jid: string, type?: "image" | "preview", timeoutMs?: number | undefined) => Promise<string | undefined>;
113
- onWhatsApp: (...jids: string[]) => Promise<{
114
- exists: boolean;
115
- jid: string;
116
- }[]>;
117
- fetchBlocklist: () => Promise<string[]>;
118
- fetchStatus: (jid: string) => Promise<{
119
- status: string | undefined;
120
- setAt: Date;
121
- } | undefined>;
122
- updateProfilePicture: (jid: string, content: import("../Types").WAMediaUpload) => Promise<void>;
123
- removeProfilePicture: (jid: string) => Promise<void>;
124
- updateProfileStatus: (status: string) => Promise<void>;
125
- updateProfileName: (name: string) => Promise<void>;
126
- updateBlockStatus: (jid: string, action: "block" | "unblock") => Promise<void>;
127
- updateLastSeenPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
128
- updateOnlinePrivacy: (value: import("../Types").WAPrivacyOnlineValue) => Promise<void>;
129
- updateProfilePicturePrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
130
- updateStatusPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
131
- updateReadReceiptsPrivacy: (value: import("../Types").WAReadReceiptsValue) => Promise<void>;
132
- updateGroupsAddPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
133
- updateDefaultDisappearingMode: (duration: number) => Promise<void>;
134
- getBusinessProfile: (jid: string) => Promise<void | import("../Types").WABusinessProfile>;
135
- resyncAppState: (collections: readonly ("critical_block" | "critical_unblock_low" | "regular_high" | "regular_low" | "regular")[], isInitialSync: boolean) => Promise<void>;
136
- chatModify: (mod: import("../Types").ChatModification, jid: string) => Promise<void>;
137
- cleanDirtyBits: (type: "account_sync" | "groups", fromTimestamp?: string | number | undefined) => Promise<void>;
138
- addChatLabel: (jid: string, labelId: string) => Promise<void>;
139
- removeChatLabel: (jid: string, labelId: string) => Promise<void>;
140
- addMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
141
- removeMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
142
- star: (jid: string, messages: {
143
- id: string;
144
- fromMe?: boolean | undefined;
145
- }[], star: boolean) => Promise<void>;
146
- type: "md";
147
- ws: any;
148
- ev: import("../Types").BaileysEventEmitter & {
149
- process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
150
- buffer(): void;
151
- createBufferedFunction<A extends any[], T_1>(work: (...args: A) => Promise<T_1>): (...args: A) => Promise<T_1>;
152
- flush(force?: boolean | undefined): boolean;
153
- isBuffering(): boolean;
154
- };
155
- authState: {
156
- creds: import("../Types").AuthenticationCreds;
157
- keys: import("../Types").SignalKeyStoreWithTransaction;
158
- };
159
- signalRepository: import("../Types").SignalRepository;
160
- user: import("../Types").Contact | undefined;
161
- generateMessageTag: () => string;
162
- query: (node: import("../WABinary").BinaryNode, timeoutMs?: number | undefined) => Promise<import("../WABinary").BinaryNode>;
163
- waitForMessage: <T_2>(msgId: string, timeoutMs?: number | undefined) => Promise<T_2>;
164
- waitForSocketOpen: () => Promise<void>;
165
- sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
166
- sendNode: (frame: import("../WABinary").BinaryNode) => Promise<void>;
167
- logout: (msg?: string | undefined) => Promise<void>;
168
- end: (error: Error | undefined) => void;
169
- onUnexpectedError: (err: Error | import("@hapi/boom").Boom<any>, msg: string) => void;
170
- uploadPreKeys: (count?: number) => Promise<void>;
171
- uploadPreKeysToServerIfRequired: () => Promise<void>;
172
- requestPairingCode: (phoneNumber: string, pairKey?: string) => Promise<string>;
173
- waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>;
174
- sendWAMBuffer: (wamBuffer: Buffer) => Promise<import("../WABinary").BinaryNode>;
175
- };
176
- export interface RegistrationData {
177
- registrationId: number;
178
- signedPreKey: SignedKeyPair;
179
- noiseKey: KeyPair;
180
- signedIdentityKey: KeyPair;
181
- identityId: Buffer;
182
- phoneId: string;
183
- deviceId: string;
184
- backupToken: Buffer;
185
- }
186
- export interface RegistrationOptions {
187
- /** your phone number */
188
- phoneNumber?: string;
189
- /** the country code of your phone number */
190
- phoneNumberCountryCode: string;
191
- /** your phone number without country code */
192
- phoneNumberNationalNumber: string;
193
- /** the country code of your mobile network
194
- * @see {@link https://de.wikipedia.org/wiki/Mobile_Country_Code}
195
- */
196
- phoneNumberMobileCountryCode: string;
197
- /** the network code of your mobile network
198
- * @see {@link https://de.wikipedia.org/wiki/Mobile_Network_Code}
199
- */
200
- phoneNumberMobileNetworkCode: string;
201
- /**
202
- * How to send the one time code
203
- */
204
- method?: 'sms' | 'voice' | 'captcha';
205
- /**
206
- * The captcha code if it was requested
207
- */
208
- captcha?: string;
209
- }
210
- export type RegistrationParams = RegistrationData & RegistrationOptions;
211
- export declare function registrationParams(params: RegistrationParams): {
212
- cc: string;
213
- in: string;
214
- Rc: string;
215
- lg: string;
216
- lc: string;
217
- mistyped: string;
218
- authkey: string;
219
- e_regid: string;
220
- e_keytype: string;
221
- e_ident: string;
222
- e_skey_id: string;
223
- e_skey_val: string;
224
- e_skey_sig: string;
225
- fdid: string;
226
- network_ratio_type: string;
227
- expid: string;
228
- simnum: string;
229
- hasinrc: string;
230
- pid: string;
231
- id: string;
232
- backup_token: string;
233
- token: string;
234
- fraud_checkpoint_code: string | undefined;
235
- };
236
- /**
237
- * Requests a registration code for the given phone number.
238
- */
239
- export declare function mobileRegisterCode(params: RegistrationParams, fetchOptions?: AxiosRequestConfig): Promise<ExistsResponse>;
240
- export declare function mobileRegisterExists(params: RegistrationParams, fetchOptions?: AxiosRequestConfig): Promise<ExistsResponse>;
241
- /**
242
- * Registers the phone number on whatsapp with the received OTP code.
243
- */
244
- export declare function mobileRegister(params: RegistrationParams & {
245
- code: string;
246
- }, fetchOptions?: AxiosRequestConfig): Promise<ExistsResponse>;
247
- /**
248
- * Encrypts the given string as AEAD aes-256-gcm with the public whatsapp key and a random keypair.
249
- */
250
- export declare function mobileRegisterEncrypt(data: string): string;
251
- export declare function mobileRegisterFetch(path: string, opts?: AxiosRequestConfig): Promise<ExistsResponse>;
252
- export interface ExistsResponse {
253
- status: 'fail' | 'sent';
254
- voice_length?: number;
255
- voice_wait?: number;
256
- sms_length?: number;
257
- sms_wait?: number;
258
- reason?: 'incorrect' | 'missing_param' | 'code_checkpoint';
259
- login?: string;
260
- flash_type?: number;
261
- ab_hash?: string;
262
- ab_key?: string;
263
- exp_cfg?: string;
264
- lid?: string;
265
- image_blob?: string;
266
- audio_blob?: string;
267
- }
@@ -1,166 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.mobileRegisterFetch = exports.mobileRegisterEncrypt = exports.mobileRegister = exports.mobileRegisterExists = exports.mobileRegisterCode = exports.registrationParams = exports.makeRegistrationSocket = void 0;
7
- /* eslint-disable camelcase */
8
- const axios_1 = __importDefault(require("axios"));
9
- const Defaults_1 = require("../Defaults");
10
- const crypto_1 = require("../Utils/crypto");
11
- const WABinary_1 = require("../WABinary");
12
- const business_1 = require("./business");
13
- function urlencode(str) {
14
- return str.replace(/-/g, '%2d').replace(/_/g, '%5f').replace(/~/g, '%7e');
15
- }
16
- const validRegistrationOptions = (config) => (config === null || config === void 0 ? void 0 : config.phoneNumberCountryCode) &&
17
- config.phoneNumberNationalNumber &&
18
- config.phoneNumberMobileCountryCode;
19
- const makeRegistrationSocket = (config) => {
20
- const sock = (0, business_1.makeBusinessSocket)(config);
21
- const register = async (code) => {
22
- if (!validRegistrationOptions(config.auth.creds.registration)) {
23
- throw new Error('please specify the registration options');
24
- }
25
- const result = await mobileRegister({ ...sock.authState.creds, ...sock.authState.creds.registration, code }, config.options);
26
- sock.authState.creds.me = {
27
- id: (0, WABinary_1.jidEncode)(result.login, 's.whatsapp.net'),
28
- name: '~'
29
- };
30
- sock.authState.creds.registered = true;
31
- sock.ev.emit('creds.update', sock.authState.creds);
32
- return result;
33
- };
34
- const requestRegistrationCode = async (registrationOptions) => {
35
- registrationOptions = registrationOptions || config.auth.creds.registration;
36
- if (!validRegistrationOptions(registrationOptions)) {
37
- throw new Error('Invalid registration options');
38
- }
39
- sock.authState.creds.registration = registrationOptions;
40
- sock.ev.emit('creds.update', sock.authState.creds);
41
- return mobileRegisterCode({ ...config.auth.creds, ...registrationOptions }, config.options);
42
- };
43
- return {
44
- ...sock,
45
- register,
46
- requestRegistrationCode,
47
- };
48
- };
49
- exports.makeRegistrationSocket = makeRegistrationSocket;
50
- function convertBufferToUrlHex(buffer) {
51
- var id = '';
52
- buffer.forEach((x) => {
53
- // encode random identity_id buffer as percentage url encoding
54
- id += `%${x.toString(16).padStart(2, '0').toLowerCase()}`;
55
- });
56
- return id;
57
- }
58
- function registrationParams(params) {
59
- const e_regid = Buffer.alloc(4);
60
- e_regid.writeInt32BE(params.registrationId);
61
- const e_skey_id = Buffer.alloc(3);
62
- e_skey_id.writeInt16BE(params.signedPreKey.keyId);
63
- params.phoneNumberCountryCode = params.phoneNumberCountryCode.replace('+', '').trim();
64
- params.phoneNumberNationalNumber = params.phoneNumberNationalNumber.replace(/[/-\s)(]/g, '').trim();
65
- return {
66
- cc: params.phoneNumberCountryCode,
67
- in: params.phoneNumberNationalNumber,
68
- Rc: '0',
69
- lg: 'en',
70
- lc: 'GB',
71
- mistyped: '6',
72
- authkey: Buffer.from(params.noiseKey.public).toString('base64url'),
73
- e_regid: e_regid.toString('base64url'),
74
- e_keytype: 'BQ',
75
- e_ident: Buffer.from(params.signedIdentityKey.public).toString('base64url'),
76
- // e_skey_id: e_skey_id.toString('base64url'),
77
- e_skey_id: 'AAAA',
78
- e_skey_val: Buffer.from(params.signedPreKey.keyPair.public).toString('base64url'),
79
- e_skey_sig: Buffer.from(params.signedPreKey.signature).toString('base64url'),
80
- fdid: params.phoneId,
81
- network_ratio_type: '1',
82
- expid: params.deviceId,
83
- simnum: '1',
84
- hasinrc: '1',
85
- pid: Math.floor(Math.random() * 1000).toString(),
86
- id: convertBufferToUrlHex(params.identityId),
87
- backup_token: convertBufferToUrlHex(params.backupToken),
88
- token: (0, crypto_1.md5)(Buffer.concat([Defaults_1.MOBILE_TOKEN, Buffer.from(params.phoneNumberNationalNumber)])).toString('hex'),
89
- fraud_checkpoint_code: params.captcha,
90
- };
91
- }
92
- exports.registrationParams = registrationParams;
93
- /**
94
- * Requests a registration code for the given phone number.
95
- */
96
- function mobileRegisterCode(params, fetchOptions) {
97
- return mobileRegisterFetch('/code', {
98
- params: {
99
- ...registrationParams(params),
100
- mcc: `${params.phoneNumberMobileCountryCode}`.padStart(3, '0'),
101
- mnc: `${params.phoneNumberMobileNetworkCode || '001'}`.padStart(3, '0'),
102
- sim_mcc: '000',
103
- sim_mnc: '000',
104
- method: (params === null || params === void 0 ? void 0 : params.method) || 'sms',
105
- reason: '',
106
- hasav: '1'
107
- },
108
- ...fetchOptions,
109
- });
110
- }
111
- exports.mobileRegisterCode = mobileRegisterCode;
112
- function mobileRegisterExists(params, fetchOptions) {
113
- return mobileRegisterFetch('/exist', {
114
- params: registrationParams(params),
115
- ...fetchOptions
116
- });
117
- }
118
- exports.mobileRegisterExists = mobileRegisterExists;
119
- /**
120
- * Registers the phone number on whatsapp with the received OTP code.
121
- */
122
- async function mobileRegister(params, fetchOptions) {
123
- //const result = await mobileRegisterFetch(`/reg_onboard_abprop?cc=${params.phoneNumberCountryCode}&in=${params.phoneNumberNationalNumber}&rc=0`)
124
- return mobileRegisterFetch('/register', {
125
- params: { ...registrationParams(params), code: params.code.replace('-', '') },
126
- ...fetchOptions,
127
- });
128
- }
129
- exports.mobileRegister = mobileRegister;
130
- /**
131
- * Encrypts the given string as AEAD aes-256-gcm with the public whatsapp key and a random keypair.
132
- */
133
- function mobileRegisterEncrypt(data) {
134
- const keypair = crypto_1.Curve.generateKeyPair();
135
- const key = crypto_1.Curve.sharedKey(keypair.private, Defaults_1.REGISTRATION_PUBLIC_KEY);
136
- const buffer = (0, crypto_1.aesEncryptGCM)(Buffer.from(data), new Uint8Array(key), Buffer.alloc(12), Buffer.alloc(0));
137
- return Buffer.concat([Buffer.from(keypair.public), buffer]).toString('base64url');
138
- }
139
- exports.mobileRegisterEncrypt = mobileRegisterEncrypt;
140
- async function mobileRegisterFetch(path, opts = {}) {
141
- let url = `${Defaults_1.MOBILE_REGISTRATION_ENDPOINT}${path}`;
142
- if (opts.params) {
143
- const parameter = [];
144
- for (const param in opts.params) {
145
- if (opts.params[param] !== null && opts.params[param] !== undefined) {
146
- parameter.push(param + '=' + urlencode(opts.params[param]));
147
- }
148
- }
149
- url += `?${parameter.join('&')}`;
150
- delete opts.params;
151
- }
152
- if (!opts.headers) {
153
- opts.headers = {};
154
- }
155
- opts.headers['User-Agent'] = Defaults_1.MOBILE_USERAGENT;
156
- const response = await (0, axios_1.default)(url, opts);
157
- var json = response.data;
158
- if (response.status > 300 || json.reason) {
159
- throw json;
160
- }
161
- if (json.status && !['ok', 'sent'].includes(json.status)) {
162
- throw json;
163
- }
164
- return json;
165
- }
166
- exports.mobileRegisterFetch = mobileRegisterFetch;
@@ -1,43 +0,0 @@
1
- /// <reference types="node" />
2
- import { Boom } from '@hapi/boom';
3
- import { SocketConfig } from '../Types';
4
- import { BinaryNode } from '../WABinary';
5
- /**
6
- * Connects to WA servers and performs:
7
- * - simple queries (no retry mechanism, wait for connection establishment)
8
- * - listen to messages and emit events
9
- * - query phone connection
10
- */
11
- export declare const makeSocket: (config: SocketConfig) => {
12
- type: "md";
13
- ws: any;
14
- ev: import("../Types").BaileysEventEmitter & {
15
- process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
16
- buffer(): void;
17
- createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): (...args: A) => Promise<T>;
18
- flush(force?: boolean | undefined): boolean;
19
- isBuffering(): boolean;
20
- };
21
- authState: {
22
- creds: import("../Types").AuthenticationCreds;
23
- keys: import("../Types").SignalKeyStoreWithTransaction;
24
- };
25
- signalRepository: import("../Types").SignalRepository;
26
- readonly user: import("../Types").Contact | undefined;
27
- generateMessageTag: () => string;
28
- query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
29
- waitForMessage: <T_1>(msgId: string, timeoutMs?: number | undefined) => Promise<T_1>;
30
- waitForSocketOpen: () => Promise<void>;
31
- sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
32
- sendNode: (frame: BinaryNode) => Promise<void>;
33
- logout: (msg?: string) => Promise<void>;
34
- end: (error: Error | undefined) => void;
35
- onUnexpectedError: (err: Error | Boom, msg: string) => void;
36
- uploadPreKeys: (count?: number) => Promise<void>;
37
- uploadPreKeysToServerIfRequired: () => Promise<void>;
38
- requestPairingCode: (phoneNumber: string, pairKey?: string) => Promise<string>;
39
- /** Waits for the connection to WA to reach a state */
40
- waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>;
41
- sendWAMBuffer: (wamBuffer: Buffer) => Promise<BinaryNode>;
42
- };
43
- export type Socket = ReturnType<typeof makeSocket>;
@@ -1,36 +0,0 @@
1
- import { Boom } from '@hapi/boom';
2
- import { SocketConfig } from '../Types';
3
- import { BinaryNode } from '../WABinary';
4
- import { USyncQuery } from '../WAUSync';
5
- export declare const makeUSyncSocket: (config: SocketConfig) => {
6
- executeUSyncQuery: (usyncQuery: USyncQuery) => Promise<import("../WAUSync").USyncQueryResult | undefined>;
7
- type: "md";
8
- ws: import("./Client").WebSocketClient;
9
- ev: import("../Types").BaileysEventEmitter & {
10
- process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): (() => void);
11
- buffer(): void;
12
- createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): ((...args: A) => Promise<T>);
13
- flush(force?: boolean): boolean;
14
- isBuffering(): boolean;
15
- };
16
- authState: {
17
- creds: import("../Types").AuthenticationCreds;
18
- keys: import("../Types").SignalKeyStoreWithTransaction;
19
- };
20
- signalRepository: import("../Types").SignalRepository;
21
- user: import("../Types").Contact | undefined;
22
- generateMessageTag: () => string;
23
- query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
24
- waitForMessage: <T>(msgId: string, timeoutMs?: number | undefined) => Promise<any>;
25
- waitForSocketOpen: () => Promise<void>;
26
- sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
27
- sendNode: (frame: BinaryNode) => Promise<void>;
28
- logout: (msg?: string) => Promise<void>;
29
- end: (error: Error | undefined) => void;
30
- onUnexpectedError: (err: Error | Boom, msg: string) => void;
31
- uploadPreKeys: (count?: number) => Promise<void>;
32
- uploadPreKeysToServerIfRequired: () => Promise<void>;
33
- requestPairingCode: (phoneNumber: string, pairKey?: string) => Promise<string>;
34
- waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => Promise<boolean | undefined>, timeoutMs?: number) => Promise<void>;
35
- sendWAMBuffer: (wamBuffer: Buffer) => Promise<BinaryNode>;
36
- };
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeUSyncSocket = void 0;
4
- const boom_1 = require("@hapi/boom");
5
- const WABinary_1 = require("../WABinary");
6
- const socket_1 = require("./socket");
7
- const makeUSyncSocket = (config) => {
8
- const sock = (0, socket_1.makeSocket)(config);
9
- const { generateMessageTag, query, } = sock;
10
- const executeUSyncQuery = async (usyncQuery) => {
11
- if (usyncQuery.protocols.length === 0) {
12
- throw new boom_1.Boom('USyncQuery must have at least one protocol');
13
- }
14
- // todo: validate users, throw WARNING on no valid users
15
- // variable below has only validated users
16
- const validUsers = usyncQuery.users;
17
- const userNodes = validUsers.map((user) => {
18
- return {
19
- tag: 'user',
20
- attrs: {
21
- jid: !user.phone ? user.id : undefined,
22
- },
23
- content: usyncQuery.protocols
24
- .map((a) => a.getUserElement(user))
25
- .filter(a => a !== null)
26
- };
27
- });
28
- const listNode = {
29
- tag: 'list',
30
- attrs: {},
31
- content: userNodes
32
- };
33
- const queryNode = {
34
- tag: 'query',
35
- attrs: {},
36
- content: usyncQuery.protocols.map((a) => a.getQueryElement())
37
- };
38
- const iq = {
39
- tag: 'iq',
40
- attrs: {
41
- to: WABinary_1.S_WHATSAPP_NET,
42
- type: 'get',
43
- xmlns: 'usync',
44
- },
45
- content: [
46
- {
47
- tag: 'usync',
48
- attrs: {
49
- context: usyncQuery.context,
50
- mode: usyncQuery.mode,
51
- sid: generateMessageTag(),
52
- last: 'true',
53
- index: '0',
54
- },
55
- content: [
56
- queryNode,
57
- listNode
58
- ]
59
- }
60
- ],
61
- };
62
- const result = await query(iq);
63
- return usyncQuery.parseUSyncQueryResult(result);
64
- };
65
- return {
66
- ...sock,
67
- executeUSyncQuery,
68
- };
69
- };
70
- exports.makeUSyncSocket = makeUSyncSocket;
@@ -1,3 +0,0 @@
1
- import makeCacheManagerAuthState from './make-cache-manager-store';
2
- import makeInMemoryStore from './make-in-memory-store';
3
- export { makeInMemoryStore, makeCacheManagerAuthState };
@@ -1,13 +0,0 @@
1
- import { AuthenticationCreds } from '../Types';
2
- declare const makeCacheManagerAuthState: (store: Storage, sessionKey: string) => Promise<{
3
- clearState: () => Promise<void>;
4
- saveCreds: () => Promise<void>;
5
- state: {
6
- creds: AuthenticationCreds;
7
- keys: {
8
- get: (type: string, ids: string[]) => Promise<{}>;
9
- set: (data: any) => Promise<void>;
10
- };
11
- };
12
- }>;
13
- export default makeCacheManagerAuthState;