@queenanya/baileys 9.2.4 → 9.4.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 (301) hide show
  1. package/README.md +329 -1237
  2. package/WAProto/fix-imports.js +22 -18
  3. package/WAProto/index.js +22 -18
  4. package/lib/Defaults/index.d.ts +17 -0
  5. package/lib/Defaults/index.d.ts.map +1 -1
  6. package/lib/Defaults/index.js +29 -3
  7. package/lib/Defaults/index.js.map +1 -1
  8. package/lib/Signal/libsignal.d.ts.map +1 -1
  9. package/lib/Signal/libsignal.js +61 -2
  10. package/lib/Signal/libsignal.js.map +1 -1
  11. package/lib/Signal/lid-mapping.d.ts +5 -9
  12. package/lib/Signal/lid-mapping.d.ts.map +1 -1
  13. package/lib/Signal/lid-mapping.js +170 -70
  14. package/lib/Signal/lid-mapping.js.map +1 -1
  15. package/lib/Socket/business.d.ts +114 -2
  16. package/lib/Socket/business.d.ts.map +1 -1
  17. package/lib/Socket/chats.d.ts +14 -1
  18. package/lib/Socket/chats.d.ts.map +1 -1
  19. package/lib/Socket/chats.js +253 -38
  20. package/lib/Socket/chats.js.map +1 -1
  21. package/lib/Socket/communities.d.ts +114 -2
  22. package/lib/Socket/communities.d.ts.map +1 -1
  23. package/lib/Socket/groups.d.ts +9 -0
  24. package/lib/Socket/groups.d.ts.map +1 -1
  25. package/lib/Socket/groups.js +6 -0
  26. package/lib/Socket/groups.js.map +1 -1
  27. package/lib/Socket/index.d.ts +114 -2
  28. package/lib/Socket/index.d.ts.map +1 -1
  29. package/lib/Socket/index.js +0 -6
  30. package/lib/Socket/index.js.map +1 -1
  31. package/lib/Socket/messages-recv.d.ts +115 -3
  32. package/lib/Socket/messages-recv.d.ts.map +1 -1
  33. package/lib/Socket/messages-recv.js +739 -150
  34. package/lib/Socket/messages-recv.js.map +1 -1
  35. package/lib/Socket/messages-send.d.ts +118 -4
  36. package/lib/Socket/messages-send.d.ts.map +1 -1
  37. package/lib/Socket/messages-send.js +328 -86
  38. package/lib/Socket/messages-send.js.map +1 -1
  39. package/lib/Socket/newsletter.d.ts +9 -0
  40. package/lib/Socket/newsletter.d.ts.map +1 -1
  41. package/lib/Socket/newsletter.js +2 -2
  42. package/lib/Socket/newsletter.js.map +1 -1
  43. package/lib/Socket/socket.d.ts +2 -0
  44. package/lib/Socket/socket.d.ts.map +1 -1
  45. package/lib/Socket/socket.js +143 -17
  46. package/lib/Socket/socket.js.map +1 -1
  47. package/lib/Types/Auth.d.ts +2 -0
  48. package/lib/Types/Auth.d.ts.map +1 -1
  49. package/lib/Types/Call.d.ts +10 -1
  50. package/lib/Types/Call.d.ts.map +1 -1
  51. package/lib/Types/Contact.d.ts +2 -0
  52. package/lib/Types/Contact.d.ts.map +1 -1
  53. package/lib/Types/Events.d.ts +21 -1
  54. package/lib/Types/Events.d.ts.map +1 -1
  55. package/lib/Types/GroupMetadata.d.ts +4 -0
  56. package/lib/Types/GroupMetadata.d.ts.map +1 -1
  57. package/lib/Types/Message.d.ts +530 -16
  58. package/lib/Types/Message.d.ts.map +1 -1
  59. package/lib/Types/Message.js.map +1 -1
  60. package/lib/Types/Newsletter.d.ts +37 -31
  61. package/lib/Types/Newsletter.d.ts.map +1 -1
  62. package/lib/Types/Newsletter.js +27 -23
  63. package/lib/Types/Newsletter.js.map +1 -1
  64. package/lib/Types/State.d.ts +54 -0
  65. package/lib/Types/State.d.ts.map +1 -1
  66. package/lib/Types/State.js +42 -0
  67. package/lib/Types/State.js.map +1 -1
  68. package/lib/Types/index.d.ts +9 -0
  69. package/lib/Types/index.d.ts.map +1 -1
  70. package/lib/Types/index.js.map +1 -1
  71. package/lib/Utils/browser-utils.d.ts +13 -0
  72. package/lib/Utils/browser-utils.d.ts.map +1 -1
  73. package/lib/Utils/browser-utils.js +90 -10
  74. package/lib/Utils/browser-utils.js.map +1 -1
  75. package/lib/Utils/chat-utils.d.ts +30 -0
  76. package/lib/Utils/chat-utils.d.ts.map +1 -1
  77. package/lib/Utils/chat-utils.js +81 -52
  78. package/lib/Utils/chat-utils.js.map +1 -1
  79. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  80. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  81. package/lib/Utils/companion-reg-client-utils.js +34 -0
  82. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  83. package/lib/Utils/crypto.d.ts +4 -8
  84. package/lib/Utils/crypto.d.ts.map +1 -1
  85. package/lib/Utils/crypto.js +2 -26
  86. package/lib/Utils/crypto.js.map +1 -1
  87. package/lib/Utils/decode-wa-message.d.ts +12 -0
  88. package/lib/Utils/decode-wa-message.d.ts.map +1 -1
  89. package/lib/Utils/decode-wa-message.js +16 -0
  90. package/lib/Utils/decode-wa-message.js.map +1 -1
  91. package/lib/Utils/event-buffer.js +10 -1
  92. package/lib/Utils/event-buffer.js.map +1 -1
  93. package/lib/Utils/generics.d.ts +3 -1
  94. package/lib/Utils/generics.d.ts.map +1 -1
  95. package/lib/Utils/generics.js +16 -3
  96. package/lib/Utils/generics.js.map +1 -1
  97. package/lib/Utils/history.d.ts +5 -2
  98. package/lib/Utils/history.d.ts.map +1 -1
  99. package/lib/Utils/history.js +53 -17
  100. package/lib/Utils/history.js.map +1 -1
  101. package/lib/Utils/identity-change-handler.d.ts +44 -0
  102. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  103. package/lib/Utils/identity-change-handler.js +50 -0
  104. package/lib/Utils/identity-change-handler.js.map +1 -0
  105. package/lib/Utils/index.d.ts +6 -0
  106. package/lib/Utils/index.d.ts.map +1 -1
  107. package/lib/Utils/index.js +6 -0
  108. package/lib/Utils/index.js.map +1 -1
  109. package/lib/Utils/interactive-message.d.ts +201 -0
  110. package/lib/Utils/interactive-message.d.ts.map +1 -0
  111. package/lib/Utils/interactive-message.js +256 -0
  112. package/lib/Utils/interactive-message.js.map +1 -0
  113. package/lib/Utils/lt-hash.d.ts +7 -12
  114. package/lib/Utils/lt-hash.d.ts.map +1 -1
  115. package/lib/Utils/lt-hash.js +2 -42
  116. package/lib/Utils/lt-hash.js.map +1 -1
  117. package/lib/Utils/message-composer.d.ts +5 -0
  118. package/lib/Utils/message-composer.d.ts.map +1 -0
  119. package/lib/Utils/message-composer.js +5 -0
  120. package/lib/Utils/message-composer.js.map +1 -0
  121. package/lib/Utils/message-retry-manager.d.ts +30 -2
  122. package/lib/Utils/message-retry-manager.d.ts.map +1 -1
  123. package/lib/Utils/message-retry-manager.js +59 -2
  124. package/lib/Utils/message-retry-manager.js.map +1 -1
  125. package/lib/Utils/messages-media.d.ts +19 -5
  126. package/lib/Utils/messages-media.d.ts.map +1 -1
  127. package/lib/Utils/messages-media.js +26 -17
  128. package/lib/Utils/messages-media.js.map +1 -1
  129. package/lib/Utils/messages.d.ts.map +1 -1
  130. package/lib/Utils/messages.js +433 -13
  131. package/lib/Utils/messages.js.map +1 -1
  132. package/lib/Utils/noise-handler.d.ts +2 -2
  133. package/lib/Utils/noise-handler.d.ts.map +1 -1
  134. package/lib/Utils/noise-handler.js +10 -10
  135. package/lib/Utils/noise-handler.js.map +1 -1
  136. package/lib/Utils/offline-node-processor.d.ts +17 -0
  137. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  138. package/lib/Utils/offline-node-processor.js +40 -0
  139. package/lib/Utils/offline-node-processor.js.map +1 -0
  140. package/lib/Utils/process-message.d.ts.map +1 -1
  141. package/lib/Utils/process-message.js +96 -16
  142. package/lib/Utils/process-message.js.map +1 -1
  143. package/lib/Utils/reporting-utils.js +2 -2
  144. package/lib/Utils/reporting-utils.js.map +1 -1
  145. package/lib/Utils/stanza-ack.d.ts +11 -0
  146. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  147. package/lib/Utils/stanza-ack.js +38 -0
  148. package/lib/Utils/stanza-ack.js.map +1 -0
  149. package/lib/Utils/sync-action-utils.d.ts.map +1 -1
  150. package/lib/Utils/sync-action-utils.js +2 -1
  151. package/lib/Utils/sync-action-utils.js.map +1 -1
  152. package/lib/Utils/tc-token-utils.d.ts +26 -1
  153. package/lib/Utils/tc-token-utils.d.ts.map +1 -1
  154. package/lib/Utils/tc-token-utils.js +149 -4
  155. package/lib/Utils/tc-token-utils.js.map +1 -1
  156. package/lib/Utils/use-mongo-file-auth-state.d.ts +16 -0
  157. package/lib/Utils/use-mongo-file-auth-state.d.ts.map +1 -0
  158. package/lib/Utils/use-mongo-file-auth-state.js +60 -0
  159. package/lib/Utils/use-mongo-file-auth-state.js.map +1 -0
  160. package/lib/Utils/use-multi-file-auth-state.js +1 -1
  161. package/lib/Utils/use-multi-file-auth-state.js.map +1 -1
  162. package/lib/Utils/validate-connection.d.ts.map +1 -1
  163. package/lib/Utils/validate-connection.js +11 -1
  164. package/lib/Utils/validate-connection.js.map +1 -1
  165. package/lib/WABinary/generic-utils.d.ts +9 -0
  166. package/lib/WABinary/generic-utils.d.ts.map +1 -1
  167. package/lib/WABinary/generic-utils.js +23 -0
  168. package/lib/WABinary/generic-utils.js.map +1 -1
  169. package/lib/WABinary/jid-utils.js.map +1 -1
  170. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -1
  171. package/lib/WAUSync/Protocols/USyncContactProtocol.js +26 -3
  172. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -1
  173. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  174. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  175. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  176. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  177. package/lib/WAUSync/Protocols/index.d.ts +1 -0
  178. package/lib/WAUSync/Protocols/index.d.ts.map +1 -1
  179. package/lib/WAUSync/Protocols/index.js +1 -0
  180. package/lib/WAUSync/Protocols/index.js.map +1 -1
  181. package/lib/WAUSync/USyncQuery.d.ts +1 -0
  182. package/lib/WAUSync/USyncQuery.d.ts.map +1 -1
  183. package/lib/WAUSync/USyncQuery.js +5 -1
  184. package/lib/WAUSync/USyncQuery.js.map +1 -1
  185. package/lib/WAUSync/USyncUser.d.ts +4 -0
  186. package/lib/WAUSync/USyncUser.d.ts.map +1 -1
  187. package/lib/WAUSync/USyncUser.js +8 -0
  188. package/lib/WAUSync/USyncUser.js.map +1 -1
  189. package/lib/addons/anti-delete.d.ts +72 -0
  190. package/lib/addons/anti-delete.d.ts.map +1 -0
  191. package/lib/addons/anti-delete.js +165 -0
  192. package/lib/addons/anti-delete.js.map +1 -0
  193. package/lib/addons/auto-reply.d.ts +67 -0
  194. package/lib/addons/auto-reply.d.ts.map +1 -0
  195. package/lib/addons/auto-reply.js +145 -0
  196. package/lib/addons/auto-reply.js.map +1 -0
  197. package/lib/addons/browser-presets.d.ts +16 -0
  198. package/lib/addons/browser-presets.d.ts.map +1 -0
  199. package/lib/addons/browser-presets.js +24 -0
  200. package/lib/addons/browser-presets.js.map +1 -0
  201. package/lib/addons/button-sender.d.ts +260 -0
  202. package/lib/addons/button-sender.d.ts.map +1 -0
  203. package/lib/addons/button-sender.js +771 -0
  204. package/lib/addons/button-sender.js.map +1 -0
  205. package/lib/addons/call-handler.d.ts +79 -0
  206. package/lib/addons/call-handler.d.ts.map +1 -0
  207. package/lib/addons/call-handler.js +342 -0
  208. package/lib/addons/call-handler.js.map +1 -0
  209. package/lib/addons/from-chats.d.ts +30 -0
  210. package/lib/addons/from-chats.d.ts.map +1 -0
  211. package/lib/addons/from-chats.js +38 -0
  212. package/lib/addons/from-chats.js.map +1 -0
  213. package/lib/addons/from-messages-recv.d.ts +59 -0
  214. package/lib/addons/from-messages-recv.d.ts.map +1 -0
  215. package/lib/addons/from-messages-recv.js +326 -0
  216. package/lib/addons/from-messages-recv.js.map +1 -0
  217. package/lib/addons/from-messages-send.d.ts +50 -0
  218. package/lib/addons/from-messages-send.d.ts.map +1 -0
  219. package/lib/addons/from-messages-send.js +148 -0
  220. package/lib/addons/from-messages-send.js.map +1 -0
  221. package/lib/addons/from-messages.d.ts +52 -0
  222. package/lib/addons/from-messages.d.ts.map +1 -0
  223. package/lib/addons/from-messages.js +304 -0
  224. package/lib/addons/from-messages.js.map +1 -0
  225. package/lib/addons/index.d.ts +67 -0
  226. package/lib/addons/index.d.ts.map +1 -0
  227. package/lib/addons/index.js +86 -0
  228. package/lib/addons/index.js.map +1 -0
  229. package/lib/addons/interactive-message.d.ts +201 -0
  230. package/lib/addons/interactive-message.d.ts.map +1 -0
  231. package/lib/addons/interactive-message.js +256 -0
  232. package/lib/addons/interactive-message.js.map +1 -0
  233. package/lib/addons/jid-plot.d.ts +49 -0
  234. package/lib/addons/jid-plot.d.ts.map +1 -0
  235. package/lib/addons/jid-plot.js +84 -0
  236. package/lib/addons/jid-plot.js.map +1 -0
  237. package/lib/addons/jid-plotting.d.ts +54 -0
  238. package/lib/addons/jid-plotting.d.ts.map +1 -0
  239. package/lib/addons/jid-plotting.js +150 -0
  240. package/lib/addons/jid-plotting.js.map +1 -0
  241. package/lib/addons/lid-support.d.ts +41 -0
  242. package/lib/addons/lid-support.d.ts.map +1 -0
  243. package/lib/addons/lid-support.js +42 -0
  244. package/lib/addons/lid-support.js.map +1 -0
  245. package/lib/addons/message-composer.d.ts +142 -0
  246. package/lib/addons/message-composer.d.ts.map +1 -0
  247. package/lib/addons/message-composer.js +377 -0
  248. package/lib/addons/message-composer.js.map +1 -0
  249. package/lib/addons/message-scheduler.d.ts +77 -0
  250. package/lib/addons/message-scheduler.d.ts.map +1 -0
  251. package/lib/addons/message-scheduler.js +108 -0
  252. package/lib/addons/message-scheduler.js.map +1 -0
  253. package/lib/addons/message-search.d.ts +51 -0
  254. package/lib/addons/message-search.d.ts.map +1 -0
  255. package/lib/addons/message-search.js +171 -0
  256. package/lib/addons/message-search.js.map +1 -0
  257. package/lib/addons/message-utils.d.ts +88 -0
  258. package/lib/addons/message-utils.d.ts.map +1 -0
  259. package/lib/addons/message-utils.js +292 -0
  260. package/lib/addons/message-utils.js.map +1 -0
  261. package/lib/addons/outgoing-calls.d.ts +64 -0
  262. package/lib/addons/outgoing-calls.d.ts.map +1 -0
  263. package/lib/addons/outgoing-calls.js +139 -0
  264. package/lib/addons/outgoing-calls.js.map +1 -0
  265. package/lib/addons/pairing-fix.d.ts +31 -0
  266. package/lib/addons/pairing-fix.d.ts.map +1 -0
  267. package/lib/addons/pairing-fix.js +74 -0
  268. package/lib/addons/pairing-fix.js.map +1 -0
  269. package/lib/addons/past-participants.d.ts +42 -0
  270. package/lib/addons/past-participants.d.ts.map +1 -0
  271. package/lib/addons/past-participants.js +41 -0
  272. package/lib/addons/past-participants.js.map +1 -0
  273. package/lib/addons/rich-response.d.ts +111 -0
  274. package/lib/addons/rich-response.d.ts.map +1 -0
  275. package/lib/addons/rich-response.js +152 -0
  276. package/lib/addons/rich-response.js.map +1 -0
  277. package/lib/addons/scheduling.d.ts +41 -0
  278. package/lib/addons/scheduling.d.ts.map +1 -0
  279. package/lib/addons/scheduling.js +110 -0
  280. package/lib/addons/scheduling.js.map +1 -0
  281. package/lib/addons/status-posting.d.ts +177 -0
  282. package/lib/addons/status-posting.d.ts.map +1 -0
  283. package/lib/addons/status-posting.js +240 -0
  284. package/lib/addons/status-posting.js.map +1 -0
  285. package/lib/addons/stickerpack.d.ts +37 -0
  286. package/lib/addons/stickerpack.d.ts.map +1 -0
  287. package/lib/addons/stickerpack.js +39 -0
  288. package/lib/addons/stickerpack.js.map +1 -0
  289. package/lib/addons/templates.d.ts +72 -0
  290. package/lib/addons/templates.d.ts.map +1 -0
  291. package/lib/addons/templates.js +145 -0
  292. package/lib/addons/templates.js.map +1 -0
  293. package/lib/addons/vcard.d.ts +59 -0
  294. package/lib/addons/vcard.d.ts.map +1 -0
  295. package/lib/addons/vcard.js +88 -0
  296. package/lib/addons/vcard.js.map +1 -0
  297. package/lib/index.d.ts +1 -0
  298. package/lib/index.d.ts.map +1 -1
  299. package/lib/index.js +1 -0
  300. package/lib/index.js.map +1 -1
  301. package/package.json +5 -3
