@deathnaitsa/wa-api 1.0.44 → 2.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 (64) hide show
  1. package/README.md +348 -0
  2. package/build.js +73 -0
  3. package/dist/WhatsAppClient.js +1 -0
  4. package/dist/index.js +1 -21
  5. package/package.json +9 -31
  6. package/socket.js +424 -0
  7. package/LICENSE +0 -2
  8. package/dist/Defaults/index.d.ts +0 -18
  9. package/dist/Defaults/index.d.ts.map +0 -1
  10. package/dist/Defaults/index.js +0 -28
  11. package/dist/Error/index.d.ts +0 -5
  12. package/dist/Error/index.d.ts.map +0 -1
  13. package/dist/Error/index.js +0 -14
  14. package/dist/Messaging/index.d.ts +0 -44
  15. package/dist/Messaging/index.d.ts.map +0 -1
  16. package/dist/Messaging/index.js +0 -121
  17. package/dist/Socket/Socket.d.ts +0 -21
  18. package/dist/Socket/Socket.d.ts.map +0 -1
  19. package/dist/Socket/Socket.interface.d.ts +0 -4
  20. package/dist/Socket/Socket.interface.d.ts.map +0 -1
  21. package/dist/Socket/Socket.interface.js +0 -2
  22. package/dist/Socket/Socket.js +0 -31
  23. package/dist/Socket/index.d.ts +0 -22
  24. package/dist/Socket/index.d.ts.map +0 -1
  25. package/dist/Socket/index.js +0 -375
  26. package/dist/Types/WhatsappOptions.d.ts +0 -3
  27. package/dist/Types/WhatsappOptions.d.ts.map +0 -1
  28. package/dist/Types/WhatsappOptions.js +0 -2
  29. package/dist/Types/index.d.ts +0 -51
  30. package/dist/Types/index.d.ts.map +0 -1
  31. package/dist/Types/index.js +0 -2
  32. package/dist/Utils/create-delay.d.ts +0 -2
  33. package/dist/Utils/create-delay.d.ts.map +0 -1
  34. package/dist/Utils/create-delay.js +0 -18
  35. package/dist/Utils/error.d.ts +0 -4
  36. package/dist/Utils/error.d.ts.map +0 -1
  37. package/dist/Utils/error.js +0 -8
  38. package/dist/Utils/index.d.ts +0 -5
  39. package/dist/Utils/index.d.ts.map +0 -1
  40. package/dist/Utils/index.js +0 -21
  41. package/dist/Utils/is-exist.d.ts +0 -3
  42. package/dist/Utils/is-exist.d.ts.map +0 -1
  43. package/dist/Utils/is-exist.js +0 -38
  44. package/dist/Utils/message-status.d.ts +0 -4
  45. package/dist/Utils/message-status.d.ts.map +0 -1
  46. package/dist/Utils/message-status.js +0 -18
  47. package/dist/Utils/phone-to-jid.d.ts +0 -5
  48. package/dist/Utils/phone-to-jid.d.ts.map +0 -1
  49. package/dist/Utils/phone-to-jid.js +0 -30
  50. package/dist/Utils/save-media.d.ts +0 -5
  51. package/dist/Utils/save-media.d.ts.map +0 -1
  52. package/dist/Utils/save-media.js +0 -47
  53. package/dist/Utils/set-credentials-dir.d.ts +0 -2
  54. package/dist/Utils/set-credentials-dir.d.ts.map +0 -1
  55. package/dist/Utils/set-credentials-dir.js +0 -8
  56. package/dist/Utils/set-credentials.d.ts +0 -2
  57. package/dist/Utils/set-credentials.d.ts.map +0 -1
  58. package/dist/Utils/set-credentials.js +0 -8
  59. package/dist/index.d.ts +0 -6
  60. package/dist/index.d.ts.map +0 -1
  61. package/dist/whatsapp/index.d.ts +0 -15
  62. package/dist/whatsapp/index.d.ts.map +0 -1
  63. package/dist/whatsapp/index.js +0 -206
  64. package/readme.md +0 -223
