dcodeindra-baileyspro 2.3.9

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 (286) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2534 -0
  3. package/WAProto/Adv/Adv.d.ts +518 -0
  4. package/WAProto/Adv/Adv.js +1734 -0
  5. package/WAProto/Adv/Adv.proto +36 -0
  6. package/WAProto/BotMetadata/BotMetadata.d.ts +5745 -0
  7. package/WAProto/BotMetadata/BotMetadata.js +16291 -0
  8. package/WAProto/BotMetadata/BotMetadata.proto +463 -0
  9. package/WAProto/Cert/Cert.d.ts +497 -0
  10. package/WAProto/Cert/Cert.js +1503 -0
  11. package/WAProto/Cert/Cert.proto +28 -0
  12. package/WAProto/ChatLockSettings/ChatLockSettings.d.ts +391 -0
  13. package/WAProto/ChatLockSettings/ChatLockSettings.js +1155 -0
  14. package/WAProto/ChatLockSettings/ChatLockSettings.proto +7 -0
  15. package/WAProto/CompanionReg/CompanionReg.d.ts +1055 -0
  16. package/WAProto/CompanionReg/CompanionReg.js +3532 -0
  17. package/WAProto/CompanionReg/CompanionReg.proto +89 -0
  18. package/WAProto/DeviceCapabilities/DeviceCapabilities.d.ts +187 -0
  19. package/WAProto/DeviceCapabilities/DeviceCapabilities.js +520 -0
  20. package/WAProto/DeviceCapabilities/DeviceCapabilities.proto +14 -0
  21. package/WAProto/E2E/E2E.d.ts +28417 -0
  22. package/WAProto/E2E/E2E.js +98438 -0
  23. package/WAProto/E2E/E2E.proto +2289 -0
  24. package/WAProto/Ephemeral/Ephemeral.d.ts +95 -0
  25. package/WAProto/Ephemeral/Ephemeral.js +269 -0
  26. package/WAProto/Ephemeral/Ephemeral.proto +6 -0
  27. package/WAProto/HistorySync/HistorySync.d.ts +40728 -0
  28. package/WAProto/HistorySync/HistorySync.js +142980 -0
  29. package/WAProto/HistorySync/HistorySync.proto +207 -0
  30. package/WAProto/LidMigrationSyncPayload/LidMigrationSyncPayload.d.ts +189 -0
  31. package/WAProto/LidMigrationSyncPayload/LidMigrationSyncPayload.js +585 -0
  32. package/WAProto/LidMigrationSyncPayload/LidMigrationSyncPayload.proto +11 -0
  33. package/WAProto/MdStorageChatRowOpaqueData/MdStorageChatRowOpaqueData.d.ts +461 -0
  34. package/WAProto/MdStorageChatRowOpaqueData/MdStorageChatRowOpaqueData.js +1559 -0
  35. package/WAProto/MdStorageChatRowOpaqueData/MdStorageChatRowOpaqueData.proto +37 -0
  36. package/WAProto/MdStorageMsgRowOpaqueData/MdStorageMsgRowOpaqueData.d.ts +29294 -0
  37. package/WAProto/MdStorageMsgRowOpaqueData/MdStorageMsgRowOpaqueData.js +101732 -0
  38. package/WAProto/MdStorageMsgRowOpaqueData/MdStorageMsgRowOpaqueData.proto +76 -0
  39. package/WAProto/MmsRetry/MmsRetry.d.ts +200 -0
  40. package/WAProto/MmsRetry/MmsRetry.js +586 -0
  41. package/WAProto/MmsRetry/MmsRetry.proto +17 -0
  42. package/WAProto/Protocol/Protocol.d.ts +218 -0
  43. package/WAProto/Protocol/Protocol.js +701 -0
  44. package/WAProto/Protocol/Protocol.proto +20 -0
  45. package/WAProto/Reporting/Reporting.d.ts +301 -0
  46. package/WAProto/Reporting/Reporting.js +989 -0
  47. package/WAProto/Reporting/Reporting.proto +19 -0
  48. package/WAProto/ServerSync/ServerSync.d.ts +1050 -0
  49. package/WAProto/ServerSync/ServerSync.js +3176 -0
  50. package/WAProto/ServerSync/ServerSync.proto +59 -0
  51. package/WAProto/SignalLocalStorageProtocol/SignalLocalStorageProtocol.d.ts +1507 -0
  52. package/WAProto/SignalLocalStorageProtocol/SignalLocalStorageProtocol.js +4756 -0
  53. package/WAProto/SignalLocalStorageProtocol/SignalLocalStorageProtocol.proto +88 -0
  54. package/WAProto/SignalWhisperTextProtocol/SignalWhisperTextProtocol.d.ts +617 -0
  55. package/WAProto/SignalWhisperTextProtocol/SignalWhisperTextProtocol.js +1940 -0
  56. package/WAProto/SignalWhisperTextProtocol/SignalWhisperTextProtocol.proto +38 -0
  57. package/WAProto/StatusAttributions/StatusAttributions.d.ts +636 -0
  58. package/WAProto/StatusAttributions/StatusAttributions.js +2037 -0
  59. package/WAProto/StatusAttributions/StatusAttributions.proto +61 -0
  60. package/WAProto/SyncAction/SyncAction.d.ts +7227 -0
  61. package/WAProto/SyncAction/SyncAction.js +22271 -0
  62. package/WAProto/SyncAction/SyncAction.proto +423 -0
  63. package/WAProto/UserPassword/UserPassword.d.ts +298 -0
  64. package/WAProto/UserPassword/UserPassword.js +898 -0
  65. package/WAProto/UserPassword/UserPassword.proto +27 -0
  66. package/WAProto/VnameCert/VnameCert.d.ts +658 -0
  67. package/WAProto/VnameCert/VnameCert.js +2225 -0
  68. package/WAProto/VnameCert/VnameCert.proto +60 -0
  69. package/WAProto/Wa6/Wa6.d.ts +1613 -0
  70. package/WAProto/Wa6/Wa6.js +6299 -0
  71. package/WAProto/Wa6/Wa6.proto +229 -0
  72. package/WAProto/Web/Web.d.ts +31718 -0
  73. package/WAProto/Web/Web.js +113402 -0
  74. package/WAProto/Web/Web.proto +545 -0
  75. package/WAProto/index.d.ts +49 -0
  76. package/WAProto/index.js +28 -0
  77. package/WASignalGroup/GroupProtocol.js +1771 -0
  78. package/WASignalGroup/ciphertext_message.js +10 -0
  79. package/WASignalGroup/group_cipher.js +103 -0
  80. package/WASignalGroup/group_session_builder.js +39 -0
  81. package/WASignalGroup/index.js +5 -0
  82. package/WASignalGroup/keyhelper.js +17 -0
  83. package/WASignalGroup/protobufs.js +2 -0
  84. package/WASignalGroup/queue_job.js +64 -0
  85. package/WASignalGroup/sender_chain_key.js +38 -0
  86. package/WASignalGroup/sender_key_distribution_message.js +68 -0
  87. package/WASignalGroup/sender_key_message.js +79 -0
  88. package/WASignalGroup/sender_key_name.js +59 -0
  89. package/WASignalGroup/sender_key_record.js +47 -0
  90. package/WASignalGroup/sender_key_state.js +110 -0
  91. package/WASignalGroup/sender_message_key.js +30 -0
  92. package/check-node-version.js +10 -0
  93. package/lib/Defaults/baileys-version.json +3 -0
  94. package/lib/Defaults/index.d.ts +51 -0
  95. package/lib/Defaults/index.js +108 -0
  96. package/lib/Defaults/phonenumber-mcc.json +223 -0
  97. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  98. package/lib/Signal/Group/ciphertext-message.js +19 -0
  99. package/lib/Signal/Group/group-session-builder.d.ts +17 -0
  100. package/lib/Signal/Group/group-session-builder.js +72 -0
  101. package/lib/Signal/Group/group_cipher.d.ts +19 -0
  102. package/lib/Signal/Group/group_cipher.js +99 -0
  103. package/lib/Signal/Group/index.d.ts +11 -0
  104. package/lib/Signal/Group/index.js +61 -0
  105. package/lib/Signal/Group/keyhelper.d.ts +16 -0
  106. package/lib/Signal/Group/keyhelper.js +66 -0
  107. package/lib/Signal/Group/queue-job.d.ts +1 -0
  108. package/lib/Signal/Group/queue-job.js +64 -0
  109. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  110. package/lib/Signal/Group/sender-chain-key.js +39 -0
  111. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  112. package/lib/Signal/Group/sender-key-distribution-message.js +71 -0
  113. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  114. package/lib/Signal/Group/sender-key-message.js +73 -0
  115. package/lib/Signal/Group/sender-key-name.d.ts +19 -0
  116. package/lib/Signal/Group/sender-key-name.js +59 -0
  117. package/lib/Signal/Group/sender-key-record.d.ts +32 -0
  118. package/lib/Signal/Group/sender-key-record.js +53 -0
  119. package/lib/Signal/Group/sender-key-record.ts +77 -0
  120. package/lib/Signal/Group/sender-key-state.d.ts +44 -0
  121. package/lib/Signal/Group/sender-key-state.js +104 -0
  122. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  123. package/lib/Signal/Group/sender-message-key.js +33 -0
  124. package/lib/Signal/libsignal.d.ts +3 -0
  125. package/lib/Signal/libsignal.js +153 -0
  126. package/lib/Socket/Client/index.d.ts +2 -0
  127. package/lib/Socket/Client/index.js +18 -0
  128. package/lib/Socket/Client/types.d.ts +15 -0
  129. package/lib/Socket/Client/types.js +14 -0
  130. package/lib/Socket/Client/websocket.d.ts +12 -0
  131. package/lib/Socket/Client/websocket.js +57 -0
  132. package/lib/Socket/business.d.ts +181 -0
  133. package/lib/Socket/business.js +259 -0
  134. package/lib/Socket/chats.d.ts +95 -0
  135. package/lib/Socket/chats.js +906 -0
  136. package/lib/Socket/community.d.ts +131 -0
  137. package/lib/Socket/community.js +369 -0
  138. package/lib/Socket/groups.d.ts +122 -0
  139. package/lib/Socket/groups.js +360 -0
  140. package/lib/Socket/index.d.ts +183 -0
  141. package/lib/Socket/index.js +10 -0
  142. package/lib/Socket/messages-recv.d.ts +170 -0
  143. package/lib/Socket/messages-recv.js +1074 -0
  144. package/lib/Socket/messages-send.d.ts +161 -0
  145. package/lib/Socket/messages-send.js +982 -0
  146. package/lib/Socket/newsletter.d.ts +140 -0
  147. package/lib/Socket/newsletter.js +242 -0
  148. package/lib/Socket/socket.d.ts +43 -0
  149. package/lib/Socket/socket.js +749 -0
  150. package/lib/Socket/usync.d.ts +36 -0
  151. package/lib/Socket/usync.js +71 -0
  152. package/lib/Store/index.d.ts +4 -0
  153. package/lib/Store/index.js +20 -0
  154. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  155. package/lib/Store/make-cache-manager-store.js +77 -0
  156. package/lib/Store/make-in-memory-store.d.ts +117 -0
  157. package/lib/Store/make-in-memory-store.js +420 -0
  158. package/lib/Store/make-ordered-dictionary.d.ts +12 -0
  159. package/lib/Store/make-ordered-dictionary.js +83 -0
  160. package/lib/Store/object-repository.d.ts +10 -0
  161. package/lib/Store/object-repository.js +28 -0
  162. package/lib/Types/Auth.d.ts +103 -0
  163. package/lib/Types/Auth.js +2 -0
  164. package/lib/Types/Call.d.ts +13 -0
  165. package/lib/Types/Call.js +2 -0
  166. package/lib/Types/Chat.d.ts +115 -0
  167. package/lib/Types/Chat.js +6 -0
  168. package/lib/Types/Contact.d.ts +35 -0
  169. package/lib/Types/Contact.js +2 -0
  170. package/lib/Types/Events.d.ts +208 -0
  171. package/lib/Types/Events.js +2 -0
  172. package/lib/Types/GroupMetadata.d.ts +81 -0
  173. package/lib/Types/GroupMetadata.js +2 -0
  174. package/lib/Types/Label.d.ts +46 -0
  175. package/lib/Types/Label.js +28 -0
  176. package/lib/Types/LabelAssociation.d.ts +29 -0
  177. package/lib/Types/LabelAssociation.js +10 -0
  178. package/lib/Types/Message.d.ts +480 -0
  179. package/lib/Types/Message.js +9 -0
  180. package/lib/Types/MexUpdates.d.ts +9 -0
  181. package/lib/Types/MexUpdates.js +18 -0
  182. package/lib/Types/Newsletter.d.ts +92 -0
  183. package/lib/Types/Newsletter.js +33 -0
  184. package/lib/Types/Product.d.ts +78 -0
  185. package/lib/Types/Product.js +2 -0
  186. package/lib/Types/Signal.d.ts +57 -0
  187. package/lib/Types/Signal.js +2 -0
  188. package/lib/Types/Socket.d.ts +116 -0
  189. package/lib/Types/Socket.js +2 -0
  190. package/lib/Types/State.d.ts +27 -0
  191. package/lib/Types/State.js +2 -0
  192. package/lib/Types/USync.d.ts +25 -0
  193. package/lib/Types/USync.js +2 -0
  194. package/lib/Types/index.d.ts +70 -0
  195. package/lib/Types/index.js +42 -0
  196. package/lib/Utils/auth-utils.d.ts +18 -0
  197. package/lib/Utils/auth-utils.js +198 -0
  198. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  199. package/lib/Utils/baileys-event-stream.js +64 -0
  200. package/lib/Utils/business.d.ts +22 -0
  201. package/lib/Utils/business.js +243 -0
  202. package/lib/Utils/chat-utils.d.ts +72 -0
  203. package/lib/Utils/chat-utils.js +762 -0
  204. package/lib/Utils/crypto.d.ts +40 -0
  205. package/lib/Utils/crypto.js +150 -0
  206. package/lib/Utils/decode-wa-message.d.ts +252 -0
  207. package/lib/Utils/decode-wa-message.js +232 -0
  208. package/lib/Utils/event-buffer.d.ts +35 -0
  209. package/lib/Utils/event-buffer.js +539 -0
  210. package/lib/Utils/generics.d.ts +96 -0
  211. package/lib/Utils/generics.js +553 -0
  212. package/lib/Utils/history.d.ts +29 -0
  213. package/lib/Utils/history.js +109 -0
  214. package/lib/Utils/index.d.ts +19 -0
  215. package/lib/Utils/index.js +35 -0
  216. package/lib/Utils/link-preview.d.ts +21 -0
  217. package/lib/Utils/link-preview.js +112 -0
  218. package/lib/Utils/logger.d.ts +11 -0
  219. package/lib/Utils/logger.js +7 -0
  220. package/lib/Utils/lt-hash.d.ts +12 -0
  221. package/lib/Utils/lt-hash.js +53 -0
  222. package/lib/Utils/make-mutex.d.ts +7 -0
  223. package/lib/Utils/make-mutex.js +45 -0
  224. package/lib/Utils/messages-media.d.ts +104 -0
  225. package/lib/Utils/messages-media.js +751 -0
  226. package/lib/Utils/messages.d.ts +80 -0
  227. package/lib/Utils/messages.js +1741 -0
  228. package/lib/Utils/noise-handler.d.ts +19 -0
  229. package/lib/Utils/noise-handler.js +150 -0
  230. package/lib/Utils/process-message.d.ts +41 -0
  231. package/lib/Utils/process-message.js +391 -0
  232. package/lib/Utils/signal.d.ts +33 -0
  233. package/lib/Utils/signal.js +154 -0
  234. package/lib/Utils/use-mongo-file-auth-state.d.ts +5 -0
  235. package/lib/Utils/use-mongo-file-auth-state.js +75 -0
  236. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -0
  237. package/lib/Utils/use-multi-file-auth-state.js +123 -0
  238. package/lib/Utils/use-single-file-auth-state.d.ts +12 -0
  239. package/lib/Utils/use-single-file-auth-state.js +75 -0
  240. package/lib/Utils/validate-connection.d.ts +10 -0
  241. package/lib/Utils/validate-connection.js +174 -0
  242. package/lib/WABinary/constants.d.ts +27 -0
  243. package/lib/WABinary/constants.js +45 -0
  244. package/lib/WABinary/decode.d.ts +6 -0
  245. package/lib/WABinary/decode.js +255 -0
  246. package/lib/WABinary/encode.d.ts +2 -0
  247. package/lib/WABinary/encode.js +243 -0
  248. package/lib/WABinary/generic-utils.d.ts +16 -0
  249. package/lib/WABinary/generic-utils.js +125 -0
  250. package/lib/WABinary/index.d.ts +5 -0
  251. package/lib/WABinary/index.js +21 -0
  252. package/lib/WABinary/jid-utils.d.ts +34 -0
  253. package/lib/WABinary/jid-utils.js +73 -0
  254. package/lib/WABinary/types.d.ts +18 -0
  255. package/lib/WABinary/types.js +2 -0
  256. package/lib/WAM/BinaryInfo.d.ts +16 -0
  257. package/lib/WAM/BinaryInfo.js +14 -0
  258. package/lib/WAM/constants.d.ts +39 -0
  259. package/lib/WAM/constants.js +15362 -0
  260. package/lib/WAM/encode.d.ts +2 -0
  261. package/lib/WAM/encode.js +156 -0
  262. package/lib/WAM/index.d.ts +3 -0
  263. package/lib/WAM/index.js +19 -0
  264. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +25 -0
  265. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +60 -0
  266. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  267. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  268. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  269. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +58 -0
  270. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  271. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +31 -0
  272. package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +8 -0
  273. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +26 -0
  274. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  275. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  276. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  277. package/lib/WAUSync/Protocols/index.js +22 -0
  278. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  279. package/lib/WAUSync/USyncQuery.js +88 -0
  280. package/lib/WAUSync/USyncUser.d.ts +12 -0
  281. package/lib/WAUSync/USyncUser.js +27 -0
  282. package/lib/WAUSync/index.d.ts +3 -0
  283. package/lib/WAUSync/index.js +19 -0
  284. package/lib/index.d.ts +13 -0
  285. package/lib/index.js +45 -0
  286. package/package.json +63 -0
