@badzz88/baileys 8.5.6 → 8.5.7

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 (279) hide show
  1. package/README.md +2 -2
  2. package/WAProto/WAProto.proto +75 -1256
  3. package/WAProto/fix-imports.js +79 -69
  4. package/WAProto/index.d.ts +71491 -15254
  5. package/WAProto/index.js +126432 -19810
  6. package/engine-requirements.js +4 -3
  7. package/lib/Defaults/index.js +187 -0
  8. package/lib/Signal/Group/ciphertext-message.js +15 -0
  9. package/lib/Signal/Group/group-session-builder.js +92 -0
  10. package/lib/Signal/Group/group_cipher.js +89 -0
  11. package/lib/Signal/Group/index.js +136 -0
  12. package/lib/Signal/Group/keyhelper.js +73 -0
  13. package/lib/Signal/Group/sender-chain-key.js +32 -0
  14. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  15. package/lib/Signal/Group/sender-key-message.js +69 -0
  16. package/lib/Signal/Group/sender-key-name.js +50 -0
  17. package/lib/Signal/Group/sender-key-record.js +44 -0
  18. package/lib/Signal/Group/sender-key-state.js +97 -0
  19. package/lib/Signal/Group/sender-message-key.js +30 -0
  20. package/lib/Signal/libsignal.js +459 -0
  21. package/lib/Signal/lid-mapping.js +260 -0
  22. package/lib/Socket/Client/index.js +30 -0
  23. package/lib/Socket/Client/types.js +13 -0
  24. package/lib/Socket/Client/websocket.js +62 -0
  25. package/lib/Socket/aigroups.js +240 -0
  26. package/lib/Socket/business.js +422 -0
  27. package/lib/Socket/chats.js +1816 -0
  28. package/lib/Socket/communities.js +549 -0
  29. package/lib/Socket/graphql.js +656 -0
  30. package/lib/Socket/groups.js +764 -0
  31. package/lib/Socket/index.js +39 -0
  32. package/lib/Socket/interactive-handler.js +522 -0
  33. package/lib/Socket/interop.js +549 -0
  34. package/{src → lib}/Socket/luxu.js +120 -82
  35. package/lib/Socket/managed-account.js +183 -0
  36. package/lib/Socket/messages-recv.js +2442 -0
  37. package/lib/Socket/messages-send.js +1853 -0
  38. package/lib/Socket/mex.js +60 -0
  39. package/lib/Socket/newsletter.js +818 -0
  40. package/lib/Socket/privacy.js +449 -0
  41. package/lib/Socket/registration.js +427 -0
  42. package/lib/Socket/socket.js +1092 -0
  43. package/lib/Socket/text-router.js +83 -0
  44. package/lib/Socket/username.js +243 -0
  45. package/lib/Store/index.js +36 -0
  46. package/{src → lib}/Store/keyed-db.js +11 -21
  47. package/lib/Store/make-cache-manager-store.js +90 -0
  48. package/lib/Store/make-in-memory-store.js +604 -0
  49. package/lib/Store/make-ordered-dictionary.js +81 -0
  50. package/lib/Store/object-repository.js +29 -0
  51. package/lib/Types/Auth.js +38 -0
  52. package/lib/Types/Bussines.js +2 -0
  53. package/lib/Types/Call.js +2 -0
  54. package/lib/Types/Chat.js +4 -0
  55. package/lib/Types/Contact.js +2 -0
  56. package/lib/Types/Events.js +2 -0
  57. package/lib/Types/GroupMetadata.js +2 -0
  58. package/lib/Types/Label.js +27 -0
  59. package/lib/Types/LabelAssociation.js +9 -0
  60. package/lib/Types/Message.js +95 -0
  61. package/lib/Types/Mex.js +112 -0
  62. package/lib/Types/Newsletter.js +121 -0
  63. package/lib/Types/Product.js +2 -0
  64. package/lib/Types/Signal.js +2 -0
  65. package/lib/Types/Socket.js +2 -0
  66. package/lib/Types/State.js +70 -0
  67. package/lib/Types/USync.js +2 -0
  68. package/lib/Types/index.js +55 -0
  69. package/lib/Utils/auth-utils.js +306 -0
  70. package/lib/Utils/browser-utils.js +114 -0
  71. package/lib/Utils/business.js +247 -0
  72. package/lib/Utils/chat-utils.js +1208 -0
  73. package/lib/Utils/command-loader.d.ts +31 -0
  74. package/lib/Utils/command-loader.js +100 -0
  75. package/lib/Utils/companion-reg-client-utils.js +42 -0
  76. package/lib/Utils/consumer-application.js +107 -0
  77. package/lib/Utils/crypto.js +155 -0
  78. package/lib/Utils/curve25519-js.js +275 -0
  79. package/lib/Utils/decode-wa-message.js +560 -0
  80. package/lib/Utils/event-buffer.js +607 -0
  81. package/lib/Utils/generics.js +563 -0
  82. package/lib/Utils/group-history.js +60 -0
  83. package/lib/Utils/history.js +244 -0
  84. package/lib/Utils/identity-change-handler.js +52 -0
  85. package/lib/Utils/index.js +57 -0
  86. package/lib/Utils/jid-display-normalization.js +218 -0
  87. package/lib/Utils/link-preview.js +143 -0
  88. package/lib/Utils/logger.js +9 -0
  89. package/lib/Utils/lt-hash.js +39 -0
  90. package/lib/Utils/make-mutex.js +36 -0
  91. package/lib/Utils/message-composer.js +479 -0
  92. package/lib/Utils/message-retry-manager.js +270 -0
  93. package/lib/Utils/messages-media.js +896 -0
  94. package/lib/Utils/messages.js +2904 -0
  95. package/lib/Utils/meta-ai-msmsg.js +262 -0
  96. package/lib/Utils/native-bridge.js +82 -0
  97. package/lib/Utils/noise-handler.js +196 -0
  98. package/lib/Utils/offline-node-processor.js +42 -0
  99. package/lib/Utils/pre-key-manager.js +107 -0
  100. package/lib/Utils/process-message.js +1048 -0
  101. package/lib/Utils/reporting-utils.js +262 -0
  102. package/lib/Utils/session-pool.d.ts +16 -0
  103. package/lib/Utils/session-pool.js +94 -0
  104. package/lib/Utils/signal.js +224 -0
  105. package/lib/Utils/stanza-ack.js +40 -0
  106. package/lib/Utils/sticker.d.ts +17 -0
  107. package/lib/Utils/sticker.js +145 -0
  108. package/lib/Utils/sync-action-utils.js +54 -0
  109. package/lib/Utils/tc-token-utils.js +161 -0
  110. package/lib/Utils/use-multi-file-auth-state.js +121 -0
  111. package/lib/Utils/validate-connection.js +219 -0
  112. package/lib/Utils/view-once-cache.d.ts +9 -0
  113. package/lib/Utils/view-once-cache.js +79 -0
  114. package/lib/Utils/voip-rekey.js +22 -0
  115. package/lib/WABinary/constants.js +1304 -0
  116. package/lib/WABinary/decode.js +343 -0
  117. package/{src → lib}/WABinary/encode.js +12 -9
  118. package/lib/WABinary/generic-utils.js +240 -0
  119. package/lib/WABinary/index.js +33 -0
  120. package/lib/WABinary/jid-utils.js +361 -0
  121. package/lib/WABinary/types.js +2 -0
  122. package/lib/WAM/BinaryInfo.js +13 -0
  123. package/lib/WAM/constants.js +39486 -0
  124. package/lib/WAM/encode.js +142 -0
  125. package/lib/WAM/index.js +31 -0
  126. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +55 -0
  127. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  128. package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
  129. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  130. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  131. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +59 -0
  132. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +31 -0
  133. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  134. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +29 -0
  135. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
  136. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  137. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
  138. package/lib/WAUSync/Protocols/index.js +39 -0
  139. package/lib/WAUSync/USyncQuery.js +133 -0
  140. package/lib/WAUSync/USyncUser.js +50 -0
  141. package/lib/WAUSync/index.js +31 -0
  142. package/lib/antiban.js +4637 -0
  143. package/{src → lib}/index.js +49 -51
  144. package/package.json +4 -4
  145. package/src/Defaults/index.js +0 -186
  146. package/src/Signal/Group/ciphertext-message.js +0 -15
  147. package/src/Signal/Group/group-session-builder.js +0 -86
  148. package/src/Signal/Group/group_cipher.js +0 -82
  149. package/src/Signal/Group/index.js +0 -140
  150. package/src/Signal/Group/keyhelper.js +0 -77
  151. package/src/Signal/Group/sender-chain-key.js +0 -29
  152. package/src/Signal/Group/sender-key-distribution-message.js +0 -66
  153. package/src/Signal/Group/sender-key-message.js +0 -69
  154. package/src/Signal/Group/sender-key-name.js +0 -51
  155. package/src/Signal/Group/sender-key-record.js +0 -44
  156. package/src/Signal/Group/sender-key-state.js +0 -87
  157. package/src/Signal/Group/sender-message-key.js +0 -29
  158. package/src/Signal/libsignal.js +0 -455
  159. package/src/Signal/lid-mapping.js +0 -273
  160. package/src/Socket/Client/index.js +0 -31
  161. package/src/Socket/Client/types.js +0 -13
  162. package/src/Socket/Client/websocket.js +0 -61
  163. package/src/Socket/aigroups.js +0 -221
  164. package/src/Socket/business.js +0 -411
  165. package/src/Socket/chats.js +0 -1449
  166. package/src/Socket/communities.js +0 -463
  167. package/src/Socket/graphql.js +0 -523
  168. package/src/Socket/groups.js +0 -516
  169. package/src/Socket/index.js +0 -31
  170. package/src/Socket/interactive-handler.js +0 -527
  171. package/src/Socket/interop.js +0 -339
  172. package/src/Socket/managed-account.js +0 -98
  173. package/src/Socket/messages-recv.js +0 -2685
  174. package/src/Socket/messages-send.js +0 -2047
  175. package/src/Socket/mex.js +0 -57
  176. package/src/Socket/newsletter.js +0 -455
  177. package/src/Socket/privacy.js +0 -125
  178. package/src/Socket/registration.js +0 -236
  179. package/src/Socket/socket.js +0 -983
  180. package/src/Socket/text-router.js +0 -65
  181. package/src/Socket/username.js +0 -130
  182. package/src/Store/index.js +0 -33
  183. package/src/Store/make-cache-manager-store.js +0 -84
  184. package/src/Store/make-in-memory-store.js +0 -551
  185. package/src/Store/make-ordered-dictionary.js +0 -81
  186. package/src/Store/object-repository.js +0 -26
  187. package/src/Types/Auth.js +0 -31
  188. package/src/Types/Bussines.js +0 -2
  189. package/src/Types/Call.js +0 -2
  190. package/src/Types/Chat.js +0 -4
  191. package/src/Types/Contact.js +0 -2
  192. package/src/Types/Events.js +0 -2
  193. package/src/Types/GroupMetadata.js +0 -2
  194. package/src/Types/Label.js +0 -26
  195. package/src/Types/LabelAssociation.js +0 -8
  196. package/src/Types/Message.js +0 -93
  197. package/src/Types/Mex.js +0 -112
  198. package/src/Types/Newsletter.js +0 -109
  199. package/src/Types/Product.js +0 -2
  200. package/src/Types/Signal.js +0 -2
  201. package/src/Types/Socket.js +0 -2
  202. package/src/Types/State.js +0 -62
  203. package/src/Types/USync.js +0 -2
  204. package/src/Types/index.js +0 -56
  205. package/src/Utils/auth-utils.js +0 -254
  206. package/src/Utils/browser-utils.js +0 -112
  207. package/src/Utils/business.js +0 -240
  208. package/src/Utils/chat-utils.js +0 -1230
  209. package/src/Utils/command-loader.d.ts +0 -27
  210. package/src/Utils/command-loader.js +0 -89
  211. package/src/Utils/companion-reg-client-utils.js +0 -40
  212. package/src/Utils/consumer-application.js +0 -105
  213. package/src/Utils/crypto.js +0 -118
  214. package/src/Utils/curve25519-js.js +0 -242
  215. package/src/Utils/decode-wa-message.js +0 -529
  216. package/src/Utils/event-buffer.js +0 -580
  217. package/src/Utils/generics.js +0 -483
  218. package/src/Utils/group-history.js +0 -44
  219. package/src/Utils/history.js +0 -232
  220. package/src/Utils/identity-change-handler.js +0 -52
  221. package/src/Utils/index.js +0 -58
  222. package/src/Utils/jid-display-normalization.js +0 -195
  223. package/src/Utils/link-preview.js +0 -135
  224. package/src/Utils/logger.js +0 -8
  225. package/src/Utils/lt-hash.js +0 -25
  226. package/src/Utils/make-mutex.js +0 -36
  227. package/src/Utils/message-composer.js +0 -471
  228. package/src/Utils/message-retry-manager.js +0 -217
  229. package/src/Utils/messages-media.js +0 -843
  230. package/src/Utils/messages.js +0 -2817
  231. package/src/Utils/meta-ai-msmsg.js +0 -222
  232. package/src/Utils/native-bridge.js +0 -68
  233. package/src/Utils/noise-handler.js +0 -169
  234. package/src/Utils/offline-node-processor.js +0 -34
  235. package/src/Utils/pre-key-manager.js +0 -90
  236. package/src/Utils/process-message.js +0 -950
  237. package/src/Utils/reporting-utils.js +0 -261
  238. package/src/Utils/session-pool.d.ts +0 -14
  239. package/src/Utils/session-pool.js +0 -70
  240. package/src/Utils/signal.js +0 -217
  241. package/src/Utils/stanza-ack.js +0 -30
  242. package/src/Utils/sticker.d.ts +0 -13
  243. package/src/Utils/sticker.js +0 -123
  244. package/src/Utils/sync-action-utils.js +0 -45
  245. package/src/Utils/tc-token-utils.js +0 -158
  246. package/src/Utils/use-multi-file-auth-state.js +0 -111
  247. package/src/Utils/validate-connection.js +0 -209
  248. package/src/Utils/view-once-cache.d.ts +0 -12
  249. package/src/Utils/view-once-cache.js +0 -63
  250. package/src/Utils/voip-rekey.js +0 -22
  251. package/src/WABinary/constants.js +0 -1304
  252. package/src/WABinary/decode.js +0 -342
  253. package/src/WABinary/generic-utils.js +0 -238
  254. package/src/WABinary/index.js +0 -34
  255. package/src/WABinary/jid-utils.js +0 -351
  256. package/src/WABinary/types.js +0 -2
  257. package/src/WAM/BinaryInfo.js +0 -13
  258. package/src/WAM/constants.js +0 -39484
  259. package/src/WAM/encode.js +0 -149
  260. package/src/WAM/index.js +0 -32
  261. package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -53
  262. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -44
  263. package/src/WAUSync/Protocols/USyncContactProtocol.js +0 -55
  264. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +0 -55
  265. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -31
  266. package/src/WAUSync/Protocols/USyncFeatureProtocol.js +0 -54
  267. package/src/WAUSync/Protocols/USyncLIDProtocol.js +0 -32
  268. package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -473
  269. package/src/WAUSync/Protocols/USyncPictureProtocol.js +0 -34
  270. package/src/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
  271. package/src/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
  272. package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
  273. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
  274. package/src/WAUSync/Protocols/index.js +0 -40
  275. package/src/WAUSync/USyncQuery.js +0 -126
  276. package/src/WAUSync/USyncUser.js +0 -50
  277. package/src/WAUSync/index.js +0 -32
  278. package/src/antiban.js +0 -4152
  279. /package/{src → lib}/Defaults/phonenumber-mcc.json +0 -0