@@ -0,0 +1,377 @@
1
+ /**
2
+ * message-composer.ts (addons)
3
+ * Rich message builders for Meta AI / Bot botForwardedMessage payloads.
4
+ * Ported from WhiskeySockets/Baileys main (April 2026).
5
+ */
6
+ import { generateMessageID } from '../Utils/generics.js';
7
+ // ── Keyword sets ──────────────────────────────────────────────────────────────
8
+ export const JS_KEYWORDS = new Set([
9
+ 'import',
10
+ 'export',
11
+ 'from',
12
+ 'default',
13
+ 'as',
14
+ 'const',
15
+ 'let',
16
+ 'var',
17
+ 'function',
18
+ 'class',
19
+ 'extends',
20
+ 'new',
21
+ 'return',
22
+ 'if',
23
+ 'else',
24
+ 'for',
25
+ 'while',
26
+ 'do',
27
+ 'switch',
28
+ 'case',
29
+ 'break',
30
+ 'continue',
31
+ 'try',
32
+ 'catch',
33
+ 'finally',
34
+ 'throw',
35
+ 'async',
36
+ 'await',
37
+ 'yield',
38
+ 'typeof',
39
+ 'instanceof',
40
+ 'in',
41
+ 'of',
42
+ 'delete',
43
+ 'void',
44
+ 'true',
45
+ 'false',
46
+ 'null',
47
+ 'undefined',
48
+ 'NaN',
49
+ 'Infinity',
50
+ 'this',
51
+ 'super',
52
+ 'static',
53
+ 'get',
54
+ 'set',
55
+ 'debugger',
56
+ 'with'
57
+ ]);
58
+ export const PYTHON_KEYWORDS = new Set([
59
+ 'import',
60
+ 'from',
61
+ 'as',
62
+ 'def',
63
+ 'class',
64
+ 'return',
65
+ 'if',
66
+ 'elif',
67
+ 'else',
68
+ 'for',
69
+ 'while',
70
+ 'break',
71
+ 'continue',
72
+ 'try',
73
+ 'except',
74
+ 'finally',
75
+ 'raise',
76
+ 'with',
77
+ 'yield',
78
+ 'lambda',
79
+ 'pass',
80
+ 'del',
81
+ 'global',
82
+ 'nonlocal',
83
+ 'assert',
84
+ 'True',
85
+ 'False',
86
+ 'None',
87
+ 'and',
88
+ 'or',
89
+ 'not',
90
+ 'in',
91
+ 'is',
92
+ 'async',
93
+ 'await',
94
+ 'self',
95
+ 'print'
96
+ ]);
97
+ export const LANGUAGE_KEYWORDS = {
98
+ javascript: JS_KEYWORDS,
99
+ typescript: JS_KEYWORDS,
100
+ js: JS_KEYWORDS,
101
+ ts: JS_KEYWORDS,
102
+ python: PYTHON_KEYWORDS,
103
+ py: PYTHON_KEYWORDS
104
+ };
105
+ // ── Enums ─────────────────────────────────────────────────────────────────────
106
+ export var CodeHighlightType;
107
+ (function (CodeHighlightType) {
108
+ CodeHighlightType[CodeHighlightType["DEFAULT"] = 0] = "DEFAULT";
109
+ CodeHighlightType[CodeHighlightType["KEYWORD"] = 1] = "KEYWORD";
110
+ CodeHighlightType[CodeHighlightType["METHOD"] = 2] = "METHOD";
111
+ CodeHighlightType[CodeHighlightType["STRING"] = 3] = "STRING";
112
+ CodeHighlightType[CodeHighlightType["NUMBER"] = 4] = "NUMBER";
113
+ CodeHighlightType[CodeHighlightType["COMMENT"] = 5] = "COMMENT";
114
+ })(CodeHighlightType || (CodeHighlightType = {}));
115
+ export var RichSubMessageType;
116
+ (function (RichSubMessageType) {
117
+ RichSubMessageType[RichSubMessageType["UNKNOWN"] = 0] = "UNKNOWN";
118
+ RichSubMessageType[RichSubMessageType["GRID_IMAGE"] = 1] = "GRID_IMAGE";
119
+ RichSubMessageType[RichSubMessageType["TEXT"] = 2] = "TEXT";
120
+ RichSubMessageType[RichSubMessageType["INLINE_IMAGE"] = 3] = "INLINE_IMAGE";
121
+ RichSubMessageType[RichSubMessageType["TABLE"] = 4] = "TABLE";
122
+ RichSubMessageType[RichSubMessageType["CODE"] = 5] = "CODE";
123
+ RichSubMessageType[RichSubMessageType["DYNAMIC"] = 6] = "DYNAMIC";
124
+ RichSubMessageType[RichSubMessageType["MAP"] = 7] = "MAP";
125
+ RichSubMessageType[RichSubMessageType["LATEX"] = 8] = "LATEX";
126
+ RichSubMessageType[RichSubMessageType["CONTENT_ITEMS"] = 9] = "CONTENT_ITEMS";
127
+ })(RichSubMessageType || (RichSubMessageType = {}));
128
+ // ── Tokenizer ─────────────────────────────────────────────────────────────────
129
+ export const tokenizeCode = (codeStr, language = 'javascript') => {
130
+ const keywords = LANGUAGE_KEYWORDS[language] || JS_KEYWORDS;
131
+ const blocks = [];
132
+ const lines = codeStr.split('\n');
133
+ for (let li = 0; li < lines.length; li++) {
134
+ const line = lines[li];
135
+ const isLast = li === lines.length - 1;
136
+ const nl = isLast ? '' : '\n';
137
+ if (!line.trim()) {
138
+ blocks.push({ highlightType: CodeHighlightType.DEFAULT, codeContent: line + nl });
139
+ continue;
140
+ }
141
+ if (line.trim().startsWith('//') || line.trim().startsWith('#')) {
142
+ blocks.push({ highlightType: CodeHighlightType.COMMENT, codeContent: line + nl });
143
+ continue;
144
+ }
145
+ const regex = new RegExp([
146
+ '(\\/\\/.*$|#.*$)',
147
+ '("(?:[^"\\\\]|\\\\.)*")',
148
+ "('(?:[^'\\\\]|\\\\.)*')",
149
+ '(`(?:[^`\\\\]|\\\\.)*`)',
150
+ '(\\b\\d+(?:\\.\\d+)?\\b)',
151
+ '(\\b[a-zA-Z_$][\\w$]*\\b)',
152
+ '([^\\s\\w$"\'`]+)',
153
+ '(\\s+)'
154
+ ].join('|'), 'g');
155
+ let match;
156
+ const tokens = [];
157
+ while ((match = regex.exec(line)) !== null) {
158
+ const val = match[0];
159
+ if (match[1]) {
160
+ tokens.push({ highlightType: CodeHighlightType.COMMENT, codeContent: val });
161
+ }
162
+ else if (match[2] || match[3] || match[4]) {
163
+ tokens.push({ highlightType: CodeHighlightType.STRING, codeContent: val });
164
+ }
165
+ else if (match[5]) {
166
+ tokens.push({ highlightType: CodeHighlightType.NUMBER, codeContent: val });
167
+ }
168
+ else if (match[6]) {
169
+ if (keywords.has(val)) {
170
+ tokens.push({ highlightType: CodeHighlightType.KEYWORD, codeContent: val });
171
+ }
172
+ else {
173
+ const after = line.slice(regex.lastIndex).trimStart();
174
+ tokens.push({
175
+ highlightType: after.startsWith('(') ? CodeHighlightType.METHOD : CodeHighlightType.DEFAULT,
176
+ codeContent: val
177
+ });
178
+ }
179
+ }
180
+ else {
181
+ tokens.push({ highlightType: CodeHighlightType.DEFAULT, codeContent: val });
182
+ }
183
+ }
184
+ if (tokens.length === 0) {
185
+ blocks.push({ highlightType: CodeHighlightType.DEFAULT, codeContent: line + nl });
186
+ continue;
187
+ }
188
+ const merged = [];
189
+ for (const t of tokens) {
190
+ const prev = merged.length > 0 ? merged[merged.length - 1] : undefined;
191
+ if (prev?.highlightType === t.highlightType) {
192
+ prev.codeContent += t.codeContent;
193
+ }
194
+ else {
195
+ merged.push({ ...t });
196
+ }
197
+ }
198
+ if (merged.length > 0)
199
+ merged[merged.length - 1].codeContent += nl;
200
+ blocks.push(...merged);
201
+ }
202
+ return blocks;
203
+ };
204
+ // ── Context / wrapper helpers ─────────────────────────────────────────────────
205
+ export const buildRichContextInfo = (quoted) => {
206
+ const ctxInfo = {
207
+ forwardingScore: 1,
208
+ isForwarded: true,
209
+ forwardedAiBotMessageInfo: { botJid: '867051314767696@bot' },
210
+ forwardOrigin: 4
211
+ };
212
+ if (quoted?.key) {
213
+ ctxInfo.stanzaId = quoted.key.id;
214
+ ctxInfo.participant = quoted.key.participant || quoted.sender || quoted.key.remoteJid;
215
+ ctxInfo.quotedMessage = quoted.message;
216
+ }
217
+ return ctxInfo;
218
+ };
219
+ export const buildBotForwardedMessage = (submessages, contextInfo, unifiedResponse) => {
220
+ const richResponse = { messageType: 1, submessages, contextInfo };
221
+ if (unifiedResponse)
222
+ richResponse.unifiedResponse = unifiedResponse;
223
+ return {
224
+ richResponseMessage: richResponse
225
+ };
226
+ };
227
+ // ── Generators ────────────────────────────────────────────────────────────────
228
+ export const generateTableContent = (title, headers, rows, quoted, options = {}) => {
229
+ const { footer, headerText } = options;
230
+ const tableRows = [{ items: headers, isHeading: true }, ...rows.map(row => ({ items: row.map(String) }))];
231
+ const submessages = [];
232
+ if (headerText)
233
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: headerText });
234
+ submessages.push({ messageType: RichSubMessageType.TABLE, tableMetadata: { title, rows: tableRows } });
235
+ if (footer)
236
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: footer });
237
+ return {
238
+ message: buildBotForwardedMessage(submessages, buildRichContextInfo(quoted)),
239
+ messageId: generateMessageID()
240
+ };
241
+ };
242
+ export const generateListContent = (title, items, quoted, options = {}) => {
243
+ const { footer, headerText } = options;
244
+ const tableRows = items.map(item => ({ items: Array.isArray(item) ? item.map(String) : [String(item)] }));
245
+ const submessages = [];
246
+ if (headerText)
247
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: headerText });
248
+ submessages.push({ messageType: RichSubMessageType.TABLE, tableMetadata: { title, rows: tableRows } });
249
+ if (footer)
250
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: footer });
251
+ return {
252
+ message: buildBotForwardedMessage(submessages, buildRichContextInfo(quoted)),
253
+ messageId: generateMessageID()
254
+ };
255
+ };
256
+ export const generateCodeBlockContent = (code, quoted, options = {}) => {
257
+ const { title, footer, language = 'javascript' } = options;
258
+ const submessages = [];
259
+ if (title)
260
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: title });
261
+ submessages.push({
262
+ messageType: RichSubMessageType.CODE,
263
+ codeMetadata: { codeLanguage: language, codeBlocks: tokenizeCode(code, language) }
264
+ });
265
+ if (footer)
266
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: footer });
267
+ return {
268
+ message: buildBotForwardedMessage(submessages, buildRichContextInfo(quoted)),
269
+ messageId: generateMessageID()
270
+ };
271
+ };
272
+ export const generateLatexContent = (quoted, options) => {
273
+ const { text, expressions, headerText, footer } = options;
274
+ const submessages = [];
275
+ if (headerText)
276
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: headerText });
277
+ const latexExpressions = expressions.map(expr => {
278
+ const entry = {
279
+ latexExpression: expr.latexExpression,
280
+ url: expr.url,
281
+ width: expr.width,
282
+ height: expr.height
283
+ };
284
+ if (expr.fontHeight !== undefined)
285
+ entry.fontHeight = expr.fontHeight;
286
+ if (expr.imageTopPadding !== undefined)
287
+ entry.imageTopPadding = expr.imageTopPadding;
288
+ if (expr.imageLeadingPadding !== undefined)
289
+ entry.imageLeadingPadding = expr.imageLeadingPadding;
290
+ if (expr.imageBottomPadding !== undefined)
291
+ entry.imageBottomPadding = expr.imageBottomPadding;
292
+ if (expr.imageTrailingPadding !== undefined)
293
+ entry.imageTrailingPadding = expr.imageTrailingPadding;
294
+ return entry;
295
+ });
296
+ submessages.push({
297
+ messageType: RichSubMessageType.LATEX,
298
+ latexMetadata: { text: text || '', expressions: latexExpressions }
299
+ });
300
+ if (footer)
301
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: footer });
302
+ return {
303
+ message: buildBotForwardedMessage(submessages, buildRichContextInfo(quoted)),
304
+ messageId: generateMessageID()
305
+ };
306
+ };
307
+ export const generateLatexImageContent = async (quoted, options, uploadFn, renderLatexToPng) => {
308
+ const { text, expressions, headerText, footer } = options;
309
+ const submessages = [];
310
+ if (headerText)
311
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: headerText });
312
+ const latexExpressions = await Promise.all(expressions.map(async (expr) => {
313
+ const { buffer, width, height } = await renderLatexToPng(expr.latexExpression);
314
+ const res = await uploadFn(buffer, 'image');
315
+ return { latexExpression: expr.latexExpression, url: res.url || res.directPath, width, height };
316
+ }));
317
+ submessages.push({
318
+ messageType: RichSubMessageType.LATEX,
319
+ latexMetadata: { text: text || '', expressions: latexExpressions }
320
+ });
321
+ if (footer)
322
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: footer });
323
+ return {
324
+ message: buildBotForwardedMessage(submessages, buildRichContextInfo(quoted)),
325
+ messageId: generateMessageID()
326
+ };
327
+ };
328
+ export const generateLatexInlineImageContent = async (quoted, options, uploadFn, renderLatexToPng) => {
329
+ const { text, expressions, headerText, footer } = options;
330
+ const submessages = [];
331
+ if (headerText)
332
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: headerText });
333
+ if (text)
334
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: text });
335
+ for (const expr of expressions) {
336
+ const { buffer /* width, height */ } = await renderLatexToPng(expr.latexExpression);
337
+ const res = await uploadFn(buffer, 'image');
338
+ const imageUrl = res.url || res.directPath || '';
339
+ submessages.push({
340
+ messageType: RichSubMessageType.INLINE_IMAGE,
341
+ imageMetadata: {
342
+ imageUrl: { imagePreviewUrl: imageUrl, imageHighResUrl: imageUrl },
343
+ imageText: expr.latexExpression,
344
+ alignment: 2
345
+ }
346
+ });
347
+ }
348
+ if (footer)
349
+ submessages.push({ messageType: RichSubMessageType.TEXT, messageText: footer });
350
+ return {
351
+ message: buildBotForwardedMessage(submessages, buildRichContextInfo(quoted)),
352
+ messageId: generateMessageID()
353
+ };
354
+ };
355
+ export const extractUnifiedResponse = (msg) => {
356
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
357
+ const botFwd = msg?.botForwardedMessage?.message;
358
+ if (!botFwd)
359
+ return null;
360
+ const rich = botFwd.richResponseMessage;
361
+ if (!rich?.unifiedResponse?.data)
362
+ return null;
363
+ return {
364
+ unifiedResponse: { data: rich.unifiedResponse.data },
365
+ submessages: rich.submessages || [],
366
+ contextInfo: rich.contextInfo || {}
367
+ };
368
+ };
369
+ export const generateUnifiedResponseContent = (quoted, captured) => ({
370
+ message: buildBotForwardedMessage(captured.submessages, buildRichContextInfo(quoted), captured.unifiedResponse),
371
+ messageId: generateMessageID()
372
+ });
373
+ export const generateRichMessageContent = (submessages, quoted) => ({
374
+ message: buildBotForwardedMessage(submessages, buildRichContextInfo(quoted)),
375
+ messageId: generateMessageID()
376
+ });
377
+ //# sourceMappingURL=message-composer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-composer.js","sourceRoot":"","sources":["../../src/addons/message-composer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Message Scheduler
3
+ * Schedule messages to be sent at a specific time or after a delay
4
+ */
5
+ import type { AnyMessageContent, MiscMessageGenerationOptions } from '../Types/index.js';
6
+ export type ScheduledMessageJob = {
7
+ /** Unique job ID */
8
+ id: string;
9
+ /** Target JID */
10
+ jid: string;
11
+ /** Message content */
12
+ content: AnyMessageContent;
13
+ /** Options for sendMessage */
14
+ options?: MiscMessageGenerationOptions;
15
+ /** Scheduled send time (ms since epoch) */
16
+ sendAt: number;
17
+ /** Repeat interval in ms (0 = no repeat) */
18
+ repeatIntervalMs?: number;
19
+ /** Max repeats (undefined = infinite) */
20
+ maxRepeats?: number;
21
+ /** Current repeat count */
22
+ repeatCount?: number;
23
+ /** Status */
24
+ status: 'pending' | 'sent' | 'cancelled' | 'failed';
25
+ /** Error if failed */
26
+ error?: string;
27
+ };
28
+ type SendFn = (jid: string, content: AnyMessageContent, options?: MiscMessageGenerationOptions) => Promise<any>;
29
+ /**
30
+ * Attach the sendMessage function from a Baileys socket.
31
+ * Must be called before scheduling any messages.
32
+ */
33
+ export declare const attachSchedulerSendFn: (fn: SendFn) => void;
34
+ /**
35
+ * Schedule a message to be sent at a specific time
36
+ */
37
+ export declare const scheduleMessage: (params: {
38
+ jid: string;
39
+ content: AnyMessageContent;
40
+ sendAt: Date | number;
41
+ options?: MiscMessageGenerationOptions;
42
+ repeatIntervalMs?: number;
43
+ maxRepeats?: number;
44
+ id?: string;
45
+ }) => ScheduledMessageJob;
46
+ /**
47
+ * Schedule a message to be sent after a delay (ms)
48
+ */
49
+ export declare const scheduleMessageAfter: (params: {
50
+ jid: string;
51
+ content: AnyMessageContent;
52
+ delayMs: number;
53
+ options?: MiscMessageGenerationOptions;
54
+ id?: string;
55
+ }) => ScheduledMessageJob;
56
+ /**
57
+ * Cancel a scheduled job
58
+ */
59
+ export declare const cancelScheduledMessage: (id: string) => boolean;
60
+ /**
61
+ * Get a scheduled job by ID
62
+ */
63
+ export declare const getScheduledMessage: (id: string) => ScheduledMessageJob | undefined;
64
+ /**
65
+ * Get all scheduled jobs
66
+ */
67
+ export declare const getAllScheduledMessages: () => ScheduledMessageJob[];
68
+ /**
69
+ * Get all pending scheduled jobs
70
+ */
71
+ export declare const getPendingScheduledMessages: () => ScheduledMessageJob[];
72
+ /**
73
+ * Cancel all pending scheduled jobs
74
+ */
75
+ export declare const cancelAllScheduledMessages: () => void;
76
+ export {};
77
+ //# sourceMappingURL=message-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-scheduler.d.ts","sourceRoot":"","sources":["../../src/addons/message-scheduler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAE/E,MAAM,MAAM,mBAAmB,GAAG;IACjC,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,sBAAsB;IACtB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,4BAA4B,CAAA;IACtC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa;IACb,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;IACnD,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,4BAA4B,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;AAM/G;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,IAAI,MAAM,KAAG,IAElD,CAAA;AAkCD;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,iBAAiB,CAAA;IAC1B,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,4BAA4B,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;CACX,KAAG,mBAgBH,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,iBAAiB,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,4BAA4B,CAAA;IACtC,EAAE,CAAC,EAAE,MAAM,CAAA;CACX,KAAG,mBAEH,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,IAAI,MAAM,KAAG,OAQnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,IAAI,MAAM,KAAG,mBAAmB,GAAG,SAAyB,CAAA;AAEhG;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,mBAAmB,EAAwB,CAAA;AAEtF;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,mBAAmB,EACX,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAO,IAQ7C,CAAA"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Message Scheduler
3
+ * Schedule messages to be sent at a specific time or after a delay
4
+ */
5
+ const jobs = new Map();
6
+ const timers = new Map();
7
+ let sendFn = null;
8
+ /**
9
+ * Attach the sendMessage function from a Baileys socket.
10
+ * Must be called before scheduling any messages.
11
+ */
12
+ export const attachSchedulerSendFn = (fn) => {
13
+ sendFn = fn;
14
+ };
15
+ const scheduleTimer = (job) => {
16
+ const delay = Math.max(0, job.sendAt - Date.now());
17
+ const timer = setTimeout(async () => {
18
+ if (!sendFn) {
19
+ job.status = 'failed';
20
+ job.error = 'sendFn not attached';
21
+ return;
22
+ }
23
+ try {
24
+ await sendFn(job.jid, job.content, job.options);
25
+ job.status = 'sent';
26
+ }
27
+ catch (e) {
28
+ job.status = 'failed';
29
+ job.error = e?.message || String(e);
30
+ }
31
+ // Handle repeating jobs
32
+ if (job.repeatIntervalMs && job.repeatIntervalMs > 0) {
33
+ const nextCount = (job.repeatCount ?? 0) + 1;
34
+ if (job.maxRepeats === undefined || nextCount < job.maxRepeats) {
35
+ job.repeatCount = nextCount;
36
+ job.sendAt = Date.now() + job.repeatIntervalMs;
37
+ job.status = 'pending';
38
+ scheduleTimer(job);
39
+ }
40
+ }
41
+ }, delay);
42
+ timers.set(job.id, timer);
43
+ };
44
+ /**
45
+ * Schedule a message to be sent at a specific time
46
+ */
47
+ export const scheduleMessage = (params) => {
48
+ const id = params.id || `sched_${Date.now()}_${Math.random().toString(36).slice(2, 7)}`;
49
+ const job = {
50
+ id,
51
+ jid: params.jid,
52
+ content: params.content,
53
+ options: params.options,
54
+ sendAt: params.sendAt instanceof Date ? params.sendAt.getTime() : params.sendAt,
55
+ repeatIntervalMs: params.repeatIntervalMs,
56
+ maxRepeats: params.maxRepeats,
57
+ repeatCount: 0,
58
+ status: 'pending'
59
+ };
60
+ jobs.set(id, job);
61
+ scheduleTimer(job);
62
+ return job;
63
+ };
64
+ /**
65
+ * Schedule a message to be sent after a delay (ms)
66
+ */
67
+ export const scheduleMessageAfter = (params) => {
68
+ return scheduleMessage({ ...params, sendAt: Date.now() + params.delayMs });
69
+ };
70
+ /**
71
+ * Cancel a scheduled job
72
+ */
73
+ export const cancelScheduledMessage = (id) => {
74
+ const job = jobs.get(id);
75
+ if (!job)
76
+ return false;
77
+ const timer = timers.get(id);
78
+ if (timer)
79
+ clearTimeout(timer);
80
+ timers.delete(id);
81
+ job.status = 'cancelled';
82
+ return true;
83
+ };
84
+ /**
85
+ * Get a scheduled job by ID
86
+ */
87
+ export const getScheduledMessage = (id) => jobs.get(id);
88
+ /**
89
+ * Get all scheduled jobs
90
+ */
91
+ export const getAllScheduledMessages = () => [...jobs.values()];
92
+ /**
93
+ * Get all pending scheduled jobs
94
+ */
95
+ export const getPendingScheduledMessages = () => [...jobs.values()].filter(j => j.status === 'pending');
96
+ /**
97
+ * Cancel all pending scheduled jobs
98
+ */
99
+ export const cancelAllScheduledMessages = () => {
100
+ for (const [id, timer] of timers.entries()) {
101
+ clearTimeout(timer);
102
+ const job = jobs.get(id);
103
+ if (job?.status === 'pending')
104
+ job.status = 'cancelled';
105
+ }
106
+ timers.clear();
107
+ };
108
+ //# sourceMappingURL=message-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-scheduler.js","sourceRoot":"","sources":["../../src/addons/message-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { WAMessage } from '../Types/index.js';
2
+ export type SearchMessageType = 'text' | 'image' | 'video' | 'document' | 'audio' | 'sticker' | 'location' | 'contact' | 'other';
3
+ export interface SearchOptions {
4
+ jid?: string;
5
+ fromDate?: Date;
6
+ toDate?: Date;
7
+ fromSender?: string;
8
+ fromMe?: boolean;
9
+ messageTypes?: SearchMessageType[];
10
+ limit?: number;
11
+ caseSensitive?: boolean;
12
+ }
13
+ export interface SearchResult {
14
+ message: WAMessage;
15
+ matchedText: string;
16
+ matchPosition: number;
17
+ relevanceScore: number;
18
+ }
19
+ /** Options for regex-based message search */
20
+ export interface RegexSearchOptions {
21
+ /** Filter by chat JID */
22
+ jid?: string;
23
+ /** Filter by sender JID */
24
+ fromSender?: string;
25
+ /** Filter by fromMe flag */
26
+ fromMe?: boolean;
27
+ /** Filter by message types */
28
+ messageTypes?: SearchMessageType[];
29
+ /** Max number of results */
30
+ limit?: number;
31
+ }
32
+ export declare const extractMessageText: (message: WAMessage) => string;
33
+ export declare const calculateRelevance: (query: string, text: string, position: number) => number;
34
+ export declare const searchMessages: (messages: WAMessage[], query: string, options?: SearchOptions) => SearchResult[];
35
+ export declare const searchMessagesRegex: (messages: WAMessage[], pattern: RegExp, options?: RegexSearchOptions) => SearchResult[];
36
+ export declare class MessageSearchManager {
37
+ private messages;
38
+ private messageIndex;
39
+ addMessages(messages: WAMessage[]): void;
40
+ removeMessages(messageIds: string[]): void;
41
+ clear(): void;
42
+ get count(): number;
43
+ search(query: string, options?: SearchOptions): SearchResult[];
44
+ searchRegex(pattern: RegExp, options?: RegexSearchOptions): SearchResult[];
45
+ getByJid(jid: string): WAMessage[];
46
+ getBySender(sender: string): WAMessage[];
47
+ getByType(type: SearchMessageType): WAMessage[];
48
+ getById(id: string): WAMessage | undefined;
49
+ }
50
+ export declare const createMessageSearch: () => MessageSearchManager;
51
+ //# sourceMappingURL=message-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-search.d.ts","sourceRoot":"","sources":["../../src/addons/message-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,MAAM,iBAAiB,GAC1B,MAAM,GACN,OAAO,GACP,OAAO,GACP,UAAU,GACV,OAAO,GACP,SAAS,GACT,UAAU,GACV,SAAS,GACT,OAAO,CAAA;AAEV,MAAM,WAAW,aAAa;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,kBAAkB;IAClC,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAClC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,KAAG,MAcvD,CAAA;AAgBD,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MAclF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,SAAS,EAAE,EAAE,OAAO,MAAM,EAAE,UAAS,aAAkB,KAAG,YAAY,EAgC9G,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC/B,UAAU,SAAS,EAAE,EACrB,SAAS,MAAM,EACf,UAAS,kBAAuB,KAC9B,YAAY,EAkBd,CAAA;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,YAAY,CAA+B;IAEnD,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE;IAUjC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;IAMnC,KAAK;IAIL,IAAI,KAAK,WAER;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa;IAG7C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAGzD,QAAQ,CAAC,GAAG,EAAE,MAAM;IAGpB,WAAW,CAAC,MAAM,EAAE,MAAM;IAG1B,SAAS,CAAC,IAAI,EAAE,iBAAiB;IAGjC,OAAO,CAAC,EAAE,EAAE,MAAM;CAGlB;AAED,eAAO,MAAM,mBAAmB,4BAAmC,CAAA"}