@@ -1,44 +0,0 @@
1
-
2
-
3
- /**
4
- * Send a message to target
5
- *
6
- * @param sessionId - Session ID
7
- * @param jid - Target
8
- * @param content - Message content
9
- * @param options - Message options
10
- */
11
- export declare function sendMessage(
12
- sessionId: string,
13
- jid: string,
14
- content: import("@deathnaitsa/baileys").AnyMessageContent,
15
- options?: import("@deathnaitsa/baileys").MiscMessageGenerationOptions
16
- ): Promise<import("@deathnaitsa/baileys").proto.WebMessageInfo>;
17
- /**
18
- * Sendet einen rohen WAMessage-Stanza an WhatsApp.
19
- *
20
- * @param sessionId Deine Session-ID
21
- * @param jid Ziel-JID oder Telefonnummer (z. B. '491234567890@s.whatsapp.net' oder 'status@broadcast')
22
- * @param content Raw-Message-Node (z. B. protocolMessage, videoMessage, etc.)
23
- * @param options Optional: Relay-Parameter wie messageId, participant, additionalNodes, statusJidList
24
- * @returns Promise mit der gesendeten Nachricht-ID (msgId)
25
- */
26
- /**
27
- * Low-level relayMessage-Wrapper für direkten Baileys-Stanza Dispatch.
28
- *
29
- * Sendet ein rohes WAMessage-Stanza (z.B. protocolMessage, disappearingMessagesInChat,
30
- * videoMessage, etc.) direkt an WhatsApp über die interne `relayMessage`-Methode.
31
- *
32
- * @param sessionId Deine Multi-Session-ID
33
- * @param jid Ziel-JID oder Telefonnummer (z.B. '491234567890@s.whatsapp.net' oder 'status@broadcast')
34
- * @param content Raw-Message-Node (proto.WebMessageInfo oder AnyMessageContent-ähnlich)
35
- * @param options Optional: Relay-Parameter wie `messageId`, `participant`, `additionalNodes`,
36
- * `statusJidList`, `useCachedGroupMetadata`, usw.
37
- * @returns Promise mit der gesendeten Nachricht-ID (`msgId`)
38
- */
39
- export declare function relayMessage(
40
- sessionId: string,
41
- jid: string,
42
- content: any,
43
- options?: import('@deathnaitsa/baileys').MiscMessageGenerationOptions
44
- ): Promise<string>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAOlB,eAAO,MAAM,eAAe,+CAMzB,gBAAgB,KAAG,QAAQ,MAAM,cAAc,GAAG,SAAS,CAsB7D,CAAC;AACF,eAAO,MAAM,SAAS,sDAOnB,cAAc,KAAG,QAAQ,MAAM,cAAc,GAAG,SAAS,CA8B3D,CAAC;AACF,eAAO,MAAM,SAAS,sDAOnB,cAAc,KAAG,QAAQ,MAAM,cAAc,GAAG,SAAS,CA8B3D,CAAC;AACF,eAAO,MAAM,YAAY;cASb,MAAM;MACd,QAAQ,MAAM,cAAc,GAAG,SAAS,CAuC3C,CAAC;AAEF,eAAO,MAAM,aAAa,gDAMvB,KAAK,cAAc,EAAE,MAAM,CAAC,KAAG,QAAQ,MAAM,cAAc,GAAG,SAAS,CAgCzE,CAAC;AAEF,eAAO,MAAM,WAAW,gDAMrB,cAAc,KAAG,QAAQ,MAAM,cAAc,GAAG,SAAS,CA+B3D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,0CAKpB,eAAe,kBAgBjB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,uBAA8B,aAAa,kBAKlE,CAAC"}
@@ -1,121 +0,0 @@
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
- var __rest = (this && this.__rest) || function (s, e) {
12
- var t = {};
13
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
- t[p] = s[p];
15
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
- t[p[i]] = s[p[i]];
19
- }
20
- return t;
21
- };
22
- var __importDefault = (this && this.__importDefault) || function (mod) {
23
- return (mod && mod.__esModule) ? mod : { "default": mod };
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.relayMessage = exports.sendMessage = void 0;
27
- const Defaults_1 = require("../Defaults");
28
- const Socket_1 = require("../Socket");
29
- const Utils_1 = require("../Utils");
30
- const create_delay_1 = require("../Utils/create-delay");
31
- const is_exist_1 = require("../Utils/is-exist");
32
- const mime_1 = __importDefault(require("mime"));
33
- const Error_1 = require("../Error");
34
- const qrcode = require("qrcode")
35
-
36
- const sessionCache = new Map();
37
-
38
- function getCachedSession(sessionId) {
39
- let session = sessionCache.get(sessionId);
40
- if (!session) {
41
- session = Socket_1.getSession(sessionId);
42
- if (!session) throw new Error_1.WhatsappError(Defaults_1.Messages.sessionNotFound(sessionId));
43
- sessionCache.set(sessionId, session);
44
- }
45
- return session;
46
- }
47
-
48
- /**
49
- * Universal sendMessage wrapper for all Baileys message types in JavaScript.
50
- *
51
- * @param {string} sessionId Your multi-session identifier
52
- * @param {string} jid Destination JID (user or group) or phone number
53
- * @param {object} content AnyMessageContent payload
54
- * @param {object} [options] MiscMessageGenerationOptions (quoted, mentions, etc.)
55
- * @returns {Promise<any>}
56
- */
57
- async function sendMessage(sessionId, jid, content, options) {
58
- const session = getCachedSession(sessionId);
59
-
60
- // Convert phone number to JID if needed
61
- const destJid = jid.includes("@") ? jid : phoneToJid({ to: jid });
62
-
63
- try {
64
- return await session.sendMessage(destJid, content, options || {});
65
- } catch (err) {
66
- // Wrap Baileys errors into WhatsappError for consistency
67
- throw new Error_1.WhatsappError(
68
- `Failed to send message to ${destJid}: ${err.message}`,
69
- { cause: err }
70
- );
71
- }
72
- }
73
-
74
- exports.sendMessage = sendMessage;
75
- /**
76
- * Universal sendMessage wrapper for all Baileys message types in JavaScript.
77
- *
78
- * @param {string} sessionId Your multi-session identifier
79
- * @param {string} jid Destination JID (user or group) or phone number
80
- * @param {object} content AnyMessageContent payload
81
- * @param {object} [options] MiscMessageGenerationOptions (quoted, mentions, etc.)
82
- * @returns {Promise<any>}
83
- */
84
- async function sendStatusMentions(sessionId, content, options) {
85
- const session = getCachedSession(sessionId);
86
-
87
- try {
88
- return await session.sendStatusMentions( content, options || {});
89
- } catch (err) {
90
- // Wrap Baileys errors into WhatsappError for consistency
91
- throw new Error_1.WhatsappError(
92
- `Failed to send message: ${err.message}`,
93
- { cause: err }
94
- );
95
- }
96
- }
97
-
98
- exports.sendStatusMentions = sendStatusMentions;
99
- /**
100
- * Low-level relayMessage-Wrapper für Baileys.
101
- *
102
- * @param {string} sessionId - Deine Session-ID
103
- * @param {string} jid - Ziel-JID oder Telefonnummer
104
- * @param {object} content - das rohe Message-Node-Objekt
105
- * @param {object} options - zusätzliche Relay-Optionen wie messageId, participant, additionalNodes, etc.
106
- *
107
- * @returns {Promise<string>} die gesendete Nachricht-ID
108
- */
109
- async function relayMessage(sessionId, jid, content, options = {}) {
110
- const session = getCachedSession(sessionId);
111
- if (!session) throw new WhatsappError(`Session ${sessionId} nicht gefunden`);
112
-
113
- const destJid = jid.includes("@") ? jid : phoneToJid({ to: jid });
114
- try {
115
- // Baileys-intern sendet hier direkt das XML-Stanza
116
- return await session.relayMessage(destJid, content, options);
117
- } catch (err) {
118
- throw new Error_1.WhatsappError(`Relay an ${destJid} fehlgeschlagen: ${err.message}`, { cause: err });
119
- }
120
- }
121
- exports.relayMessage = relayMessage;
@@ -1,21 +0,0 @@
1
- import { WASocket } from "@deathnaitsa/baileys";
2
- import { MessageReceived, MessageUpdated } from "../Types";
3
- export declare class Socket {
4
- constructor({ id, phoneNumber, socket, }: {
5
- id: string;
6
- phoneNumber: string;
7
- socket?: WASocket;
8
- });
9
- id: string;
10
- socket: WASocket | undefined;
11
- phoneNumber: string;
12
- logout(): Promise<void>;
13
- onQr?: (qr: string) => void;
14
- onPairing?: (code: string) => void;
15
- onConnecting?: () => void;
16
- onConnected?: () => void;
17
- onDisconnected?: () => void;
18
- onMessageUpdated?: (data: MessageUpdated) => void;
19
- onMessageReceived?: (data: MessageReceived) => void;
20
- }
21
- //# sourceMappingURL=Socket.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Socket.d.ts","sourceRoot":"","sources":["../../src/Socket/Socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3D,qBAAa,MAAM;gBACL,EACV,EAAE,EACF,WAAW,EACX,MAAM,GACP,EAAE;QACD,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,QAAQ,CAAC;KACnB;IAMD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEd,MAAM;IAOZ,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CACrD"}
@@ -1,4 +0,0 @@
1
- export interface SocketTypes {
2
- id: string;
3
- }
4
- //# sourceMappingURL=Socket.interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Socket.interface.d.ts","sourceRoot":"","sources":["../../src/Socket/Socket.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,31 +0,0 @@
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.Socket = void 0;
13
- class Socket {
14
- constructor({ id, phoneNumber, socket, }) {
15
- this.id = id;
16
- this.phoneNumber = phoneNumber;
17
- this.socket = socket;
18
- }
19
- logout() {
20
- var _a, _b;
21
- return __awaiter(this, void 0, void 0, function* () {
22
- try {
23
- yield ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.logout());
24
- }
25
- catch (error) { }
26
- (_b = this.socket) === null || _b === void 0 ? void 0 : _b.end(undefined);
27
- });
28
- }
29
- }
30
- exports.Socket = Socket;
31
- // const socket = new Socket({ id: "1" });
@@ -1,22 +0,0 @@
1
- import { WASocket } from "@deathnaitsa/baileys";
2
- import type { MessageReceived, MessageUpdated, StartSessionParams } from "../Types";
3
- export declare const startSession: (sessionId?: string, options?: StartSessionParams) => Promise<WASocket>;
4
- /**
5
- * @deprecated Use startSession method instead
6
- */
7
- export declare const startWhatsapp: (sessionId?: string, options?: StartSessionParams) => Promise<WASocket>;
8
- export declare const startSessionWithPairingCode: (sessionId?: string, options?: {phoneNumber}) => Promise<WASocket>;
9
- export declare const deleteSession: (sessionId: string) => Promise<void>;
10
- export declare const getAllSession: () => string[];
11
- export declare const getSession: (key: string) => WASocket | undefined;
12
- export declare const loadSessionsFromStorage: () => void;
13
- export declare const onMessageReceived: (listener: (msg: MessageReceived) => any) => void;
14
- export declare const onQRUpdated: (listener: ({ sessionId, qr }: {
15
- sessionId: string;
16
- qr: string;
17
- }) => any) => void;
18
- export declare const onConnected: (listener: (sessionId: string) => any) => void;
19
- export declare const onDisconnected: (listener: (sessionId: string) => any) => void;
20
- export declare const onConnecting: (listener: (sessionId: string) => any) => void;
21
- export declare const onMessageUpdate: (listener: (data: MessageUpdated) => any) => void;
22
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Socket/index.ts"],"names":[],"mappings":"AAAA,OAAqB,EAKnB,QAAQ,EAET,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAgBlB,eAAO,MAAM,YAAY,iCAEd,kBAAkB,KAC1B,QAAQ,QAAQ,CAwFlB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,iCA9Ff,kBAAkB,KAC1B,QAAQ,QAAQ,CA6FsB,CAAC;AAE1C,eAAO,MAAM,aAAa,cAAqB,MAAM,kBAcpD,CAAC;AACF,eAAO,MAAM,aAAa,QAAO,MAAM,EAAiC,CAAC;AAEzE,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,QAAQ,GAAG,SACrB,CAAC;AAiChC,eAAO,MAAM,uBAAuB,YAcnC,CAAC;AAEF,eAAO,MAAM,iBAAiB,mBAAoB,eAAe,KAAK,GAAG,SAExE,CAAC;AACF,eAAO,MAAM,WAAW;eACqB,MAAM;QAAM,MAAM;MAAO,GAAG,SAGxE,CAAC;AACF,eAAO,MAAM,WAAW,yBAA0B,MAAM,KAAK,GAAG,SAE/D,CAAC;AACF,eAAO,MAAM,cAAc,yBAA0B,MAAM,KAAK,GAAG,SAElE,CAAC;AACF,eAAO,MAAM,YAAY,yBAA0B,MAAM,KAAK,GAAG,SAEhE,CAAC;AAEF,eAAO,MAAM,eAAe,oBAAqB,cAAc,KAAK,GAAG,SAEtE,CAAC"}
@@ -1,375 +0,0 @@
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("@deathnaitsa/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_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME);
296
- const loadedSessions = [];
297
-
298
- // Ordner anlegen, falls nicht existiert
299
- if (!fs_1.default.existsSync(dirPath)) {
300
- fs_1.default.mkdirSync(dirPath, { recursive: true });
301
- }
302
-
303
- try {
304
- const entries = await fs_1.default.promises.readdir(dirPath);
305
-
306
- for (const entry of entries) {
307
- const fullPath = path_1.default.join(dirPath, entry);
308
- let stat;
309
- try {
310
- stat = await fs_1.default.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;
@@ -1,3 +0,0 @@
1
- export interface WhatsappOptions {
2
- }
3
- //# sourceMappingURL=WhatsappOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WhatsappOptions.d.ts","sourceRoot":"","sources":["../../src/Types/WhatsappOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;CAAG"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });