wa-multi-mongodb 3.10.3 → 3.10.4

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.
@@ -102,4 +102,163 @@ export declare const getGroupMetadata: (sessionId: string, jid: string, forceFet
102
102
  export declare const clearGroupMetadataCache: (sessionId: string, jid: string) => Promise<void>;
103
103
  export declare const clearSessionGroupMetadataCache: (sessionId: string) => Promise<void>;
104
104
  export declare const clearAllGroupMetadataCache: () => void;
105
+ /**
106
+ * Result type for LID to PN conversion
107
+ */
108
+ export interface LIDConversionResult {
109
+ success: boolean;
110
+ lid: string;
111
+ pn: string | null;
112
+ error?: string;
113
+ }
114
+ /**
115
+ * Result type for PN to LID conversion
116
+ */
117
+ export interface PNConversionResult {
118
+ success: boolean;
119
+ pn: string;
120
+ lid: string | null;
121
+ error?: string;
122
+ }
123
+ /**
124
+ * LID Mapping entry type
125
+ */
126
+ export interface LIDMappingEntry {
127
+ lid: string;
128
+ pn: string;
129
+ }
130
+ /**
131
+ * Convert LID (Linked ID) to Phone Number (PN/JID)
132
+ *
133
+ * This function uses Baileys' internal signalRepository.lidMapping to retrieve
134
+ * the phone number associated with a given LID.
135
+ *
136
+ * @param sessionId - Session ID to use for conversion
137
+ * @param lid - The LID to convert (e.g., "1524746986546@lid")
138
+ * @returns Promise<LIDConversionResult> - Result object with the phone number or null if not found
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * const result = await whatsapp.getPNForLID("mysession", "1524746986546@lid");
143
+ * if (result.success && result.pn) {
144
+ * console.log(`Phone number: ${result.pn}`);
145
+ * } else {
146
+ * console.log("Phone number not found for this LID");
147
+ * }
148
+ * ```
149
+ *
150
+ * @note This function may return null for new contacts or when WhatsApp
151
+ * hasn't provided the LID-PN mapping yet. Not all LIDs have known phone numbers.
152
+ */
153
+ export declare const getPNForLID: (sessionId: string, lid: string) => Promise<LIDConversionResult>;
154
+ /**
155
+ * Convert Phone Number (PN/JID) to LID (Linked ID)
156
+ *
157
+ * This function uses Baileys' internal signalRepository.lidMapping to retrieve
158
+ * the LID associated with a given phone number.
159
+ *
160
+ * @param sessionId - Session ID to use for conversion
161
+ * @param pn - The phone number/JID to convert (e.g., "6281234567890" or "6281234567890@s.whatsapp.net")
162
+ * @returns Promise<PNConversionResult> - Result object with the LID or null if not found
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * const result = await whatsapp.getLIDForPN("mysession", "6281234567890");
167
+ * if (result.success && result.lid) {
168
+ * console.log(`LID: ${result.lid}`);
169
+ * } else {
170
+ * console.log("LID not found for this phone number");
171
+ * }
172
+ * ```
173
+ *
174
+ * @note This function may return null for contacts that haven't been encountered
175
+ * with their LID mapping yet.
176
+ */
177
+ export declare const getLIDForPN: (sessionId: string, pn: string) => Promise<PNConversionResult>;
178
+ /**
179
+ * Get all known LID-PN mappings for a session
180
+ *
181
+ * This function retrieves all LID to phone number mappings that are currently
182
+ * stored in the session's signal repository.
183
+ *
184
+ * @param sessionId - Session ID to get mappings from
185
+ * @returns Promise<LIDMappingEntry[]> - Array of LID-PN mapping entries
186
+ *
187
+ * @example
188
+ * ```typescript
189
+ * const mappings = await whatsapp.getAllLIDMappings("mysession");
190
+ * for (const mapping of mappings) {
191
+ * console.log(`${mapping.lid} => ${mapping.pn}`);
192
+ * }
193
+ * ```
194
+ *
195
+ * @note This may return an empty array if no mappings are available yet.
196
+ */
197
+ export declare const getAllLIDMappings: (sessionId: string) => Promise<LIDMappingEntry[]>;
198
+ /**
199
+ * Check if a JID is in LID format
200
+ *
201
+ * @param jid - The JID to check
202
+ * @returns boolean - True if the JID is in LID format
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * if (whatsapp.isLIDFormat("1524746986546@lid")) {
207
+ * console.log("This is an LID");
208
+ * }
209
+ * ```
210
+ */
211
+ export declare const isLIDFormat: (jid: string) => boolean;
212
+ /**
213
+ * Check if a JID is in Phone Number format (@s.whatsapp.net)
214
+ *
215
+ * @param jid - The JID to check
216
+ * @returns boolean - True if the JID is in PN format
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * if (whatsapp.isPNFormat("6281234567890@s.whatsapp.net")) {
221
+ * console.log("This is a phone number JID");
222
+ * }
223
+ * ```
224
+ */
225
+ export declare const isPNFormat: (jid: string) => boolean;
226
+ /**
227
+ * Smart convert any JID to phone number
228
+ *
229
+ * Automatically detects if the input is an LID and converts it to PN,
230
+ * or returns the PN if already in PN format.
231
+ *
232
+ * @param sessionId - Session ID to use for conversion
233
+ * @param jid - Any JID (LID or PN format)
234
+ * @returns Promise<string | null> - Phone number or null if conversion failed
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * const pn = await whatsapp.toPhoneNumber("mysession", jid);
239
+ * if (pn) {
240
+ * console.log(`Phone number: ${pn}`);
241
+ * }
242
+ * ```
243
+ */
244
+ export declare const toPhoneNumber: (sessionId: string, jid: string) => Promise<string | null>;
245
+ /**
246
+ * Smart convert any JID to LID
247
+ *
248
+ * Automatically detects if the input is a PN and converts it to LID,
249
+ * or returns the LID if already in LID format.
250
+ *
251
+ * @param sessionId - Session ID to use for conversion
252
+ * @param jid - Any JID (LID or PN format)
253
+ * @returns Promise<string | null> - LID or null if conversion failed
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * const lid = await whatsapp.toLID("mysession", "6281234567890@s.whatsapp.net");
258
+ * if (lid) {
259
+ * console.log(`LID: ${lid}`);
260
+ * }
261
+ * ```
262
+ */
263
+ export declare const toLID: (sessionId: string, jid: string) => Promise<string | null>;
105
264
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Socket/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Socket/index.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
45
45
  return (mod && mod.__esModule) ? mod : { "default": mod };
46
46
  };
