wa-multi-mongodb 3.10.2 → 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.
Files changed (85) hide show
  1. package/dist/Defaults/index.js +4 -9
  2. package/dist/Error/index.js +1 -5
  3. package/dist/Messaging/index.d.ts +1 -1
  4. package/dist/Messaging/index.js +123 -137
  5. package/dist/Profile/index.d.ts +1 -1
  6. package/dist/Profile/index.js +6 -10
  7. package/dist/Socket/index.d.ts +160 -1
  8. package/dist/Socket/index.d.ts.map +1 -1
  9. package/dist/Socket/index.js +462 -200
  10. package/dist/Types/index.d.ts +21 -0
  11. package/dist/Types/index.d.ts.map +1 -1
  12. package/dist/Types/index.js +1 -2
  13. package/dist/Types/profile.js +1 -2
  14. package/dist/Utils/create-delay.js +2 -7
  15. package/dist/Utils/error.js +1 -4
  16. package/dist/Utils/group-cache.js +8 -15
  17. package/dist/Utils/index.d.ts +5 -5
  18. package/dist/Utils/index.js +5 -21
  19. package/dist/Utils/is-exist.d.ts +1 -1
  20. package/dist/Utils/is-exist.js +7 -10
  21. package/dist/Utils/lid-utils.js +13 -20
  22. package/dist/Utils/message-status.d.ts +1 -1
  23. package/dist/Utils/message-status.js +7 -11
  24. package/dist/Utils/mongo-auth-state.js +10 -13
  25. package/dist/Utils/phone-to-jid.js +6 -14
  26. package/dist/Utils/save-media.d.ts +1 -1
  27. package/dist/Utils/save-media.js +16 -26
  28. package/dist/cjs/Defaults/index.d.ts +21 -0
  29. package/dist/cjs/Defaults/index.d.ts.map +1 -0
  30. package/dist/cjs/Defaults/index.js +31 -0
  31. package/dist/cjs/Error/index.d.ts +5 -0
  32. package/dist/cjs/Error/index.d.ts.map +1 -0
  33. package/dist/cjs/Error/index.js +14 -0
  34. package/dist/cjs/Messaging/index.d.ts +45 -0
  35. package/dist/cjs/Messaging/index.d.ts.map +1 -0
  36. package/dist/cjs/Messaging/index.js +784 -0
  37. package/dist/cjs/Profile/index.d.ts +9 -0
  38. package/dist/cjs/Profile/index.d.ts.map +1 -0
  39. package/dist/cjs/Profile/index.js +34 -0
  40. package/dist/cjs/Socket/index.d.ts +264 -0
  41. package/dist/cjs/Socket/index.d.ts.map +1 -0
  42. package/dist/cjs/Socket/index.js +1210 -0
  43. package/dist/cjs/Types/index.d.ts +95 -0
  44. package/dist/cjs/Types/index.d.ts.map +1 -0
  45. package/dist/cjs/Types/index.js +2 -0
  46. package/dist/cjs/Types/profile.d.ts +5 -0
  47. package/dist/cjs/Types/profile.d.ts.map +1 -0
  48. package/dist/cjs/Types/profile.js +2 -0
  49. package/dist/cjs/Utils/create-delay.d.ts +17 -0
  50. package/dist/cjs/Utils/create-delay.d.ts.map +1 -0
  51. package/dist/cjs/Utils/create-delay.js +38 -0
  52. package/dist/cjs/Utils/error.d.ts +4 -0
  53. package/dist/cjs/Utils/error.d.ts.map +1 -0
  54. package/dist/cjs/Utils/error.js +8 -0
  55. package/dist/cjs/Utils/group-cache.d.ts +23 -0
  56. package/dist/cjs/Utils/group-cache.d.ts.map +1 -0
  57. package/dist/cjs/Utils/group-cache.js +176 -0
  58. package/dist/cjs/Utils/index.d.ts +6 -0
  59. package/dist/cjs/Utils/index.d.ts.map +1 -0
  60. package/dist/cjs/Utils/index.js +23 -0
  61. package/dist/cjs/Utils/is-exist.d.ts +6 -0
  62. package/dist/cjs/Utils/is-exist.d.ts.map +1 -0
  63. package/dist/cjs/Utils/is-exist.js +53 -0
  64. package/dist/cjs/Utils/lid-utils.d.ts +26 -0
  65. package/dist/cjs/Utils/lid-utils.d.ts.map +1 -0
  66. package/dist/cjs/Utils/lid-utils.js +81 -0
  67. package/dist/cjs/Utils/message-status.d.ts +4 -0
  68. package/dist/cjs/Utils/message-status.d.ts.map +1 -0
  69. package/dist/cjs/Utils/message-status.js +18 -0
  70. package/dist/cjs/Utils/mongo-auth-state.d.ts +15 -0
  71. package/dist/cjs/Utils/mongo-auth-state.d.ts.map +1 -0
  72. package/dist/cjs/Utils/mongo-auth-state.js +109 -0
  73. package/dist/cjs/Utils/phone-to-jid.d.ts +17 -0
  74. package/dist/cjs/Utils/phone-to-jid.d.ts.map +1 -0
  75. package/dist/cjs/Utils/phone-to-jid.js +51 -0
  76. package/dist/cjs/Utils/save-media.d.ts +6 -0
  77. package/dist/cjs/Utils/save-media.d.ts.map +1 -0
  78. package/dist/cjs/Utils/save-media.js +55 -0
  79. package/dist/cjs/index.d.ts +8 -0
  80. package/dist/cjs/index.d.ts.map +1 -0
  81. package/dist/cjs/index.js +46 -0
  82. package/dist/index.d.ts +6 -6
  83. package/dist/index.js +7 -46
  84. package/package.json +57 -42
  85. package/readme.md +170 -3
