@neelegirl/baileys 1.5.2 → 1.5.3

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 (193) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +195 -187
  3. package/WAProto/WAProto.proto +537 -236
  4. package/WAProto/index.d.ts +5971 -2388
  5. package/WAProto/index.js +17298 -6513
  6. package/lib/Defaults/baileys-version.json +3 -3
  7. package/lib/Defaults/index.d.ts +77 -67
  8. package/lib/Defaults/index.js +148 -136
  9. package/lib/Defaults/phonenumber-mcc.json +223 -223
  10. package/lib/Signal/WASignalGroup/GroupProtocol.js +1908 -1908
  11. package/lib/Signal/WASignalGroup/ciphertext-message.d.ts +9 -0
  12. package/lib/Signal/WASignalGroup/ciphertext-message.js +19 -0
  13. package/lib/Signal/WASignalGroup/ciphertext_message.js +15 -15
  14. package/lib/Signal/WASignalGroup/group-session-builder.d.ts +17 -0
  15. package/lib/Signal/WASignalGroup/group-session-builder.js +72 -0
  16. package/lib/Signal/WASignalGroup/group.proto +41 -41
  17. package/lib/Signal/WASignalGroup/group_cipher.d.ts +19 -0
  18. package/lib/Signal/WASignalGroup/group_cipher.js +101 -110
  19. package/lib/Signal/WASignalGroup/group_session_builder.js +45 -45
  20. package/lib/Signal/WASignalGroup/index.d.ts +11 -0
  21. package/lib/Signal/WASignalGroup/index.js +61 -6
  22. package/lib/Signal/WASignalGroup/keyhelper.d.ts +16 -0
  23. package/lib/Signal/WASignalGroup/keyhelper.js +58 -13
  24. package/lib/Signal/WASignalGroup/protobufs.js +2 -2
  25. package/lib/Signal/WASignalGroup/queue_job.js +68 -68
  26. package/lib/Signal/WASignalGroup/readme.md +5 -5
  27. package/lib/Signal/WASignalGroup/sender-chain-key.d.ts +14 -0
  28. package/lib/Signal/WASignalGroup/sender-chain-key.js +47 -0
  29. package/lib/Signal/WASignalGroup/sender-key-distribution-message.d.ts +17 -0
  30. package/lib/Signal/WASignalGroup/sender-key-distribution-message.js +71 -0
  31. package/lib/Signal/WASignalGroup/sender-key-message.d.ts +19 -0
  32. package/lib/Signal/WASignalGroup/sender-key-message.js +73 -0
  33. package/lib/Signal/WASignalGroup/sender-key-name.d.ts +19 -0
  34. package/lib/Signal/WASignalGroup/sender-key-name.js +59 -0
  35. package/lib/Signal/WASignalGroup/sender-key-record.d.ts +32 -0
  36. package/lib/Signal/WASignalGroup/sender-key-record.js +58 -0
  37. package/lib/Signal/WASignalGroup/sender-key-state.d.ts +44 -0
  38. package/lib/Signal/WASignalGroup/sender-key-state.js +147 -0
  39. package/lib/Signal/WASignalGroup/sender-message-key.d.ts +11 -0
  40. package/lib/Signal/WASignalGroup/sender-message-key.js +33 -0
  41. package/lib/Signal/WASignalGroup/sender_chain_key.js +49 -49
  42. package/lib/Signal/WASignalGroup/sender_key_distribution_message.js +77 -77
  43. package/lib/Signal/WASignalGroup/sender_key_message.js +91 -91
  44. package/lib/Signal/WASignalGroup/sender_key_name.js +69 -69
  45. package/lib/Signal/WASignalGroup/sender_key_record.js +55 -55
  46. package/lib/Signal/WASignalGroup/sender_key_state.js +128 -128
  47. package/lib/Signal/WASignalGroup/sender_message_key.js +38 -38
  48. package/lib/Signal/libsignal.d.ts +5 -1
  49. package/lib/Signal/libsignal.js +390 -161
  50. package/lib/Signal/lid-mapping.d.ts +28 -0
  51. package/lib/Signal/lid-mapping.js +184 -0
  52. package/lib/Socket/Client/abstract-socket-client.d.ts +15 -15
  53. package/lib/Socket/Client/abstract-socket-client.js +13 -13
  54. package/lib/Socket/Client/index.d.ts +2 -2
  55. package/lib/Socket/Client/mobile-socket-client.d.ts +12 -12
  56. package/lib/Socket/Client/mobile-socket-client.js +65 -65
  57. package/lib/Socket/Client/types.d.ts +1 -1
  58. package/lib/Socket/Client/websocket.d.ts +1 -1
  59. package/lib/Socket/business.d.ts +6 -6
  60. package/lib/Socket/business.js +152 -5
  61. package/lib/Socket/chats.d.ts +3 -4
  62. package/lib/Socket/chats.js +31 -26
  63. package/lib/Socket/communities.d.ts +223 -223
  64. package/lib/Socket/communities.js +432 -432
  65. package/lib/Socket/groups.d.ts +2 -4
  66. package/lib/Socket/groups.js +22 -14
  67. package/lib/Socket/index.d.ts +69 -69
  68. package/lib/Socket/index.js +3 -2
  69. package/lib/Socket/messages-recv.d.ts +3 -6
  70. package/lib/Socket/messages-recv.js +1449 -1707
  71. package/lib/Socket/messages-send.d.ts +2 -4
  72. package/lib/Socket/messages-send.js +617 -126
  73. package/lib/Socket/mex.d.ts +2 -2
  74. package/lib/Socket/mex.js +46 -46
  75. package/lib/Socket/newsletter.d.ts +2 -4
  76. package/lib/Socket/newsletter.js +294 -285
  77. package/lib/Socket/socket.js +318 -132
  78. package/lib/Socket/usync.js +3 -3
  79. package/lib/Store/index.d.ts +4 -4
  80. package/lib/Store/index.js +23 -23
  81. package/lib/Store/make-cache-manager-store.d.ts +13 -13
  82. package/lib/Store/make-cache-manager-store.js +89 -89
  83. package/lib/Store/make-in-memory-store.d.ts +122 -122
  84. package/lib/Store/make-in-memory-store.js +428 -428
  85. package/lib/Store/make-ordered-dictionary.d.ts +11 -11
  86. package/lib/Store/make-ordered-dictionary.js +85 -85
  87. package/lib/Store/object-repository.d.ts +9 -9
  88. package/lib/Store/object-repository.js +30 -30
  89. package/lib/Types/Auth.d.ts +5 -4
  90. package/lib/Types/Bussines.js +3 -0
  91. package/lib/Types/Bussiness.d.ts +28 -0
  92. package/lib/Types/Chat.d.ts +13 -8
  93. package/lib/Types/Contact.d.ts +4 -1
  94. package/lib/Types/Events.d.ts +13 -16
  95. package/lib/Types/GroupMetadata.d.ts +1 -1
  96. package/lib/Types/Message.d.ts +18 -7
  97. package/lib/Types/Message.js +7 -1
  98. package/lib/Types/MexUpdates.d.ts +8 -8
  99. package/lib/Types/MexUpdates.js +17 -17
  100. package/lib/Types/Newsletter.d.ts +1 -1
  101. package/lib/Types/Product.d.ts +1 -1
  102. package/lib/Types/Signal.d.ts +31 -1
  103. package/lib/Types/Socket.d.ts +34 -13
  104. package/lib/Types/State.d.ts +1 -1
  105. package/lib/Types/USync.d.ts +2 -2
  106. package/lib/Types/index.d.ts +16 -15
  107. package/lib/Types/index.js +4 -2
  108. package/lib/Utils/auth-utils.d.ts +20 -20
  109. package/lib/Utils/auth-utils.js +527 -204
  110. package/lib/Utils/baileys-event-stream.d.ts +17 -17
  111. package/lib/Utils/baileys-event-stream.js +69 -69
  112. package/lib/Utils/business.d.ts +28 -28
  113. package/lib/Utils/business.js +254 -254
  114. package/lib/Utils/chat-utils.d.ts +81 -81
  115. package/lib/Utils/chat-utils.js +808 -780
  116. package/lib/Utils/crypto.d.ts +55 -55
  117. package/lib/Utils/crypto.js +188 -178
  118. package/lib/Utils/decode-wa-message.d.ts +52 -40
  119. package/lib/Utils/decode-wa-message.js +322 -252
  120. package/lib/Utils/event-buffer.d.ts +38 -38
  121. package/lib/Utils/event-buffer.js +594 -564
  122. package/lib/Utils/generics.d.ts +131 -129
  123. package/lib/Utils/generics.js +629 -623
  124. package/lib/Utils/history.d.ts +22 -22
  125. package/lib/Utils/history.js +103 -109
  126. package/lib/Utils/index.d.ts +20 -19
  127. package/lib/Utils/index.js +39 -38
  128. package/lib/Utils/link-preview.d.ts +22 -22
  129. package/lib/Utils/link-preview.js +119 -119
  130. package/lib/Utils/logger.d.ts +13 -13
  131. package/lib/Utils/logger.js +7 -7
  132. package/lib/Utils/lt-hash.d.ts +13 -13
  133. package/lib/Utils/lt-hash.js +57 -57
  134. package/lib/Utils/make-mutex.d.ts +8 -8
  135. package/lib/Utils/make-mutex.js +48 -48
  136. package/lib/Utils/message-retry-manager.d.ts +88 -0
  137. package/lib/Utils/message-retry-manager.js +160 -0
  138. package/lib/Utils/messages-media.d.ts +134 -128
  139. package/lib/Utils/messages-media.js +868 -805
  140. package/lib/Utils/messages.d.ts +104 -102
  141. package/lib/Utils/messages.js +1744 -1578
  142. package/lib/Utils/noise-handler.d.ts +20 -19
  143. package/lib/Utils/noise-handler.js +164 -154
  144. package/lib/Utils/process-message.d.ts +48 -48
  145. package/lib/Utils/process-message.js +427 -428
  146. package/lib/Utils/signal.d.ts +41 -41
  147. package/lib/Utils/signal.js +165 -165
  148. package/lib/Utils/use-mongo-file-auth-state.d.ts +5 -5
  149. package/lib/Utils/use-mongo-file-auth-state.js +83 -83
  150. package/lib/Utils/use-multi-file-auth-state.d.ts +17 -17
  151. package/lib/Utils/use-multi-file-auth-state.js +237 -237
  152. package/lib/Utils/use-single-file-auth-state.d.ts +12 -12
  153. package/lib/Utils/use-single-file-auth-state.js +79 -79
  154. package/lib/Utils/validate-connection.d.ts +12 -12
  155. package/lib/Utils/validate-connection.js +219 -186
  156. package/lib/WABinary/constants.d.ts +29 -29
  157. package/lib/WABinary/constants.js +1315 -1315
  158. package/lib/WABinary/decode.d.ts +8 -8
  159. package/lib/WABinary/decode.js +287 -287
  160. package/lib/WABinary/encode.d.ts +2 -2
  161. package/lib/WABinary/encode.js +264 -264
  162. package/lib/WABinary/generic-utils.d.ts +27 -27
  163. package/lib/WABinary/generic-utils.js +141 -141
  164. package/lib/WABinary/index.d.ts +5 -5
  165. package/lib/WABinary/index.js +24 -24
  166. package/lib/WABinary/jid-utils.d.ts +58 -53
  167. package/lib/WABinary/jid-utils.js +103 -91
  168. package/lib/WABinary/types.d.ts +21 -21
  169. package/lib/WABinary/types.js +2 -2
  170. package/lib/WAM/BinaryInfo.d.ts +15 -15
  171. package/lib/WAM/BinaryInfo.js +16 -16
  172. package/lib/WAM/constants.d.ts +46 -46
  173. package/lib/WAM/constants.js +15370 -15370
  174. package/lib/WAM/encode.d.ts +2 -2
  175. package/lib/WAM/encode.js +163 -164
  176. package/lib/WAM/index.d.ts +3 -3
  177. package/lib/WAM/index.js +22 -22
  178. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +27 -27
  179. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +68 -68
  180. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +3 -3
  181. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +2 -2
  182. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +2 -2
  183. package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +9 -8
  184. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +37 -29
  185. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +2 -2
  186. package/lib/WAUSync/Protocols/index.d.ts +6 -6
  187. package/lib/WAUSync/USyncQuery.d.ts +3 -3
  188. package/lib/WAUSync/index.d.ts +3 -3
  189. package/lib/index.d.ts +13 -13
  190. package/lib/index.js +33 -33
  191. package/package.json +96 -94
  192. package/lib/Socket/registration.d.ts +0 -266
  193. package/lib/Socket/registration.js +0 -166