47
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.clearAllGroupMetadataCache = exports.clearSessionGroupMetadataCache = exports.clearGroupMetadataCache = exports.getGroupMetadata = exports.setGroupCacheConfig = exports.getSessionStatus = exports.getPairingCodeSessions = exports.reconnectAllPairingCodeSessions = exports.reconnect = exports.setCredentialsDir = exports.setMongoDBNames = exports.loadSessionsFromMongo = exports.onPairingCode = exports.onMessageUpdate = exports.onConnecting = exports.onDisconnected = exports.onConnected = exports.onQRUpdated = exports.onMessageReceived = exports.loadSessionsFromStorage = exports.getSession = exports.getAllSessionSync = exports.getAllSession = exports.deleteSession = exports.startWhatsapp = exports.startSessionWithPairingCode = exports.startSession = exports.setMongoURI = void 0;
48
+ exports.toLID = exports.toPhoneNumber = exports.isPNFormat = exports.isLIDFormat = exports.getAllLIDMappings = exports.getLIDForPN = exports.getPNForLID = exports.clearAllGroupMetadataCache = exports.clearSessionGroupMetadataCache = exports.clearGroupMetadataCache = exports.getGroupMetadata = exports.setGroupCacheConfig = exports.getSessionStatus = exports.getPairingCodeSessions = exports.reconnectAllPairingCodeSessions = exports.reconnect = exports.setCredentialsDir = exports.setMongoDBNames = exports.loadSessionsFromMongo = exports.onPairingCode = exports.onMessageUpdate = exports.onConnecting = exports.onDisconnected = exports.onConnected = exports.onQRUpdated = exports.onMessageReceived = exports.loadSessionsFromStorage = exports.getSession = exports.getAllSessionSync = exports.getAllSession = exports.deleteSession = exports.startWhatsapp = exports.startSessionWithPairingCode = exports.startSession = exports.setMongoURI = void 0;
49
49
  exports.setMongoCollection = setMongoCollection;