@@ -0,0 +1,9 @@
1
+ import { GetProfileInfoProps } from "../Types/profile";
2
+ /**
3
+ * Get profile information of a target (people or group)
4
+ */
5
+ export declare const getProfileInfo: (props: GetProfileInfoProps) => Promise<{
6
+ profilePictureUrl: string;
7
+ status: import("baileys").USyncQueryResultList[];
8
+ }>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Profile/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,OAAO,mBAAmB;;;EAgB9D,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getProfileInfo = void 0;
13
+ const Defaults_1 = require("../Defaults");
14
+ const Error_1 = require("../Error");
15
+ const Socket_1 = require("../Socket");
16
+ /**
17
+ * Get profile information of a target (people or group)
18
+ */
19
+ const getProfileInfo = (props) => __awaiter(void 0, void 0, void 0, function* () {
20
+ const session = (0, Socket_1.getSession)(props.sessionId);
21
+ if (!session)
22
+ throw new Error_1.WhatsappError(Defaults_1.Messages.sessionNotFound(props.sessionId));
23
+ const [profilePictureUrl, status] = yield Promise.allSettled([
24
+ session.profilePictureUrl(props.target, "image", 5000),
25
+ session.fetchStatus(props.target),
26
+ ]);
27
+ return {
28
+ profilePictureUrl: profilePictureUrl.status === "fulfilled"
29
+ ? profilePictureUrl.value || null
30
+ : null,
31
+ status: status.status === "fulfilled" ? status.value || null : null,
32
+ };
33
+ });
34
+ exports.getProfileInfo = getProfileInfo;
@@ -0,0 +1,264 @@
1
+ import { WASocket } from "baileys";
2
+ import type { MessageReceived, MessageUpdated, StartSessionParams } from "../Types";
3
+ /**
4
+ * Set MongoDB URI for connection
5
+ * This function will be used to configure MongoDB connection with just the URI
6
+ *
7
+ * @param uri MongoDB connection URI
8
+ */
9
+ export declare const setMongoURI: (uri: string) => Promise<void>;
10
+ export declare function setMongoCollection(collection: any): void;
11
+ export declare const startSession: (sessionId?: string, options?: StartSessionParams) => Promise<WASocket>;
12
+ /**
13
+ * Start WhatsApp session using pairing code method
14
+ * This is the recommended way to create sessions with pairing code
15
+ *
16
+ * @param sessionId Unique session identifier
17
+ * @param phoneNumber Phone number with country code (without + prefix)
18
+ * @param options Optional configuration for the session
19
+ * @returns Promise<WASocket> The WhatsApp socket instance
20
+ */
21
+ export declare const startSessionWithPairingCode: (sessionId: string, phoneNumber: string, options?: StartSessionParams) => Promise<WASocket>;
22
+ /**
23
+ * @deprecated Use startSession method instead
24
+ */
25
+ export declare const startWhatsapp: (sessionId?: string, options?: StartSessionParams) => Promise<WASocket>;
26
+ export declare const deleteSession: (sessionId: string) => Promise<void>;
27
+ /**
28
+ * Get all active session IDs
29
+ * @returns Array of session IDs
30
+ */
31
+ export declare const getAllSession: () => Promise<string[]>;
32
+ export declare const getAllSessionSync: () => string[];
33
+ export declare const getSession: (key: string) => WASocket | undefined;
34
+ /**
35
+ * @deprecated Use loadSessionsFromMongo instead
36
+ */
37
+ export declare const loadSessionsFromStorage: () => void;
38
+ export declare const onMessageReceived: (listener: (msg: MessageReceived) => any) => void;
39
+ export declare const onQRUpdated: (listener: ({ sessionId, qr }: {
40
+ sessionId: string;
41
+ qr: string;
42
+ }) => any) => void;
43
+ export declare const onConnected: (listener: (sessionId: string) => any) => void;
44
+ export declare const onDisconnected: (listener: (sessionId: string) => any) => void;
45
+ export declare const onConnecting: (listener: (sessionId: string) => any) => void;
46
+ export declare const onMessageUpdate: (listener: (data: MessageUpdated) => any) => void;
47
+ export declare const onPairingCode: (listener: (sessionId: string, code: string) => any) => void;
48
+ /**
49
+ * Load all sessions from MongoDB and start them automatically
50
+ */
51
+ export declare const loadSessionsFromMongo: () => Promise<void>;
52
+ /**
53
+ * Configure MongoDB database and collection names
54
+ *
55
+ * @param dbName MongoDB database name (default: "wa_session")
56
+ * @param collectionName MongoDB collection name for auth storage (default: "auth")
57
+ */
58
+ export declare const setMongoDBNames: (dbName?: string, collectionName?: string) => void;
59
+ /**
60
+ * Sets the directory name for storing credentials (File-based storage)
61
+ *
62
+ * @deprecated When using MongoDB, this setting has no effect. Only used for legacy file-based storage.
63
+ * @param dirname Directory name for storing credentials (default: "wa_credentials")
64
+ */
65
+ export declare const setCredentialsDir: (dirname?: string) => void;
66
+ /**
67
+ * Attempt to reconnect a disconnected session
68
+ *
69
+ * @param sessionId Session ID to reconnect
70
+ * @returns Promise<boolean> indicating success
71
+ */
72
+ export declare const reconnect: (sessionId: string) => Promise<boolean>;
73
+ /**
74
+ * Reconnect all pairing code sessions that are tracked
75
+ * Useful for bulk reconnection after system restart
76
+ */
77
+ export declare const reconnectAllPairingCodeSessions: () => Promise<{
78
+ [sessionId: string]: boolean;
79
+ }>;
80
+ /**
81
+ * Get all tracked pairing code sessions
82
+ * @returns Array of session IDs that were created with pairing code
83
+ */
84
+ export declare const getPairingCodeSessions: () => string[];
85
+ /**
86
+ * Get session status information
87
+ * @param sessionId Session ID to check
88
+ * @returns Object with session status information
89
+ */
90
+ export declare const getSessionStatus: (sessionId: string) => {
91
+ sessionId: string;
92
+ isRunning: boolean;
93
+ isPairingCodeSession: boolean;
94
+ retryAttempts: number;
95
+ hasCredentials: boolean;
96
+ };
97
+ export declare const setGroupCacheConfig: (options: {
98
+ stdTTL?: number;
99
+ checkperiod?: number;
100
+ }) => void;
101
+ export declare const getGroupMetadata: (sessionId: string, jid: string, forceFetch?: boolean) => Promise<any>;
102
+ export declare const clearGroupMetadataCache: (sessionId: string, jid: string) => Promise<void>;
103
+ export declare const clearSessionGroupMetadataCache: (sessionId: string) => Promise<void>;
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>;
264
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Socket/index.ts"],"names":[],"mappings":"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"}