@@ -1,120 +1,120 @@
1
- "use strict"
2
-
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k
5
- var desc = Object.getOwnPropertyDescriptor(m, k)
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k] } }
8
- }
9
- Object.defineProperty(o, k2, desc)
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k
12
- o[k2] = m[k]
13
- }))
14
-
15
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
- Object.defineProperty(o, "default", { enumerable: true, value: v })
17
- }) : function(o, v) {
18
- o["default"] = v
19
- })
20
-
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod
23
- var result = {}
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k)
25
- __setModuleDefault(result, mod)
26
- return result
27
- }
28
-
29
- Object.defineProperty(exports, "__esModule", { value: true })
30
-
31
- const messages_1 = require("./messages")
32
- const messages_media_1 = require("./messages-media")
33
- const THUMBNAIL_WIDTH_PX = 192
34
-
35
- /** Fetches an image and generates a thumbnail for it */
36
- const getCompressedJpegThumbnail = async (url, { thumbnailWidth, fetchOpts }) => {
37
- const stream = await messages_media_1.getHttpStream(url, fetchOpts)
38
- const result = await messages_media_1.extractImageThumb(stream, thumbnailWidth)
39
- return result
40
- }
41
-
42
- /**
43
- * Given a piece of text, checks for any URL present, generates link preview for the same and returns it
44
- * Return undefined if the fetch failed or no URL was found
45
- * @param text first matched URL in text
46
- * @returns the URL info required to generate link preview
47
- */
48
- const getUrlInfo = async (text, opts = { thumbnailWidth: THUMBNAIL_WIDTH_PX, fetchOpts: { timeout: 3000 }}) => {
49
- try {
50
- const retries = 0
51
- const maxRetry = 5
52
- const { getLinkPreview } = await Promise.resolve().then(() => __importStar(require('link-preview-js')))
53
- let previewLink = text
54
- if (!text.startsWith('https://') && !text.startsWith('http://')) {
55
- previewLink = 'https://' + previewLink
56
- }
57
- const info = await getLinkPreview(previewLink, {
58
- ...opts.fetchOpts,
59
- followRedirects: 'follow',
60
- handleRedirects: (baseURL, forwardedURL) => {
61
- const urlObj = new URL(baseURL)
62
- const forwardedURLObj = new URL(forwardedURL)
63
- if (retries >= maxRetry) {
64
- return false
65
- }
66
- if (forwardedURLObj.hostname === urlObj.hostname
67
- || forwardedURLObj.hostname === 'www.' + urlObj.hostname
68
- || 'www.' + forwardedURLObj.hostname === urlObj.hostname) {
69
- retries + 1
70
- return true
71
- }
72
- else {
73
- return false
74
- }
75
- },
76
- headers: opts.fetchOpts
77
- })
78
- if (info && 'title' in info && info.title) {
79
- const [image] = info.images
80
- const urlInfo = {
81
- 'canonical-url': info.url,
82
- 'matched-text': text,
83
- title: info.title,
84
- description: info.description,
85
- originalThumbnailUrl: image
86
- }
87
- if (opts.uploadImage) {
88
- const { imageMessage } = await messages_1.prepareWAMessageMedia({ image: { url: image } }, {
89
- upload: opts.uploadImage,
90
- mediaTypeOverride: 'thumbnail-link',
91
- options: opts.fetchOpts
92
- })
93
- urlInfo.jpegThumbnail = imageMessage?.jpegThumbnail
94
- ? Buffer.from(imageMessage.jpegThumbnail)
95
- : undefined
96
- urlInfo.highQualityThumbnail = imageMessage || undefined
97
- }
98
- else {
99
- try {
100
- urlInfo.jpegThumbnail = image
101
- ? (await getCompressedJpegThumbnail(image, opts)).buffer
102
- : undefined
103
- }
104
- catch (error) {
105
- opts.logger?.debug({ err: error.stack, url: previewLink }, 'error in generating thumbnail')
106
- }
107
- }
108
- return urlInfo
109
- }
110
- }
111
- catch (error) {
112
- if (!error.message.includes('receive a valid')) {
113
- throw error
114
- }
115
- }
116
- }
117
-
118
- module.exports = {
119
- getUrlInfo
1
+ "use strict"
2
+
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k
5
+ var desc = Object.getOwnPropertyDescriptor(m, k)
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k] } }
8
+ }
9
+ Object.defineProperty(o, k2, desc)
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k
12
+ o[k2] = m[k]
13
+ }))
14
+
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v })
17
+ }) : function(o, v) {
18
+ o["default"] = v
19
+ })
20
+
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod
23
+ var result = {}
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k)
25
+ __setModuleDefault(result, mod)
26
+ return result
27
+ }
28
+
29
+ Object.defineProperty(exports, "__esModule", { value: true })
30
+
31
+ const messages_1 = require("./messages")
32
+ const messages_media_1 = require("./messages-media")
33
+ const THUMBNAIL_WIDTH_PX = 192
34
+
35
+ /** Fetches an image and generates a thumbnail for it */
36
+ const getCompressedJpegThumbnail = async (url, { thumbnailWidth, fetchOpts }) => {
37
+ const stream = await messages_media_1.getHttpStream(url, fetchOpts)
38
+ const result = await messages_media_1.extractImageThumb(stream, thumbnailWidth)
39
+ return result
40
+ }
41
+
42
+ /**
43
+ * Given a piece of text, checks for any URL present, generates link preview for the same and returns it
44
+ * Return undefined if the fetch failed or no URL was found
45
+ * @param text first matched URL in text
46
+ * @returns the URL info required to generate link preview
47
+ */
48
+ const getUrlInfo = async (text, opts = { thumbnailWidth: THUMBNAIL_WIDTH_PX, fetchOpts: { timeout: 3000 }}) => {
49
+ try {
50
+ const retries = 0
51
+ const maxRetry = 5
52
+ const { getLinkPreview } = await Promise.resolve().then(() => __importStar(require('link-preview-js')))
53
+ let previewLink = text
54
+ if (!text.startsWith('https://') && !text.startsWith('http://')) {
55
+ previewLink = 'https://' + previewLink
56
+ }
57
+ const info = await getLinkPreview(previewLink, {
58
+ ...opts.fetchOpts,
59
+ followRedirects: 'follow',
60
+ handleRedirects: (baseURL, forwardedURL) => {
61
+ const urlObj = new URL(baseURL)
62
+ const forwardedURLObj = new URL(forwardedURL)
63
+ if (retries >= maxRetry) {
64
+ return false
65
+ }
66
+ if (forwardedURLObj.hostname === urlObj.hostname
67
+ || forwardedURLObj.hostname === 'www.' + urlObj.hostname
68
+ || 'www.' + forwardedURLObj.hostname === urlObj.hostname) {
69
+ retries + 1
70
+ return true
71
+ }
72
+ else {
73
+ return false
74
+ }
75
+ },
76
+ headers: opts.fetchOpts
77
+ })
78
+ if (info && 'title' in info && info.title) {
79
+ const [image] = info.images
80
+ const urlInfo = {
81
+ 'canonical-url': info.url,
82
+ 'matched-text': text,
83
+ title: info.title,
84
+ description: info.description,
85
+ originalThumbnailUrl: image
86
+ }
87
+ if (opts.uploadImage) {
88
+ const { imageMessage } = await messages_1.prepareWAMessageMedia({ image: { url: image } }, {
89
+ upload: opts.uploadImage,
90
+ mediaTypeOverride: 'thumbnail-link',
91
+ options: opts.fetchOpts
92
+ })
93
+ urlInfo.jpegThumbnail = imageMessage?.jpegThumbnail
94
+ ? Buffer.from(imageMessage.jpegThumbnail)
95
+ : undefined
96
+ urlInfo.highQualityThumbnail = imageMessage || undefined
97
+ }
98
+ else {
99
+ try {
100
+ urlInfo.jpegThumbnail = image
101
+ ? (await getCompressedJpegThumbnail(image, opts)).buffer
102
+ : undefined
103
+ }
104
+ catch (error) {
105
+ opts.logger?.debug({ err: error.stack, url: previewLink }, 'error in generating thumbnail')
106
+ }
107
+ }
108
+ return urlInfo
109
+ }
110
+ }
111
+ catch (error) {
112
+ if (!error.message.includes('receive a valid')) {
113
+ throw error
114
+ }
115
+ }
116
+ }
117
+
118
+ module.exports = {
119
+ getUrlInfo
120
120
  }