50
50
  const baileys_1 = __importStar(require("baileys"));
51
51
  const path_1 = __importDefault(require("path"));
@@ -61,6 +61,32 @@ const mongodb_1 = require("mongodb");
61
61
  const mongo_auth_state_1 = require("../Utils/mongo-auth-state");
62
62
  const create_delay_1 = require("../Utils/create-delay");
63
63
  const sessions = new Map();
64
+ /**
65
+ * Helper function to generate browser configuration based on type and name
66
+ * @param browserType - Browser type (ubuntu, macOS, windows, appropriate)
67
+ * @param browserName - Custom browser/app name
68
+ * @returns Browser configuration tuple for Baileys
69
+ */
70
+ const getBrowserConfig = (browserType = "ubuntu", browserName = "Chrome") => {
71
+ let browserTuple;
72
+ switch (browserType) {
73
+ case "macOS":
74
+ browserTuple = baileys_1.Browsers.macOS(browserName);
75
+ break;
76
+ case "windows":
77
+ browserTuple = baileys_1.Browsers.windows(browserName);
78
+ break;
79
+ case "appropriate":
80
+ browserTuple = baileys_1.Browsers.appropriate(browserName);
81
+ break;
82
+ case "ubuntu":
83
+ default:
84
+ browserTuple = baileys_1.Browsers.ubuntu(browserName);
85
+ break;
86
+ }
87
+ // Convert readonly tuple to mutable tuple for Baileys compatibility
88
+ return [...browserTuple];
89
+ };
64
90
  const callback = new Map();
65
91
  const retryCount = new Map();
66
92
  // Tambahkan Map untuk melacak session yang menggunakan pairing code
@@ -126,7 +152,7 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
126
152
  auth: state,
127
153
  logger: P,
128
154
  markOnlineOnConnect: false,
129
- browser: baileys_1.Browsers.ubuntu("Chrome"),
155
+ browser: getBrowserConfig(options.browserType, options.browserName),
130
156
  // Configure caching group metadata using our hybrid implementation with session ID
131
157
  cachedGroupMetadata: (jid) => __awaiter(void 0, void 0, void 0, function* () {
132
158
  return yield Utils_1.groupCache.get(sessionId, jid);
@@ -286,7 +312,7 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
286
312
  auth: state,
287
313
  logger: P,
288
314
  markOnlineOnConnect: false,
289
- browser: baileys_1.Browsers.ubuntu("Chrome"),
315
+ browser: getBrowserConfig(options.browserType, options.browserName),
290
316
  // Opsi tambahan untuk meningkatkan kompatibilitas
291
317
  linkPreviewImageThumbnailWidth: 300,
292
318
  generateHighQualityLinkPreview: true,
@@ -873,3 +899,312 @@ const clearAllGroupMetadataCache = () => {
873
899
  Utils_1.groupCache.flush();
874
900
  };
875
901
  exports.clearAllGroupMetadataCache = clearAllGroupMetadataCache;
902
+ /**
903
+ * Convert LID (Linked ID) to Phone Number (PN/JID)
904
+ *
905
+ * This function uses Baileys' internal signalRepository.lidMapping to retrieve
906
+ * the phone number associated with a given LID.
907
+ *
908
+ * @param sessionId - Session ID to use for conversion
909
+ * @param lid - The LID to convert (e.g., "1524746986546@lid")
910
+ * @returns Promise<LIDConversionResult> - Result object with the phone number or null if not found
911
+ *
912
+ * @example
913
+ * ```typescript
914
+ * const result = await whatsapp.getPNForLID("mysession", "1524746986546@lid");
915
+ * if (result.success && result.pn) {
916
+ * console.log(`Phone number: ${result.pn}`);
917
+ * } else {
918
+ * console.log("Phone number not found for this LID");
919
+ * }
920
+ * ```
921
+ *
922
+ * @note This function may return null for new contacts or when WhatsApp
923
+ * hasn't provided the LID-PN mapping yet. Not all LIDs have known phone numbers.
924
+ */
925
+ const getPNForLID = (sessionId, lid) => __awaiter(void 0, void 0, void 0, function* () {
926
+ var _a, _b;
927
+ const session = (0, exports.getSession)(sessionId);
928
+ if (!session) {
929
+ return {
930
+ success: false,
931
+ lid,
932
+ pn: null,
933
+ error: Defaults_1.Messages.sessionNotFound(sessionId)
934
+ };
935
+ }
936
+ try {
937
+ // Normalize LID format
938
+ let normalizedLid = lid;
939
+ if (!lid.includes('@lid')) {
940
+ normalizedLid = `${lid}@lid`;
941
+ }
942
+ // Access the signalRepository.lidMapping to get PN for LID
943
+ const signalRepo = session.signalRepository;
944
+ if (!signalRepo || !signalRepo.lidMapping) {
945
+ return {
946
+ success: false,
947
+ lid: normalizedLid,
948
+ pn: null,
949
+ error: "LID mapping not available in this session"
950
+ };
951
+ }
952
+ // Try to get the phone number for the LID
953
+ const pn = ((_b = (_a = signalRepo.lidMapping).getPNForLID) === null || _b === void 0 ? void 0 : _b.call(_a, normalizedLid)) || null;
954
+ return {
955
+ success: pn !== null,
956
+ lid: normalizedLid,
957
+ pn
958
+ };
959
+ }
960
+ catch (error) {
961
+ return {
962
+ success: false,
963
+ lid,
964
+ pn: null,
965
+ error: `Failed to convert LID to PN: ${error.message || String(error)}`
966
+ };
967
+ }
968
+ });
969
+ exports.getPNForLID = getPNForLID;
970
+ /**
971
+ * Convert Phone Number (PN/JID) to LID (Linked ID)
972
+ *
973
+ * This function uses Baileys' internal signalRepository.lidMapping to retrieve
974
+ * the LID associated with a given phone number.
975
+ *
976
+ * @param sessionId - Session ID to use for conversion
977
+ * @param pn - The phone number/JID to convert (e.g., "6281234567890" or "6281234567890@s.whatsapp.net")
978
+ * @returns Promise<PNConversionResult> - Result object with the LID or null if not found
979
+ *
980
+ * @example
981
+ * ```typescript
982
+ * const result = await whatsapp.getLIDForPN("mysession", "6281234567890");
983
+ * if (result.success && result.lid) {
984
+ * console.log(`LID: ${result.lid}`);
985
+ * } else {
986
+ * console.log("LID not found for this phone number");
987
+ * }
988
+ * ```
989
+ *
990
+ * @note This function may return null for contacts that haven't been encountered
991
+ * with their LID mapping yet.
992
+ */
993
+ const getLIDForPN = (sessionId, pn) => __awaiter(void 0, void 0, void 0, function* () {
994
+ var _a, _b;
995
+ const session = (0, exports.getSession)(sessionId);
996
+ if (!session) {
997
+ return {
998
+ success: false,
999
+ pn,
1000
+ lid: null,
1001
+ error: Defaults_1.Messages.sessionNotFound(sessionId)
1002
+ };
1003
+ }
1004
+ try {
1005
+ // Normalize PN format
1006
+ let normalizedPn = pn.replace(/\D/g, ''); // Remove non-digits
1007
+ if (!pn.includes('@s.whatsapp.net')) {
1008
+ normalizedPn = `${normalizedPn}@s.whatsapp.net`;
1009
+ }
1010
+ else {
1011
+ normalizedPn = pn;
1012
+ }
1013
+ // Access the signalRepository.lidMapping to get LID for PN
1014
+ const signalRepo = session.signalRepository;
1015
+ if (!signalRepo || !signalRepo.lidMapping) {
1016
+ return {
1017
+ success: false,
1018
+ pn: normalizedPn,
1019
+ lid: null,
1020
+ error: "LID mapping not available in this session"
1021
+ };
1022
+ }
1023
+ // Try to get the LID for the phone number
1024
+ const lid = ((_b = (_a = signalRepo.lidMapping).getLIDForPN) === null || _b === void 0 ? void 0 : _b.call(_a, normalizedPn)) || null;
1025
+ return {
1026
+ success: lid !== null,
1027
+ pn: normalizedPn,
1028
+ lid
1029
+ };
1030
+ }
1031
+ catch (error) {
1032
+ return {
1033
+ success: false,
1034
+ pn,
1035
+ lid: null,
1036
+ error: `Failed to convert PN to LID: ${error.message || String(error)}`
1037
+ };
1038
+ }
1039
+ });
1040
+ exports.getLIDForPN = getLIDForPN;
1041
+ /**
1042
+ * Get all known LID-PN mappings for a session
1043
+ *
1044
+ * This function retrieves all LID to phone number mappings that are currently
1045
+ * stored in the session's signal repository.
1046
+ *
1047
+ * @param sessionId - Session ID to get mappings from
1048
+ * @returns Promise<LIDMappingEntry[]> - Array of LID-PN mapping entries
1049
+ *
1050
+ * @example
1051
+ * ```typescript
1052
+ * const mappings = await whatsapp.getAllLIDMappings("mysession");
1053
+ * for (const mapping of mappings) {
1054
+ * console.log(`${mapping.lid} => ${mapping.pn}`);
1055
+ * }
1056
+ * ```
1057
+ *
1058
+ * @note This may return an empty array if no mappings are available yet.
1059
+ */
1060
+ const getAllLIDMappings = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
1061
+ const session = (0, exports.getSession)(sessionId);
1062
+ if (!session) {
1063
+ throw new Error_1.WhatsappError(Defaults_1.Messages.sessionNotFound(sessionId));
1064
+ }
1065
+ try {
1066
+ const signalRepo = session.signalRepository;
1067
+ if (!signalRepo || !signalRepo.lidMapping) {
1068
+ return [];
1069
+ }
1070
+ // Try to get all mappings if available
1071
+ const getAllMappings = signalRepo.lidMapping.getAll || signalRepo.lidMapping.getAllMappings;
1072
+ if (typeof getAllMappings === 'function') {
1073
+ const mappings = getAllMappings();
1074
+ if (Array.isArray(mappings)) {
1075
+ return mappings;
1076
+ }
1077
+ // If it's a Map or Object, convert to array
1078
+ if (mappings instanceof Map) {
1079
+ return Array.from(mappings.entries()).map(([lid, pn]) => ({ lid, pn: pn }));
1080
+ }
1081
+ if (typeof mappings === 'object') {
1082
+ return Object.entries(mappings).map(([lid, pn]) => ({ lid, pn: pn }));
1083
+ }
1084
+ }
1085
+ // Alternative: Try to access internal store directly
1086
+ const store = signalRepo.lidMapping.store || signalRepo.lidMapping._store;
1087
+ if (store) {
1088
+ if (store instanceof Map) {
1089
+ return Array.from(store.entries()).map(([lid, pn]) => ({ lid, pn: pn }));
1090
+ }
1091
+ if (typeof store === 'object') {
1092
+ return Object.entries(store).map(([lid, pn]) => ({ lid, pn: pn }));
1093
+ }
1094
+ }
1095
+ return [];
1096
+ }
1097
+ catch (error) {
1098
+ throw new Error_1.WhatsappError(`Failed to get LID mappings: ${error.message || String(error)}`);
1099
+ }
1100
+ });
1101
+ exports.getAllLIDMappings = getAllLIDMappings;
1102
+ /**
1103
+ * Check if a JID is in LID format
1104
+ *
1105
+ * @param jid - The JID to check
1106
+ * @returns boolean - True if the JID is in LID format
1107
+ *
1108
+ * @example
1109
+ * ```typescript
1110
+ * if (whatsapp.isLIDFormat("1524746986546@lid")) {
1111
+ * console.log("This is an LID");
1112
+ * }
1113
+ * ```
1114
+ */
1115
+ const isLIDFormat = (jid) => {
1116
+ return jid.includes('@lid');
1117
+ };
1118
+ exports.isLIDFormat = isLIDFormat;
1119
+ /**
1120
+ * Check if a JID is in Phone Number format (@s.whatsapp.net)
1121
+ *
1122
+ * @param jid - The JID to check
1123
+ * @returns boolean - True if the JID is in PN format
1124
+ *
1125
+ * @example
1126
+ * ```typescript
1127
+ * if (whatsapp.isPNFormat("6281234567890@s.whatsapp.net")) {
1128
+ * console.log("This is a phone number JID");
1129
+ * }
1130
+ * ```
1131
+ */
1132
+ const isPNFormat = (jid) => {
1133
+ return jid.includes('@s.whatsapp.net');
1134
+ };
1135
+ exports.isPNFormat = isPNFormat;
1136
+ /**
1137
+ * Smart convert any JID to phone number
1138
+ *
1139
+ * Automatically detects if the input is an LID and converts it to PN,
1140
+ * or returns the PN if already in PN format.
1141
+ *
1142
+ * @param sessionId - Session ID to use for conversion
1143
+ * @param jid - Any JID (LID or PN format)
1144
+ * @returns Promise<string | null> - Phone number or null if conversion failed
1145
+ *
1146
+ * @example
1147
+ * ```typescript
1148
+ * const pn = await whatsapp.toPhoneNumber("mysession", jid);
1149
+ * if (pn) {
1150
+ * console.log(`Phone number: ${pn}`);
1151
+ * }
1152
+ * ```
1153
+ */
1154
+ const toPhoneNumber = (sessionId, jid) => __awaiter(void 0, void 0, void 0, function* () {
1155
+ // If already in PN format, return as-is
1156
+ if ((0, exports.isPNFormat)(jid)) {
1157
+ return jid;
1158
+ }
1159
+ // If it's an LID, try to convert
1160
+ if ((0, exports.isLIDFormat)(jid)) {
1161
+ const result = yield (0, exports.getPNForLID)(sessionId, jid);
1162
+ return result.pn;
1163
+ }
1164
+ // If it's a group or broadcast, return null
1165
+ if (jid.includes('@g.us') || jid.includes('@broadcast')) {
1166
+ return null;
1167
+ }
1168
+ // If it's just a number, format it as PN
1169
+ const phoneNumber = jid.replace(/\D/g, '');
1170
+ if (phoneNumber.length >= 10) {
1171
+ return `${phoneNumber}@s.whatsapp.net`;
1172
+ }
1173
+ return null;
1174
+ });
1175
+ exports.toPhoneNumber = toPhoneNumber;
1176
+ /**
1177
+ * Smart convert any JID to LID
1178
+ *
1179
+ * Automatically detects if the input is a PN and converts it to LID,
1180
+ * or returns the LID if already in LID format.
1181
+ *
1182
+ * @param sessionId - Session ID to use for conversion
1183
+ * @param jid - Any JID (LID or PN format)
1184
+ * @returns Promise<string | null> - LID or null if conversion failed
1185
+ *
1186
+ * @example
1187
+ * ```typescript
1188
+ * const lid = await whatsapp.toLID("mysession", "6281234567890@s.whatsapp.net");
1189
+ * if (lid) {
1190
+ * console.log(`LID: ${lid}`);
1191
+ * }
1192
+ * ```
1193
+ */
1194
+ const toLID = (sessionId, jid) => __awaiter(void 0, void 0, void 0, function* () {
1195
+ // If already in LID format, return as-is
1196
+ if ((0, exports.isLIDFormat)(jid)) {
1197
+ return jid;
1198
+ }
1199
+ // If it's a PN, try to convert
1200
+ if ((0, exports.isPNFormat)(jid) || /^\d+$/.test(jid.replace(/\D/g, ''))) {
1201
+ const result = yield (0, exports.getLIDForPN)(sessionId, jid);
1202
+ return result.lid;
1203
+ }
1204
+ // If it's a group or broadcast, return null
1205
+ if (jid.includes('@g.us') || jid.includes('@broadcast')) {
1206
+ return null;
1207
+ }
1208
+ return null;
1209
+ });
1210
+ exports.toLID = toLID;
@@ -1,4 +1,12 @@
1
1
  import { WAMessageUpdate, proto } from "baileys";
