wa-multi-mongodb 3.10.1 → 3.10.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 (84) 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 +1 -1
  8. package/dist/Socket/index.d.ts.map +1 -1
  9. package/dist/Socket/index.js +134 -200
  10. package/dist/Types/index.js +1 -2
  11. package/dist/Types/profile.js +1 -2
  12. package/dist/Utils/create-delay.js +2 -7
  13. package/dist/Utils/error.js +1 -4
  14. package/dist/Utils/group-cache.js +8 -15
  15. package/dist/Utils/index.d.ts +5 -5
  16. package/dist/Utils/index.js +5 -21
  17. package/dist/Utils/is-exist.d.ts +1 -1
  18. package/dist/Utils/is-exist.js +7 -10
  19. package/dist/Utils/lid-utils.d.ts.map +1 -1
  20. package/dist/Utils/lid-utils.js +16 -21
  21. package/dist/Utils/message-status.d.ts +1 -1
  22. package/dist/Utils/message-status.js +7 -11
  23. package/dist/Utils/mongo-auth-state.js +10 -13
  24. package/dist/Utils/phone-to-jid.js +6 -14
  25. package/dist/Utils/save-media.d.ts +1 -1
  26. package/dist/Utils/save-media.js +16 -26
  27. package/dist/cjs/Defaults/index.d.ts +21 -0
  28. package/dist/cjs/Defaults/index.d.ts.map +1 -0
  29. package/dist/cjs/Defaults/index.js +31 -0
  30. package/dist/cjs/Error/index.d.ts +5 -0
  31. package/dist/cjs/Error/index.d.ts.map +1 -0
  32. package/dist/cjs/Error/index.js +14 -0
  33. package/dist/cjs/Messaging/index.d.ts +45 -0
  34. package/dist/cjs/Messaging/index.d.ts.map +1 -0
  35. package/dist/cjs/Messaging/index.js +784 -0
  36. package/dist/cjs/Profile/index.d.ts +9 -0
  37. package/dist/cjs/Profile/index.d.ts.map +1 -0
  38. package/dist/cjs/Profile/index.js +34 -0
  39. package/dist/cjs/Socket/index.d.ts +105 -0
  40. package/dist/cjs/Socket/index.d.ts.map +1 -0
  41. package/dist/cjs/Socket/index.js +875 -0
  42. package/dist/cjs/Types/index.d.ts +74 -0
  43. package/dist/cjs/Types/index.d.ts.map +1 -0
  44. package/dist/cjs/Types/index.js +2 -0
  45. package/dist/cjs/Types/profile.d.ts +5 -0
  46. package/dist/cjs/Types/profile.d.ts.map +1 -0
  47. package/dist/cjs/Types/profile.js +2 -0
  48. package/dist/cjs/Utils/create-delay.d.ts +17 -0
  49. package/dist/cjs/Utils/create-delay.d.ts.map +1 -0
  50. package/dist/cjs/Utils/create-delay.js +38 -0
  51. package/dist/cjs/Utils/error.d.ts +4 -0
  52. package/dist/cjs/Utils/error.d.ts.map +1 -0
  53. package/dist/cjs/Utils/error.js +8 -0
  54. package/dist/cjs/Utils/group-cache.d.ts +23 -0
  55. package/dist/cjs/Utils/group-cache.d.ts.map +1 -0
  56. package/dist/cjs/Utils/group-cache.js +176 -0
  57. package/dist/cjs/Utils/index.d.ts +6 -0
  58. package/dist/cjs/Utils/index.d.ts.map +1 -0
  59. package/dist/cjs/Utils/index.js +23 -0
  60. package/dist/cjs/Utils/is-exist.d.ts +6 -0
  61. package/dist/cjs/Utils/is-exist.d.ts.map +1 -0
  62. package/dist/cjs/Utils/is-exist.js +53 -0
  63. package/dist/cjs/Utils/lid-utils.d.ts +26 -0
  64. package/dist/cjs/Utils/lid-utils.d.ts.map +1 -0
  65. package/dist/cjs/Utils/lid-utils.js +81 -0
  66. package/dist/cjs/Utils/message-status.d.ts +4 -0
  67. package/dist/cjs/Utils/message-status.d.ts.map +1 -0
  68. package/dist/cjs/Utils/message-status.js +18 -0
  69. package/dist/cjs/Utils/mongo-auth-state.d.ts +15 -0
  70. package/dist/cjs/Utils/mongo-auth-state.d.ts.map +1 -0
  71. package/dist/cjs/Utils/mongo-auth-state.js +109 -0
  72. package/dist/cjs/Utils/phone-to-jid.d.ts +17 -0
  73. package/dist/cjs/Utils/phone-to-jid.d.ts.map +1 -0
  74. package/dist/cjs/Utils/phone-to-jid.js +51 -0
  75. package/dist/cjs/Utils/save-media.d.ts +6 -0
  76. package/dist/cjs/Utils/save-media.d.ts.map +1 -0
  77. package/dist/cjs/Utils/save-media.js +55 -0
  78. package/dist/cjs/index.d.ts +8 -0
  79. package/dist/cjs/index.d.ts.map +1 -0
  80. package/dist/cjs/index.js +46 -0
  81. package/dist/index.d.ts +6 -6
  82. package/dist/index.js +7 -46
  83. package/package.json +57 -42
  84. package/readme.md +7 -1
@@ -1,37 +1,3 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -41,30 +7,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
41
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
42
8
  });
43
9
  };
44
- var __importDefault = (this && this.__importDefault) || function (mod) {
45
- return (mod && mod.__esModule) ? mod : { "default": mod };
46
- };
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;
49
- exports.setMongoCollection = setMongoCollection;
50
- const baileys_1 = __importStar(require("baileys"));
51
- const path_1 = __importDefault(require("path"));
52
- const fs_1 = __importDefault(require("fs"));
53
- const qrcode_1 = __importDefault(require("qrcode"));
54
- const Defaults_1 = require("../Defaults");
55
- const save_media_1 = require("../Utils/save-media");
56
- const Utils_1 = require("../Utils");
57
- const Error_1 = require("../Error");
58
- const message_status_1 = require("../Utils/message-status");
59
- const mongodb_1 = require("mongodb");
60
- const mongo_auth_state_1 = require("../Utils/mongo-auth-state");
61
- const create_delay_1 = require("../Utils/create-delay");
10
+ import makeWASocket, { Browsers, DisconnectReason, fetchLatestBaileysVersion, } from "baileys";
11
+ import path from "path";
12
+ import fs from "fs";
13
+ import QRCode from "qrcode";
14
+ import pino from "pino";
15
+ import { CALLBACK_KEY, CREDENTIALS, Messages } from "../Defaults/index.js";
16
+ import { saveAudioHandler, saveDocumentHandler, saveImageHandler, saveVideoHandler, } from "../Utils/save-media.js";
17
+ import { groupCache } from "../Utils/index.js";
18
+ import { WhatsappError } from "../Error/index.js";
19
+ import { parseMessageStatusCodeToReadable } from "../Utils/message-status.js";
20
+ import { MongoClient } from "mongodb";
21
+ import { useMongoAuthState } from "../Utils/mongo-auth-state.js";
22
+ import { createDelay } from "../Utils/create-delay.js";
62
23
  const sessions = new Map();
63
24
  const callback = new Map();
64
25
  const retryCount = new Map();
65
26
  // Tambahkan Map untuk melacak session yang menggunakan pairing code
66
27
  const pairingCodeSessions = new Map();