@@ -1,13 +1,13 @@
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
-
11
- declare const _default: import("pino").Logger<never, boolean>
12
-
13
- export default _default
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
+
11
+ declare const _default: import("pino").Logger<never, boolean>
12
+
13
+ export default _default
@@ -1,7 +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()}"` })
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()}"` })
@@ -1,14 +1,14 @@
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
-
12
- export declare const LT_HASH_ANTI_TAMPERING: d
13
-
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
+
12
+ export declare const LT_HASH_ANTI_TAMPERING: d
13
+
14
14
  export {}
@@ -1,58 +1,58 @@
1
- "use strict"
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true })
4
-
5
- const crypto_1 = require("./crypto")
6
-
7
- /**
8
- * LT Hash is a summation based hash algorithm that maintains the integrity of a piece of data
9
- * over a series of mutations. You can add/remove mutations and it'll return a hash equal to
10
- * if the same series of mutations was made sequentially.
11
- */
12
- const o = 128
13
- class d {
14
- constructor(e) {
15
- this.salt = e
16
- }
17
- add(e, t) {
18
- var r = this
19
- for (const item of t) {
20
- e = r._addSingle(e, item)
21
- }
22
- return e
23
- }
24
- subtract(e, t) {
25
- var r = this
26
- for (const item of t) {
27
- e = r._subtractSingle(e, item)
28
- }
29
- return e
30
- }
31
- subtractThenAdd(e, t, r) {
32
- var n = this
33
- return n.add(n.subtract(e, r), t)
34
- }
35
- async _addSingle(e, t) {
36
- var r = this
37
- const n = new Uint8Array(await crypto_1.hkdf(Buffer.from(t), o, { info: r.salt })).buffer
38
- return r.performPointwiseWithOverflow(await e, n, ((e, t) => e + t))
39
- }
40
- async _subtractSingle(e, t) {
41
- var r = this
42
- const n = new Uint8Array(await crypto_1.hkdf(Buffer.from(t), o, { info: r.salt })).buffer
43
- return r.performPointwiseWithOverflow(await e, n, ((e, t) => e - t))
44
- }
45
- performPointwiseWithOverflow(e, t, r) {
46
- const n = new DataView(e), i = new DataView(t), a = new ArrayBuffer(n.byteLength), s = new DataView(a)
47
- for (let e = 0; e < n.byteLength; e += 2) {
48
- s.setUint16(e, r(n.getUint16(e, !0), i.getUint16(e, !0)), !0)
49
- }
50
- return a
51
- }
52
- }
53
-
54
- const LT_HASH_ANTI_TAMPERING = new d('WhatsApp Patch Integrity')
55
-
56
- module.exports = {
57
- LT_HASH_ANTI_TAMPERING
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const crypto_1 = require("./crypto")
6
+
7
+ /**
8
+ * LT Hash is a summation based hash algorithm that maintains the integrity of a piece of data
9
+ * over a series of mutations. You can add/remove mutations and it'll return a hash equal to
10
+ * if the same series of mutations was made sequentially.
11
+ */
12
+ const o = 128
13
+ class d {
14
+ constructor(e) {
15
+ this.salt = e
16
+ }
17
+ add(e, t) {
18
+ var r = this
19
+ for (const item of t) {
20
+ e = r._addSingle(e, item)
21
+ }
22
+ return e
23
+ }
24
+ subtract(e, t) {
25
+ var r = this
26
+ for (const item of t) {
27
+ e = r._subtractSingle(e, item)
28
+ }
29
+ return e
30
+ }
31
+ subtractThenAdd(e, t, r) {
32
+ var n = this
33
+ return n.add(n.subtract(e, r), t)
34
+ }
35
+ async _addSingle(e, t) {
36
+ var r = this
37
+ const n = new Uint8Array(await crypto_1.hkdf(Buffer.from(t), o, { info: r.salt })).buffer
38
+ return r.performPointwiseWithOverflow(await e, n, ((e, t) => e + t))
39
+ }
40
+ async _subtractSingle(e, t) {
41
+ var r = this
42
+ const n = new Uint8Array(await crypto_1.hkdf(Buffer.from(t), o, { info: r.salt })).buffer
43
+ return r.performPointwiseWithOverflow(await e, n, ((e, t) => e - t))
44
+ }
45
+ performPointwiseWithOverflow(e, t, r) {
46
+ const n = new DataView(e), i = new DataView(t), a = new ArrayBuffer(n.byteLength), s = new DataView(a)
47
+ for (let e = 0; e < n.byteLength; e += 2) {
48
+ s.setUint16(e, r(n.getUint16(e, !0), i.getUint16(e, !0)), !0)
49
+ }
50
+ return a
51
+ }
52
+ }
53
+
54
+ const LT_HASH_ANTI_TAMPERING = new d('WhatsApp Patch Integrity')
55
+
56
+ module.exports = {
57
+ LT_HASH_ANTI_TAMPERING
58
58
  }
@@ -1,9 +1,9 @@
1
- export declare const makeMutex: () => {
2
- mutex<T>(code: () => T | Promise<T>): Promise<T>
3
- }
4
-
5
- export type Mutex = ReturnType<typeof makeMutex>
6
-
7
- export declare const makeKeyedMutex: () => {
8
- mutex<T>(key: string, task: () => T | Promise<T>): Promise<T>
1
+ export declare const makeMutex: () => {
2
+ mutex<T>(code: () => T | Promise<T>): Promise<T>
3
+ }
4
+
5
+ export type Mutex = ReturnType<typeof makeMutex>
6
+
7
+ export declare const makeKeyedMutex: () => {
8
+ mutex<T>(key: string, task: () => T | Promise<T>): Promise<T>
9
9
  }
@@ -1,49 +1,49 @@
1
- "use strict"
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true })
4
-
5
- const makeMutex = () => {
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- let task = Promise.resolve()
8
- let taskTimeout
9
- return {
10
- mutex(code) {
11
- task = (async () => {
12
- // wait for the previous task to complete
13
- // if there is an error, we swallow so as to not block the queue
14
- try {
15
- await task
16
- }
17
- catch (_a) { }
18
- try {
19
- // execute the current task
20
- const result = await code()
21
- return result
22
- }
23
- finally {
24
- clearTimeout(taskTimeout)
25
- }
26
- })()
27
- // we replace the existing task, appending the new piece of execution to it
28
- // so the next task will have to wait for this one to finish
29
- return task
30
- },
31
- }
32
- }
33
-
34
- const makeKeyedMutex = () => {
35
- const map = {}
36
- return {
37
- mutex(key, task) {
38
- if (!map[key]) {
39
- map[key] = makeMutex()
40
- }
41
- return map[key].mutex(task)
42
- }
43
- }
44
- }
45
-
46
- module.exports = {
47
- makeMutex,
48
- makeKeyedMutex
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const makeMutex = () => {
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ let task = Promise.resolve()
8
+ let taskTimeout
9
+ return {
10
+ mutex(code) {
11
+ task = (async () => {
12
+ // wait for the previous task to complete
13
+ // if there is an error, we swallow so as to not block the queue
14
+ try {
15
+ await task
16
+ }
17
+ catch (_a) { }
18
+ try {
19
+ // execute the current task
20
+ const result = await code()
21
+ return result
22
+ }
23
+ finally {
24
+ clearTimeout(taskTimeout)
25
+ }
26
+ })()
27
+ // we replace the existing task, appending the new piece of execution to it
28
+ // so the next task will have to wait for this one to finish
29
+ return task
30
+ },
31
+ }
32
+ }
33
+
34
+ const makeKeyedMutex = () => {
35
+ const map = {}
36
+ return {
37
+ mutex(key, task) {
38
+ if (!map[key]) {
39
+ map[key] = makeMutex()
40
+ }
41
+ return map[key].mutex(task)
42
+ }
43
+ }
44
+ }
45
+
46
+ module.exports = {
47
+ makeMutex,
48
+ makeKeyedMutex
49
49
  }
@@ -0,0 +1,88 @@
1
+ import { proto } from '@neelegirl/baileys/WAProto'
2
+ import { ILogger } from '@neelegirl/baileys/lib/Utils/logger'
3
+
4
+ export interface RecentMessageKey {
5
+ to: string
6
+ id: string
7
+ }
8
+
9
+ export interface RecentMessage {
10
+ message: proto.IMessage
11
+ timestamp: number
12
+ }
13
+
14
+ export interface SessionRecreateHistory {
15
+ [jid: string]: number
16
+ }
17
+
18
+ export interface RetryCounter {
19
+ [messageId: string]: number
20
+ }
21
+
22
+ export interface PendingPhoneRequest {
23
+ [messageId: string]: NodeJS.Timeout
24
+ }
25
+
26
+ export interface RetryStatistics {
27
+ totalRetries: number
28
+ successfulRetries: number
29
+ failedRetries: number
30
+ mediaRetries: number
31
+ sessionRecreations: number
32
+ phoneRequests: number
33
+ }
34
+
35
+ export declare class MessageRetryManager {
36
+ private logger
37
+ private recentMessagesMap
38
+ private sessionRecreateHistory
39
+ private retryCounters
40
+ private pendingPhoneRequests
41
+ private readonly maxMsgRetryCount
42
+ private statistics
43
+ constructor(logger: ILogger, maxMsgRetryCount: number)
44
+ /**
45
+ * Add a recent message to the cache for retry handling
46
+ */
47
+ addRecentMessage(to: string, id: string, message: proto.IMessage): void
48
+ /**
49
+ * Get a recent message from the cache
50
+ */
51
+ getRecentMessage(to: string, id: string): RecentMessage | undefined
52
+ /**
53
+ * Check if a session should be recreated based on retry count and history
54
+ */
55
+ shouldRecreateSession(jid: string, retryCount: number, hasSession: boolean): {
56
+ reason: string
57
+ recreate: boolean
58
+ }
59
+ /**
60
+ * Increment retry counter for a message
61
+ */
62
+ incrementRetryCount(messageId: string): number
63
+ /**
64
+ * Get retry count for a message
65
+ */
66
+ getRetryCount(messageId: string): number
67
+ /**
68
+ * Check if message has exceeded maximum retry attempts
69
+ */
70
+ hasExceededMaxRetries(messageId: string): boolean
71
+ /**
72
+ * Mark retry as successful
73
+ */
74
+ markRetrySuccess(messageId: string): void
75
+ /**
76
+ * Mark retry as failed
77
+ */
78
+ markRetryFailed(messageId: string): void
79
+ /**
80
+ * Schedule a phone request with delay
81
+ */
82
+ schedulePhoneRequest(messageId: string, callback: () => void, delay?: number): void
83
+ /**
84
+ * Cancel pending phone request
85
+ */
86
+ cancelPendingPhoneRequest(messageId: string): void
87
+ private keyToString
88
+ }