@deathnaitsa/wa-api 1.0.0

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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/dist/Defaults/index.d.ts +18 -0
  3. package/dist/Defaults/index.d.ts.map +1 -0
  4. package/dist/Defaults/index.js +28 -0
  5. package/dist/Error/index.d.ts +5 -0
  6. package/dist/Error/index.d.ts.map +1 -0
  7. package/dist/Error/index.js +14 -0
  8. package/dist/Messaging/index.d.ts +43 -0
  9. package/dist/Messaging/index.d.ts.map +1 -0
  10. package/dist/Messaging/index.js +410 -0
  11. package/dist/Socket/Socket.d.ts +21 -0
  12. package/dist/Socket/Socket.d.ts.map +1 -0
  13. package/dist/Socket/Socket.interface.d.ts +4 -0
  14. package/dist/Socket/Socket.interface.d.ts.map +1 -0
  15. package/dist/Socket/Socket.interface.js +2 -0
  16. package/dist/Socket/Socket.js +31 -0
  17. package/dist/Socket/index.d.ts +22 -0
  18. package/dist/Socket/index.d.ts.map +1 -0
  19. package/dist/Socket/index.js +375 -0
  20. package/dist/Types/WhatsappOptions.d.ts +3 -0
  21. package/dist/Types/WhatsappOptions.d.ts.map +1 -0
  22. package/dist/Types/WhatsappOptions.js +2 -0
  23. package/dist/Types/index.d.ts +51 -0
  24. package/dist/Types/index.d.ts.map +1 -0
  25. package/dist/Types/index.js +2 -0
  26. package/dist/Utils/create-delay.d.ts +2 -0
  27. package/dist/Utils/create-delay.d.ts.map +1 -0
  28. package/dist/Utils/create-delay.js +18 -0
  29. package/dist/Utils/error.d.ts +4 -0
  30. package/dist/Utils/error.d.ts.map +1 -0
  31. package/dist/Utils/error.js +8 -0
  32. package/dist/Utils/index.d.ts +5 -0
  33. package/dist/Utils/index.d.ts.map +1 -0
  34. package/dist/Utils/index.js +21 -0
  35. package/dist/Utils/is-exist.d.ts +3 -0
  36. package/dist/Utils/is-exist.d.ts.map +1 -0
  37. package/dist/Utils/is-exist.js +38 -0
  38. package/dist/Utils/message-status.d.ts +4 -0
  39. package/dist/Utils/message-status.d.ts.map +1 -0
  40. package/dist/Utils/message-status.js +18 -0
  41. package/dist/Utils/phone-to-jid.d.ts +5 -0
  42. package/dist/Utils/phone-to-jid.d.ts.map +1 -0
  43. package/dist/Utils/phone-to-jid.js +30 -0
  44. package/dist/Utils/save-media.d.ts +5 -0
  45. package/dist/Utils/save-media.d.ts.map +1 -0
  46. package/dist/Utils/save-media.js +47 -0
  47. package/dist/Utils/set-credentials-dir.d.ts +2 -0
  48. package/dist/Utils/set-credentials-dir.d.ts.map +1 -0
  49. package/dist/Utils/set-credentials-dir.js +8 -0
  50. package/dist/Utils/set-credentials.d.ts +2 -0
  51. package/dist/Utils/set-credentials.d.ts.map +1 -0
  52. package/dist/Utils/set-credentials.js +8 -0
  53. package/dist/index.d.ts +6 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +21 -0
  56. package/dist/whatsapp/index.d.ts +15 -0
  57. package/dist/whatsapp/index.d.ts.map +1 -0
  58. package/dist/whatsapp/index.js +206 -0
  59. package/package.json +37 -0
  60. package/readme.md +108 -0