@@ -0,0 +1,35 @@
1
+ "use strict"
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k
4
+ var desc = Object.getOwnPropertyDescriptor(m, k)
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k] } }
7
+ }
8
+ Object.defineProperty(o, k2, desc)
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k
11
+ o[k2] = m[k]
12
+ }))
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p)
15
+ }
16
+ Object.defineProperty(exports, "__esModule", { value: true })
17
+ __exportStar(require("./generics"), exports)
18
+ __exportStar(require("./decode-wa-message"), exports)
19
+ __exportStar(require("./messages"), exports)
20
+ __exportStar(require("./messages-media"), exports)
21
+ __exportStar(require("./validate-connection"), exports)
22
+ __exportStar(require("./crypto"), exports)
23
+ __exportStar(require("./signal"), exports)
24
+ __exportStar(require("./noise-handler"), exports)
25
+ __exportStar(require("./history"), exports)
26
+ __exportStar(require("./chat-utils"), exports)
27
+ __exportStar(require("./lt-hash"), exports)
28
+ __exportStar(require("./auth-utils"), exports)
29
+ __exportStar(require("./baileys-event-stream"), exports)
30
+ __exportStar(require("./use-mongo-file-auth-state"), exports)
31
+ __exportStar(require("./use-single-file-auth-state"), exports)
32
+ __exportStar(require("./use-multi-file-auth-state"), exports)
33
+ __exportStar(require("./link-preview"), exports)
34
+ __exportStar(require("./event-buffer"), exports)
35
+ __exportStar(require("./process-message"), exports)
@@ -0,0 +1,21 @@
1
+ import { AxiosRequestConfig } from 'axios'
2
+ import { WAMediaUploadFunction, WAUrlInfo } from '../Types'
3
+ import { ILogger } from './logger'
4
+ export type URLGenerationOptions = {
5
+ thumbnailWidth: number
6
+ fetchOpts: {
7
+ /** Timeout in ms */
8
+ timeout: number
9
+ proxyUrl?: string
10
+ headers?: AxiosRequestConfig<{}>['headers']
11
+ }
12
+ uploadImage?: WAMediaUploadFunction
13
+ logger?: ILogger
14
+ }
15
+ /**
16
+ * Given a piece of text, checks for any URL present, generates link preview for the same and returns it
17
+ * Return undefined if the fetch failed or no URL was found
18
+ * @param text first matched URL in text
19
+ * @returns the URL info required to generate link preview
20
+ */
21
+ export declare const getUrlInfo: (text: string, opts?: URLGenerationOptions) => Promise<WAUrlInfo | undefined>
@@ -0,0 +1,112 @@
1
+ "use strict"
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k
4
+ var desc = Object.getOwnPropertyDescriptor(m, k)
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k] } }
7
+ }
8
+ Object.defineProperty(o, k2, desc)
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k
11
+ o[k2] = m[k]
12
+ }))
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v })
15
+ }) : function(o, v) {
16
+ o["default"] = v
17
+ })
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod
20
+ var result = {}
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k)
22
+ __setModuleDefault(result, mod)
23
+ return result
24
+ }
25
+ Object.defineProperty(exports, "__esModule", { value: true })
26
+ const messages_1 = require("./messages")
27
+ const messages_media_1 = require("./messages-media")
28
+ const THUMBNAIL_WIDTH_PX = 192
29
+ /** Fetches an image and generates a thumbnail for it */
30
+ const getCompressedJpegThumbnail = async (url, { thumbnailWidth, fetchOpts }) => {
31
+ const stream = await messages_media_1.getHttpStream(url, fetchOpts)
32
+ const result = await messages_media_1.extractImageThumb(stream, thumbnailWidth)
33
+ return result
34
+ }
35
+ /**
36
+ * Given a piece of text, checks for any URL present, generates link preview for the same and returns it
37
+ * Return undefined if the fetch failed or no URL was found
38
+ * @param text first matched URL in text
39
+ * @returns the URL info required to generate link preview
40
+ */
41
+ const getUrlInfo = async (text, opts = { thumbnailWidth: THUMBNAIL_WIDTH_PX, fetchOpts: { timeout: 3000 }}) => {
42
+ try {
43
+ const retries = 0
44
+ const maxRetry = 5
45
+ const { getLinkPreview } = await Promise.resolve().then(() => __importStar(require('link-preview-js')))
46
+ let previewLink = text
47
+ if (!text.startsWith('https://') && !text.startsWith('http://')) {
48
+ previewLink = 'https://' + previewLink
49
+ }
50
+ const info = await getLinkPreview(previewLink, {
51
+ ...opts.fetchOpts,
52
+ followRedirects: 'follow',
53
+ handleRedirects: (baseURL, forwardedURL) => {
54
+ const urlObj = new URL(baseURL)
55
+ const forwardedURLObj = new URL(forwardedURL)
56
+ if (retries >= maxRetry) {
57
+ return false
58
+ }
59
+ if (forwardedURLObj.hostname === urlObj.hostname
60
+ || forwardedURLObj.hostname === 'www.' + urlObj.hostname
61
+ || 'www.' + forwardedURLObj.hostname === urlObj.hostname) {
62
+ retries + 1
63
+ return true
64
+ }
65
+ else {
66
+ return false
67
+ }
68
+ },
69
+ headers: opts.fetchOpts
70
+ })
71
+ if (info && 'title' in info && info.title) {
72
+ const [image] = info.images
73
+ const urlInfo = {
74
+ 'canonical-url': info.url,
75
+ 'matched-text': text,
76
+ title: info.title,
77
+ description: info.description,
78
+ originalThumbnailUrl: image
79
+ }
80
+ if (opts.uploadImage) {
81
+ const { imageMessage } = await messages_1.prepareWAMessageMedia({ image: { url: image } }, {
82
+ upload: opts.uploadImage,
83
+ mediaTypeOverride: 'thumbnail-link',
84
+ options: opts.fetchOpts
85
+ })
86
+ urlInfo.jpegThumbnail = imageMessage?.jpegThumbnail
87
+ ? Buffer.from(imageMessage.jpegThumbnail)
88
+ : undefined
89
+ urlInfo.highQualityThumbnail = imageMessage || undefined
90
+ }
91
+ else {
92
+ try {
93
+ urlInfo.jpegThumbnail = image
94
+ ? (await getCompressedJpegThumbnail(image, opts)).buffer
95
+ : undefined
96
+ }
97
+ catch (error) {
98
+ opts.logger?.debug({ err: error.stack, url: previewLink }, 'error in generating thumbnail')
99
+ }
100
+ }
101
+ return urlInfo
102
+ }
103
+ }
104
+ catch (error) {
105
+ if (!error.message.includes('receive a valid')) {
106
+ throw error
107
+ }
108
+ }
109
+ }
110
+ module.exports = {
111
+ getUrlInfo
112
+ }
@@ -0,0 +1,11 @@
1
+ export interface ILogger {
2
+ level: string
3
+ child(obj: Record<string, unknown>): ILogger
4
+ trace(obj: unknown, msg?: string): any
5
+ debug(obj: unknown, msg?: string): any
6
+ info(obj: unknown, msg?: string): any
7
+ warn(obj: unknown, msg?: string): any
8
+ error(obj: unknown, msg?: string): any
9
+ }
10
+ declare const _default: import("pino").Logger<never, boolean>
11
+ export default _default
@@ -0,0 +1,7 @@
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
+ const pino_1 = __importDefault(require("pino"))
7
+ exports.default = pino_1.default({ timestamp: () => `,"time":"${new Date().toJSON()}"` })
@@ -0,0 +1,12 @@
1
+ declare class d {
2
+ salt: string
3
+ constructor(e: string)
4
+ add(e: any, t: any): any
5
+ subtract(e: any, t: any): any
6
+ subtractThenAdd(e: any, t: any, r: any): any
7
+ _addSingle(e: any, t: any): Promise<ArrayBuffer>
8
+ _subtractSingle(e: any, t: any): Promise<ArrayBuffer>
9
+ performPointwiseWithOverflow(e: any, t: any, r: any): ArrayBuffer
10
+ }
11
+ export declare const LT_HASH_ANTI_TAMPERING: d
12
+ export {}
@@ -0,0 +1,53 @@
1
+ "use strict"
2
+ Object.defineProperty(exports, "__esModule", { value: true })
3
+ const crypto_1 = require("./crypto")
4
+ /**
5
+ * LT Hash is a summation based hash algorithm that maintains the integrity of a piece of data
6
+ * over a series of mutations. You can add/remove mutations and it'll return a hash equal to
7
+ * if the same series of mutations was made sequentially.
8
+ */
9
+ const o = 128
10
+ class d {
11
+ constructor(e) {
12
+ this.salt = e
13
+ }
14
+ add(e, t) {
15
+ var r = this
16
+ for (const item of t) {
17
+ e = r._addSingle(e, item)
18
+ }
19
+ return e
20
+ }
21
+ subtract(e, t) {
22
+ var r = this
23
+ for (const item of t) {
24
+ e = r._subtractSingle(e, item)
25
+ }
26
+ return e
27
+ }
28
+ subtractThenAdd(e, t, r) {
29
+ var n = this
30
+ return n.add(n.subtract(e, r), t)
31
+ }
32
+ async _addSingle(e, t) {
33
+ var r = this
34
+ const n = new Uint8Array(await crypto_1.hkdf(Buffer.from(t), o, { info: r.salt })).buffer
35
+ return r.performPointwiseWithOverflow(await e, n, ((e, t) => e + t))
36
+ }
37
+ async _subtractSingle(e, t) {
38
+ var r = this
39
+ const n = new Uint8Array(await crypto_1.hkdf(Buffer.from(t), o, { info: r.salt })).buffer
40
+ return r.performPointwiseWithOverflow(await e, n, ((e, t) => e - t))
41
+ }
42
+ performPointwiseWithOverflow(e, t, r) {
43
+ const n = new DataView(e), i = new DataView(t), a = new ArrayBuffer(n.byteLength), s = new DataView(a)
44
+ for (let e = 0; e < n.byteLength; e += 2) {
45
+ s.setUint16(e, r(n.getUint16(e, !0), i.getUint16(e, !0)), !0)
46
+ }
47
+ return a
48
+ }
49
+ }
50
+ const LT_HASH_ANTI_TAMPERING = new d('WhatsApp Patch Integrity')
51
+ module.exports = {
52
+ LT_HASH_ANTI_TAMPERING
53
+ }
@@ -0,0 +1,7 @@
1
+ export declare const makeMutex: () => {
2
+ mutex<T>(code: () => T | Promise<T>): Promise<T>
3
+ }
4
+ export type Mutex = ReturnType<typeof makeMutex>
5
+ export declare const makeKeyedMutex: () => {
6
+ mutex<T>(key: string, task: () => T | Promise<T>): Promise<T>
7
+ }
@@ -0,0 +1,45 @@
1
+ "use strict"
2
+ Object.defineProperty(exports, "__esModule", { value: true })
3
+ const makeMutex = () => {
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ let task = Promise.resolve()
6
+ let taskTimeout
7
+ return {
8
+ mutex(code) {
9
+ task = (async () => {
10
+ // wait for the previous task to complete
11
+ // if there is an error, we swallow so as to not block the queue
12
+ try {
13
+ await task
14
+ }
15
+ catch (_a) { }
16
+ try {
17
+ // execute the current task
18
+ const result = await code()
19
+ return result
20
+ }
21
+ finally {
22
+ clearTimeout(taskTimeout)
23
+ }
24
+ })()
25
+ // we replace the existing task, appending the new piece of execution to it
26
+ // so the next task will have to wait for this one to finish
27
+ return task
28
+ },
29
+ }
30
+ }
31
+ const makeKeyedMutex = () => {
32
+ const map = {}
33
+ return {
34
+ mutex(key, task) {
35
+ if (!map[key]) {
36
+ map[key] = makeMutex()
37
+ }
38
+ return map[key].mutex(task)
39
+ }
40
+ }
41
+ }
42
+ module.exports = {
43
+ makeMutex,
44
+ makeKeyedMutex
45
+ }
@@ -0,0 +1,104 @@
1
+ import { Boom } from '@hapi/boom'
2
+ import { AxiosRequestConfig } from 'axios'
3
+ import { Readable, Transform } from 'stream'
4
+ import { URL } from 'url'
5
+ import { proto } from '../../WAProto'
6
+ import { DownloadableMessage, MediaConnInfo, MediaDecryptionKeyInfo, MediaType, SocketConfig, WAMediaUpload, WAMediaUploadFunction, WAMessageContent } from '../Types'
7
+ import { BinaryNode } from '../WABinary'
8
+ import { ILogger } from './logger'
9
+ export declare const hkdfInfoKey: (type: MediaType) => string
10
+ /** generates all the keys required to encrypt/decrypt & sign a media message */
11
+ export declare function getMediaKeys(buffer: Uint8Array | string | null | undefined, mediaType: MediaType): MediaDecryptionKeyInfo
12
+ export declare const extractImageThumb: (bufferOrFilePath: Readable | Buffer | string, width?: number) => Promise<{
13
+ buffer: Buffer
14
+ original: {
15
+ width: number | undefined
16
+ height: number | undefined
17
+ }
18
+ }>
19
+ export declare const encodeBase64EncodedStringForUpload: (b64: string) => string
20
+ export declare const generateProfilePicture: (mediaUpload: WAMediaUpload) => Promise<{
21
+ img: Buffer
22
+ }>
23
+ /** gets the SHA256 of the given media message */
24
+ export declare const mediaMessageSHA256B64: (message: WAMessageContent) => string | null | undefined
25
+ export declare function getAudioDuration(buffer: Buffer | string | Readable): Promise<number | undefined>
26
+ /**
27
+ referenced from and modifying https://github.com/wppconnect-team/wa-js/blob/main/src/chat/functions/prepareAudioWaveform.ts
28
+ */
29
+ export declare function getAudioWaveform(buffer: Buffer | string | Readable, logger?: ILogger): Promise<Uint8Array | undefined>
30
+ export declare const toReadable: (buffer: Buffer) => Readable
31
+ export declare const toBuffer: (stream: Readable) => Promise<Buffer>
32
+ export declare const getStream: (item: WAMediaUpload, opts?: AxiosRequestConfig) => Promise<{
33
+ readonly stream: Readable
34
+ readonly type: "buffer"
35
+ } | {
36
+ readonly stream: Readable
37
+ readonly type: "readable"
38
+ } | {
39
+ readonly stream: Readable
40
+ readonly type: "remote"
41
+ } | {
42
+ readonly stream: import("fs").ReadStream
43
+ readonly type: "file"
44
+ }>
45
+ /** generates a thumbnail for a given media, if required */
46
+ export declare function generateThumbnail(file: string, mediaType: 'video' | 'image', options: {
47
+ logger?: Logger
48
+ }): Promise<{
49
+ thumbnail: string | undefined
50
+ originalImageDimensions: {
51
+ width: number
52
+ height: number
53
+ } | undefined
54
+ }>
55
+ export declare const getHttpStream: (url: string | URL, options?: AxiosRequestConfig & {
56
+ isStream?: true
57
+ }) => Promise<Readable>
58
+ type EncryptedStreamOptions = {
59
+ saveOriginalFileIfRequired?: boolean
60
+ logger?: Logger
61
+ opts?: AxiosRequestConfig
62
+ }
63
+ export declare const encryptedStream: (media: WAMediaUpload, mediaType: MediaType, { logger, saveOriginalFileIfRequired, opts }?: EncryptedStreamOptions) => Promise<{
64
+ mediaKey: Buffer
65
+ encWriteStream: Readable
66
+ bodyPath: string | undefined
67
+ mac: Buffer
68
+ fileEncSha256: Buffer
69
+ fileSha256: Buffer
70
+ fileLength: number
71
+ didSaveToTmpPath: boolean
72
+ }>
73
+ export type MediaDownloadOptions = {
74
+ startByte?: number
75
+ endByte?: number
76
+ options?: AxiosRequestConfig<{}>
77
+ }
78
+ export declare const getUrlFromDirectPath: (directPath: string) => string
79
+ export declare const downloadContentFromMessage: ({ mediaKey, directPath, url }: DownloadableMessage, type: MediaType, opts?: MediaDownloadOptions) => Promise<Transform>
80
+ /**
81
+ * Decrypts and downloads an AES256-CBC encrypted file given the keys.
82
+ * Assumes the SHA256 of the plaintext is appended to the end of the ciphertext
83
+ * */
84
+ export declare const downloadEncryptedContent: (downloadUrl: string, { cipherKey, iv }: MediaDecryptionKeyInfo, { startByte, endByte, options }?: MediaDownloadOptions) => Promise<Transform>
85
+ export declare function extensionForMediaMessage(message: WAMessageContent): string
86
+ export declare const getWAUploadToServer: ({ customUploadHosts, fetchAgent, logger, options }: SocketConfig, refreshMediaConn: (force: boolean) => Promise<MediaConnInfo>) => WAMediaUploadFunction
87
+ /**
88
+ * Generate a binary node that will request the phone to re-upload the media & return the newly uploaded URL
89
+ */
90
+ export declare const encryptMediaRetryRequest: (key: proto.IMessageKey, mediaKey: Buffer | Uint8Array, meId: string) => BinaryNode
91
+ export declare const decodeMediaRetryNode: (node: BinaryNode) => {
92
+ key: proto.IMessageKey
93
+ media?: {
94
+ ciphertext: Uint8Array
95
+ iv: Uint8Array
96
+ } | undefined
97
+ error?: Boom<any> | undefined
98
+ }
99
+ export declare const decryptMediaRetryData: ({ ciphertext, iv }: {
100
+ ciphertext: Uint8Array
101
+ iv: Uint8Array
102
+ }, mediaKey: Uint8Array, msgId: string) => Promise<proto.MediaRetryNotification>
103
+ export declare const getStatusCodeForMediaRetry: (code: number) => any
104
+ export {}