@badzz88/baileys 8.5.6 → 8.5.8

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 (225) hide show
  1. package/README.md +337 -1055
  2. package/WAProto/WAProto.proto +28 -1189
  3. package/WAProto/fix-imports.js +79 -69
  4. package/WAProto/index.d.ts +71491 -15254
  5. package/WAProto/index.js +126436 -19814
  6. package/engine-requirements.js +8 -15
  7. package/lib/Defaults/index.js +130 -0
  8. package/{src → lib}/Signal/Group/ciphertext-message.js +2 -5
  9. package/lib/Signal/Group/group-session-builder.js +30 -0
  10. package/{src → lib}/Signal/Group/group_cipher.js +11 -11
  11. package/lib/Signal/Group/index.js +12 -0
  12. package/lib/Signal/Group/keyhelper.js +18 -0
  13. package/{src → lib}/Signal/Group/sender-chain-key.js +6 -9
  14. package/{src → lib}/Signal/Group/sender-key-distribution-message.js +6 -9
  15. package/{src → lib}/Signal/Group/sender-key-message.js +9 -12
  16. package/{src → lib}/Signal/Group/sender-key-name.js +2 -5
  17. package/{src → lib}/Signal/Group/sender-key-record.js +8 -11
  18. package/{src → lib}/Signal/Group/sender-key-state.js +6 -9
  19. package/lib/Signal/Group/sender-message-key.js +26 -0
  20. package/{src → lib}/Signal/libsignal.js +131 -155
  21. package/{src → lib}/Signal/lid-mapping.js +27 -23
  22. package/lib/Socket/Client/index.js +3 -0
  23. package/lib/Socket/Client/types.js +11 -0
  24. package/{src → lib}/Socket/Client/websocket.js +11 -18
  25. package/{src → lib}/Socket/business.js +35 -67
  26. package/{src → lib}/Socket/chats.js +294 -550
  27. package/{src → lib}/Socket/communities.js +82 -114
  28. package/lib/Socket/graphql.js +716 -0
  29. package/lib/Socket/groups.js +374 -0
  30. package/lib/Socket/index.js +18 -0
  31. package/lib/Socket/interop.js +463 -0
  32. package/{src → lib}/Socket/luxu.js +120 -82
  33. package/lib/Socket/messages-recv.js +1916 -0
  34. package/lib/Socket/messages-send.js +1436 -0
  35. package/lib/Socket/mex.js +54 -0
  36. package/lib/Socket/newsletter.js +757 -0
  37. package/lib/Socket/privacy.js +318 -0
  38. package/{src → lib}/Socket/socket.js +356 -244
  39. package/lib/Socket/username.js +236 -0
  40. package/lib/Store/index.js +10 -0
  41. package/{src → lib}/Store/keyed-db.js +11 -21
  42. package/lib/Store/make-cache-manager-store.js +85 -0
  43. package/lib/Store/make-in-memory-store.js +244 -0
  44. package/{src → lib}/Store/make-ordered-dictionary.js +19 -25
  45. package/{src → lib}/Store/object-repository.js +11 -5
  46. package/lib/Types/Auth.js +2 -0
  47. package/lib/Types/Bussines.js +2 -0
  48. package/lib/Types/Call.js +2 -0
  49. package/lib/Types/Chat.js +8 -0
  50. package/lib/Types/Contact.js +2 -0
  51. package/lib/Types/Events.js +2 -0
  52. package/lib/Types/GroupMetadata.js +2 -0
  53. package/lib/Types/Label.js +25 -0
  54. package/lib/Types/LabelAssociation.js +7 -0
  55. package/lib/Types/Message.js +11 -0
  56. package/lib/Types/Mex.js +111 -0
  57. package/lib/Types/Product.js +2 -0
  58. package/lib/Types/Signal.js +2 -0
  59. package/lib/Types/Socket.js +3 -0
  60. package/lib/Types/State.js +56 -0
  61. package/lib/Types/USync.js +2 -0
  62. package/lib/Types/index.js +26 -0
  63. package/{src → lib}/Utils/auth-utils.js +91 -43
  64. package/lib/Utils/browser-utils.js +48 -0
  65. package/lib/Utils/business.js +231 -0
  66. package/lib/Utils/chat-utils.js +872 -0
  67. package/lib/Utils/companion-reg-client-utils.js +35 -0
  68. package/lib/Utils/crypto.js +118 -0
  69. package/lib/Utils/decode-wa-message.js +350 -0
  70. package/{src → lib}/Utils/event-buffer.js +81 -39
  71. package/lib/Utils/generics.js +403 -0
  72. package/lib/Utils/history.js +134 -0
  73. package/{src → lib}/Utils/identity-change-handler.js +9 -11
  74. package/lib/Utils/index.js +23 -0
  75. package/lib/Utils/link-preview.js +85 -0
  76. package/lib/Utils/logger.js +3 -0
  77. package/lib/Utils/lt-hash.js +8 -0
  78. package/{src → lib}/Utils/make-mutex.js +7 -10
  79. package/lib/Utils/message-composer.js +273 -0
  80. package/{src → lib}/Utils/message-retry-manager.js +76 -28
  81. package/lib/Utils/messages-media.js +870 -0
  82. package/lib/Utils/messages.js +1337 -0
  83. package/lib/Utils/noise-handler.js +201 -0
  84. package/{src → lib}/Utils/offline-node-processor.js +10 -4
  85. package/{src → lib}/Utils/pre-key-manager.js +27 -11
  86. package/lib/Utils/process-message.js +630 -0
  87. package/{src → lib}/Utils/reporting-utils.js +12 -15
  88. package/lib/Utils/signal.js +201 -0
  89. package/{src → lib}/Utils/stanza-ack.js +12 -4
  90. package/lib/Utils/sticker.js +110 -0
  91. package/{src → lib}/Utils/sync-action-utils.js +14 -10
  92. package/{src → lib}/Utils/tc-token-utils.js +48 -43
  93. package/{src → lib}/Utils/use-multi-file-auth-state.js +35 -25
  94. package/lib/Utils/validate-connection.js +203 -0
  95. package/{src → lib}/WABinary/constants.js +9 -12
  96. package/{src → lib}/WABinary/decode.js +38 -118
  97. package/{src → lib}/WABinary/encode.js +6 -11
  98. package/lib/WABinary/generic-utils.js +204 -0
  99. package/lib/WABinary/index.js +6 -0
  100. package/lib/WABinary/jid-utils.js +98 -0
  101. package/lib/WABinary/types.js +2 -0
  102. package/{src → lib}/WAM/BinaryInfo.js +2 -5
  103. package/{src → lib}/WAM/constants.js +4 -16635
  104. package/{src → lib}/WAM/encode.js +18 -17
  105. package/lib/WAM/index.js +4 -0
  106. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
  107. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  108. package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
  109. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  110. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  111. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +58 -0
  112. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  113. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  114. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +28 -0
  115. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
  116. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  117. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
  118. package/lib/WAUSync/Protocols/index.js +12 -0
  119. package/lib/WAUSync/USyncQuery.js +151 -0
  120. package/lib/WAUSync/USyncUser.js +56 -0
  121. package/lib/WAUSync/index.js +3 -0
  122. package/{src → lib}/index.js +16 -51
  123. package/package.json +129 -99
  124. package/LICENSE +0 -21
  125. package/src/Defaults/index.js +0 -186
  126. package/src/Defaults/phonenumber-mcc.json +0 -223
  127. package/src/Signal/Group/group-session-builder.js +0 -86
  128. package/src/Signal/Group/index.js +0 -140
  129. package/src/Signal/Group/keyhelper.js +0 -77
  130. package/src/Signal/Group/sender-message-key.js +0 -29
  131. package/src/Socket/Client/index.js +0 -31
  132. package/src/Socket/Client/types.js +0 -13
  133. package/src/Socket/aigroups.js +0 -221
  134. package/src/Socket/graphql.js +0 -523
  135. package/src/Socket/groups.js +0 -516
  136. package/src/Socket/index.js +0 -31
  137. package/src/Socket/interactive-handler.js +0 -527
  138. package/src/Socket/interop.js +0 -339
  139. package/src/Socket/managed-account.js +0 -98
  140. package/src/Socket/messages-recv.js +0 -2685
  141. package/src/Socket/messages-send.js +0 -2047
  142. package/src/Socket/mex.js +0 -57
  143. package/src/Socket/newsletter.js +0 -455
  144. package/src/Socket/privacy.js +0 -125
  145. package/src/Socket/registration.js +0 -236
  146. package/src/Socket/text-router.js +0 -65
  147. package/src/Socket/username.js +0 -130
  148. package/src/Store/index.js +0 -33
  149. package/src/Store/make-cache-manager-store.js +0 -84
  150. package/src/Store/make-in-memory-store.js +0 -551
  151. package/src/Types/Auth.js +0 -31
  152. package/src/Types/Bussines.js +0 -2
  153. package/src/Types/Call.js +0 -2
  154. package/src/Types/Chat.js +0 -4
  155. package/src/Types/Contact.js +0 -2
  156. package/src/Types/Events.js +0 -2
  157. package/src/Types/GroupMetadata.js +0 -2
  158. package/src/Types/Label.js +0 -26
  159. package/src/Types/LabelAssociation.js +0 -8
  160. package/src/Types/Message.js +0 -93
  161. package/src/Types/Mex.js +0 -112
  162. package/src/Types/Newsletter.js +0 -109
  163. package/src/Types/Product.js +0 -2
  164. package/src/Types/Signal.js +0 -2
  165. package/src/Types/Socket.js +0 -2
  166. package/src/Types/State.js +0 -62
  167. package/src/Types/USync.js +0 -2
  168. package/src/Types/index.js +0 -56
  169. package/src/Utils/browser-utils.js +0 -112
  170. package/src/Utils/business.js +0 -240
  171. package/src/Utils/chat-utils.js +0 -1230
  172. package/src/Utils/command-loader.d.ts +0 -27
  173. package/src/Utils/command-loader.js +0 -89
  174. package/src/Utils/companion-reg-client-utils.js +0 -40
  175. package/src/Utils/consumer-application.js +0 -105
  176. package/src/Utils/crypto.js +0 -118
  177. package/src/Utils/curve25519-js.js +0 -242
  178. package/src/Utils/decode-wa-message.js +0 -529
  179. package/src/Utils/generics.js +0 -483
  180. package/src/Utils/group-history.js +0 -44
  181. package/src/Utils/history.js +0 -232
  182. package/src/Utils/index.js +0 -58
  183. package/src/Utils/jid-display-normalization.js +0 -195
  184. package/src/Utils/link-preview.js +0 -135
  185. package/src/Utils/logger.js +0 -8
  186. package/src/Utils/lt-hash.js +0 -25
  187. package/src/Utils/message-composer.js +0 -471
  188. package/src/Utils/messages-media.js +0 -843
  189. package/src/Utils/messages.js +0 -2817
  190. package/src/Utils/meta-ai-msmsg.js +0 -222
  191. package/src/Utils/native-bridge.js +0 -68
  192. package/src/Utils/noise-handler.js +0 -169
  193. package/src/Utils/process-message.js +0 -950
  194. package/src/Utils/session-pool.d.ts +0 -14
  195. package/src/Utils/session-pool.js +0 -70
  196. package/src/Utils/signal.js +0 -217
  197. package/src/Utils/sticker.d.ts +0 -13
  198. package/src/Utils/sticker.js +0 -123
  199. package/src/Utils/validate-connection.js +0 -209
  200. package/src/Utils/view-once-cache.d.ts +0 -12
  201. package/src/Utils/view-once-cache.js +0 -63
  202. package/src/Utils/voip-rekey.js +0 -22
  203. package/src/WABinary/generic-utils.js +0 -238
  204. package/src/WABinary/index.js +0 -34
  205. package/src/WABinary/jid-utils.js +0 -351
  206. package/src/WABinary/types.js +0 -2
  207. package/src/WAM/index.js +0 -32
  208. package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -53
  209. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -44
  210. package/src/WAUSync/Protocols/USyncContactProtocol.js +0 -55
  211. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +0 -55
  212. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -31
  213. package/src/WAUSync/Protocols/USyncFeatureProtocol.js +0 -54
  214. package/src/WAUSync/Protocols/USyncLIDProtocol.js +0 -32
  215. package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -473
  216. package/src/WAUSync/Protocols/USyncPictureProtocol.js +0 -34
  217. package/src/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
  218. package/src/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
  219. package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
  220. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
  221. package/src/WAUSync/Protocols/index.js +0 -40
  222. package/src/WAUSync/USyncQuery.js +0 -126
  223. package/src/WAUSync/USyncUser.js +0 -50
  224. package/src/WAUSync/index.js +0 -32
  225. package/src/antiban.js +0 -4152
@@ -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
- };