@@ -0,0 +1,375 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.onPairingCode = exports.onMessageUpdate = exports.onConnecting = exports.onDisconnected = exports.onConnected = exports.onQRUpdated = exports.onMessageReceived = exports.loadSessionsFromStorage = exports.getSession = exports.getAllSession = exports.deleteSession = exports.startWhatsapp = exports.startSession = void 0;
39
+ const baileys_1 = __importStar(require("@whiskeysockets/baileys"));
40
+ const pino_1 = __importDefault(require("pino"));
41
+ const path_1 = __importDefault(require("path"));
42
+ const fs_1 = __importDefault(require("fs"));
43
+ const Defaults_1 = require("../Defaults");
44
+ const save_media_1 = require("../Utils/save-media");
45
+ const Error_1 = require("../Error");
46
+ const message_status_1 = require("../Utils/message-status");
47
+ const sessions = new Map();
48
+ const callback = new Map();
49
+ const retryCount = new Map();
50
+ let stock;
51
+ const startSession = (sessionId = "mysession", options = { printQR: true }) => __awaiter(void 0, void 0, void 0, function* () {
52
+ if (isSessionExistAndRunning(sessionId))
53
+ throw new Error_1.WhatsappError(Defaults_1.Messages.sessionAlreadyExist(sessionId));
54
+ const logger = (0, pino_1.default)({ level: "silent" });
55
+ const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
56
+ const startSocket = () => __awaiter(void 0, void 0, void 0, function* () {
57
+ const { state, saveCreds } = yield (0, baileys_1.useMultiFileAuthState)(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX));
58
+ const sock = (0, baileys_1.default)({
59
+ version,
60
+ printQRInTerminal: options.printQR,
61
+ auth: state,
62
+ logger,
63
+ markOnlineOnConnect: false,
64
+ browser: baileys_1.Browsers.ubuntu("Chrome"),
65
+ });
66
+ sessions.set(sessionId, Object.assign({}, sock));
67
+ try {
68
+
69
+ sock.ev.process((events) => __awaiter(void 0, void 0, void 0, function* () {
70
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
71
+ if (events["connection.update"]) {
72
+ const update = events["connection.update"];
73
+ const { connection, lastDisconnect } = update;
74
+ if (update.qr) {
75
+ (_a = callback.get(Defaults_1.CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a({
76
+ sessionId,
77
+ qr: update.qr,
78
+ });
79
+ }
80
+ if (connection == "connecting") {
81
+ (_b = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTING)) === null || _b === void 0 ? void 0 : _b(sessionId);
82
+ }
83
+ if (connection === "close") {
84
+ const code = (_d = (_c = lastDisconnect === null || lastDisconnect === void 0 ? void 0 : lastDisconnect.error) === null || _c === void 0 ? void 0 : _c.output) === null || _d === void 0 ? void 0 : _d.statusCode;
85
+ let retryAttempt = (_e = retryCount.get(sessionId)) !== null && _e !== void 0 ? _e : 0;
86
+ let shouldRetry;
87
+ if (code != baileys_1.DisconnectReason.loggedOut && retryAttempt < 10) {
88
+ shouldRetry = true;
89
+ }
90
+ if (shouldRetry) {
91
+ retryAttempt++;
92
+ }
93
+ if (shouldRetry) {
94
+ retryCount.set(sessionId, retryAttempt);
95
+ startSocket();
96
+ }
97
+ else {
98
+ //retryCount.delete(sessionId);
99
+ (0, exports.deleteSession)(sessionId);
100
+ (_f = callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _f === void 0 ? void 0 : _f(sessionId);
101
+ }
102
+ }
103
+ if (connection == "open") {
104
+ retryCount.delete(sessionId);
105
+ (_g = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTED)) === null || _g === void 0 ? void 0 : _g(sessionId);
106
+ }
107
+ }
108
+ if (events["creds.update"]) {
109
+ yield saveCreds();
110
+ }
111
+ if (events["messages.update"]) {
112
+ const msg = events["messages.update"][0];
113
+ const data = Object.assign({ sessionId: sessionId, messageStatus: (0, message_status_1.parseMessageStatusCodeToReadable)(msg.update.status) }, msg);
114
+ (_h = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _h === void 0 ? void 0 : _h(sessionId, data);
115
+ }
116
+ if (events["messages.upsert"]) {
117
+ const msg = (_j = events["messages.upsert"]
118
+ .messages) === null || _j === void 0 ? void 0 : _j[0];
119
+ msg.sessionId = sessionId;
120
+ msg.saveImage = (path) => (0, save_media_1.saveImageHandler)(msg, path);
121
+ msg.saveVideo = (path) => (0, save_media_1.saveVideoHandler)(msg, path);
122
+ msg.saveDocument = (path) => (0, save_media_1.saveDocumentHandler)(msg, path);
123
+ (_k = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _k === void 0 ? void 0 : _k(Object.assign({}, msg));
124
+ }
125
+ }));
126
+ return sock;
127
+ }
128
+ catch (error) {
129
+ // console.log("SOCKET ERROR", error);
130
+ return sock;
131
+ }
132
+ });
133
+ return startSocket();
134
+ });
135
+ const nishii = (sessionId = "mysession", connect) => __awaiter(void 0, void 0, void 0, function* () {
136
+ if (isSessionExistAndRunning(sessionId))
137
+ throw new Error_1.WhatsappError(Defaults_1.Messages.sessionAlreadyExist(sessionId));
138
+ const logger = (0, pino_1.default)({ level: "silent" });
139
+ const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
140
+ const { state, saveCreds } = yield (0, baileys_1.useMultiFileAuthState)(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX));
141
+ const sock = (0, connect)({
142
+ version,
143
+ printQRInTerminal: true,
144
+ auth: state,
145
+ logger,
146
+ markOnlineOnConnect: false,
147
+ browser: baileys_1.Browsers.ubuntu("Chrome"),
148
+ });
149
+ })
150
+ exports.nishii = nishii;
151
+ exports.startSession = startSession;
152
+ const startSessionWithPairingCode = (sessionId = "mysession", options = { phoneNumber },key) => __awaiter(void 0, void 0, void 0, function* () {
153
+ if (isSessionExistAndRunning(sessionId))throw new WhatsappError(Messages.sessionAlreadyExist(sessionId));
154
+ const logger = (0, pino_1.default)({ level: "silent" });
155
+ const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
156
+ const startSocket = () => __awaiter(void 0, void 0, void 0, function* () {
157
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
158
+ const { state, saveCreds } = yield (0, baileys_1.useMultiFileAuthState)(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX));
159
+
160
+ const sock = (0, baileys_1.default)({
161
+ version,
162
+ printQRInTerminal: false,
163
+ auth: state,
164
+ logger,
165
+ markOnlineOnConnect: false,
166
+ browser: baileys_1.Browsers.ubuntu("Chrome"),
167
+ });
168
+ sessions.set(sessionId, { ...sock });
169
+ try {
170
+ if (!sock.authState.creds.registered) {
171
+ console.log("first time pairing");
172
+ setTimeout(async () => {
173
+ const code = await sock.requestPairingCode(options.phoneNumber,key);
174
+ console.log(code);
175
+
176
+ callback.get(Defaults_1.CALLBACK_KEY.ON_PAIRING_CODE)?.(sessionId, code);
177
+ }, 5000);
178
+ }
179
+ sock.ev.process(async (events) => {
180
+ if (events["connection.update"]) {
181
+ const update = events["connection.update"];
182
+ const { connection, lastDisconnect } = update;
183
+
184
+ if (connection == "connecting") {
185
+ (_b = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTING)) === null || _b === void 0 ? void 0 : _b(sessionId);
186
+ }
187
+ if (connection === "close") {
188
+ const code = (_d = (_c = lastDisconnect === null || lastDisconnect === void 0 ? void 0 : lastDisconnect.error) === null || _c === void 0 ? void 0 : _c.output) === null || _d === void 0 ? void 0 : _d.statusCode;
189
+ let retryAttempt = (_e = retryCount.get(sessionId)) !== null && _e !== void 0 ? _e : 0;
190
+ let shouldRetry;
191
+ if (code != baileys_1.DisconnectReason.loggedOut && retryAttempt < 10) {
192
+ shouldRetry = true;
193
+ }
194
+ if (shouldRetry) {
195
+ retryAttempt++;
196
+ }
197
+ if (shouldRetry) {
198
+ retryCount.set(sessionId, retryAttempt);
199
+ startSocket();
200
+ }
201
+ else {
202
+ retryCount.delete(sessionId);
203
+ (0, exports.deleteSession)(sessionId);
204
+ (_f = callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _f === void 0 ? void 0 : _f(sessionId);
205
+ }
206
+ }
207
+ if (connection == "open") {
208
+ retryCount.delete(sessionId);
209
+ callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTED)?.(sessionId);
210
+ }
211
+ }
212
+ if (events["creds.update"]) {
213
+ await saveCreds();
214
+ }
215
+ if (events["messages.update"]) {
216
+ const msg = events["messages.update"][0];
217
+ const data = Object.assign({ sessionId: sessionId, messageStatus: (0, message_status_1.parseMessageStatusCodeToReadable)(msg.update.status) }, msg);
218
+ (_h = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _h === void 0 ? void 0 : _h(sessionId, data);
219
+ }
220
+ if (events["messages.upsert"]) {
221
+ const msg = (_j = events["messages.upsert"]
222
+ .messages) === null || _j === void 0 ? void 0 : _j[0];
223
+ msg.sessionId = sessionId;
224
+ msg.saveImage = (path) => (0, save_media_1.saveImageHandler)(msg, path);
225
+ msg.saveVideo = (path) => (0, save_media_1.saveVideoHandler)(msg, path);
226
+ msg.saveDocument = (path) => (0, save_media_1.saveDocumentHandler)(msg, path);
227
+ (_k = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _k === void 0 ? void 0 : _k(Object.assign({}, msg));
228
+ }
229
+ });
230
+ return sock;
231
+ }
232
+ catch (error) {
233
+ // console.log("SOCKET ERROR", error);
234
+ return sock;
235
+ }
236
+ });
237
+ return startSocket();
238
+ });
239
+ /**
240
+ * @deprecated Use startSession method instead
241
+ */
242
+ exports.startSessionWithPairingCode = startSessionWithPairingCode
243
+ exports.startWhatsapp = exports.startSession;
244
+ const deleteSession = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
245
+ const session = (0, exports.getSession)(sessionId);
246
+ try {
247
+ yield (session === null || session === void 0 ? void 0 : session.logout());
248
+ }
249
+ catch (error) { }
250
+ session === null || session === void 0 ? void 0 : session.end(undefined);
251
+ sessions.delete(sessionId);
252
+ const dir = path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX);
253
+ if (fs_1.default.existsSync(dir)) {
254
+ fs_1.default.rmSync(dir, { force: true, recursive: true });
255
+ }
256
+ });
257
+ exports.deleteSession = deleteSession;
258
+ const getAllSession = () => Array.from(sessions.keys());
259
+ exports.getAllSession = getAllSession;
260
+ const getSession = (key) => sessions.get(key);
261
+ exports.getSession = getSession;
262
+ const isSessionExistAndRunning = (sessionId) => {
263
+ if (fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME)) &&
264
+ fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX)) &&
265
+ fs_1.default.readdirSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX)).length &&
266
+ (0, exports.getSession)(sessionId)) {
267
+ return true;
268
+ }
269
+ return false;
270
+ };
271
+ const shouldLoadSession = (sessionId) => {
272
+ if (fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME)) &&
273
+ fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX)) &&
274
+ fs_1.default.readdirSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.SUFFIX)).length &&
275
+ !(0, exports.getSession)(sessionId)) {
276
+ return true;
277
+ }
278
+ return false;
279
+ };
280
+ const getAllSessionData = () => {
281
+ // Angenommen, getAllSession gibt eine Liste aller aktiven Sessions zurück
282
+ let allSessions = getAllSession();
283
+ let allSessionData = {};
284
+
285
+ for(let i = 0; i < allSessions.length; i++) {
286
+ let sessionName = allSessions[i];
287
+ allSessionData[sessionName] = getSession(sessionName);
288
+ }
289
+
290
+ return allSessionData;
291
+ }
292
+ exports.getAllSessionData = getAllSessionData;
293
+
294
+ async function loadSessionsFromStorage() {
295
+ const dirPath = path.resolve(CREDENTIALS.DIR_NAME);
296
+ const loadedSessions = [];
297
+
298
+ // Ordner anlegen, falls nicht existiert
299
+ if (!fs.existsSync(dirPath)) {
300
+ fs.mkdirSync(dirPath, { recursive: true });
301
+ }
302
+
303
+ try {
304
+ const entries = await fs.promises.readdir(dirPath);
305
+
306
+ for (const entry of entries) {
307
+ const fullPath = path.join(dirPath, entry);
308
+ let stat;
309
+ try {
310
+ stat = await fs.promises.stat(fullPath);
311
+ } catch {
312
+ // Wenn sich die Datei zwischenzeitlich entfernt hat o.Ä., überspringen
313
+ continue;
314
+ }
315
+ if (!stat.isDirectory()) continue;
316
+
317
+ // sessionId bis zum ersten Unterstrich extrahieren
318
+ const underscoreIndex = entry.indexOf('_');
319
+ const sessionId = underscoreIndex > 0
320
+ ? entry.slice(0, underscoreIndex)
321
+ : entry; // oder continue, wenn du ohne _ nicht laden willst
322
+
323
+ try {
324
+ await startSession(sessionId);
325
+ loadedSessions.push(sessionId);
326
+ } catch (err) {
327
+ console.error(`Fehler beim Starten der Session "${sessionId}":`, err);
328
+ // weitere Sessions trotzdem laden
329
+ }
330
+ }
331
+
332
+ return loadedSessions;
333
+ } catch (err) {
334
+ console.error('Fehler beim Lesen des Session-Verzeichnisses:', err);
335
+ throw err; // oder wirf einen eigenen WhatsappError o.Ä.
336
+ }
337
+ }
338
+ exports.loadSessionsFromStorage = loadSessionsFromStorage;
339
+ const onMessageReceived = (listener) => {
340
+ callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED, listener);
341
+ };
342
+
343
+ const sock = (conn) => {
344
+ onMessageReceived(async(msg) =>{
345
+ let {sessionId} = msg;
346
+ let sock1 = getSesseion(sessionId)
347
+ conn = sock1
348
+ })
349
+ };
350
+ exports.sock = sock;
351
+ exports.onMessageReceived = onMessageReceived;
352
+ const onQRUpdated = (listener) => {
353
+ callback.set(Defaults_1.CALLBACK_KEY.ON_QR, listener);
354
+ };
355
+ exports.onQRUpdated = onQRUpdated;
356
+ const onConnected = (listener) => {
357
+ callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTED, listener);
358
+ };
359
+ exports.onConnected = onConnected;
360
+ const onDisconnected = (listener) => {
361
+ callback.set(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED, listener);
362
+ };
363
+ exports.onDisconnected = onDisconnected;
364
+ const onConnecting = (listener) => {
365
+ callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTING, listener);
366
+ };
367
+ exports.onConnecting = onConnecting;
368
+ const onMessageUpdate = (listener) => {
369
+ callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED, listener);
370
+ };
371
+ exports.onMessageUpdate = onMessageUpdate;
372
+ const onPairingCode = (listener) => {
373
+ callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED, listener);
374
+ };
375
+ exports.onPairingCode = onPairingCode;
@@ -0,0 +1,3 @@
1
+ export interface WhatsappOptions {
2
+ }
3
+ //# sourceMappingURL=WhatsappOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhatsappOptions.d.ts","sourceRoot":"","sources":["../../src/Types/WhatsappOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;CAAG"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,51 @@
1
+ /// <reference types="node" />
2
+ import { WAMessageUpdate, proto } from "@whiskeysockets/baileys";
3
+ export interface SendMessageTypes {
4
+ to: string | number;
5
+ text?: string;
6
+ sessionId: string;
7
+ isGroup?: boolean;
8
+ answering?: proto.IWebMessageInfo;
9
+ }
10
+ export interface SendMediaTypes extends SendMessageTypes {
11
+ media?: string | Buffer;
12
+ }
13
+ export interface SendTypingTypes extends SendMessageTypes {
14
+ duration: number;
15
+ }
16
+ export interface SendReadTypes {
17
+ sessionId: string;
18
+ key: proto.IMessageKey;
19
+ }
20
+ export interface MessageReceived extends proto.IWebMessageInfo {
21
+ /**
22
+ * Your Session ID
23
+ */
24
+ sessionId: string;
25
+ /**
26
+ * @param path save image location path with extension
27
+ * @example "./myimage.jpg"
28
+ */
29
+ saveImage: (path: string) => Promise<void>;
30
+ /**
31
+ * @param path save video location path with extension
32
+ * @example "./myvideo.mp4"
33
+ */
34
+ saveVideo: (path: string) => Promise<void>;
35
+ /**
36
+ * @param path save image location path without extension
37
+ * @example "./mydocument"
38
+ */
39
+ saveDocument: (path: string) => Promise<void>;
40
+ }
41
+ export interface StartSessionParams {
42
+ /**
43
+ * Print QR Code into Terminal
44
+ */
45
+ printQR: boolean;
46
+ }
47
+ export type MessageUpdated = WAMessageUpdate & {
48
+ sessionId: string;
49
+ messageStatus: "error" | "pending" | "server" | "delivered" | "read" | "played";
50
+ };
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Types/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEjE,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,cAAe,SAAQ,gBAAgB;IACtD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,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,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export declare const createDelay: (duration?: number) => Promise<unknown>;
2
+ //# sourceMappingURL=create-delay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-delay.d.ts","sourceRoot":"","sources":["../../src/Utils/create-delay.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,cAAoB,MAAM,qBAMjD,CAAC"}
@@ -0,0 +1,18 @@
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.createDelay = void 0;
13
+ const createDelay = (duration = 1000) => __awaiter(void 0, void 0, void 0, function* () {
14
+ return yield new Promise((resolve) => setTimeout(() => {
15
+ resolve(true);
16
+ }, duration));
17
+ });
18
+ exports.createDelay = createDelay;
@@ -0,0 +1,4 @@
1
+ export default class ValidationError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/Utils/error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAG5B"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ValidationError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ }
7
+ }
8
+ exports.default = ValidationError;
@@ -0,0 +1,5 @@
1
+ export * from "./phone-to-jid";
2
+ export * from "./is-exist";
3
+ export * from "./create-delay";
4
+ export * from "./set-credentials-dir";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./phone-to-jid"), exports);
18
+ __exportStar(require("./is-exist"), exports);
19
+ __exportStar(require("./create-delay"), exports);
20
+ __exportStar(require("./set-credentials-dir"), exports);
21
+ __exportStar(require("./set-credentials"), exports);
@@ -0,0 +1,3 @@
1
+ import { SendMessageTypes } from "../Types";
2
+ export declare const isExist: ({ sessionId, to, isGroup, }: SendMessageTypes) => Promise<boolean>;
3
+ //# sourceMappingURL=is-exist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-exist.d.ts","sourceRoot":"","sources":["../../src/Utils/is-exist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,eAAO,MAAM,OAAO,gCAIjB,gBAAgB,KAAG,QAAQ,OAAO,CAiBpC,CAAC"}
@@ -0,0 +1,38 @@
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.isExist = void 0;
13
+ const Error_1 = require("../Error");
14
+ const Socket_1 = require("../Socket");
15
+ const phone_to_jid_1 = require("./phone-to-jid");
16
+ const isExist = ({ sessionId, to, isGroup = false, }) => __awaiter(void 0, void 0, void 0, function* () {
17
+ var _a, _b;
18
+ try {
19
+ const session = (0, Socket_1.getSession)(sessionId);
20
+ if (!session)
21
+ throw new Error_1.WhatsappError("Session ID Not Found!");
22
+ const receiver = (0, phone_to_jid_1.phoneToJid)({
23
+ to: to,
24
+ isGroup: isGroup,
25
+ });
26
+ if (!isGroup) {
27
+ const one = Boolean((_b = (_a = (yield (session === null || session === void 0 ? void 0 : session.onWhatsApp(receiver)))) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.exists);
28
+ return one;
29
+ }
30
+ else {
31
+ return Boolean((yield session.groupMetadata(receiver)).id);
32
+ }
33
+ }
34
+ catch (error) {
35
+ throw error;
36
+ }
37
+ });
38
+ exports.isExist = isExist;
@@ -0,0 +1,4 @@
1
+ import { proto } from "@whiskeysockets/baileys";
2
+ import { MessageUpdated } from "../Types";
3
+ export declare const parseMessageStatusCodeToReadable: (code: proto.WebMessageInfo.Status) => MessageUpdated["messageStatus"];
4
+ //# sourceMappingURL=message-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-status.d.ts","sourceRoot":"","sources":["../../src/Utils/message-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,gCAAgC,SACrC,MAAM,cAAc,CAAC,MAAM,KAChC,cAAc,CAAC,eAAe,CAQhC,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMessageStatusCodeToReadable = void 0;
4
+ const baileys_1 = require("@whiskeysockets/baileys");
5
+ const parseMessageStatusCodeToReadable = (code) => {
6
+ if (code == baileys_1.proto.WebMessageInfo.Status.PENDING)
7
+ return "pending";
8
+ if (code == baileys_1.proto.WebMessageInfo.Status.SERVER_ACK)
9
+ return "server";
10
+ if (code == baileys_1.proto.WebMessageInfo.Status.DELIVERY_ACK)
11
+ return "delivered";
12
+ if (code == baileys_1.proto.WebMessageInfo.Status.READ)
13
+ return "read";
14
+ if (code == baileys_1.proto.WebMessageInfo.Status.PLAYED)
15
+ return "played";
16
+ return "error";
17
+ };
18
+ exports.parseMessageStatusCodeToReadable = parseMessageStatusCodeToReadable;
@@ -0,0 +1,5 @@
1
+ export declare const phoneToJid: ({ to, isGroup, }: {
2
+ to: string | number;
3
+ isGroup?: boolean | undefined;
4
+ }) => string;
5
+ //# sourceMappingURL=phone-to-jid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-to-jid.d.ts","sourceRoot":"","sources":["../../src/Utils/phone-to-jid.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU;QAIjB,MAAM,GAAG,MAAM;;MAEjB,MAgBH,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.phoneToJid = void 0;
4
+ const Error_1 = require("../Error");
5
+ const baileys_1 = require("@whiskeysockets/baileys");
6
+ const isPhoneNumberValidCountry = (phone) => {
7
+ return Object.keys(baileys_1.PHONENUMBER_MCC).some((key) => {
8
+ return phone.startsWith(key);
9
+ });
10
+ };
11
+ const phoneToJid = ({ to, isGroup = false, }) => {
12
+ if (!to)
13
+ throw new Error_1.WhatsappError('parameter "to" is required');
14
+ let number = to.toString();
15
+ if (!isPhoneNumberValidCountry(number)) {
16
+ throw new Error_1.WhatsappError("phone number must start with valid country code");
17
+ }
18
+ if (isGroup) {
19
+ number = number.replace(/\s|[+]|[-]/gim, "");
20
+ if (!number.includes("@g.us"))
21
+ number = number + "@g.us";
22
+ }
23
+ else {
24
+ number = number.replace(/\s|[+]|[-]/gim, "");
25
+ if (!number.includes("@s.whatsapp.net"))
26
+ number = number + "@s.whatsapp.net";
27
+ }
28
+ return number;
29
+ };
30
+ exports.phoneToJid = phoneToJid;
@@ -0,0 +1,5 @@
1
+ import { MessageReceived } from "../Types";
2
+ export declare const saveImageHandler: (msg: MessageReceived, path: string) => Promise<void>;
3
+ export declare const saveVideoHandler: (msg: MessageReceived, path: string) => Promise<void>;
4
+ export declare const saveDocumentHandler: (msg: MessageReceived, path: string) => Promise<void>;
5
+ //# sourceMappingURL=save-media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-media.d.ts","sourceRoot":"","sources":["../../src/Utils/save-media.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAQ3C,eAAO,MAAM,gBAAgB,QAAe,eAAe,QAAQ,MAAM,kBAOxE,CAAC;AACF,eAAO,MAAM,gBAAgB,QAAe,eAAe,QAAQ,MAAM,kBAOxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,QACzB,eAAe,QACd,MAAM,kBAUb,CAAC"}