@gqb333/based 2.7.71

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 (201) hide show
  1. package/LICENSE +58 -0
  2. package/README.MD +611 -0
  3. package/WAProto/GenerateStatics.sh +4 -0
  4. package/WAProto/WAProto.proto +5604 -0
  5. package/WAProto/index.d.ts +63156 -0
  6. package/WAProto/index.js +195638 -0
  7. package/WAProto/p.html +1 -0
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/baileys-version.json +3 -0
  10. package/lib/Defaults/index.d.ts +53 -0
  11. package/lib/Defaults/index.js +108 -0
  12. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  13. package/lib/Signal/Group/ciphertext-message.js +15 -0
  14. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  15. package/lib/Signal/Group/group-session-builder.js +64 -0
  16. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  17. package/lib/Signal/Group/group_cipher.js +96 -0
  18. package/lib/Signal/Group/index.d.ts +11 -0
  19. package/lib/Signal/Group/index.js +57 -0
  20. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  21. package/lib/Signal/Group/keyhelper.js +55 -0
  22. package/lib/Signal/Group/queue-job.d.ts +1 -0
  23. package/lib/Signal/Group/queue-job.js +57 -0
  24. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  25. package/lib/Signal/Group/sender-chain-key.js +34 -0
  26. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  27. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  28. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  29. package/lib/Signal/Group/sender-key-message.js +69 -0
  30. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  31. package/lib/Signal/Group/sender-key-name.js +51 -0
  32. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  33. package/lib/Signal/Group/sender-key-record.js +53 -0
  34. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  35. package/lib/Signal/Group/sender-key-state.js +99 -0
  36. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  37. package/lib/Signal/Group/sender-message-key.js +29 -0
  38. package/lib/Signal/libsignal.d.ts +3 -0
  39. package/lib/Signal/libsignal.js +174 -0
  40. package/lib/Socket/Client/index.d.ts +2 -0
  41. package/lib/Socket/Client/index.js +18 -0
  42. package/lib/Socket/Client/types.d.ts +16 -0
  43. package/lib/Socket/Client/types.js +13 -0
  44. package/lib/Socket/Client/websocket.d.ts +13 -0
  45. package/lib/Socket/Client/websocket.js +111 -0
  46. package/lib/Socket/business.d.ts +172 -0
  47. package/lib/Socket/business.js +260 -0
  48. package/lib/Socket/chats.d.ts +85 -0
  49. package/lib/Socket/chats.js +1094 -0
  50. package/lib/Socket/groups.d.ts +124 -0
  51. package/lib/Socket/groups.js +423 -0
  52. package/lib/Socket/index.d.ts +172 -0
  53. package/lib/Socket/index.js +32 -0
  54. package/lib/Socket/messages-interactive.js +259 -0
  55. package/lib/Socket/messages-recv.d.ts +161 -0
  56. package/lib/Socket/messages-recv.js +1474 -0
  57. package/lib/Socket/messages-send.d.ts +151 -0
  58. package/lib/Socket/messages-send.js +1085 -0
  59. package/lib/Socket/newsletter.d.ts +136 -0
  60. package/lib/Socket/newsletter.js +250 -0
  61. package/lib/Socket/socket.d.ts +43 -0
  62. package/lib/Socket/socket.js +1241 -0
  63. package/lib/Socket/usync.d.ts +36 -0
  64. package/lib/Socket/usync.js +123 -0
  65. package/lib/Store/index.d.ts +2 -0
  66. package/lib/Store/index.js +8 -0
  67. package/lib/Store/make-in-memory-store.d.ts +118 -0
  68. package/lib/Store/make-in-memory-store.js +452 -0
  69. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  70. package/lib/Store/make-ordered-dictionary.js +81 -0
  71. package/lib/Store/object-repository.d.ts +10 -0
  72. package/lib/Store/object-repository.js +27 -0
  73. package/lib/Types/Auth.d.ts +114 -0
  74. package/lib/Types/Auth.js +2 -0
  75. package/lib/Types/Call.d.ts +13 -0
  76. package/lib/Types/Call.js +2 -0
  77. package/lib/Types/Chat.d.ts +109 -0
  78. package/lib/Types/Chat.js +4 -0
  79. package/lib/Types/Contact.d.ts +29 -0
  80. package/lib/Types/Contact.js +2 -0
  81. package/lib/Types/Events.d.ts +199 -0
  82. package/lib/Types/Events.js +2 -0
  83. package/lib/Types/GroupMetadata.d.ts +64 -0
  84. package/lib/Types/GroupMetadata.js +2 -0
  85. package/lib/Types/Label.d.ts +35 -0
  86. package/lib/Types/Label.js +27 -0
  87. package/lib/Types/LabelAssociation.d.ts +29 -0
  88. package/lib/Types/LabelAssociation.js +9 -0
  89. package/lib/Types/Message.d.ts +740 -0
  90. package/lib/Types/Message.js +7 -0
  91. package/lib/Types/Newsletter.d.ts +22 -0
  92. package/lib/Types/Newsletter.js +18 -0
  93. package/lib/Types/Product.d.ts +78 -0
  94. package/lib/Types/Product.js +2 -0
  95. package/lib/Types/Signal.d.ts +63 -0
  96. package/lib/Types/Signal.js +2 -0
  97. package/lib/Types/Socket.d.ts +134 -0
  98. package/lib/Types/Socket.js +2 -0
  99. package/lib/Types/State.d.ts +27 -0
  100. package/lib/Types/State.js +2 -0
  101. package/lib/Types/USync.d.ts +25 -0
  102. package/lib/Types/USync.js +2 -0
  103. package/lib/Types/index.d.ts +65 -0
  104. package/lib/Types/index.js +43 -0
  105. package/lib/Utils/auth-utils.d.ts +18 -0
  106. package/lib/Utils/auth-utils.js +209 -0
  107. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  108. package/lib/Utils/baileys-event-stream.js +63 -0
  109. package/lib/Utils/business.d.ts +22 -0
  110. package/lib/Utils/business.js +234 -0
  111. package/lib/Utils/cache-manager.d.ts +16 -0
  112. package/lib/Utils/cache-manager.js +114 -0
  113. package/lib/Utils/chat-utils.d.ts +70 -0
  114. package/lib/Utils/chat-utils.js +734 -0
  115. package/lib/Utils/crypto.d.ts +40 -0
  116. package/lib/Utils/crypto.js +193 -0
  117. package/lib/Utils/decode-wa-message.d.ts +35 -0
  118. package/lib/Utils/decode-wa-message.js +207 -0
  119. package/lib/Utils/event-buffer.d.ts +35 -0
  120. package/lib/Utils/event-buffer.js +619 -0
  121. package/lib/Utils/generics.d.ts +89 -0
  122. package/lib/Utils/generics.js +440 -0
  123. package/lib/Utils/history.d.ts +19 -0
  124. package/lib/Utils/history.js +94 -0
  125. package/lib/Utils/index.d.ts +22 -0
  126. package/lib/Utils/index.js +38 -0
  127. package/lib/Utils/jid-validation.d.ts +2 -0
  128. package/lib/Utils/jid-validation.js +186 -0
  129. package/lib/Utils/link-preview.d.ts +21 -0
  130. package/lib/Utils/link-preview.js +152 -0
  131. package/lib/Utils/logger.d.ts +11 -0
  132. package/lib/Utils/logger.js +59 -0
  133. package/lib/Utils/lt-hash.d.ts +12 -0
  134. package/lib/Utils/lt-hash.js +51 -0
  135. package/lib/Utils/make-mutex.d.ts +7 -0
  136. package/lib/Utils/make-mutex.js +43 -0
  137. package/lib/Utils/messages-media.d.ts +120 -0
  138. package/lib/Utils/messages-media.js +848 -0
  139. package/lib/Utils/messages.d.ts +131 -0
  140. package/lib/Utils/messages.js +1793 -0
  141. package/lib/Utils/newsletter-utils.d.ts +2 -0
  142. package/lib/Utils/newsletter-utils.js +48 -0
  143. package/lib/Utils/noise-handler.d.ts +19 -0
  144. package/lib/Utils/noise-handler.js +150 -0
  145. package/lib/Utils/performance-config.d.ts +70 -0
  146. package/lib/Utils/performance-config.js +183 -0
  147. package/lib/Utils/process-message.d.ts +42 -0
  148. package/lib/Utils/process-message.js +498 -0
  149. package/lib/Utils/rate-limiter.js +90 -0
  150. package/lib/Utils/retry.js +66 -0
  151. package/lib/Utils/signal.d.ts +33 -0
  152. package/lib/Utils/signal.js +153 -0
  153. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -0
  154. package/lib/Utils/use-multi-file-auth-state.js +129 -0
  155. package/lib/Utils/validate-connection.d.ts +10 -0
  156. package/lib/Utils/validate-connection.js +233 -0
  157. package/lib/WABinary/constants.d.ts +27 -0
  158. package/lib/WABinary/constants.js +1303 -0
  159. package/lib/WABinary/decode.d.ts +6 -0
  160. package/lib/WABinary/decode.js +279 -0
  161. package/lib/WABinary/encode.d.ts +2 -0
  162. package/lib/WABinary/encode.js +264 -0
  163. package/lib/WABinary/generic-utils.d.ts +14 -0
  164. package/lib/WABinary/generic-utils.js +114 -0
  165. package/lib/WABinary/index.d.ts +5 -0
  166. package/lib/WABinary/index.js +21 -0
  167. package/lib/WABinary/jid-utils.d.ts +38 -0
  168. package/lib/WABinary/jid-utils.js +485 -0
  169. package/lib/WABinary/types.d.ts +18 -0
  170. package/lib/WABinary/types.js +2 -0
  171. package/lib/WAM/BinaryInfo.d.ts +8 -0
  172. package/lib/WAM/BinaryInfo.js +13 -0
  173. package/lib/WAM/constants.d.ts +38 -0
  174. package/lib/WAM/constants.js +15350 -0
  175. package/lib/WAM/encode.d.ts +2 -0
  176. package/lib/WAM/encode.js +155 -0
  177. package/lib/WAM/index.d.ts +3 -0
  178. package/lib/WAM/index.js +19 -0
  179. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  180. package/lib/WAUSync/Protocols/USyncContactProtocol.js +102 -0
  181. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  182. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +110 -0
  183. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  184. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  185. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  186. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  187. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  188. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  189. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  190. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  191. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  192. package/lib/WAUSync/Protocols/index.js +20 -0
  193. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  194. package/lib/WAUSync/USyncQuery.js +147 -0
  195. package/lib/WAUSync/USyncUser.d.ts +12 -0
  196. package/lib/WAUSync/USyncUser.js +26 -0
  197. package/lib/WAUSync/index.d.ts +3 -0
  198. package/lib/WAUSync/index.js +19 -0
  199. package/lib/index.d.ts +17 -0
  200. package/lib/index.js +53 -0
  201. package/package.json +104 -0
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./encode"), exports);
18
+ __exportStar(require("./decode"), exports);
19
+ __exportStar(require("./generic-utils"), exports);
20
+ __exportStar(require("./jid-utils"), exports);
21
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,38 @@
1
+ export declare const S_WHATSAPP_NET = "@s.whatsapp.net";
2
+ export declare const OFFICIAL_BIZ_JID = "16505361212@c.us";
3
+ export declare const SERVER_JID = "server@c.us";
4
+ export declare const PSA_WID = "0@c.us";
5
+ export declare const STORIES_JID = "status@broadcast";
6
+ export declare const META_AI_JID = "13135550002@c.us";
7
+ export type JidServer = 'c.us' | 'g.us' | 'broadcast' | 's.whatsapp.net' | 'call' | 'lid' | 'newsletter' | 'bot';
8
+ export type JidWithDevice = {
9
+ user: string;
10
+ device?: number;
11
+ };
12
+ export type FullJid = JidWithDevice & {
13
+ server: JidServer;
14
+ domainType?: number;
15
+ };
16
+ export declare const jidEncode: (user: string | number | null, server: JidServer, device?: number, agent?: number) => string;
17
+ export declare const jidDecode: (jid: string | undefined) => FullJid | undefined;
18
+ /** is the jid a user */
19
+ export declare const areJidsSameUser: (jid1: string | undefined, jid2: string | undefined) => boolean;
20
+ /** is the jid Meta IA */
21
+ export declare const isJidMetaAi: (jid: string | undefined) => boolean | undefined;
22
+ /** is the jid a user */
23
+ export declare const isJidUser: (jid: string | undefined) => boolean | undefined;
24
+ /** is the jid a group */
25
+ export declare const isLidUser: (jid: string | undefined) => boolean | undefined;
26
+ /** is the jid a broadcast */
27
+ export declare const isJidBroadcast: (jid: string | undefined) => boolean | undefined;
28
+ /** is the jid a newsletter */
29
+ export declare const isJidNewsletter: (jid: string | undefined) => boolean | undefined;
30
+ /** is the jid a group */
31
+ export declare const isJidGroup: (jid: string | undefined) => boolean | undefined;
32
+ /** is the jid the status broadcast */
33
+ export declare const isJidStatusBroadcast: (jid: string) => jid is "status@broadcast";
34
+ export declare const isJidBot: (jid: string | undefined) => boolean | "" | undefined;
35
+ export declare const jidNormalizedUser: (jid: string | undefined) => string;
36
+ export declare const lidToJid: (jid: string) => string;
37
+ export declare const resolveJid: (jid: string | undefined) => string | undefined;
38
+ export declare const getBotJid: (jid: string) => string;
@@ -0,0 +1,485 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAndConvertLidToJid = exports.validateAndCleanJid = exports.lidToJidEnhanced = exports.resolveJid = exports.lidToJid = exports.getBotJid = exports.jidNormalizedUser = exports.isJidBot = exports.isJidStatusBroadcast = exports.isJidGroup = exports.isJidNewsletter = exports.isJidBroadcast = exports.isLid = exports.assertLid = exports.isJidUser = exports.isJidMetaAi = exports.areJidsSameUser = exports.jidDecode = exports.jidEncode = exports.META_AI_JID = exports.STORIES_JID = exports.PSA_WID = exports.SERVER_JID = exports.OFFICIAL_BIZ_JID = exports.S_WHATSAPP_NET = void 0;
4
+ exports.S_WHATSAPP_NET = '@s.whatsapp.net';
5
+ exports.OFFICIAL_BIZ_JID = '16505361212@c.us';
6
+ exports.SERVER_JID = 'server@c.us';
7
+ exports.PSA_WID = '0@c.us';
8
+ exports.STORIES_JID = 'status@broadcast';
9
+ exports.META_AI_JID = '13135550002@c.us';
10
+ const jidEncode = (user, server, device, agent) => {
11
+ return `${user || ''}${!!agent ? `_${agent}` : ''}${!!device ? `:${device}` : ''}@${server}`;
12
+ };
13
+ exports.jidEncode = jidEncode;
14
+ const jidDecode = (jid) => {
15
+ const sepIdx = typeof jid === 'string' ? jid.indexOf('@') : -1;
16
+ if (sepIdx < 0) {
17
+ return undefined;
18
+ }
19
+ const server = jid.slice(sepIdx + 1);
20
+ const userCombined = jid.slice(0, sepIdx);
21
+ const [userAgent, device] = userCombined.split(':');
22
+ const user = userAgent.split('_')[0];
23
+ return {
24
+ server: server,
25
+ user,
26
+ domainType: server === 'lid' ? 1 : 0,
27
+ device: device ? +device : undefined
28
+ };
29
+ };
30
+ exports.jidDecode = jidDecode;
31
+ /** is the jid a user */
32
+ const areJidsSameUser = (jid1, jid2) => {
33
+ var _a, _b;
34
+ return (((_a = (0, exports.jidDecode)(jid1)) === null || _a === void 0 ? void 0 : _a.user) === ((_b = (0, exports.jidDecode)(jid2)) === null || _b === void 0 ? void 0 : _b.user));
35
+ };
36
+ exports.areJidsSameUser = areJidsSameUser;
37
+ /** is the jid Meta IA */
38
+ const isJidMetaAi = (jid) => (jid === null || jid === void 0 ? void 0 : jid.endsWith('@bot'));
39
+ exports.isJidMetaAi = isJidMetaAi;
40
+ /** is the jid a user */
41
+ const isJidUser = (jid) => (jid === null || jid === void 0 ? void 0 : jid.endsWith('@s.whatsapp.net'));
42
+ exports.isJidUser = isJidUser;
43
+ /** is the jid a group */
44
+ const isLid = (jid) => (jid === null || jid === void 0 ? void 0 : jid.endsWith('@lid'));
45
+ exports.isLid = isLid;
46
+ exports.isLidUser = isLid;
47
+ /** assert the jid is a LID */
48
+ const assertLid = (jid) => {
49
+ if (!isLid(jid)) {
50
+ throw new Error(`JID "${jid}" is not a LID`);
51
+ }
52
+ };
53
+ exports.assertLid = assertLid;
54
+ /** is the jid a broadcast */
55
+ const isJidBroadcast = (jid) => (jid === null || jid === void 0 ? void 0 : jid.endsWith('@broadcast'));
56
+ exports.isJidBroadcast = isJidBroadcast;
57
+ /** is the jid a newsletter */
58
+ const isJidNewsletter = (jid) => (jid === null || jid === void 0 ? void 0 : jid.endsWith('@newsletter'));
59
+ exports.isJidNewsletter = isJidNewsletter;
60
+ /** is the jid a group */
61
+ const isJidGroup = (jid) => (jid === null || jid === void 0 ? void 0 : jid.endsWith('@g.us'));
62
+ exports.isJidGroup = isJidGroup;
63
+ /** is the jid the status broadcast */
64
+ const isJidStatusBroadcast = (jid) => jid === 'status@broadcast';
65
+ exports.isJidStatusBroadcast = isJidStatusBroadcast;
66
+ const botRegexp = /^1313555\d{4}$|^131655500\d{2}$/;
67
+ const isJidBot = (jid) => (jid && botRegexp.test(jid.split('@')[0]) && jid.endsWith('@c.us'));
68
+ exports.isJidBot = isJidBot;
69
+ const jidNormalizedUser = (jid) => {
70
+ const result = (0, exports.jidDecode)(jid);
71
+ if (!result) {
72
+ return '';
73
+ }
74
+ const { user, server } = result;
75
+ return (0, exports.jidEncode)(user, server === 'c.us' ? 's.whatsapp.net' : server);
76
+ };
77
+ exports.jidNormalizedUser = jidNormalizedUser;
78
+ // Node.js helpers for optional dynamic bot map loading
79
+ const fs = require('fs');
80
+ const path = require('path');
81
+
82
+ // LRU cache semplice per lidToJid (leggero, senza dipendenze)
83
+ class SimpleLRU {
84
+ constructor(maxSize = 5000, ttl = 5 * 60 * 1000) {
85
+ this.maxSize = maxSize;
86
+ this.ttl = ttl;
87
+ this.map = new Map(); // mantiene l'ordine di inserimento
88
+ }
89
+ get(key) {
90
+ const entry = this.map.get(key);
91
+ if (!entry)
92
+ return undefined;
93
+ if (Date.now() - entry.ts > this.ttl) {
94
+ this.map.delete(key);
95
+ return undefined;
96
+ }
97
+ // promuovi a MRU
98
+ this.map.delete(key);
99
+ this.map.set(key, entry);
100
+ return entry.value;
101
+ }
102
+ set(key, value) {
103
+ if (this.map.has(key))
104
+ this.map.delete(key);
105
+ this.map.set(key, { value, ts: Date.now() });
106
+ if (this.map.size > this.maxSize) {
107
+ // rimuovi LRU (primo elemento)
108
+ const it = this.map.keys();
109
+ const lru = it.next().value;
110
+ if (lru)
111
+ this.map.delete(lru);
112
+ }
113
+ }
114
+ }
115
+
116
+ const DEFAULT_LID_CACHE_TTL = 5 * 60 * 1000; // 5 minuti
117
+ const DEFAULT_LID_CACHE_MAX = 5000;
118
+ const lidToJidCache = new SimpleLRU(DEFAULT_LID_CACHE_MAX, DEFAULT_LID_CACHE_TTL);
119
+
120
+ const lidToJid = (jid) => {
121
+ try {
122
+ if (!jid || typeof jid !== 'string') {
123
+ return jid;
124
+ }
125
+ const cached = lidToJidCache.get(jid);
126
+ if (cached)
127
+ return cached;
128
+
129
+ let result = jid;
130
+ if (jid.endsWith('@lid')) {
131
+ const lidPart = jid.replace('@lid', '');
132
+
133
+ // Check if this LID exists in BOT_MAP first
134
+ if (BOT_MAP.has(lidPart)) {
135
+ result = BOT_MAP.get(lidPart) + '@s.whatsapp.net';
136
+ } else {
137
+ // Check if lidPart is a valid phone number (digits only, reasonable length)
138
+ const isValidPhoneNumber = /^[0-9]+$/.test(lidPart) && lidPart.length >= 8 && lidPart.length <= 15;
139
+
140
+ if (isValidPhoneNumber) {
141
+ result = lidPart + '@s.whatsapp.net';
142
+ } else {
143
+ // Not a valid phone number, keep as LID or return original
144
+ result = jid; // Keep original LID if it's not a valid phone number
145
+ }
146
+ }
147
+ }
148
+
149
+ lidToJidCache.set(jid, result);
150
+ return result;
151
+ }
152
+ catch (error) {
153
+ try {
154
+ const { Logger } = require('../Utils/performance-config');
155
+ Logger.error('Error in lidToJid:', error && error.message ? error.message : error, 'Input:', jid);
156
+ } catch (_) {
157
+ // Fallback if logger is not available
158
+ }
159
+ return jid;
160
+ }
161
+ };
162
+ exports.lidToJid = lidToJid;
163
+
164
+ const resolveJid = (jid) => {
165
+ if (typeof jid === 'string' && jid.endsWith('@lid')) {
166
+ return lidToJid(jid);
167
+ }
168
+ return jid;
169
+ };
170
+ exports.resolveJid = resolveJid;
171
+
172
+ /**
173
+ * Enhanced LID to JID conversion with phone number validation
174
+ * Validates that the phone number has a valid international format
175
+ */
176
+ const validateAndConvertLidToJid = async (jid, onWhatsApp) => {
177
+ try {
178
+ if (!jid || typeof jid !== 'string') {
179
+ return jid;
180
+ }
181
+
182
+ // First, try basic conversion
183
+ const convertedJid = lidToJid(jid);
184
+
185
+ // If it's still a LID, return as-is (invalid phone number)
186
+ if (isLid(convertedJid)) {
187
+ return convertedJid;
188
+ }
189
+
190
+ // If it's already a JID (not converted), validate it exists on WhatsApp
191
+ if (!jid.endsWith('@lid') && convertedJid === jid) {
192
+ if (onWhatsApp) {
193
+ try {
194
+ const validation = await onWhatsApp(convertedJid);
195
+ if (validation && validation.length > 0 && validation[0].exists) {
196
+ return convertedJid;
197
+ } else {
198
+ // JID doesn't exist on WhatsApp, return original
199
+ return jid;
200
+ }
201
+ } catch (error) {
202
+ // If validation fails, return converted JID (better than nothing)
203
+ return convertedJid;
204
+ }
205
+ } else {
206
+ // No onWhatsApp available, return as-is
207
+ return convertedJid;
208
+ }
209
+ }
210
+
211
+ // For newly converted JIDs, validate they exist on WhatsApp
212
+ if (convertedJid !== jid && onWhatsApp) {
213
+ try {
214
+ const validation = await onWhatsApp(convertedJid);
215
+ if (validation && validation.length > 0 && validation[0].exists) {
216
+ return convertedJid;
217
+ } else {
218
+ // Converted JID doesn't exist on WhatsApp, keep original LID
219
+ return jid;
220
+ }
221
+ } catch (error) {
222
+ // If validation fails, return converted JID
223
+ return convertedJid;
224
+ }
225
+ }
226
+
227
+ return convertedJid;
228
+ }
229
+ catch (error) {
230
+ try {
231
+ const { Logger } = require('../Utils/performance-config');
232
+ Logger.error('Error in validateAndConvertLidToJid:', error && error.message ? error.message : error, 'Input:', jid);
233
+ } catch (_) {
234
+ // ignore if logger not available
235
+ }
236
+ return jid;
237
+ }
238
+ };
239
+
240
+ /**
241
+ * Simple phone number validation based on international format
242
+ * Checks if the number has a valid country code and reasonable length
243
+ */
244
+ const isValidInternationalPhoneNumber = (phoneNumber) => {
245
+ if (!phoneNumber || typeof phoneNumber !== 'string') {
246
+ return false;
247
+ }
248
+
249
+ // Remove any non-digit characters
250
+ const digits = phoneNumber.replace(/\D/g, '');
251
+
252
+ // Check length (8-15 digits is typical for international numbers)
253
+ if (digits.length < 8 || digits.length > 15) {
254
+ return false;
255
+ }
256
+
257
+ // Check if it starts with a valid country code (1-3 digits)
258
+ // Most country codes are 1-3 digits long
259
+ const firstThreeDigits = digits.substring(0, 3);
260
+ const firstTwoDigits = digits.substring(0, 2);
261
+ const firstDigit = digits.substring(0, 1);
262
+
263
+ // Common valid country codes (this is not exhaustive but covers most cases)
264
+ const validCountryCodes = [
265
+ '1', '7', '20', '27', '30', '31', '32', '33', '34', '36', '39', '40', '41', '43', '44', '45', '46', '47', '48', '49',
266
+ '51', '52', '53', '54', '55', '56', '57', '58', '60', '61', '62', '63', '64', '65', '66', '81', '82', '84', '86', '90', '91', '92', '93', '94', '95', '98', '212', '213', '216', '218', '220', '221', '222', '223', '224', '225', '226', '227', '228', '229', '230', '231', '232', '233', '234', '235', '236', '237', '238', '239', '240', '241', '242', '243', '244', '245', '246', '247', '248', '249', '250', '251', '252', '253', '254', '255', '256', '257', '258', '260', '261', '262', '263', '264', '265', '266', '267', '268', '269', '290', '291', '297', '298', '299', '350', '351', '352', '353', '354', '355', '356', '357', '358', '359', '370', '371', '372', '373', '374', '375', '376', '377', '378', '380', '381', '382', '383', '385', '386', '387', '389', '420', '421', '423', '424', '425', '426', '427', '428', '430', '431', '432', '433', '434', '435', '436', '437', '438', '439', '440', '441', '442', '443', '445', '446', '447', '448', '449', '450', '451', '452', '453', '454', '455', '456', '457', '458', '459', '460', '461', '462', '463', '464', '465', '466', '467', '468', '469', '470', '471', '472', '473', '474', '475', '476', '477', '478', '479', '480', '481', '482', '483', '484', '485', '486', '487', '488', '489', '490', '491', '492', '493', '494', '495', '496', '497', '498', '499', '500', '501', '502', '503', '504', '505', '506', '507', '508', '509', '590', '591', '592', '593', '594', '595', '596', '597', '598', '599', '670', '672', '673', '674', '675', '676', '677', '678', '679', '680', '681', '682', '683', '684', '685', '686', '687', '688', '689', '690', '691', '692', '693', '694', '695', '696', '697', '698', '699', '850', '852', '853', '855', '856', '880', '886', '960', '961', '962', '963', '964', '965', '966', '967', '968', '970', '971', '972', '973', '974', '975', '976', '977', '979', '992', '993', '994', '995', '996', '998'
267
+ ];
268
+
269
+ // Check if the number starts with a valid country code
270
+ const hasValidCountryCode = validCountryCodes.includes(firstThreeDigits) ||
271
+ validCountryCodes.includes(firstTwoDigits) ||
272
+ validCountryCodes.includes(firstDigit);
273
+
274
+ // Special case: reject numbers that start with suspicious patterns
275
+ // 101, 999, 000, etc. are not valid country codes
276
+ const suspiciousPatterns = ['101', '999', '000', '123', '456', '789'];
277
+ const hasSuspiciousPattern = suspiciousPatterns.includes(firstThreeDigits) ||
278
+ suspiciousPatterns.includes(firstTwoDigits);
279
+
280
+ return hasValidCountryCode && !hasSuspiciousPattern;
281
+ };
282
+
283
+ /**
284
+ * Enhanced LID to JID conversion with international phone validation
285
+ * Uses phone number format validation instead of WhatsApp API calls
286
+ */
287
+ const lidToJidEnhanced = (jid) => {
288
+ try {
289
+ if (!jid || typeof jid !== 'string') {
290
+ return jid;
291
+ }
292
+
293
+ let result = jid;
294
+
295
+ // Handle LID conversion
296
+ if (jid.endsWith('@lid')) {
297
+ const lidPart = jid.replace('@lid', '');
298
+
299
+ // Check if this LID exists in BOT_MAP first
300
+ if (BOT_MAP.has(lidPart)) {
301
+ result = BOT_MAP.get(lidPart) + '@s.whatsapp.net';
302
+ } else {
303
+ // Check if lidPart is a valid international phone number
304
+ if (isValidInternationalPhoneNumber(lidPart)) {
305
+ result = lidPart + '@s.whatsapp.net';
306
+ } else {
307
+ // Not a valid international phone number, keep as LID
308
+ result = jid;
309
+ }
310
+ }
311
+ }
312
+ // Handle existing JID validation
313
+ else if (jid.endsWith('@s.whatsapp.net')) {
314
+ const phoneNumber = jid.replace('@s.whatsapp.net', '');
315
+
316
+ // Validate if this JID has a valid international phone number
317
+ if (!isValidInternationalPhoneNumber(phoneNumber)) {
318
+ // This JID is invalid, but we can't convert it back to LID
319
+ // Keep it as-is but log the issue
320
+ try {
321
+ const { Logger } = require('../Utils/performance-config');
322
+ Logger.warn('Invalid JID detected:', jid, 'Phone number:', phoneNumber);
323
+ } catch (_) {
324
+ // ignore if logger not available
325
+ }
326
+ result = jid; // Keep the invalid JID for now
327
+ }
328
+ }
329
+
330
+ return result;
331
+ }
332
+ catch (error) {
333
+ try {
334
+ const { Logger } = require('../Utils/performance-config');
335
+ Logger.error('Error in lidToJidEnhanced:', error && error.message ? error.message : error, 'Input:', jid);
336
+ } catch (_) {
337
+ // ignore if logger not available
338
+ }
339
+ return jid;
340
+ }
341
+ };
342
+
343
+ /**
344
+ * Validates and cleans existing JIDs, converting invalid ones back to LID if possible
345
+ */
346
+ const validateAndCleanJid = (jid) => {
347
+ try {
348
+ if (!jid || typeof jid !== 'string') {
349
+ return jid;
350
+ }
351
+
352
+ // If it's a LID, use enhanced conversion
353
+ if (jid.endsWith('@lid')) {
354
+ return lidToJidEnhanced(jid);
355
+ }
356
+
357
+ // If it's a JID, validate it
358
+ if (jid.endsWith('@s.whatsapp.net')) {
359
+ const phoneNumber = jid.replace('@s.whatsapp.net', '');
360
+
361
+ // Check if this is a valid international phone number
362
+ if (!isValidInternationalPhoneNumber(phoneNumber)) {
363
+ // This JID is invalid, try to convert back to LID
364
+ // Check if it might be from our suspicious patterns
365
+ const firstThreeDigits = phoneNumber.substring(0, 3);
366
+ const suspiciousPatterns = ['101', '999', '000', '123', '456', '789'];
367
+
368
+ if (suspiciousPatterns.includes(firstThreeDigits)) {
369
+ // Convert back to LID
370
+ return phoneNumber + '@lid';
371
+ }
372
+
373
+ // For other invalid numbers, we'll keep the JID but mark it
374
+ try {
375
+ const { Logger } = require('../Utils/performance-config');
376
+ Logger.warn('Invalid JID kept:', jid, 'Phone number:', phoneNumber);
377
+ } catch (_) {
378
+ // ignore if logger not available
379
+ }
380
+ }
381
+ }
382
+
383
+ return jid;
384
+ }
385
+ catch (error) {
386
+ try {
387
+ const { Logger } = require('../Utils/performance-config');
388
+ Logger.error('Error in validateAndCleanJid:', error && error.message ? error.message : error, 'Input:', jid);
389
+ } catch (_) {
390
+ // ignore if logger not available
391
+ }
392
+ return jid;
393
+ }
394
+ };
395
+ exports.validateAndConvertLidToJid = validateAndConvertLidToJid;
396
+
397
+ // Static BOT map kept for fallback. Created once to avoid recreating Map on each call.
398
+ const BOT_MAP_STATIC = new Map([["867051314767696", "13135550002"], ["1061492271844689", "13135550005"], ["245886058483988", "13135550009"], ["3509905702656130", "13135550012"], ["1059680132034576", "13135550013"], ["715681030623646", "13135550014"], ["1644971366323052", "13135550015"], ["582497970646566", "13135550019"], ["645459357769306", "13135550022"], ["294997126699143", "13135550023"], ["1522631578502677", "13135550027"], ["719421926276396", "13135550030"], ["1788488635002167", "13135550031"], ["24232338603080193", "13135550033"], ["689289903143209", "13135550035"], ["871626054177096", "13135550039"], ["362351902849370", "13135550042"], ["1744617646041527", "13135550043"], ["893887762270570", "13135550046"], ["1155032702135830", "13135550047"], ["333931965993883", "13135550048"], ["853748013058752", "13135550049"], ["1559068611564819", "13135550053"], ["890487432705716", "13135550054"], ["240254602395494", "13135550055"], ["1578420349663261", "13135550062"], ["322908887140421", "13135550065"], ["3713961535514771", "13135550067"], ["997884654811738", "13135550070"], ["403157239387035", "13135550081"], ["535242369074963", "13135550082"], ["946293427247659", "13135550083"], ["3664707673802291", "13135550084"], ["1821827464894892", "13135550085"], ["1760312477828757", "13135550086"], ["439480398712216", "13135550087"], ["1876735582800984", "13135550088"], ["984025089825661", "13135550089"], ["1001336351558186", "13135550090"], ["3739346336347061", "13135550091"], ["3632749426974980", "13135550092"], ["427864203481615", "13135550093"], ["1434734570493055", "13135550094"], ["992873449225921", "13135550095"], ["813087747426445", "13135550096"], ["806369104931434", "13135550098"], ["1220982902403148", "13135550099"], ["1365893374104393", "13135550100"], ["686482033622048", "13135550200"], ["1454999838411253", "13135550201"], ["718584497008509", "13135550202"], ["743520384213443", "13135550301"], ["1147715789823789", "13135550302"], ["1173034540372201", "13135550303"], ["974785541030953", "13135550304"], ["1122200255531507", "13135550305"], ["899669714813162", "13135550306"], ["631880108970650", "13135550307"], ["435816149330026", "13135550308"], ["1368717161184556", "13135550309"], ["7849963461784891", "13135550310"], ["3609617065968984", "13135550312"], ["356273980574602", "13135550313"], ["1043447920539760", "13135550314"], ["1052764336525346", "13135550315"], ["2631118843732685", "13135550316"], ["510505411332176", "13135550317"], ["1945664239227513", "13135550318"], ["1518594378764656", "13135550319"], ["1378821579456138", "13135550320"], ["490214716896013", "13135550321"], ["1028577858870699", "13135550322"], ["308915665545959", "13135550323"], ["845884253678900", "13135550324"], ["995031308616442", "13135550325"], ["2787365464763437", "13135550326"], ["1532790990671645", "13135550327"], ["302617036180485", "13135550328"], ["723376723197227", "13135550329"], ["8393570407377966", "13135550330"], ["1931159970680725", "13135550331"], ["401073885688605", "13135550332"], ["2234478453565422", "13135550334"], ["814748673882312", "13135550335"], ["26133635056281592", "13135550336"], ["1439804456676119", "13135550337"], ["889851503172161", "13135550338"], ["1018283232836879", "13135550339"], ["1012781386779537", "13135559000"], ["823280953239532", "13135559001"], ["1597090934573334", "13135559002"], ["485965054020343", "13135559003"], ["1033381648363446", "13135559004"], ["491802010206446", "13135559005"], ["1017139033184870", "13135559006"], ["499638325922174", "13135559008"], ["468946335863664", "13135559009"], ["1570389776875816", "13135559010"], ["1004342694328995", "13135559011"], ["1012240323971229", "13135559012"], ["392171787222419", "13135559013"], ["952081212945019", "13135559016"], ["444507875070178", "13135559017"], ["1274819440594668", "13135559018"], ["1397041101147050", "13135559019"], ["425657699872640", "13135559020"], ["532292852562549", "13135559021"], ["705863241720292", "13135559022"], ["476449815183959", "13135559023"], ["488071553854222", "13135559024"], ["468693832665397", "13135559025"], ["517422564037340", "13135559026"], ["819805466613825", "13135559027"], ["1847708235641382", "13135559028"], ["716282970644228", "13135559029"], ["521655380527741", "13135559030"], ["476193631941905", "13135559031"], ["485600497445562", "13135559032"], ["440217235683910", "13135559033"], ["523342446758478", "13135559034"], ["514784864360240", "13135559035"], ["505790121814530", "13135559036"], ["420008964419580", "13135559037"], ["492141680204555", "13135559038"], ["388462787271952", "13135559039"], ["423473920752072", "13135559040"], ["489574180468229", "13135559041"], ["432360635854105", "13135559042"], ["477878201669248", "13135559043"], ["351656951234045", "13135559044"], ["430178036732582", "13135559045"], ["434537312944552", "13135559046"], ["1240614300631808", "13135559047"], ["473135945605128", "13135559048"], ["423669800729310", "13135559049"], ["3685666705015792", "13135559050"], ["504196509016638", "13135559051"], ["346844785189449", "13135559052"], ["504823088911074", "13135559053"], ["402669415797083", "13135559054"], ["490939640234431", "13135559055"], ["875124128063715", "13135559056"], ["468788962654605", "13135559057"], ["562386196354570", "13135559058"], ["372159285928791", "13135559059"], ["531017479591050", "13135559060"], ["1328873881401826", "13135559061"], ["1608363646390484", "13135559062"], ["1229628561554232", "13135559063"], ["348802211530364", "13135559064"], ["3708535859420184", "13135559065"], ["415517767742187", "13135559066"], ["479330341612638", "13135559067"], ["480785414723083", "13135559068"], ["387299107507991", "13135559069"], ["333389813188944", "13135559070"], ["391794130316996", "13135559071"], ["457893470576314", "13135559072"], ["435550496166469", "13135559073"], ["1620162702100689", "13135559074"], ["867491058616043", "13135559075"], ["816224117357759", "13135559076"], ["334065176362830", "13135559077"], ["489973170554709", "13135559078"], ["473060669049665", "13135559079"], ["1221505815643060", "13135559080"], ["889000703096359", "13135559081"], ["475235961979883", "13135559082"], ["3434445653519934", "13135559084"], ["524503026827421", "13135559085"], ["1179639046403856", "13135559086"], ["471563305859144", "13135559087"], ["533896609192881", "13135559088"], ["365443583168041", "13135559089"], ["836082305329393", "13135559090"], ["1056787705969916", "13135559091"], ["503312598958357", "13135559092"], ["3718606738453460", "13135559093"], ["826066052850902", "13135559094"], ["1033611345091888", "13135559095"], ["3868390816783240", "13135559096"], ["7462677740498860", "13135559097"], ["436288576108573", "13135559098"], ["1047559746718900", "13135559099"], ["1099299455255491", "13135559100"], ["1202037301040633", "13135559101"], ["1720619402074074", "13135559102"], ["1030422235101467", "13135559103"], ["827238979523502", "13135559104"], ["1516443722284921", "13135559105"], ["1174442747196709", "13135559106"], ["1653165225503842", "13135559107"], ["1037648777635013", "13135559108"], ["551617757299900", "13135559109"], ["1158813558718726", "13135559110"], ["2463236450542262", "13135559111"], ["1550393252501466", "13135559112"], ["2057065188042796", "13135559113"], ["506163028760735", "13135559114"], ["2065249100538481", "13135559115"], ["1041382867195858", "13135559116"], ["886500209499603", "13135559117"], ["1491615624892655", "13135559118"], ["486563697299617", "13135559119"], ["1175736513679463", "13135559120"], ["491811473512352", "13165550064"]]);
399
+
400
+ // Current effective BOT map. May be replaced at runtime via `setBotMap` or `loadBotMapFromFile`.
401
+ let BOT_MAP = BOT_MAP_STATIC;
402
+
403
+ /**
404
+ * Attempt to load a bot map JSON from disk. The JSON should be an object mapping
405
+ * userId -> phoneNumber (both strings). Tries first the provided filePath, then
406
+ * looks in process.cwd() and module directory.
407
+ */
408
+ const loadBotMapFromFile = async (filePath) => {
409
+ const candidates = [];
410
+ if (filePath) candidates.push(filePath);
411
+ candidates.push(path.join(process.cwd(), 'bot-map.json'));
412
+ candidates.push(path.join(__dirname, 'bot-map.json'));
413
+
414
+ for (const p of candidates) {
415
+ try {
416
+ if (!p) continue;
417
+ const stat = await fs.promises.stat(p).catch(() => null);
418
+ if (!stat || !stat.isFile()) continue;
419
+ const data = await fs.promises.readFile(p, 'utf8');
420
+ const obj = JSON.parse(data);
421
+ if (obj && typeof obj === 'object') {
422
+ BOT_MAP = new Map(Object.entries(obj));
423
+ return BOT_MAP;
424
+ }
425
+ }
426
+ catch (err) {
427
+ // continue to next candidate
428
+ }
429
+ }
430
+ // If no dynamic map found, keep existing BOT_MAP
431
+ return BOT_MAP;
432
+ };
433
+
434
+ /**
435
+ * Replace current BOT map with a provided object or Map.
436
+ */
437
+ const setBotMap = (mapLike) => {
438
+ if (!mapLike)
439
+ return;
440
+ if (mapLike instanceof Map) {
441
+ BOT_MAP = mapLike;
442
+ return;
443
+ }
444
+ if (typeof mapLike === 'object') {
445
+ BOT_MAP = new Map(Object.entries(mapLike));
446
+ return;
447
+ }
448
+ };
449
+
450
+ /**
451
+ * Get the mapped bot JID for a given jid (e.g. "123@bot"). Uses a runtime
452
+ * configurable map with a static fallback. Returns the input jid if no mapping.
453
+ */
454
+ const getBotJid = (jid) => {
455
+ try {
456
+ const sepIdx = typeof jid === 'string' ? jid.indexOf('@') : -1;
457
+ if (sepIdx < 0) {
458
+ return jid;
459
+ }
460
+ const server = jid.slice(sepIdx + 1);
461
+ if (server !== 'bot')
462
+ return jid;
463
+ const user = jid.slice(0, sepIdx);
464
+ const mappedNumber = BOT_MAP.get(user);
465
+ return mappedNumber ? `${mappedNumber}@s.whatsapp.net` : jid;
466
+ }
467
+ catch (err) {
468
+ // In case of unexpected errors, log and return original jid as safe fallback
469
+ try {
470
+ const { Logger } = require('../Utils/performance-config');
471
+ Logger.error('getBotJid error:', err && err.message ? err.message : err);
472
+ }
473
+ catch (_) {
474
+ // Fallback if logger is not available
475
+ }
476
+ return jid;
477
+ }
478
+ };
479
+
480
+ exports.getBotJid = getBotJid;
481
+ exports.loadBotMapFromFile = loadBotMapFromFile;
482
+ exports.setBotMap = setBotMap;
483
+ exports.validateAndConvertLidToJid = validateAndConvertLidToJid;
484
+ exports.lidToJidEnhanced = lidToJidEnhanced;
485
+ exports.validateAndCleanJid = validateAndCleanJid;
@@ -0,0 +1,18 @@
1
+ import * as constants from './constants';
2
+ /**
3
+ * the binary node WA uses internally for communication
4
+ *
5
+ * this is manipulated soley as an object and it does not have any functions.
6
+ * This is done for easy serialization, to prevent running into issues with prototypes &
7
+ * to maintain functional code structure
8
+ * */
9
+ export type BinaryNode = {
10
+ tag: string;
11
+ attrs: {
12
+ [key: string]: string;
13
+ };
14
+ content?: BinaryNode[] | string | Uint8Array;
15
+ };
16
+ export type BinaryNodeAttributes = BinaryNode['attrs'];
17
+ export type BinaryNodeData = BinaryNode['content'];
18
+ export type BinaryNodeCodingOptions = typeof constants;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { EventInputType } from './constants';
2
+ export declare class BinaryInfo {
3
+ protocolVersion: number;
4
+ sequence: number;
5
+ events: EventInputType[];
6
+ buffer: Buffer[];
7
+ constructor(options?: Partial<BinaryInfo>);
8
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BinaryInfo = void 0;
4
+ class BinaryInfo {
5
+ constructor(options = {}) {
6
+ this.protocolVersion = 5;
7
+ this.sequence = 0;
8
+ this.events = [];
9
+ this.buffer = [];
10
+ Object.assign(this, options);
11
+ }
12
+ }
13
+ exports.BinaryInfo = BinaryInfo;
@@ -0,0 +1,38 @@
1
+ export declare const WEB_EVENTS: Event[];
2
+ export declare const WEB_GLOBALS: Global[];
3
+ export declare const FLAG_BYTE = 8, FLAG_GLOBAL = 0, FLAG_EVENT = 1, FLAG_FIELD = 2, FLAG_EXTENDED = 4;
4
+ export type Event = {
5
+ name: string;
6
+ id: number;
7
+ props: {
8
+ [key: string]: [number, string | {
9
+ [key: string]: number;
10
+ }];
11
+ };
12
+ weight: number;
13
+ wamChannel: string;
14
+ privateStatsIdInt: number;
15
+ };
16
+ export type Global = {
17
+ name: string;
18
+ id: number;
19
+ type: string | {
20
+ [key: string]: number;
21
+ };
22
+ validator?: string;
23
+ channels: string[];
24
+ };
25
+ type EventByName<T extends Event['name']> = Extract<Event, {
26
+ name: T;
27
+ }>;
28
+ export type EventInputType = {
29
+ [key in Event['name']]: {
30
+ props: {
31
+ [k in keyof EventByName<key>['props']]: any;
32
+ };
33
+ globals: {
34
+ [x: string]: any;
35
+ };
36
+ };
37
+ } & {};
38
+ export {};