@@ -1,25 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.LT_HASH_ANTI_TAMPERING = void 0;
4
- const crypto_1 = require('./crypto');
5
- const LTHASH_INFO = 'WhatsApp Patch Integrity';
6
- const LTHASH_SIZE = 128;
7
- const expand = element => (0, crypto_1.hkdf)(element, LTHASH_SIZE, { info: LTHASH_INFO });
8
- const applyDelta = (result, element, sign) => {
9
- const expanded = expand(element);
10
- for (let i = 0; i < LTHASH_SIZE; i += 2) {
11
- const lane = result.readUInt16LE(i);
12
- const delta = expanded.readUInt16LE(i);
13
- result.writeUInt16LE((lane + sign * delta) & 0xffff, i);
14
- }
15
- };
16
- exports.LT_HASH_ANTI_TAMPERING = {
17
- subtractThenAdd: (base, subtract = [], add = []) => {
18
- const result = Buffer.from(base);
19
- for (const element of subtract)
20
- applyDelta(result, element, -1);
21
- for (const element of add)
22
- applyDelta(result, element, 1);
23
- return result;
24
- }
25
- };
@@ -1,36 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.makeKeyedMutex = exports.makeMutex = void 0;
4
- const async_mutex_1 = require('async-mutex');
5
- const makeMutex = () => {
6
- const mutex = new async_mutex_1.Mutex();
7
- return {
8
- mutex(code) {
9
- return mutex.runExclusive(code);
10
- }
11
- };
12
- };
13
- exports.makeMutex = makeMutex;
14
- const makeKeyedMutex = () => {
15
- const map = new Map();
16
- return {
17
- async mutex(key, task) {
18
- let entry = map.get(key);
19
- if (!entry) {
20
- entry = { mutex: new async_mutex_1.Mutex(), refCount: 0 };
21
- map.set(key, entry);
22
- }
23
- entry.refCount++;
24
- try {
25
- return await entry.mutex.runExclusive(task);
26
- }
27
- finally {
28
- entry.refCount--;
29
- if (entry.refCount === 0 && map.get(key) === entry) {
30
- map.delete(key);
31
- }
32
- }
33
- }
34
- };
35
- };
36
- exports.makeKeyedMutex = makeKeyedMutex;
@@ -1,471 +0,0 @@
1
- 'use strict';
2
- const { proto } = require('../../WAProto/index.js');
3
- const { generateMessageIDV2 } = require('./generics.js');
4
- const JS_KEYWORDS = new Set([
5
- 'import',
6
- 'export',
7
- 'from',
8
- 'default',
9
- 'as',
10
- 'const',
11
- 'let',
12
- 'var',
13
- 'function',
14
- 'class',
15
- 'extends',
16
- 'new',
17
- 'return',
18
- 'if',
19
- 'else',
20
- 'for',
21
- 'while',
22
- 'do',
23
- 'switch',
24
- 'case',
25
- 'break',
26
- 'continue',
27
- 'try',
28
- 'catch',
29
- 'finally',
30
- 'throw',
31
- 'async',
32
- 'await',
33
- 'yield',
34
- 'typeof',
35
- 'instanceof',
36
- 'in',
37
- 'of',
38
- 'delete',
39
- 'void',
40
- 'true',
41
- 'false',
42
- 'null',
43
- 'undefined',
44
- 'NaN',
45
- 'Infinity',
46
- 'this',
47
- 'super',
48
- 'static',
49
- 'get',
50
- 'set',
51
- 'debugger',
52
- 'with'
53
- ]);
54
- const PYTHON_KEYWORDS = new Set([
55
- 'import',
56
- 'from',
57
- 'as',
58
- 'def',
59
- 'class',
60
- 'return',
61
- 'if',
62
- 'elif',
63
- 'else',
64
- 'for',
65
- 'while',
66
- 'break',
67
- 'continue',
68
- 'try',
69
- 'except',
70
- 'finally',
71
- 'raise',
72
- 'with',
73
- 'yield',
74
- 'lambda',
75
- 'pass',
76
- 'del',
77
- 'global',
78
- 'nonlocal',
79
- 'assert',
80
- 'True',
81
- 'False',
82
- 'None',
83
- 'and',
84
- 'or',
85
- 'not',
86
- 'in',
87
- 'is',
88
- 'async',
89
- 'await',
90
- 'self',
91
- 'print'
92
- ]);
93
- const LANGUAGE_KEYWORDS = {
94
- javascript: JS_KEYWORDS,
95
- typescript: JS_KEYWORDS,
96
- js: JS_KEYWORDS,
97
- ts: JS_KEYWORDS,
98
- python: PYTHON_KEYWORDS,
99
- py: PYTHON_KEYWORDS
100
- };
101
- var CodeHighlightType;
102
- (function (CodeHighlightType) {
103
- CodeHighlightType[(CodeHighlightType['DEFAULT'] = 0)] = 'DEFAULT';
104
- CodeHighlightType[(CodeHighlightType['KEYWORD'] = 1)] = 'KEYWORD';
105
- CodeHighlightType[(CodeHighlightType['METHOD'] = 2)] = 'METHOD';
106
- CodeHighlightType[(CodeHighlightType['STRING'] = 3)] = 'STRING';
107
- CodeHighlightType[(CodeHighlightType['NUMBER'] = 4)] = 'NUMBER';
108
- CodeHighlightType[(CodeHighlightType['COMMENT'] = 5)] = 'COMMENT';
109
- })(CodeHighlightType || (CodeHighlightType = {}));
110
- var RichSubMessageType;
111
- (function (RichSubMessageType) {
112
- RichSubMessageType[(RichSubMessageType['UNKNOWN'] = 0)] = 'UNKNOWN';
113
- RichSubMessageType[(RichSubMessageType['GRID_IMAGE'] = 1)] = 'GRID_IMAGE';
114
- RichSubMessageType[(RichSubMessageType['TEXT'] = 2)] = 'TEXT';
115
- RichSubMessageType[(RichSubMessageType['INLINE_IMAGE'] = 3)] = 'INLINE_IMAGE';
116
- RichSubMessageType[(RichSubMessageType['TABLE'] = 4)] = 'TABLE';
117
- RichSubMessageType[(RichSubMessageType['CODE'] = 5)] = 'CODE';
118
- RichSubMessageType[(RichSubMessageType['DYNAMIC'] = 6)] = 'DYNAMIC';
119
- RichSubMessageType[(RichSubMessageType['MAP'] = 7)] = 'MAP';
120
- RichSubMessageType[(RichSubMessageType['LATEX'] = 8)] = 'LATEX';
121
- RichSubMessageType[(RichSubMessageType['CONTENT_ITEMS'] = 9)] = 'CONTENT_ITEMS';
122
- })(RichSubMessageType || (RichSubMessageType = {}));
123
- const tokenizeCode = (codeStr, language = 'javascript') => {
124
- const keywords = LANGUAGE_KEYWORDS[language] || JS_KEYWORDS;
125
- const blocks = [];
126
- const lines = codeStr.split('\n');
127
- for (let li = 0; li < lines.length; li++) {
128
- const line = lines[li];
129
- const isLast = li === lines.length - 1;
130
- const nl = isLast ? '' : '\n';
131
- if (!line.trim()) {
132
- blocks.push({
133
- highlightType: CodeHighlightType.DEFAULT,
134
- codeContent: line + nl
135
- });
136
- continue;
137
- }
138
- if (line.trim().startsWith('//') || line.trim().startsWith('#')) {
139
- blocks.push({
140
- highlightType: CodeHighlightType.COMMENT,
141
- codeContent: line + nl
142
- });
143
- continue;
144
- }
145
- const regex = /(\/\/.*$|#.*$)|(["'`](?:[^"'`\\]|\\.)*["'`])|(\b\d+(?:\.\d+)?\b)|(\b[a-zA-Z_$][\w$]*\b)|([^\s\w$"'`]+)|(\s+)/g;
146
- let match;
147
- const tokens = [];
148
- while ((match = regex.exec(line)) !== null) {
149
- const val = match[0];
150
- if (match[1]) {
151
- tokens.push({
152
- highlightType: CodeHighlightType.COMMENT,
153
- codeContent: val
154
- });
155
- }
156
- else if (match[2]) {
157
- tokens.push({
158
- highlightType: CodeHighlightType.STRING,
159
- codeContent: val
160
- });
161
- }
162
- else if (match[3]) {
163
- tokens.push({
164
- highlightType: CodeHighlightType.NUMBER,
165
- codeContent: val
166
- });
167
- }
168
- else if (match[4]) {
169
- if (keywords.has(val)) {
170
- tokens.push({
171
- highlightType: CodeHighlightType.KEYWORD,
172
- codeContent: val
173
- });
174
- }
175
- else {
176
- const after = line.slice(regex.lastIndex).trimStart();
177
- if (after.startsWith('(')) {
178
- tokens.push({
179
- highlightType: CodeHighlightType.METHOD,
180
- codeContent: val
181
- });
182
- }
183
- else {
184
- tokens.push({
185
- highlightType: CodeHighlightType.DEFAULT,
186
- codeContent: val
187
- });
188
- }
189
- }
190
- }
191
- else {
192
- tokens.push({
193
- highlightType: CodeHighlightType.DEFAULT,
194
- codeContent: val
195
- });
196
- }
197
- }
198
- if (tokens.length === 0) {
199
- blocks.push({
200
- highlightType: CodeHighlightType.DEFAULT,
201
- codeContent: line + nl
202
- });
203
- continue;
204
- }
205
- const merged = [];
206
- for (const t of tokens) {
207
- const prev = merged.length > 0 ? merged[merged.length - 1] : undefined;
208
- if (prev && prev.highlightType === t.highlightType) {
209
- prev.codeContent += t.codeContent;
210
- }
211
- else {
212
- merged.push({ ...t });
213
- }
214
- }
215
- if (merged.length > 0) {
216
- merged[merged.length - 1].codeContent += nl;
217
- }
218
- blocks.push(...merged);
219
- }
220
- return blocks;
221
- };
222
- const buildRichContextInfo = (quoted, options) => {
223
- const ctxInfo = {
224
- forwardingScore: 1,
225
- isForwarded: true,
226
- forwardedAiBotMessageInfo: { botJid: options.botJid ? options.botJid : '867051314767696@bot' },
227
- forwardOrigin: 4,
228
- ...(options.mentions ? { mentionedJid: options.mentions } : {})
229
- };
230
- if (quoted?.key) {
231
- ctxInfo.stanzaId = quoted.key.id;
232
- ctxInfo.participant = quoted.key.participant || quoted.sender || quoted.key.remoteJid;
233
- ctxInfo.quotedMessage = quoted.message;
234
- }
235
- return ctxInfo;
236
- };
237
- const buildBotForwardedMessage = (submessages, contextInfo, unifiedResponse) => {
238
- const richResponse = {
239
- messageType: 1,
240
- submessages,
241
- contextInfo
242
- };
243
- if (unifiedResponse) {
244
- richResponse.unifiedResponse = unifiedResponse;
245
- }
246
- return {
247
- botForwardedMessage: {
248
- message: {
249
- richResponseMessage: richResponse
250
- }
251
- }
252
- };
253
- };
254
- const generateTableContent = (title, headers, rows, quoted, options = {}) => {
255
- const { footer, headerText } = options;
256
- const tableRows = [{ items: headers, isHeading: true }, ...rows.map(row => ({ items: row.map(String) }))];
257
- const submessages = [];
258
- if (headerText) {
259
- submessages.push({ messageType: 2, messageText: headerText });
260
- }
261
- submessages.push({
262
- messageType: 4,
263
- tableMetadata: { title, rows: tableRows }
264
- });
265
- if (footer) {
266
- submessages.push({ messageType: 2, messageText: footer });
267
- }
268
- const ctxInfo = buildRichContextInfo(quoted);
269
- return {
270
- message: buildBotForwardedMessage(submessages, ctxInfo),
271
- messageId: generateMessageIDV2()
272
- };
273
- };
274
- const generateListContent = (title, items, quoted, options = {}) => {
275
- const { footer, headerText } = options;
276
- const tableRows = items.map(item => ({
277
- items: Array.isArray(item) ? item.map(String) : [String(item)]
278
- }));
279
- const submessages = [];
280
- if (headerText) {
281
- submessages.push({ messageType: 2, messageText: headerText });
282
- }
283
- submessages.push({
284
- messageType: 4,
285
- tableMetadata: { title, rows: tableRows }
286
- });
287
- if (footer) {
288
- submessages.push({ messageType: 2, messageText: footer });
289
- }
290
- const ctxInfo = buildRichContextInfo(quoted);
291
- return {
292
- message: buildBotForwardedMessage(submessages, ctxInfo),
293
- messageId: generateMessageIDV2()
294
- };
295
- };
296
- const generateCodeBlockContent = (code, quoted, options = {}) => {
297
- const { title, footer, language = 'javascript' } = options;
298
- const submessages = [];
299
- if (title) {
300
- submessages.push({ messageType: 2, messageText: title });
301
- }
302
- submessages.push({
303
- messageType: 5,
304
- codeMetadata: {
305
- codeLanguage: language,
306
- codeBlocks: tokenizeCode(code, language)
307
- }
308
- });
309
- if (footer) {
310
- submessages.push({ messageType: 2, messageText: footer });
311
- }
312
- const ctxInfo = buildRichContextInfo(quoted);
313
- return {
314
- message: buildBotForwardedMessage(submessages, ctxInfo),
315
- messageId: generateMessageIDV2()
316
- };
317
- };
318
- const generateLatexContent = (quoted, options) => {
319
- const { text, expressions, headerText, footer } = options;
320
- const submessages = [];
321
- if (headerText) {
322
- submessages.push({ messageType: 2, messageText: headerText });
323
- }
324
- const latexExpressions = expressions.map(expr => {
325
- const entry = {
326
- latexExpression: expr.latexExpression,
327
- url: expr.url,
328
- width: expr.width,
329
- height: expr.height
330
- };
331
- if (expr.fontHeight !== undefined)
332
- entry.fontHeight = expr.fontHeight;
333
- if (expr.imageTopPadding !== undefined)
334
- entry.imageTopPadding = expr.imageTopPadding;
335
- if (expr.imageLeadingPadding !== undefined)
336
- entry.imageLeadingPadding = expr.imageLeadingPadding;
337
- if (expr.imageBottomPadding !== undefined)
338
- entry.imageBottomPadding = expr.imageBottomPadding;
339
- if (expr.imageTrailingPadding !== undefined)
340
- entry.imageTrailingPadding = expr.imageTrailingPadding;
341
- return entry;
342
- });
343
- submessages.push({
344
- messageType: 8,
345
- latexMetadata: {
346
- text: text || '',
347
- expressions: latexExpressions
348
- }
349
- });
350
- if (footer) {
351
- submessages.push({ messageType: 2, messageText: footer });
352
- }
353
- const ctxInfo = buildRichContextInfo(quoted);
354
- return {
355
- message: buildBotForwardedMessage(submessages, ctxInfo),
356
- messageId: generateMessageIDV2()
357
- };
358
- };
359
- const generateLatexImageContent = async (quoted, options, uploadFn, renderLatexToPng) => {
360
- const { text, expressions, headerText, footer } = options;
361
- const submessages = [];
362
- if (headerText) {
363
- submessages.push({ messageType: 2, messageText: headerText });
364
- }
365
- const latexExpressions = await Promise.all(expressions.map(async (expr) => {
366
- const { buffer, width, height } = await renderLatexToPng(expr.latexExpression);
367
- const uploadResult = await uploadFn(buffer, 'image');
368
- const imageUrl = uploadResult.url || uploadResult.directPath;
369
- return {
370
- latexExpression: expr.latexExpression,
371
- url: imageUrl,
372
- width,
373
- height
374
- };
375
- }));
376
- submessages.push({
377
- messageType: 8,
378
- latexMetadata: {
379
- text: text || '',
380
- expressions: latexExpressions
381
- }
382
- });
383
- if (footer) {
384
- submessages.push({ messageType: 2, messageText: footer });
385
- }
386
- const ctxInfo = buildRichContextInfo(quoted);
387
- return {
388
- message: buildBotForwardedMessage(submessages, ctxInfo),
389
- messageId: generateMessageIDV2()
390
- };
391
- };
392
- const generateLatexInlineImageContent = async (quoted, options, uploadFn, renderLatexToPng) => {
393
- const { text, expressions, headerText, footer } = options;
394
- const submessages = [];
395
- if (headerText) {
396
- submessages.push({ messageType: 2, messageText: headerText });
397
- }
398
- if (text) {
399
- submessages.push({ messageType: 2, messageText: text });
400
- }
401
- for (const expr of expressions) {
402
- const { buffer, width, height } = await renderLatexToPng(expr.latexExpression);
403
- const uploadResult = await uploadFn(buffer, 'image');
404
- const imageUrl = uploadResult.url || uploadResult.directPath;
405
- submessages.push({
406
- messageType: 3,
407
- imageMetadata: {
408
- imageUrl: {
409
- imagePreviewUrl: imageUrl,
410
- imageHighResUrl: imageUrl
411
- },
412
- imageText: expr.latexExpression,
413
- alignment: 2
414
- }
415
- });
416
- }
417
- if (footer) {
418
- submessages.push({ messageType: 2, messageText: footer });
419
- }
420
- const ctxInfo = buildRichContextInfo(quoted);
421
- return {
422
- message: buildBotForwardedMessage(submessages, ctxInfo),
423
- messageId: generateMessageIDV2()
424
- };
425
- };
426
- const captureUnifiedResponse = msg => {
427
- const botFwd = msg?.botForwardedMessage?.message;
428
- if (!botFwd)
429
- return null;
430
- const rich = botFwd.richResponseMessage;
431
- if (!rich?.unifiedResponse?.data)
432
- return null;
433
- return {
434
- unifiedResponse: { data: rich.unifiedResponse.data },
435
- submessages: rich.submessages || [],
436
- contextInfo: rich.contextInfo || {}
437
- };
438
- };
439
- const generateUnifiedResponseContent = (quoted, captured) => {
440
- const ctxInfo = buildRichContextInfo(quoted);
441
- return {
442
- message: buildBotForwardedMessage(captured.submessages, ctxInfo, captured.unifiedResponse),
443
- messageId: generateMessageIDV2()
444
- };
445
- };
446
- const generateRichMessageContent = (submessages, quoted, options) => {
447
- const ctxInfo = buildRichContextInfo(quoted, options);
448
- return {
449
- message: buildBotForwardedMessage(submessages, ctxInfo),
450
- messageId: generateMessageIDV2()
451
- };
452
- };
453
- module.exports = {
454
- JS_KEYWORDS,
455
- PYTHON_KEYWORDS,
456
- LANGUAGE_KEYWORDS,
457
- CodeHighlightType,
458
- RichSubMessageType,
459
- tokenizeCode,
460
- buildRichContextInfo,
461
- buildBotForwardedMessage,
462
- generateTableContent,
463
- generateListContent,
464
- generateCodeBlockContent,
465
- generateLatexContent,
466
- generateLatexImageContent,
467
- generateLatexInlineImageContent,
468
- captureUnifiedResponse,
469
- generateUnifiedResponseContent,
470
- generateRichMessageContent
471
- };