67
- const P = require("pino")({
28
+ const P = pino({
68
29
  level: "silent",
69
30
  });
70
31
  // Tambahkan variabel global untuk koneksi MongoDB dan collection
@@ -77,10 +38,10 @@ let mongoURI = process.env.MONGODB_URI || "mongodb://localhost:27017";
77
38
  *
78
39
  * @param uri MongoDB connection URI
79
40
  */
80
- const setMongoURI = (uri) => __awaiter(void 0, void 0, void 0, function* () {
41
+ export const setMongoURI = (uri) => __awaiter(void 0, void 0, void 0, function* () {
81
42
  mongoURI = uri;
82
43
  // Configure group cache MongoDB connection as well
83
- yield Utils_1.groupCache.setMongoURI(uri);
44
+ yield groupCache.setMongoURI(uri);
84
45
  // Reset MongoDB client and collection to ensure they are recreated with new URI
85
46
  if (mongoClient) {
86
47
  try {
@@ -94,41 +55,40 @@ const setMongoURI = (uri) => __awaiter(void 0, void 0, void 0, function* () {
94
55
  }
95
56
  // MongoDB URI configured successfully - removed console.log for npm package
96
57
  });
97
- exports.setMongoURI = setMongoURI;
98
- function setMongoCollection(collection) {
58
+ export function setMongoCollection(collection) {
99
59
  authCollection = collection;
100
60
  }
101
61
  function initMongo() {
102
62
  return __awaiter(this, void 0, void 0, function* () {
103
63
  if (!authCollection) {
104
64
  if (!mongoClient) {
105
- mongoClient = new mongodb_1.MongoClient(mongoURI);
65
+ mongoClient = new MongoClient(mongoURI);
106
66
  yield mongoClient.connect();
107
67
  }
108
68
  // Gunakan variabel dari CREDENTIALS
109
- const dbName = Defaults_1.CREDENTIALS.MONGO_DB_NAME;
110
- const collectionName = Defaults_1.CREDENTIALS.MONGO_COLLECTION_NAME;
69
+ const dbName = CREDENTIALS.MONGO_DB_NAME;
70
+ const collectionName = CREDENTIALS.MONGO_COLLECTION_NAME;
111
71
  authCollection = mongoClient.db(dbName).collection(collectionName);
112
72
  // console.log(`MongoDB initialized with database "${dbName}" and collection "${collectionName}"`);
113
73
  }
114
74
  });
115
75
  }
116
- const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (sessionId = "mysession", options = { printQR: true }) {
76
+ export const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (sessionId = "mysession", options = { printQR: true }) {
117
77
  if (isSessionExistAndRunning(sessionId))
118
- throw new Error_1.WhatsappError(Defaults_1.Messages.sessionAlreadyExist(sessionId));
78
+ throw new WhatsappError(Messages.sessionAlreadyExist(sessionId));
119
79
  yield initMongo();
120
- const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
80
+ const { version } = yield fetchLatestBaileysVersion();
121
81
  const startSocket = () => __awaiter(void 0, void 0, void 0, function* () {
122
- const { state, saveCreds } = yield (0, mongo_auth_state_1.useMongoAuthState)(sessionId, authCollection);
123
- const sock = (0, baileys_1.default)({
82
+ const { state, saveCreds } = yield useMongoAuthState(sessionId, authCollection);
83
+ const sock = makeWASocket({
124
84
  version,
125
85
  auth: state,
126
86
  logger: P,
127
87
  markOnlineOnConnect: false,
128
- browser: baileys_1.Browsers.ubuntu("Chrome"),
88
+ browser: Browsers.ubuntu("Chrome"),
129
89
  // Configure caching group metadata using our hybrid implementation with session ID
130
90
  cachedGroupMetadata: (jid) => __awaiter(void 0, void 0, void 0, function* () {
131
- return yield Utils_1.groupCache.get(sessionId, jid);
91
+ return yield groupCache.get(sessionId, jid);
132
92
  })
133
93
  });
134
94
  sessions.set(sessionId, Object.assign({}, sock));
@@ -141,7 +101,7 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
141
101
  if (update.qr) {
142
102
  // Print QR to console if requested
143
103
  if (options.printQR) {
144
- qrcode_1.default.toString(update.qr, {
104
+ QRCode.toString(update.qr, {
145
105
  type: 'terminal',
146
106
  small: true,
147
107
  margin: 1
@@ -152,21 +112,21 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
152
112
  });
153
113
  }
154
114
  // Send QR data raw to callback for frontend processing
155
- (_a = callback.get(Defaults_1.CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a({
115
+ (_a = callback.get(CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a({
156
116
  sessionId,
157
117
  qr: update.qr
158
118
  });
159
119
  (_b = options.onQRUpdated) === null || _b === void 0 ? void 0 : _b.call(options, update.qr);
160
120
  }
161
121
  if (connection == "connecting") {
162
- (_c = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTING)) === null || _c === void 0 ? void 0 : _c(sessionId);
122
+ (_c = callback.get(CALLBACK_KEY.ON_CONNECTING)) === null || _c === void 0 ? void 0 : _c(sessionId);
163
123
  (_d = options.onConnecting) === null || _d === void 0 ? void 0 : _d.call(options);
164
124
  }
165
125
  if (connection === "close") {
166
126
  const code = (_f = (_e = lastDisconnect === null || lastDisconnect === void 0 ? void 0 : lastDisconnect.error) === null || _e === void 0 ? void 0 : _e.output) === null || _f === void 0 ? void 0 : _f.statusCode;
167
127
  let retryAttempt = (_g = retryCount.get(sessionId)) !== null && _g !== void 0 ? _g : 0;
168
128
  let shouldRetry;
169
- if (code != baileys_1.DisconnectReason.loggedOut && retryAttempt < 10) {
129
+ if (code != DisconnectReason.loggedOut && retryAttempt < 10) {
170
130
  shouldRetry = true;
171
131
  }
172
132
  if (shouldRetry) {
@@ -184,13 +144,13 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
184
144
  // For regular sessions, completely delete
185
145
  yield softDeleteSession(sessionId, false);
186
146
  }
187
- (_h = callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _h === void 0 ? void 0 : _h(sessionId);
147
+ (_h = callback.get(CALLBACK_KEY.ON_DISCONNECTED)) === null || _h === void 0 ? void 0 : _h(sessionId);
188
148
  (_j = options.onDisconnected) === null || _j === void 0 ? void 0 : _j.call(options);
189
149
  }
190
150
  }
191
151
  if (connection == "open") {
192
152
  retryCount.delete(sessionId);
193
- (_k = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTED)) === null || _k === void 0 ? void 0 : _k(sessionId);
153
+ (_k = callback.get(CALLBACK_KEY.ON_CONNECTED)) === null || _k === void 0 ? void 0 : _k(sessionId);
194
154
  (_l = options.onConnected) === null || _l === void 0 ? void 0 : _l.call(options);
195
155
  }
196
156
  }
@@ -204,7 +164,7 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
204
164
  try {
205
165
  // Dapatkan metadata grup terbaru dan simpan ke cache dengan sessionId
206
166
  const metadata = yield sock.groupMetadata(update.id);
207
- yield Utils_1.groupCache.set(sessionId, update.id, metadata);
167
+ yield groupCache.set(sessionId, update.id, metadata);
208
168
  }
209
169
  catch (error) {
210
170
  console.error(`Error updating group metadata in cache: ${error}`);
@@ -217,7 +177,7 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
217
177
  try {
218
178
  // Dapatkan metadata grup terbaru dan simpan ke cache dengan sessionId
219
179
  const metadata = yield sock.groupMetadata(update.id);
220
- yield Utils_1.groupCache.set(sessionId, update.id, metadata);
180
+ yield groupCache.set(sessionId, update.id, metadata);
221
181
  }
222
182
  catch (error) {
223
183
  console.error(`Error updating group participants in cache: ${error}`);
@@ -225,8 +185,8 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
225
185
  }
226
186
  if (events["messages.update"]) {
227
187
  const msg = events["messages.update"][0];
228
- const data = Object.assign({ sessionId: sessionId, messageStatus: (0, message_status_1.parseMessageStatusCodeToReadable)(msg.update.status) }, msg);
229
- (_m = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _m === void 0 ? void 0 : _m(sessionId, data);
188
+ const data = Object.assign({ sessionId: sessionId, messageStatus: parseMessageStatusCodeToReadable(msg.update.status) }, msg);
189
+ (_m = callback.get(CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _m === void 0 ? void 0 : _m(sessionId, data);
230
190
  (_o = options.onMessageUpdated) === null || _o === void 0 ? void 0 : _o.call(options, data);
231
191
  }
232
192
  if (events["messages.upsert"]) {
@@ -242,11 +202,11 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
242
202
  }
243
203
  const msg = rawMsg;
244
204
  msg.sessionId = sessionId;
245
- msg.saveImage = (path) => (0, save_media_1.saveImageHandler)(msg, path);
246
- msg.saveVideo = (path) => (0, save_media_1.saveVideoHandler)(msg, path);
247
- msg.saveDocument = (path) => (0, save_media_1.saveDocumentHandler)(msg, path);
248
- msg.saveAudio = (path) => (0, save_media_1.saveAudioHandler)(msg, path);
249
- (_q = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _q === void 0 ? void 0 : _q(Object.assign({}, msg));
205
+ msg.saveImage = (path) => saveImageHandler(msg, path);
206
+ msg.saveVideo = (path) => saveVideoHandler(msg, path);
207
+ msg.saveDocument = (path) => saveDocumentHandler(msg, path);
208
+ msg.saveAudio = (path) => saveAudioHandler(msg, path);
209
+ (_q = callback.get(CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _q === void 0 ? void 0 : _q(Object.assign({}, msg));
250
210
  (_r = options.onMessageReceived) === null || _r === void 0 ? void 0 : _r.call(options, msg);
251
211
  }
252
212
  }
@@ -260,7 +220,6 @@ const startSession = (...args_1) => __awaiter(void 0, [...args_1], void 0, funct
260
220
  });
261
221
  return startSocket();
262
222
  });
263
- exports.startSession = startSession;
264
223
  /**
265
224
  * Start WhatsApp session using pairing code method
266
225
  * This is the recommended way to create sessions with pairing code
@@ -270,22 +229,22 @@ exports.startSession = startSession;
270
229
  * @param options Optional configuration for the session
271
230
  * @returns Promise<WASocket> The WhatsApp socket instance
272
231
  */
273
- const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => __awaiter(void 0, [sessionId_1, phoneNumber_1, ...args_1], void 0, function* (sessionId, phoneNumber, options = {}) {
232
+ export const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => __awaiter(void 0, [sessionId_1, phoneNumber_1, ...args_1], void 0, function* (sessionId, phoneNumber, options = {}) {
274
233
  if (isSessionExistAndRunning(sessionId))
275
- throw new Error_1.WhatsappError(Defaults_1.Messages.sessionAlreadyExist(sessionId));
234
+ throw new WhatsappError(Messages.sessionAlreadyExist(sessionId));
276
235
  // Simpan informasi session pairing code untuk auto-reconnect
277
236
  pairingCodeSessions.set(sessionId, { phoneNumber, options });
278
237
  yield initMongo();
279
- const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
238
+ const { version } = yield fetchLatestBaileysVersion();
280
239
  const startSocket = () => __awaiter(void 0, void 0, void 0, function* () {
281
240
  var _a, _b;
282
- const { state, saveCreds } = yield (0, mongo_auth_state_1.useMongoAuthState)(sessionId, authCollection);
283
- const sock = (0, baileys_1.default)({
241
+ const { state, saveCreds } = yield useMongoAuthState(sessionId, authCollection);
242
+ const sock = makeWASocket({
284
243
  version,
285
244
  auth: state,
286
245
  logger: P,
287
246
  markOnlineOnConnect: false,
288
- browser: baileys_1.Browsers.ubuntu("Chrome"),
247
+ browser: Browsers.ubuntu("Chrome"),
289
248
  // Opsi tambahan untuk meningkatkan kompatibilitas
290
249
  linkPreviewImageThumbnailWidth: 300,
291
250
  generateHighQualityLinkPreview: true,
@@ -294,7 +253,7 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
294
253
  printQRInTerminal: false, // QR tidak dicetak untuk pairing code
295
254
  // Configure caching group metadata using our hybrid implementation with session ID
296
255
  cachedGroupMetadata: (jid) => __awaiter(void 0, void 0, void 0, function* () {
297
- return yield Utils_1.groupCache.get(sessionId, jid);
256
+ return yield groupCache.get(sessionId, jid);
298
257
  })
299
258
  });
300
259
  sessions.set(sessionId, Object.assign({}, sock));
@@ -312,7 +271,7 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
312
271
  if (code && typeof code === 'string') {
313
272
  console.log(`Pairing code untuk session ${sessionId}: ${code}`);
314
273
  // Panggil callback yang terdaftar
315
- (_a = callback.get(Defaults_1.CALLBACK_KEY.ON_PAIRING_CODE)) === null || _a === void 0 ? void 0 : _a(sessionId, code);
274
+ (_a = callback.get(CALLBACK_KEY.ON_PAIRING_CODE)) === null || _a === void 0 ? void 0 : _a(sessionId, code);
316
275
  (_b = options.onPairingCode) === null || _b === void 0 ? void 0 : _b.call(options, code);
317
276
  }
318
277
  else {
@@ -321,7 +280,7 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
321
280
  }
322
281
  catch (error) {
323
282
  console.error("Error saat meminta kode pairing:", error);
324
- throw new Error_1.WhatsappError(`Gagal mendapatkan kode pairing: ${error.message || String(error)}`);
283
+ throw new WhatsappError(`Gagal mendapatkan kode pairing: ${error.message || String(error)}`);
325
284
  }
326
285
  }
327
286
  sock.ev.process((events) => __awaiter(void 0, void 0, void 0, function* () {
@@ -331,20 +290,20 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
331
290
  const { connection, lastDisconnect } = update;
332
291
  if (update.qr) {
333
292
  // Send QR data raw to callback for frontend processing
334
- (_a = callback.get(Defaults_1.CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a({
293
+ (_a = callback.get(CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a({
335
294
  sessionId,
336
295
  qr: update.qr
337
296
  });
338
297
  }
339
298
  if (connection == "connecting") {
340
- (_b = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTING)) === null || _b === void 0 ? void 0 : _b(sessionId);
299
+ (_b = callback.get(CALLBACK_KEY.ON_CONNECTING)) === null || _b === void 0 ? void 0 : _b(sessionId);
341
300
  (_c = options.onConnecting) === null || _c === void 0 ? void 0 : _c.call(options);
342
301
  }
343
302
  if (connection === "close") {
344
303
  const code = (_e = (_d = lastDisconnect === null || lastDisconnect === void 0 ? void 0 : lastDisconnect.error) === null || _d === void 0 ? void 0 : _d.output) === null || _e === void 0 ? void 0 : _e.statusCode;
345
304
  let retryAttempt = (_f = retryCount.get(sessionId)) !== null && _f !== void 0 ? _f : 0;
346
305
  let shouldRetry;
347
- if (code != baileys_1.DisconnectReason.loggedOut && retryAttempt < 10) {
306
+ if (code != DisconnectReason.loggedOut && retryAttempt < 10) {
348
307
  shouldRetry = true;
349
308
  }
350
309
  if (shouldRetry) {
@@ -353,7 +312,7 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
353
312
  // Untuk session pairing code, coba reconnect dengan metode yang tepat
354
313
  try {
355
314
  // Tunggu sebentar sebelum reconnect
356
- yield (0, create_delay_1.createDelay)(2000);
315
+ yield createDelay(2000);
357
316
  startSocket();
358
317
  }
359
318
  catch (reconnectError) {
@@ -387,13 +346,13 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
387
346
  pairingCodeSessions.delete(sessionId); // Only delete from tracking if it's not a pairing code session
388
347
  yield softDeleteSession(sessionId, false);
389
348
  }
390
- (_g = callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _g === void 0 ? void 0 : _g(sessionId);
349
+ (_g = callback.get(CALLBACK_KEY.ON_DISCONNECTED)) === null || _g === void 0 ? void 0 : _g(sessionId);
391
350
  (_h = options.onDisconnected) === null || _h === void 0 ? void 0 : _h.call(options);
392
351
  }
393
352
  }
394
353
  if (connection == "open") {
395
354
  retryCount.delete(sessionId);
396
- (_j = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTED)) === null || _j === void 0 ? void 0 : _j(sessionId);
355
+ (_j = callback.get(CALLBACK_KEY.ON_CONNECTED)) === null || _j === void 0 ? void 0 : _j(sessionId);
397
356
  (_k = options.onConnected) === null || _k === void 0 ? void 0 : _k.call(options);
398
357
  }
399
358
  }
@@ -407,7 +366,7 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
407
366
  try {
408
367
  // Dapatkan metadata grup terbaru dan simpan ke cache dengan sessionId
409
368
  const metadata = yield sock.groupMetadata(update.id);
410
- yield Utils_1.groupCache.set(sessionId, update.id, metadata);
369
+ yield groupCache.set(sessionId, update.id, metadata);
411
370
  }
412
371
  catch (error) {
413
372
  console.error(`Error updating group metadata in cache: ${error}`);
@@ -420,7 +379,7 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
420
379
  try {
421
380
  // Dapatkan metadata grup terbaru dan simpan ke cache dengan sessionId
422
381
  const metadata = yield sock.groupMetadata(update.id);
423
- yield Utils_1.groupCache.set(sessionId, update.id, metadata);
382
+ yield groupCache.set(sessionId, update.id, metadata);
424
383
  }
425
384
  catch (error) {
426
385
  console.error(`Error updating group participants in cache: ${error}`);
@@ -428,8 +387,8 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
428
387
  }
429
388
  if (events["messages.update"]) {
430
389
  const msg = events["messages.update"][0];
431
- const data = Object.assign({ sessionId: sessionId, messageStatus: (0, message_status_1.parseMessageStatusCodeToReadable)(msg.update.status) }, msg);
432
- (_l = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _l === void 0 ? void 0 : _l(sessionId, data);
390
+ const data = Object.assign({ sessionId: sessionId, messageStatus: parseMessageStatusCodeToReadable(msg.update.status) }, msg);
391
+ (_l = callback.get(CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _l === void 0 ? void 0 : _l(sessionId, data);
433
392
  (_m = options.onMessageUpdated) === null || _m === void 0 ? void 0 : _m.call(options, data);
434
393
  }
435
394
  if (events["messages.upsert"]) {
@@ -445,11 +404,11 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
445
404
  }
446
405
  const msg = rawMsg;
447
406
  msg.sessionId = sessionId;
448
- msg.saveImage = (path) => (0, save_media_1.saveImageHandler)(msg, path);
449
- msg.saveVideo = (path) => (0, save_media_1.saveVideoHandler)(msg, path);
450
- msg.saveDocument = (path) => (0, save_media_1.saveDocumentHandler)(msg, path);
451
- msg.saveAudio = (path) => (0, save_media_1.saveAudioHandler)(msg, path);
452
- (_p = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _p === void 0 ? void 0 : _p(Object.assign({}, msg));
407
+ msg.saveImage = (path) => saveImageHandler(msg, path);
408
+ msg.saveVideo = (path) => saveVideoHandler(msg, path);
409
+ msg.saveDocument = (path) => saveDocumentHandler(msg, path);
410
+ msg.saveAudio = (path) => saveAudioHandler(msg, path);
411
+ (_p = callback.get(CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _p === void 0 ? void 0 : _p(Object.assign({}, msg));
453
412
  (_q = options.onMessageReceived) === null || _q === void 0 ? void 0 : _q.call(options, msg);
454
413
  }
455
414
  }
@@ -463,17 +422,16 @@ const startSessionWithPairingCode = (sessionId_1, phoneNumber_1, ...args_1) => _
463
422
  });
464
423
  return startSocket();
465
424
  });
466
- exports.startSessionWithPairingCode = startSessionWithPairingCode;
467
425
  /**
468
426
  * @deprecated Use startSession method instead
469
427
  */
470
- exports.startWhatsapp = exports.startSession;
428
+ export const startWhatsapp = startSession;
471
429
  /**
472
430
  * Soft delete session - removes from memory but preserves MongoDB data for pairing code sessions
473
431
  * @param sessionId Session ID to soft delete
474
432
  */
475
433
  const softDeleteSession = (sessionId_1, ...args_1) => __awaiter(void 0, [sessionId_1, ...args_1], void 0, function* (sessionId, preserveData = false) {
476
- const session = (0, exports.getSession)(sessionId);
434
+ const session = getSession(sessionId);
477
435
  try {
478
436
  yield (session === null || session === void 0 ? void 0 : session.logout());
479
437
  }
@@ -496,19 +454,19 @@ const softDeleteSession = (sessionId_1, ...args_1) => __awaiter(void 0, [session
496
454
  }
497
455
  // Hapus cache grup untuk session ini
498
456
  try {
499
- yield Utils_1.groupCache.clearSessionCache(sessionId);
457
+ yield groupCache.clearSessionCache(sessionId);
500
458
  }
501
459
  catch (error) {
502
460
  console.error(`Error clearing group cache for session ${sessionId}:`, error);
503
461
  }
504
462
  // Legacy: hapus juga dari file system jika ada
505
- const dir = path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX);
506
- if (fs_1.default.existsSync(dir)) {
507
- fs_1.default.rmSync(dir, { force: true, recursive: true });
463
+ const dir = path.resolve(CREDENTIALS.DIR_NAME, sessionId + CREDENTIALS.PREFIX);
464
+ if (fs.existsSync(dir)) {
465
+ fs.rmSync(dir, { force: true, recursive: true });
508
466
  }
509
467
  });
510
- const deleteSession = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
511
- const session = (0, exports.getSession)(sessionId);
468
+ export const deleteSession = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
469
+ const session = getSession(sessionId);
512
470
  try {
513
471
  yield (session === null || session === void 0 ? void 0 : session.logout());
514
472
  }
@@ -528,23 +486,22 @@ const deleteSession = (sessionId) => __awaiter(void 0, void 0, void 0, function*
528
486
  }
529
487
  // Hapus cache grup untuk session ini
530
488
  try {
531
- yield Utils_1.groupCache.clearSessionCache(sessionId);
489
+ yield groupCache.clearSessionCache(sessionId);
532
490
  }
533
491
  catch (error) {
534
492
  console.error(`Error clearing group cache for session ${sessionId}:`, error);
535
493
  }
536
494
  // Legacy: hapus juga dari file system jika ada
537
- const dir = path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX);
538
- if (fs_1.default.existsSync(dir)) {
539
- fs_1.default.rmSync(dir, { force: true, recursive: true });
495
+ const dir = path.resolve(CREDENTIALS.DIR_NAME, sessionId + CREDENTIALS.PREFIX);
496
+ if (fs.existsSync(dir)) {
497
+ fs.rmSync(dir, { force: true, recursive: true });
540
498
  }
541
499
  });
542
- exports.deleteSession = deleteSession;
543
500
  /**
544
501
  * Get all active session IDs
545
502
  * @returns Array of session IDs
546
503
  */
547
- const getAllSession = () => __awaiter(void 0, void 0, void 0, function* () {
504
+ export const getAllSession = () => __awaiter(void 0, void 0, void 0, function* () {
548
505
  // Return active sessions from Map (sessions yang sudah running di memori)
549
506
  const runningSessionIds = Array.from(sessions.keys());
550
507
  // Jika authCollection belum diinisialisasi, kembalikan hanya sessions dari memori
@@ -565,15 +522,12 @@ const getAllSession = () => __awaiter(void 0, void 0, void 0, function* () {
565
522
  return runningSessionIds;
566
523
  }
567
524
  });
568
- exports.getAllSession = getAllSession;
569
525
  // Untuk backward compatibility
570
- const getAllSessionSync = () => Array.from(sessions.keys());
571
- exports.getAllSessionSync = getAllSessionSync;
572
- const getSession = (key) => sessions.get(key);
573
- exports.getSession = getSession;
526
+ export const getAllSessionSync = () => Array.from(sessions.keys());
527
+ export const getSession = (key) => sessions.get(key);
574
528
  const isSessionExistAndRunning = (sessionId) => {
575
529
  // Cek jika session sudah berjalan di memory
576
- if ((0, exports.getSession)(sessionId)) {
530
+ if (getSession(sessionId)) {
577
531
  return true;
578
532
  }
579
533
  return false;
@@ -585,7 +539,7 @@ const isSessionExistAndRunning = (sessionId) => {
585
539
  */
586
540
  const shouldLoadSession = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
587
541
  // Jika session sudah berjalan di memory, tidak perlu load lagi
588
- if ((0, exports.getSession)(sessionId)) {
542
+ if (getSession(sessionId)) {
589
543
  return false;
590
544
  }
591
545
  // Jika authCollection belum diinisialisasi, tidak bisa load
@@ -605,54 +559,46 @@ const shouldLoadSession = (sessionId) => __awaiter(void 0, void 0, void 0, funct
605
559
  /**
606
560
  * @deprecated Use loadSessionsFromMongo instead
607
561
  */
608
- const loadSessionsFromStorage = () => {
562
+ export const loadSessionsFromStorage = () => {
609
563
  console.warn("loadSessionsFromStorage is deprecated, use loadSessionsFromMongo instead");
610
564
  // Redirect ke fungsi loadSessionsFromMongo untuk backward compatibility
611
- (0, exports.loadSessionsFromMongo)().catch(err => {
565
+ loadSessionsFromMongo().catch(err => {
612
566
  console.error("Error loading sessions from MongoDB:", err);
613
567
  });
614
568
  };
615
- exports.loadSessionsFromStorage = loadSessionsFromStorage;
616
- const onMessageReceived = (listener) => {
617
- callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED, listener);
569
+ export const onMessageReceived = (listener) => {
570
+ callback.set(CALLBACK_KEY.ON_MESSAGE_RECEIVED, listener);
618
571
  };
619
- exports.onMessageReceived = onMessageReceived;
620
- const onQRUpdated = (listener) => {
621
- callback.set(Defaults_1.CALLBACK_KEY.ON_QR, listener);
572
+ export const onQRUpdated = (listener) => {
573
+ callback.set(CALLBACK_KEY.ON_QR, listener);
622
574
  };
623
- exports.onQRUpdated = onQRUpdated;
624
- const onConnected = (listener) => {
625
- callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTED, listener);
575
+ export const onConnected = (listener) => {
576
+ callback.set(CALLBACK_KEY.ON_CONNECTED, listener);
626
577
  };
627
- exports.onConnected = onConnected;
628
- const onDisconnected = (listener) => {
629
- callback.set(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED, listener);
578
+ export const onDisconnected = (listener) => {
579
+ callback.set(CALLBACK_KEY.ON_DISCONNECTED, listener);
630
580
  };
631
- exports.onDisconnected = onDisconnected;
632
- const onConnecting = (listener) => {
633
- callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTING, listener);
581
+ export const onConnecting = (listener) => {
582
+ callback.set(CALLBACK_KEY.ON_CONNECTING, listener);
634
583
  };
635
- exports.onConnecting = onConnecting;
636
- const onMessageUpdate = (listener) => {
637
- callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED, listener);
584
+ export const onMessageUpdate = (listener) => {
585
+ callback.set(CALLBACK_KEY.ON_MESSAGE_UPDATED, listener);
638
586
  };
639
- exports.onMessageUpdate = onMessageUpdate;
640
- const onPairingCode = (listener) => {
587
+ export const onPairingCode = (listener) => {
641
588
  // Set callback ke registry dengan key yang benar
642
- callback.set(Defaults_1.CALLBACK_KEY.ON_PAIRING_CODE, listener);
589
+ callback.set(CALLBACK_KEY.ON_PAIRING_CODE, listener);
643
590
  };
644
- exports.onPairingCode = onPairingCode;
645
591
  /**
646
592
  * Load all sessions from MongoDB and start them automatically
647
593
  */
648
- const loadSessionsFromMongo = () => __awaiter(void 0, void 0, void 0, function* () {
594
+ export const loadSessionsFromMongo = () => __awaiter(void 0, void 0, void 0, function* () {
649
595
  yield initMongo();
650
596
  const sessionDocs = yield authCollection.find({}).toArray();
651
597
  for (const doc of sessionDocs) {
652
598
  const sessionId = doc.sessionId;
653
- if (sessionId && !(0, exports.getSession)(sessionId)) {
599
+ if (sessionId && !getSession(sessionId)) {
654
600
  try {
655
- yield (0, exports.startSession)(sessionId, { printQR: false });
601
+ yield startSession(sessionId, { printQR: false });
656
602
  }
657
603
  catch (e) {
658
604
  // Optional: log error jika gagal load session tertentu
@@ -661,36 +607,33 @@ const loadSessionsFromMongo = () => __awaiter(void 0, void 0, void 0, function*
661
607
  }
662
608
  }
663
609
  });
664
- exports.loadSessionsFromMongo = loadSessionsFromMongo;
665
610
  /**
666
611
  * Configure MongoDB database and collection names
667
612
  *
668
613
  * @param dbName MongoDB database name (default: "wa_session")
669
614
  * @param collectionName MongoDB collection name for auth storage (default: "auth")
670
615
  */
671
- const setMongoDBNames = (dbName = "wa_session", collectionName = "auth") => {
672
- Defaults_1.CREDENTIALS.MONGO_DB_NAME = dbName;
673
- Defaults_1.CREDENTIALS.MONGO_COLLECTION_NAME = collectionName;
616
+ export const setMongoDBNames = (dbName = "wa_session", collectionName = "auth") => {
617
+ CREDENTIALS.MONGO_DB_NAME = dbName;
618
+ CREDENTIALS.MONGO_COLLECTION_NAME = collectionName;
674
619
  };
675
- exports.setMongoDBNames = setMongoDBNames;
676
620
  /**
677
621
  * Sets the directory name for storing credentials (File-based storage)
678
622
  *
679
623
  * @deprecated When using MongoDB, this setting has no effect. Only used for legacy file-based storage.
680
624
  * @param dirname Directory name for storing credentials (default: "wa_credentials")
681
625
  */
682
- const setCredentialsDir = (dirname = "wa_credentials") => {
626
+ export const setCredentialsDir = (dirname = "wa_credentials") => {
683
627
  console.warn("setCredentialsDir() is deprecated when using MongoDB storage. This setting only affects legacy file-based storage.");
684
- Defaults_1.CREDENTIALS.DIR_NAME = dirname;
628
+ CREDENTIALS.DIR_NAME = dirname;
685
629
  };
686
- exports.setCredentialsDir = setCredentialsDir;
687
630
  /**
688
631
  * Attempt to reconnect a disconnected session
689
632
  *
690
633
  * @param sessionId Session ID to reconnect
691
634
  * @returns Promise<boolean> indicating success
692
635
  */
693
- const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
636
+ export const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
694
637
  try {
695
638
  // Cek jika session masih ada di memory
696
639
  const existingSession = sessions.get(sessionId);
@@ -713,7 +656,7 @@ const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* ()
713
656
  sessions.delete(sessionId);
714
657
  }
715
658
  // Tunggu sedikit waktu untuk memastikan cleanup selesai
716
- yield (0, create_delay_1.createDelay)(1000);
659
+ yield createDelay(1000);
717
660
  // Cek jika ini session pairing code dari tracking terlebih dahulu
718
661
  const pairingInfo = pairingCodeSessions.get(sessionId);
719
662
  if (pairingInfo) {
@@ -721,7 +664,7 @@ const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* ()
721
664
  try {
722
665
  // Reset retry count untuk session ini
723
666
  retryCount.delete(sessionId);
724
- yield (0, exports.startSessionWithPairingCode)(sessionId, pairingInfo.phoneNumber, Object.assign(Object.assign({}, pairingInfo.options), { printQR: false,
667
+ yield startSessionWithPairingCode(sessionId, pairingInfo.phoneNumber, Object.assign(Object.assign({}, pairingInfo.options), { printQR: false,
725
668
  // Tambahkan callback khusus untuk reconnect
726
669
  onConnected: () => {
727
670
  // Pairing code session reconnected successfully
@@ -729,7 +672,7 @@ const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* ()
729
672
  // Pairing code session disconnected after reconnect
730
673
  } }));
731
674
  // Periksa jika session berhasil dimulai
732
- return !!(0, exports.getSession)(sessionId);
675
+ return !!getSession(sessionId);
733
676
  }
734
677
  catch (startError) {
735
678
  console.error(`Failed to reconnect pairing code session ${sessionId}:`, startError.message);
@@ -743,7 +686,7 @@ const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* ()
743
686
  if (sessionExists) {
744
687
  // Session biasa, gunakan metode startSession normal
745
688
  try {
746
- yield (0, exports.startSession)(sessionId, {
689
+ yield startSession(sessionId, {
747
690
  printQR: false,
748
691
  // Tambahkan callback khusus untuk reconnect
749
692
  onConnected: () => {
@@ -757,7 +700,7 @@ const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* ()
757
700
  }
758
701
  });
759
702
  // Periksa jika session berhasil dimulai
760
- return !!(0, exports.getSession)(sessionId);
703
+ return !!getSession(sessionId);
761
704
  }
762
705
  catch (startError) {
763
706
  console.error(`Failed to reconnect session ${sessionId}:`, startError.message);
@@ -775,19 +718,18 @@ const reconnect = (sessionId) => __awaiter(void 0, void 0, void 0, function* ()
775
718
  return false;
776
719
  }
777
720
  });
778
- exports.reconnect = reconnect;
779
721
  /**
780
722
  * Reconnect all pairing code sessions that are tracked
781
723
  * Useful for bulk reconnection after system restart
782
724
  */
783
- const reconnectAllPairingCodeSessions = () => __awaiter(void 0, void 0, void 0, function* () {
725
+ export const reconnectAllPairingCodeSessions = () => __awaiter(void 0, void 0, void 0, function* () {
784
726
  const results = {};
785
727
  for (const [sessionId, sessionInfo] of pairingCodeSessions.entries()) {
786
728
  try {
787
- const success = yield (0, exports.reconnect)(sessionId);
729
+ const success = yield reconnect(sessionId);
788
730
  results[sessionId] = success;
789
731
  // Add delay between reconnection attempts
790
- yield (0, create_delay_1.createDelay)(2000);
732
+ yield createDelay(2000);
791
733
  }
792
734
  catch (error) {
793
735
  console.error(`Error reconnecting pairing code session ${sessionId}:`, error.message);
@@ -796,22 +738,20 @@ const reconnectAllPairingCodeSessions = () => __awaiter(void 0, void 0, void 0,
796
738
  }
797
739
  return results;
798
740
  });
799
- exports.reconnectAllPairingCodeSessions = reconnectAllPairingCodeSessions;
800
741
  /**
801
742
  * Get all tracked pairing code sessions
802
743
  * @returns Array of session IDs that were created with pairing code
803
744
  */
804
- const getPairingCodeSessions = () => {
745
+ export const getPairingCodeSessions = () => {
805
746
  return Array.from(pairingCodeSessions.keys());
806
747
  };
807
- exports.getPairingCodeSessions = getPairingCodeSessions;
808
748
  /**
809
749
  * Get session status information
810
750
  * @param sessionId Session ID to check
811
751
  * @returns Object with session status information
812
752
  */
813
- const getSessionStatus = (sessionId) => {
814
- const isRunning = !!(0, exports.getSession)(sessionId);
753
+ export const getSessionStatus = (sessionId) => {
754
+ const isRunning = !!getSession(sessionId);
815
755
  const isPairingCodeSession = pairingCodeSessions.has(sessionId);
816
756
  const retryAttempts = retryCount.get(sessionId) || 0;
817
757
  return {
@@ -822,53 +762,47 @@ const getSessionStatus = (sessionId) => {
822
762
  hasCredentials: isRunning ? true : null // null means unknown when not running
823
763
  };
824
764
  };
825
- exports.getSessionStatus = getSessionStatus;
826
765
  // Fungsi baru untuk mendapatkan konfigurasi TTL cache grup
827
- const setGroupCacheConfig = (options) => {
828
- Utils_1.groupCache.setConfig(options);
766
+ export const setGroupCacheConfig = (options) => {
767
+ groupCache.setConfig(options);
829
768
  };
830
- exports.setGroupCacheConfig = setGroupCacheConfig;
831
769
  // Fungsi baru untuk mendapatkan atau memuat data grup dengan multi-session support
832
- const getGroupMetadata = (sessionId_1, jid_1, ...args_1) => __awaiter(void 0, [sessionId_1, jid_1, ...args_1], void 0, function* (sessionId, jid, forceFetch = false) {
770
+ export const getGroupMetadata = (sessionId_1, jid_1, ...args_1) => __awaiter(void 0, [sessionId_1, jid_1, ...args_1], void 0, function* (sessionId, jid, forceFetch = false) {
833
771
  // Get the session socket
834
- const sock = (0, exports.getSession)(sessionId);
772
+ const sock = getSession(sessionId);
835
773
  if (!sock) {
836
- throw new Error_1.WhatsappError(Defaults_1.Messages.sessionNotFound(sessionId));
774
+ throw new WhatsappError(Messages.sessionNotFound(sessionId));
837
775
  }
838
776
  try {
839
777
  // Jika forceFetch true, langsung ambil dari server dan update cache
840
778
  if (forceFetch) {
841
779
  const metadata = yield sock.groupMetadata(jid);
842
- yield Utils_1.groupCache.set(sessionId, jid, metadata);
780
+ yield groupCache.set(sessionId, jid, metadata);
843
781
  return metadata;
844
782
  }
845
783
  // Coba ambil dari cache dulu
846
- const cachedData = yield Utils_1.groupCache.get(sessionId, jid);
784
+ const cachedData = yield groupCache.get(sessionId, jid);
847
785
  if (cachedData) {
848
786
  return cachedData;
849
787
  }
850
788
  // Jika tidak ada di cache, ambil dari server dan simpan ke cache
851
789
  const metadata = yield sock.groupMetadata(jid);
852
- yield Utils_1.groupCache.set(sessionId, jid, metadata);
790
+ yield groupCache.set(sessionId, jid, metadata);
853
791
  return metadata;
854
792
  }
855
793
  catch (error) {
856
- throw new Error_1.WhatsappError(`Failed to fetch group metadata: ${error.message || String(error)}`);
794
+ throw new WhatsappError(`Failed to fetch group metadata: ${error.message || String(error)}`);
857
795
  }
858
796
  });
859
- exports.getGroupMetadata = getGroupMetadata;
860
797
  // Fungsi baru untuk menghapus cache grup tertentu
861
- const clearGroupMetadataCache = (sessionId, jid) => __awaiter(void 0, void 0, void 0, function* () {
862
- yield Utils_1.groupCache.delete(sessionId, jid);
798
+ export const clearGroupMetadataCache = (sessionId, jid) => __awaiter(void 0, void 0, void 0, function* () {
799
+ yield groupCache.delete(sessionId, jid);
863
800
  });
864
- exports.clearGroupMetadataCache = clearGroupMetadataCache;
865
801
  // Fungsi untuk membersihkan seluruh cache grup untuk session tertentu
866
- const clearSessionGroupMetadataCache = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
867
- yield Utils_1.groupCache.clearSessionCache(sessionId);
802
+ export const clearSessionGroupMetadataCache = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
803
+ yield groupCache.clearSessionCache(sessionId);
868
804
  });
869
- exports.clearSessionGroupMetadataCache = clearSessionGroupMetadataCache;
870
805
  // Fungsi untuk membersihkan seluruh cache grup untuk semua session
871
- const clearAllGroupMetadataCache = () => {
872
- Utils_1.groupCache.flush();
806
+ export const clearAllGroupMetadataCache = () => {
807
+ groupCache.flush();
873
808
  };
874
- exports.clearAllGroupMetadataCache = clearAllGroupMetadataCache;