2
+ /**
3
+ * Supported browser types for WhatsApp connection
4
+ * - ubuntu: Uses Ubuntu browser agent (default)
5
+ * - macOS: Uses macOS browser agent
6
+ * - windows: Uses Windows browser agent
7
+ * - appropriate: Uses appropriate browser based on platform
8
+ */
9
+ export type BrowserType = "ubuntu" | "macOS" | "windows" | "appropriate";
2
10
  export interface SendMessageTypes {
3
11
  to: string | number;
4
12
  text?: string;
@@ -53,6 +61,19 @@ export interface StartSessionParams {
53
61
  * Print QR Code into Terminal
54
62
  */
55
63
  printQR?: boolean;
64
+ /**
65
+ * Browser type for WhatsApp connection
66
+ * Options: "ubuntu" (default), "macOS", "windows", "appropriate"
67
+ * @default "ubuntu"
68
+ */
69
+ browserType?: BrowserType;
70
+ /**
71
+ * Custom browser/app name displayed in WhatsApp
72
+ * This name will appear in "Linked Devices" on your phone
73
+ * @default "Chrome"
74
+ * @example "My Bot App"
75
+ */
76
+ browserName?: string;
56
77
  onQRUpdated?: (qr: string) => void;
57
78
  onConnected?: () => void;
58
79
  onConnecting?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,2BAA4B,SAAQ,gBAAgB;IACnE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,eAAe;IAC5D;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAGvC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,iCAAiC;IAChD;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,MAAM,GACN,QAAQ,CAAC;CACd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,2BAA4B,SAAQ,gBAAgB;IACnE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,eAAe;IAC5D;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAGvC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,iCAAiC;IAChD;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EACX,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,MAAM,GACN,QAAQ,CAAC;CACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wa-multi-mongodb",
3
- "version": "3.10.3",
3
+ "version": "3.10.4",
4
4
  "description": "Multi Session Whatsapp Library with MongoDB Integration",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/index.js",
@@ -31,7 +31,7 @@
31
31
  "@types/node-cache": "^4.1.3",
32
32
  "@types/qrcode": "^1.5.5",
33
33
  "aws4": "^1.13.2",
34
- "baileys": "^7.0.0-rc.6",
34
+ "baileys": "^7.0.0-rc.9",
35
35
  "dotenv": "^16.5.0",
36
36
  "link-preview-js": "^3.0.14",
37
37
  "mime": "^3.0.0",
@@ -54,4 +54,4 @@
54
54
  "tslib": "^2.8.1",
55
55
  "typescript": "^5.7.2"
56
56
  }
57
- }
57
+ }