botcast-sdk 1.0.8 → 1.0.9
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.
- package/README.md +55 -3
- package/dist/client.cjs +15 -1
- package/dist/client.d.ts +10 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +15 -1
- package/dist/index.cjs +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/socket/index.cjs +240 -0
- package/dist/socket/index.d.ts +126 -0
- package/dist/socket/index.d.ts.map +1 -0
- package/dist/socket/index.js +236 -0
- package/dist/types/index.cjs +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/socket.cjs +5 -0
- package/dist/types/socket.d.ts +253 -0
- package/dist/types/socket.d.ts.map +1 -0
- package/dist/types/socket.js +4 -0
- package/package.json +9 -1
package/README.md
CHANGED
|
@@ -273,7 +273,7 @@ await client.messages.delete("201012345678", msgKey);
|
|
|
273
273
|
await client.messages.markAsRead(msgKey);
|
|
274
274
|
|
|
275
275
|
// 4. Emoji reaction
|
|
276
|
-
await client.messages.react("201012345678", msgKey, "
|
|
276
|
+
await client.messages.react("201012345678", msgKey, "STAR");
|
|
277
277
|
|
|
278
278
|
// 5. Pin message
|
|
279
279
|
await client.messages.pin("201012345678", msgKey, 1, 86400);
|
|
@@ -286,7 +286,59 @@ await client.messages.forward("201012345678", {
|
|
|
286
286
|
|
|
287
287
|
---
|
|
288
288
|
|
|
289
|
-
### 4.
|
|
289
|
+
### 4. Real-Time Socket.io Event Gateway (`client.socket`)
|
|
290
|
+
|
|
291
|
+
Stream real-time instance events directly with zero latency over **Socket.io**:
|
|
292
|
+
|
|
293
|
+
```typescript
|
|
294
|
+
import { BotcastClient } from "botcast-sdk";
|
|
295
|
+
|
|
296
|
+
const client = new BotcastClient({
|
|
297
|
+
baseUrl: "https://botcast.site",
|
|
298
|
+
instanceId: "your_instance_id",
|
|
299
|
+
instanceToken: "your_instance_token",
|
|
300
|
+
autoConnectSocket: true, // or call client.socket.connect() manually
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
// 1. Listen for new incoming/outgoing messages
|
|
304
|
+
client.socket.onMessage((msg) => {
|
|
305
|
+
console.log("Real-time message:", msg);
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
// 2. Listen for delivery status & read receipts
|
|
309
|
+
client.socket.onMessageStatus((status) => {
|
|
310
|
+
console.log("Message status update:", status);
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
// 3. Listen for emoji reactions
|
|
314
|
+
client.socket.onReaction((reaction) => {
|
|
315
|
+
console.log("Reaction event:", reaction);
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
// 4. Listen for deleted/revoked messages
|
|
319
|
+
client.socket.onMessageDeleted((del) => {
|
|
320
|
+
console.log("Message deleted:", del);
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
// 5. Listen for user presence (typing, recording, online state)
|
|
324
|
+
client.socket.onPresence((presence) => {
|
|
325
|
+
console.log("Presence update:", presence);
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
// 6. Listen for instance connection & QR updates
|
|
329
|
+
client.socket.onConnectionUpdate((conn) => {
|
|
330
|
+
console.log("Connection state:", conn.status, conn.qr || conn.pairingCode);
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
// 7. Generic event listener
|
|
334
|
+
client.socket.onEvent((event) => {
|
|
335
|
+
console.log("Instance event received:", event.event, event);
|
|
336
|
+
});
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
### 5. Chats, Contacts, and History (`client.chats`)
|
|
290
342
|
|
|
291
343
|
```typescript
|
|
292
344
|
// 1. List chats / dialogs
|
|
@@ -309,7 +361,7 @@ await client.chats.pin("201012345678@s.whatsapp.net");
|
|
|
309
361
|
|
|
310
362
|
---
|
|
311
363
|
|
|
312
|
-
###
|
|
364
|
+
### 6. Webhook Event Handling
|
|
313
365
|
|
|
314
366
|
The SDK includes a built-in event dispatcher and middleware for handling inbound webhooks from both WhatsApp and Telegram:
|
|
315
367
|
|
package/dist/client.cjs
CHANGED
|
@@ -8,6 +8,7 @@ const groups_js_1 = require("./modules/groups.js");
|
|
|
8
8
|
const profile_js_1 = require("./modules/profile.js");
|
|
9
9
|
const broadcast_js_1 = require("./modules/broadcast.js");
|
|
10
10
|
const index_js_1 = require("./webhooks/index.js");
|
|
11
|
+
const index_js_2 = require("./socket/index.js");
|
|
11
12
|
class BotcastClient {
|
|
12
13
|
config;
|
|
13
14
|
/** Instance Lifecycle & Connection Management */
|
|
@@ -24,10 +25,13 @@ class BotcastClient {
|
|
|
24
25
|
broadcast;
|
|
25
26
|
/** Webhook Handler & Middleware */
|
|
26
27
|
webhook;
|
|
28
|
+
/** Real-Time Socket.io Event Gateway Client */
|
|
29
|
+
socket;
|
|
27
30
|
/**
|
|
28
31
|
* Initializes a new Botcast API Client.
|
|
29
32
|
*
|
|
30
33
|
* @param config Client configuration options
|
|
34
|
+
* @param socketOptions Optional Socket.io client overrides
|
|
31
35
|
*
|
|
32
36
|
* @example
|
|
33
37
|
* ```ts
|
|
@@ -39,11 +43,16 @@ class BotcastClient {
|
|
|
39
43
|
* instanceToken: 'token_xyz789'
|
|
40
44
|
* });
|
|
41
45
|
*
|
|
46
|
+
* // Listen for real-time events via Socket.io
|
|
47
|
+
* botcast.socket.onMessage((msg) => {
|
|
48
|
+
* console.log('Incoming message:', msg);
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
42
51
|
* // Send a text message
|
|
43
52
|
* await botcast.messages.sendText('201000000000', 'Hello from Botcast SDK!');
|
|
44
53
|
* ```
|
|
45
54
|
*/
|
|
46
|
-
constructor(config) {
|
|
55
|
+
constructor(config, socketOptions) {
|
|
47
56
|
if (!config.instanceId) {
|
|
48
57
|
throw new Error('BotcastClient requires a valid "instanceId"');
|
|
49
58
|
}
|
|
@@ -58,6 +67,7 @@ class BotcastClient {
|
|
|
58
67
|
timeout: config.timeout || 30000,
|
|
59
68
|
maxRetries: config.maxRetries ?? 2,
|
|
60
69
|
headers: config.headers || {},
|
|
70
|
+
autoConnectSocket: config.autoConnectSocket ?? false,
|
|
61
71
|
};
|
|
62
72
|
this.instances = new instances_js_1.InstancesModule(this.config);
|
|
63
73
|
this.messages = new messages_js_1.MessagesModule(this.config);
|
|
@@ -66,6 +76,10 @@ class BotcastClient {
|
|
|
66
76
|
this.profile = new profile_js_1.ProfileModule(this.config);
|
|
67
77
|
this.broadcast = new broadcast_js_1.BroadcastModule(this.config);
|
|
68
78
|
this.webhook = new index_js_1.BotcastWebhook();
|
|
79
|
+
this.socket = new index_js_2.BotcastSocketClient(this.config, {
|
|
80
|
+
autoConnect: config.autoConnectSocket,
|
|
81
|
+
...socketOptions,
|
|
82
|
+
});
|
|
69
83
|
}
|
|
70
84
|
// =========================================================================
|
|
71
85
|
// Top-Level Convenience Shortcuts
|
package/dist/client.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { GroupsModule } from './modules/groups.js';
|
|
|
6
6
|
import { ProfileModule } from './modules/profile.js';
|
|
7
7
|
import { BroadcastModule } from './modules/broadcast.js';
|
|
8
8
|
import { BotcastWebhook } from './webhooks/index.js';
|
|
9
|
+
import { BotcastSocketClient, BotcastSocketOptions } from './socket/index.js';
|
|
9
10
|
export declare class BotcastClient {
|
|
10
11
|
private config;
|
|
11
12
|
/** Instance Lifecycle & Connection Management */
|
|
@@ -22,10 +23,13 @@ export declare class BotcastClient {
|
|
|
22
23
|
broadcast: BroadcastModule;
|
|
23
24
|
/** Webhook Handler & Middleware */
|
|
24
25
|
webhook: BotcastWebhook;
|
|
26
|
+
/** Real-Time Socket.io Event Gateway Client */
|
|
27
|
+
socket: BotcastSocketClient;
|
|
25
28
|
/**
|
|
26
29
|
* Initializes a new Botcast API Client.
|
|
27
30
|
*
|
|
28
31
|
* @param config Client configuration options
|
|
32
|
+
* @param socketOptions Optional Socket.io client overrides
|
|
29
33
|
*
|
|
30
34
|
* @example
|
|
31
35
|
* ```ts
|
|
@@ -37,11 +41,16 @@ export declare class BotcastClient {
|
|
|
37
41
|
* instanceToken: 'token_xyz789'
|
|
38
42
|
* });
|
|
39
43
|
*
|
|
44
|
+
* // Listen for real-time events via Socket.io
|
|
45
|
+
* botcast.socket.onMessage((msg) => {
|
|
46
|
+
* console.log('Incoming message:', msg);
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
40
49
|
* // Send a text message
|
|
41
50
|
* await botcast.messages.sendText('201000000000', 'Hello from Botcast SDK!');
|
|
42
51
|
* ```
|
|
43
52
|
*/
|
|
44
|
-
constructor(config: BotcastClientConfig);
|
|
53
|
+
constructor(config: BotcastClientConfig, socketOptions?: BotcastSocketOptions);
|
|
45
54
|
/**
|
|
46
55
|
* Shortcut to send a text message.
|
|
47
56
|
*/
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgC;IAE9C,iDAAiD;IAC1C,SAAS,EAAE,eAAe,CAAC;IAElC,6EAA6E;IACtE,QAAQ,EAAE,cAAc,CAAC;IAEhC,0DAA0D;IACnD,KAAK,EAAE,WAAW,CAAC;IAE1B,iDAAiD;IAC1C,MAAM,EAAE,YAAY,CAAC;IAE5B,0DAA0D;IACnD,OAAO,EAAE,aAAa,CAAC;IAE9B,gDAAgD;IACzC,SAAS,EAAE,eAAe,CAAC;IAElC,mCAAmC;IAC5B,OAAO,EAAE,cAAc,CAAC;IAE/B,+CAA+C;IACxC,MAAM,EAAE,mBAAmB,CAAC;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;gBACS,MAAM,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAE,oBAAoB;IAoC7E;;OAEG;IACU,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAIrD;;OAEG;IACU,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;;;IAI7G;;OAEG;IACU,SAAS;IAItB;;OAEG;IACU,KAAK;IAIlB;;;;OAIG;IACU,YAAY,CAAC,WAAW,EAAE,MAAM;IAI7C;;;;OAIG;IACU,WAAW,CAAC,WAAW,EAAE,MAAM;CAG7C"}
|
package/dist/client.js
CHANGED
|
@@ -5,6 +5,7 @@ import { GroupsModule } from './modules/groups.js';
|
|
|
5
5
|
import { ProfileModule } from './modules/profile.js';
|
|
6
6
|
import { BroadcastModule } from './modules/broadcast.js';
|
|
7
7
|
import { BotcastWebhook } from './webhooks/index.js';
|
|
8
|
+
import { BotcastSocketClient } from './socket/index.js';
|
|
8
9
|
export class BotcastClient {
|
|
9
10
|
config;
|
|
10
11
|
/** Instance Lifecycle & Connection Management */
|
|
@@ -21,10 +22,13 @@ export class BotcastClient {
|
|
|
21
22
|
broadcast;
|
|
22
23
|
/** Webhook Handler & Middleware */
|
|
23
24
|
webhook;
|
|
25
|
+
/** Real-Time Socket.io Event Gateway Client */
|
|
26
|
+
socket;
|
|
24
27
|
/**
|
|
25
28
|
* Initializes a new Botcast API Client.
|
|
26
29
|
*
|
|
27
30
|
* @param config Client configuration options
|
|
31
|
+
* @param socketOptions Optional Socket.io client overrides
|
|
28
32
|
*
|
|
29
33
|
* @example
|
|
30
34
|
* ```ts
|
|
@@ -36,11 +40,16 @@ export class BotcastClient {
|
|
|
36
40
|
* instanceToken: 'token_xyz789'
|
|
37
41
|
* });
|
|
38
42
|
*
|
|
43
|
+
* // Listen for real-time events via Socket.io
|
|
44
|
+
* botcast.socket.onMessage((msg) => {
|
|
45
|
+
* console.log('Incoming message:', msg);
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
39
48
|
* // Send a text message
|
|
40
49
|
* await botcast.messages.sendText('201000000000', 'Hello from Botcast SDK!');
|
|
41
50
|
* ```
|
|
42
51
|
*/
|
|
43
|
-
constructor(config) {
|
|
52
|
+
constructor(config, socketOptions) {
|
|
44
53
|
if (!config.instanceId) {
|
|
45
54
|
throw new Error('BotcastClient requires a valid "instanceId"');
|
|
46
55
|
}
|
|
@@ -55,6 +64,7 @@ export class BotcastClient {
|
|
|
55
64
|
timeout: config.timeout || 30000,
|
|
56
65
|
maxRetries: config.maxRetries ?? 2,
|
|
57
66
|
headers: config.headers || {},
|
|
67
|
+
autoConnectSocket: config.autoConnectSocket ?? false,
|
|
58
68
|
};
|
|
59
69
|
this.instances = new InstancesModule(this.config);
|
|
60
70
|
this.messages = new MessagesModule(this.config);
|
|
@@ -63,6 +73,10 @@ export class BotcastClient {
|
|
|
63
73
|
this.profile = new ProfileModule(this.config);
|
|
64
74
|
this.broadcast = new BroadcastModule(this.config);
|
|
65
75
|
this.webhook = new BotcastWebhook();
|
|
76
|
+
this.socket = new BotcastSocketClient(this.config, {
|
|
77
|
+
autoConnect: config.autoConnectSocket,
|
|
78
|
+
...socketOptions,
|
|
79
|
+
});
|
|
66
80
|
}
|
|
67
81
|
// =========================================================================
|
|
68
82
|
// Top-Level Convenience Shortcuts
|
package/dist/index.cjs
CHANGED
|
@@ -14,13 +14,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.BotcastWebhook = exports.BotcastAdminClient = exports.BotcastClient = void 0;
|
|
17
|
+
exports.BotcastSocketClient = exports.BotcastWebhook = exports.BotcastAdminClient = exports.BotcastClient = void 0;
|
|
18
18
|
var client_js_1 = require("./client.js");
|
|
19
19
|
Object.defineProperty(exports, "BotcastClient", { enumerable: true, get: function () { return client_js_1.BotcastClient; } });
|
|
20
20
|
var admin_js_1 = require("./admin.js");
|
|
21
21
|
Object.defineProperty(exports, "BotcastAdminClient", { enumerable: true, get: function () { return admin_js_1.BotcastAdminClient; } });
|
|
22
22
|
var index_js_1 = require("./webhooks/index.js");
|
|
23
23
|
Object.defineProperty(exports, "BotcastWebhook", { enumerable: true, get: function () { return index_js_1.BotcastWebhook; } });
|
|
24
|
+
var index_js_2 = require("./socket/index.js");
|
|
25
|
+
Object.defineProperty(exports, "BotcastSocketClient", { enumerable: true, get: function () { return index_js_2.BotcastSocketClient; } });
|
|
24
26
|
__exportStar(require("./errors.js"), exports);
|
|
25
27
|
__exportStar(require("./types/index.js"), exports);
|
|
26
28
|
// Default export
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { BotcastClient } from './client.js';
|
|
2
2
|
export { BotcastAdminClient, BotcastAdminConfig, CreateAdminInstanceOptions, AdminInstanceRecord } from './admin.js';
|
|
3
3
|
export { BotcastWebhook } from './webhooks/index.js';
|
|
4
|
+
export { BotcastSocketClient, BotcastSocketOptions } from './socket/index.js';
|
|
4
5
|
export * from './errors.js';
|
|
5
6
|
export * from './types/index.js';
|
|
6
7
|
import { BotcastClient } from './client.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,eAAe,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,eAAe,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { BotcastClient } from './client.js';
|
|
2
2
|
export { BotcastAdminClient } from './admin.js';
|
|
3
3
|
export { BotcastWebhook } from './webhooks/index.js';
|
|
4
|
+
export { BotcastSocketClient } from './socket/index.js';
|
|
4
5
|
export * from './errors.js';
|
|
5
6
|
export * from './types/index.js';
|
|
6
7
|
// Default export
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BotcastSocketClient = void 0;
|
|
4
|
+
const socket_io_client_1 = require("socket.io-client");
|
|
5
|
+
/**
|
|
6
|
+
* BotcastSocketClient
|
|
7
|
+
* Real-time event streaming client powered by Socket.io.
|
|
8
|
+
* Provides authenticated multi-tenant real-time subscriptions to WhatsApp and Telegram instance events.
|
|
9
|
+
*/
|
|
10
|
+
class BotcastSocketClient {
|
|
11
|
+
socket = null;
|
|
12
|
+
config;
|
|
13
|
+
socketOptions;
|
|
14
|
+
constructor(config, options = {}) {
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.socketOptions = options;
|
|
17
|
+
if (options.autoConnect) {
|
|
18
|
+
this.connect();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Establish the real-time Socket.io connection to the Botcast Gateway.
|
|
23
|
+
*/
|
|
24
|
+
connect() {
|
|
25
|
+
if (this.socket && this.socket.connected) {
|
|
26
|
+
return this.socket;
|
|
27
|
+
}
|
|
28
|
+
const { baseUrl, instanceId, instanceToken } = this.config;
|
|
29
|
+
const cleanBaseUrl = baseUrl.replace(/\/+$/, '');
|
|
30
|
+
this.socket = (0, socket_io_client_1.io)(cleanBaseUrl, {
|
|
31
|
+
path: '/socket.io',
|
|
32
|
+
transports: ['websocket', 'polling'],
|
|
33
|
+
autoConnect: true,
|
|
34
|
+
reconnection: true,
|
|
35
|
+
reconnectionAttempts: Infinity,
|
|
36
|
+
reconnectionDelay: 1000,
|
|
37
|
+
reconnectionDelayMax: 5000,
|
|
38
|
+
auth: {
|
|
39
|
+
instanceId,
|
|
40
|
+
token: instanceToken,
|
|
41
|
+
},
|
|
42
|
+
query: {
|
|
43
|
+
instanceId,
|
|
44
|
+
token: instanceToken,
|
|
45
|
+
},
|
|
46
|
+
extraHeaders: {
|
|
47
|
+
'x-instance-id': instanceId,
|
|
48
|
+
'x-instance-token': instanceToken,
|
|
49
|
+
},
|
|
50
|
+
...this.socketOptions,
|
|
51
|
+
});
|
|
52
|
+
return this.socket;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Disconnect the active Socket.io connection.
|
|
56
|
+
*/
|
|
57
|
+
disconnect() {
|
|
58
|
+
if (this.socket) {
|
|
59
|
+
this.socket.disconnect();
|
|
60
|
+
}
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check whether the socket is currently connected.
|
|
65
|
+
*/
|
|
66
|
+
isConnected() {
|
|
67
|
+
return Boolean(this.socket && this.socket.connected);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Retrieve the underlying Socket.io-client Socket instance.
|
|
71
|
+
*/
|
|
72
|
+
getRawSocket() {
|
|
73
|
+
return this.socket;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Register a typed event listener for instance events.
|
|
77
|
+
*
|
|
78
|
+
* @param event The event name
|
|
79
|
+
* @param handler The event callback function
|
|
80
|
+
*/
|
|
81
|
+
on(event, handler) {
|
|
82
|
+
const s = this.ensureSocket();
|
|
83
|
+
s.on(event, handler);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Register a one-time event listener.
|
|
88
|
+
*/
|
|
89
|
+
once(event, handler) {
|
|
90
|
+
const s = this.ensureSocket();
|
|
91
|
+
s.once(event, handler);
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Remove an event listener.
|
|
96
|
+
*/
|
|
97
|
+
off(event, handler) {
|
|
98
|
+
if (this.socket) {
|
|
99
|
+
if (handler) {
|
|
100
|
+
this.socket.off(event, handler);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.socket.off(event);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Register a wildcard listener for all incoming events.
|
|
110
|
+
*/
|
|
111
|
+
onAny(handler) {
|
|
112
|
+
const s = this.ensureSocket();
|
|
113
|
+
s.onAny(handler);
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Remove a wildcard listener.
|
|
118
|
+
*/
|
|
119
|
+
offAny(handler) {
|
|
120
|
+
if (this.socket) {
|
|
121
|
+
this.socket.offAny(handler);
|
|
122
|
+
}
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
// =========================================================================
|
|
126
|
+
// High-Level Convenience Event Listeners
|
|
127
|
+
// =========================================================================
|
|
128
|
+
/**
|
|
129
|
+
* Listen for incoming and outgoing messages (messages.upsert or chat_message).
|
|
130
|
+
*/
|
|
131
|
+
onMessage(handler) {
|
|
132
|
+
this.on('messages.upsert', handler);
|
|
133
|
+
this.on('chat_message', handler);
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Listen for message delivery status updates (sent, delivered, read receipts).
|
|
138
|
+
*/
|
|
139
|
+
onMessageStatus(handler) {
|
|
140
|
+
return this.on('message_status', handler);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Listen for message reactions (emoji added/removed).
|
|
144
|
+
*/
|
|
145
|
+
onReaction(handler) {
|
|
146
|
+
return this.on('message_reaction', handler);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Listen for message revocations/deletions.
|
|
150
|
+
*/
|
|
151
|
+
onMessageDeleted(handler) {
|
|
152
|
+
return this.on('message_deleted', handler);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Listen for user presence changes (composing, recording, online, offline).
|
|
156
|
+
*/
|
|
157
|
+
onPresence(handler) {
|
|
158
|
+
this.on('presence.update', handler);
|
|
159
|
+
this.on('presence_update', handler);
|
|
160
|
+
return this;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Listen for instance connection changes, QR code generation, and pairing codes.
|
|
164
|
+
*/
|
|
165
|
+
onConnectionUpdate(handler) {
|
|
166
|
+
this.on('connection.update', handler);
|
|
167
|
+
this.on('instance_update', handler);
|
|
168
|
+
return this;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Listen for WhatsApp group participant changes (add, remove, promote, demote).
|
|
172
|
+
*/
|
|
173
|
+
onGroupParticipants(handler) {
|
|
174
|
+
return this.on('group-participants.update', handler);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Listen for incoming WhatsApp calls.
|
|
178
|
+
*/
|
|
179
|
+
onCall(handler) {
|
|
180
|
+
return this.on('call', handler);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Listen for generic instance event stream.
|
|
184
|
+
*/
|
|
185
|
+
onEvent(handler) {
|
|
186
|
+
return this.on('instance_event', handler);
|
|
187
|
+
}
|
|
188
|
+
// =========================================================================
|
|
189
|
+
// Telegram-Specific Event Listeners
|
|
190
|
+
// =========================================================================
|
|
191
|
+
/**
|
|
192
|
+
* Listen for Telegram new messages.
|
|
193
|
+
*/
|
|
194
|
+
onTelegramMessage(handler) {
|
|
195
|
+
return this.on('telegram.message', handler);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Listen for Telegram message edits.
|
|
199
|
+
*/
|
|
200
|
+
onTelegramMessageEdited(handler) {
|
|
201
|
+
return this.on('telegram.message_edited', handler);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Listen for Telegram message deletions.
|
|
205
|
+
*/
|
|
206
|
+
onTelegramMessageDeleted(handler) {
|
|
207
|
+
return this.on('telegram.message_deleted', handler);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Listen for Telegram message read receipts.
|
|
211
|
+
*/
|
|
212
|
+
onTelegramMessageRead(handler) {
|
|
213
|
+
return this.on('telegram.message_read', handler);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Listen for Telegram user updates (presence, typing, online status).
|
|
217
|
+
*/
|
|
218
|
+
onTelegramUserUpdate(handler) {
|
|
219
|
+
return this.on('telegram.user_update', handler);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Listen for Telegram chat actions (user joined, user left, etc.).
|
|
223
|
+
*/
|
|
224
|
+
onTelegramChatAction(handler) {
|
|
225
|
+
return this.on('telegram.chat_action', handler);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Listen for Telegram inline & callback button queries.
|
|
229
|
+
*/
|
|
230
|
+
onTelegramCallbackQuery(handler) {
|
|
231
|
+
return this.on('telegram.callback_query', handler);
|
|
232
|
+
}
|
|
233
|
+
ensureSocket() {
|
|
234
|
+
if (!this.socket) {
|
|
235
|
+
this.connect();
|
|
236
|
+
}
|
|
237
|
+
return this.socket;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
exports.BotcastSocketClient = BotcastSocketClient;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Socket, ManagerOptions, SocketOptions } from 'socket.io-client';
|
|
2
|
+
import { BotcastSocketEventMap, SocketEventHandler, SocketMessagesUpsertEvent, SocketChatMessageEvent, SocketMessageStatusEvent, SocketMessageReactionEvent, SocketMessageDeletedEvent, SocketPresenceUpdateEvent, SocketInstanceUpdateEvent, SocketGroupParticipantsUpdateEvent, SocketCallEvent, SocketGenericEvent, SocketTelegramMessageEvent, SocketTelegramMessageEditedEvent, SocketTelegramMessageDeletedEvent, SocketTelegramMessageReadEvent, SocketTelegramUserUpdateEvent, SocketTelegramChatActionEvent, SocketTelegramCallbackQueryEvent } from '../types/socket.js';
|
|
3
|
+
import { BotcastClientConfig } from '../types/index.js';
|
|
4
|
+
export interface BotcastSocketOptions extends Partial<ManagerOptions & SocketOptions> {
|
|
5
|
+
/**
|
|
6
|
+
* Automatically initiate the socket connection upon client creation.
|
|
7
|
+
* Default: false
|
|
8
|
+
*/
|
|
9
|
+
autoConnect?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* BotcastSocketClient
|
|
13
|
+
* Real-time event streaming client powered by Socket.io.
|
|
14
|
+
* Provides authenticated multi-tenant real-time subscriptions to WhatsApp and Telegram instance events.
|
|
15
|
+
*/
|
|
16
|
+
export declare class BotcastSocketClient {
|
|
17
|
+
private socket;
|
|
18
|
+
private config;
|
|
19
|
+
private socketOptions;
|
|
20
|
+
constructor(config: Required<BotcastClientConfig>, options?: BotcastSocketOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Establish the real-time Socket.io connection to the Botcast Gateway.
|
|
23
|
+
*/
|
|
24
|
+
connect(): Socket;
|
|
25
|
+
/**
|
|
26
|
+
* Disconnect the active Socket.io connection.
|
|
27
|
+
*/
|
|
28
|
+
disconnect(): this;
|
|
29
|
+
/**
|
|
30
|
+
* Check whether the socket is currently connected.
|
|
31
|
+
*/
|
|
32
|
+
isConnected(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Retrieve the underlying Socket.io-client Socket instance.
|
|
35
|
+
*/
|
|
36
|
+
getRawSocket(): Socket | null;
|
|
37
|
+
/**
|
|
38
|
+
* Register a typed event listener for instance events.
|
|
39
|
+
*
|
|
40
|
+
* @param event The event name
|
|
41
|
+
* @param handler The event callback function
|
|
42
|
+
*/
|
|
43
|
+
on<K extends keyof BotcastSocketEventMap>(event: K, handler: SocketEventHandler<BotcastSocketEventMap[K]>): this;
|
|
44
|
+
/**
|
|
45
|
+
* Register a one-time event listener.
|
|
46
|
+
*/
|
|
47
|
+
once<K extends keyof BotcastSocketEventMap>(event: K, handler: SocketEventHandler<BotcastSocketEventMap[K]>): this;
|
|
48
|
+
/**
|
|
49
|
+
* Remove an event listener.
|
|
50
|
+
*/
|
|
51
|
+
off<K extends keyof BotcastSocketEventMap>(event: K, handler?: SocketEventHandler<BotcastSocketEventMap[K]>): this;
|
|
52
|
+
/**
|
|
53
|
+
* Register a wildcard listener for all incoming events.
|
|
54
|
+
*/
|
|
55
|
+
onAny(handler: (event: string, data: any) => void): this;
|
|
56
|
+
/**
|
|
57
|
+
* Remove a wildcard listener.
|
|
58
|
+
*/
|
|
59
|
+
offAny(handler?: (event: string, data: any) => void): this;
|
|
60
|
+
/**
|
|
61
|
+
* Listen for incoming and outgoing messages (messages.upsert or chat_message).
|
|
62
|
+
*/
|
|
63
|
+
onMessage(handler: SocketEventHandler<SocketMessagesUpsertEvent | SocketChatMessageEvent>): this;
|
|
64
|
+
/**
|
|
65
|
+
* Listen for message delivery status updates (sent, delivered, read receipts).
|
|
66
|
+
*/
|
|
67
|
+
onMessageStatus(handler: SocketEventHandler<SocketMessageStatusEvent>): this;
|
|
68
|
+
/**
|
|
69
|
+
* Listen for message reactions (emoji added/removed).
|
|
70
|
+
*/
|
|
71
|
+
onReaction(handler: SocketEventHandler<SocketMessageReactionEvent>): this;
|
|
72
|
+
/**
|
|
73
|
+
* Listen for message revocations/deletions.
|
|
74
|
+
*/
|
|
75
|
+
onMessageDeleted(handler: SocketEventHandler<SocketMessageDeletedEvent>): this;
|
|
76
|
+
/**
|
|
77
|
+
* Listen for user presence changes (composing, recording, online, offline).
|
|
78
|
+
*/
|
|
79
|
+
onPresence(handler: SocketEventHandler<SocketPresenceUpdateEvent>): this;
|
|
80
|
+
/**
|
|
81
|
+
* Listen for instance connection changes, QR code generation, and pairing codes.
|
|
82
|
+
*/
|
|
83
|
+
onConnectionUpdate(handler: SocketEventHandler<SocketInstanceUpdateEvent>): this;
|
|
84
|
+
/**
|
|
85
|
+
* Listen for WhatsApp group participant changes (add, remove, promote, demote).
|
|
86
|
+
*/
|
|
87
|
+
onGroupParticipants(handler: SocketEventHandler<SocketGroupParticipantsUpdateEvent>): this;
|
|
88
|
+
/**
|
|
89
|
+
* Listen for incoming WhatsApp calls.
|
|
90
|
+
*/
|
|
91
|
+
onCall(handler: SocketEventHandler<SocketCallEvent>): this;
|
|
92
|
+
/**
|
|
93
|
+
* Listen for generic instance event stream.
|
|
94
|
+
*/
|
|
95
|
+
onEvent(handler: SocketEventHandler<SocketGenericEvent>): this;
|
|
96
|
+
/**
|
|
97
|
+
* Listen for Telegram new messages.
|
|
98
|
+
*/
|
|
99
|
+
onTelegramMessage(handler: SocketEventHandler<SocketTelegramMessageEvent>): this;
|
|
100
|
+
/**
|
|
101
|
+
* Listen for Telegram message edits.
|
|
102
|
+
*/
|
|
103
|
+
onTelegramMessageEdited(handler: SocketEventHandler<SocketTelegramMessageEditedEvent>): this;
|
|
104
|
+
/**
|
|
105
|
+
* Listen for Telegram message deletions.
|
|
106
|
+
*/
|
|
107
|
+
onTelegramMessageDeleted(handler: SocketEventHandler<SocketTelegramMessageDeletedEvent>): this;
|
|
108
|
+
/**
|
|
109
|
+
* Listen for Telegram message read receipts.
|
|
110
|
+
*/
|
|
111
|
+
onTelegramMessageRead(handler: SocketEventHandler<SocketTelegramMessageReadEvent>): this;
|
|
112
|
+
/**
|
|
113
|
+
* Listen for Telegram user updates (presence, typing, online status).
|
|
114
|
+
*/
|
|
115
|
+
onTelegramUserUpdate(handler: SocketEventHandler<SocketTelegramUserUpdateEvent>): this;
|
|
116
|
+
/**
|
|
117
|
+
* Listen for Telegram chat actions (user joined, user left, etc.).
|
|
118
|
+
*/
|
|
119
|
+
onTelegramChatAction(handler: SocketEventHandler<SocketTelegramChatActionEvent>): this;
|
|
120
|
+
/**
|
|
121
|
+
* Listen for Telegram inline & callback button queries.
|
|
122
|
+
*/
|
|
123
|
+
onTelegramCallbackQuery(handler: SocketEventHandler<SocketTelegramCallbackQueryEvent>): this;
|
|
124
|
+
private ensureSocket;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/socket/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { io } from 'socket.io-client';
|
|
2
|
+
/**
|
|
3
|
+
* BotcastSocketClient
|
|
4
|
+
* Real-time event streaming client powered by Socket.io.
|
|
5
|
+
* Provides authenticated multi-tenant real-time subscriptions to WhatsApp and Telegram instance events.
|
|
6
|
+
*/
|
|
7
|
+
export class BotcastSocketClient {
|
|
8
|
+
socket = null;
|
|
9
|
+
config;
|
|
10
|
+
socketOptions;
|
|
11
|
+
constructor(config, options = {}) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.socketOptions = options;
|
|
14
|
+
if (options.autoConnect) {
|
|
15
|
+
this.connect();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Establish the real-time Socket.io connection to the Botcast Gateway.
|
|
20
|
+
*/
|
|
21
|
+
connect() {
|
|
22
|
+
if (this.socket && this.socket.connected) {
|
|
23
|
+
return this.socket;
|
|
24
|
+
}
|
|
25
|
+
const { baseUrl, instanceId, instanceToken } = this.config;
|
|
26
|
+
const cleanBaseUrl = baseUrl.replace(/\/+$/, '');
|
|
27
|
+
this.socket = io(cleanBaseUrl, {
|
|
28
|
+
path: '/socket.io',
|
|
29
|
+
transports: ['websocket', 'polling'],
|
|
30
|
+
autoConnect: true,
|
|
31
|
+
reconnection: true,
|
|
32
|
+
reconnectionAttempts: Infinity,
|
|
33
|
+
reconnectionDelay: 1000,
|
|
34
|
+
reconnectionDelayMax: 5000,
|
|
35
|
+
auth: {
|
|
36
|
+
instanceId,
|
|
37
|
+
token: instanceToken,
|
|
38
|
+
},
|
|
39
|
+
query: {
|
|
40
|
+
instanceId,
|
|
41
|
+
token: instanceToken,
|
|
42
|
+
},
|
|
43
|
+
extraHeaders: {
|
|
44
|
+
'x-instance-id': instanceId,
|
|
45
|
+
'x-instance-token': instanceToken,
|
|
46
|
+
},
|
|
47
|
+
...this.socketOptions,
|
|
48
|
+
});
|
|
49
|
+
return this.socket;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Disconnect the active Socket.io connection.
|
|
53
|
+
*/
|
|
54
|
+
disconnect() {
|
|
55
|
+
if (this.socket) {
|
|
56
|
+
this.socket.disconnect();
|
|
57
|
+
}
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check whether the socket is currently connected.
|
|
62
|
+
*/
|
|
63
|
+
isConnected() {
|
|
64
|
+
return Boolean(this.socket && this.socket.connected);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Retrieve the underlying Socket.io-client Socket instance.
|
|
68
|
+
*/
|
|
69
|
+
getRawSocket() {
|
|
70
|
+
return this.socket;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Register a typed event listener for instance events.
|
|
74
|
+
*
|
|
75
|
+
* @param event The event name
|
|
76
|
+
* @param handler The event callback function
|
|
77
|
+
*/
|
|
78
|
+
on(event, handler) {
|
|
79
|
+
const s = this.ensureSocket();
|
|
80
|
+
s.on(event, handler);
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Register a one-time event listener.
|
|
85
|
+
*/
|
|
86
|
+
once(event, handler) {
|
|
87
|
+
const s = this.ensureSocket();
|
|
88
|
+
s.once(event, handler);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Remove an event listener.
|
|
93
|
+
*/
|
|
94
|
+
off(event, handler) {
|
|
95
|
+
if (this.socket) {
|
|
96
|
+
if (handler) {
|
|
97
|
+
this.socket.off(event, handler);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.socket.off(event);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Register a wildcard listener for all incoming events.
|
|
107
|
+
*/
|
|
108
|
+
onAny(handler) {
|
|
109
|
+
const s = this.ensureSocket();
|
|
110
|
+
s.onAny(handler);
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Remove a wildcard listener.
|
|
115
|
+
*/
|
|
116
|
+
offAny(handler) {
|
|
117
|
+
if (this.socket) {
|
|
118
|
+
this.socket.offAny(handler);
|
|
119
|
+
}
|
|
120
|
+
return this;
|
|
121
|
+
}
|
|
122
|
+
// =========================================================================
|
|
123
|
+
// High-Level Convenience Event Listeners
|
|
124
|
+
// =========================================================================
|
|
125
|
+
/**
|
|
126
|
+
* Listen for incoming and outgoing messages (messages.upsert or chat_message).
|
|
127
|
+
*/
|
|
128
|
+
onMessage(handler) {
|
|
129
|
+
this.on('messages.upsert', handler);
|
|
130
|
+
this.on('chat_message', handler);
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Listen for message delivery status updates (sent, delivered, read receipts).
|
|
135
|
+
*/
|
|
136
|
+
onMessageStatus(handler) {
|
|
137
|
+
return this.on('message_status', handler);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Listen for message reactions (emoji added/removed).
|
|
141
|
+
*/
|
|
142
|
+
onReaction(handler) {
|
|
143
|
+
return this.on('message_reaction', handler);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Listen for message revocations/deletions.
|
|
147
|
+
*/
|
|
148
|
+
onMessageDeleted(handler) {
|
|
149
|
+
return this.on('message_deleted', handler);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Listen for user presence changes (composing, recording, online, offline).
|
|
153
|
+
*/
|
|
154
|
+
onPresence(handler) {
|
|
155
|
+
this.on('presence.update', handler);
|
|
156
|
+
this.on('presence_update', handler);
|
|
157
|
+
return this;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Listen for instance connection changes, QR code generation, and pairing codes.
|
|
161
|
+
*/
|
|
162
|
+
onConnectionUpdate(handler) {
|
|
163
|
+
this.on('connection.update', handler);
|
|
164
|
+
this.on('instance_update', handler);
|
|
165
|
+
return this;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Listen for WhatsApp group participant changes (add, remove, promote, demote).
|
|
169
|
+
*/
|
|
170
|
+
onGroupParticipants(handler) {
|
|
171
|
+
return this.on('group-participants.update', handler);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Listen for incoming WhatsApp calls.
|
|
175
|
+
*/
|
|
176
|
+
onCall(handler) {
|
|
177
|
+
return this.on('call', handler);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Listen for generic instance event stream.
|
|
181
|
+
*/
|
|
182
|
+
onEvent(handler) {
|
|
183
|
+
return this.on('instance_event', handler);
|
|
184
|
+
}
|
|
185
|
+
// =========================================================================
|
|
186
|
+
// Telegram-Specific Event Listeners
|
|
187
|
+
// =========================================================================
|
|
188
|
+
/**
|
|
189
|
+
* Listen for Telegram new messages.
|
|
190
|
+
*/
|
|
191
|
+
onTelegramMessage(handler) {
|
|
192
|
+
return this.on('telegram.message', handler);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Listen for Telegram message edits.
|
|
196
|
+
*/
|
|
197
|
+
onTelegramMessageEdited(handler) {
|
|
198
|
+
return this.on('telegram.message_edited', handler);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Listen for Telegram message deletions.
|
|
202
|
+
*/
|
|
203
|
+
onTelegramMessageDeleted(handler) {
|
|
204
|
+
return this.on('telegram.message_deleted', handler);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Listen for Telegram message read receipts.
|
|
208
|
+
*/
|
|
209
|
+
onTelegramMessageRead(handler) {
|
|
210
|
+
return this.on('telegram.message_read', handler);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Listen for Telegram user updates (presence, typing, online status).
|
|
214
|
+
*/
|
|
215
|
+
onTelegramUserUpdate(handler) {
|
|
216
|
+
return this.on('telegram.user_update', handler);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Listen for Telegram chat actions (user joined, user left, etc.).
|
|
220
|
+
*/
|
|
221
|
+
onTelegramChatAction(handler) {
|
|
222
|
+
return this.on('telegram.chat_action', handler);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Listen for Telegram inline & callback button queries.
|
|
226
|
+
*/
|
|
227
|
+
onTelegramCallbackQuery(handler) {
|
|
228
|
+
return this.on('telegram.callback_query', handler);
|
|
229
|
+
}
|
|
230
|
+
ensureSocket() {
|
|
231
|
+
if (!this.socket) {
|
|
232
|
+
this.connect();
|
|
233
|
+
}
|
|
234
|
+
return this.socket;
|
|
235
|
+
}
|
|
236
|
+
}
|
package/dist/types/index.cjs
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './chats.js';
|
|
|
4
4
|
export * from './groups.js';
|
|
5
5
|
export * from './profile.js';
|
|
6
6
|
export * from './webhooks.js';
|
|
7
|
+
export * from './socket.js';
|
|
7
8
|
export interface BotcastClientConfig {
|
|
8
9
|
/**
|
|
9
10
|
* The base URL of your Botcast instance or cloud gateway.
|
|
@@ -34,5 +35,9 @@ export interface BotcastClientConfig {
|
|
|
34
35
|
* Custom HTTP headers to include with every request.
|
|
35
36
|
*/
|
|
36
37
|
headers?: Record<string, string>;
|
|
38
|
+
/**
|
|
39
|
+
* Auto-connect the Socket.io real-time client upon initialization (default: false).
|
|
40
|
+
*/
|
|
41
|
+
autoConnectSocket?: boolean;
|
|
37
42
|
}
|
|
38
43
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAE5B,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAEnC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
|
package/dist/types/index.js
CHANGED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Socket.io Real-Time Event Types for Botcast SDK
|
|
3
|
+
*/
|
|
4
|
+
export interface SocketAuthenticatedEvent {
|
|
5
|
+
success: boolean;
|
|
6
|
+
instanceId: string;
|
|
7
|
+
instanceName?: string;
|
|
8
|
+
platform?: string;
|
|
9
|
+
status?: string;
|
|
10
|
+
phoneNumber?: string | null;
|
|
11
|
+
timestamp: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SocketMessagesUpsertEvent {
|
|
14
|
+
instanceId: string;
|
|
15
|
+
type: string;
|
|
16
|
+
messages: any[];
|
|
17
|
+
timestamp?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface SocketMessagesUpdateEvent {
|
|
20
|
+
instanceId: string;
|
|
21
|
+
updates: Array<{
|
|
22
|
+
key: {
|
|
23
|
+
remoteJid?: string;
|
|
24
|
+
fromMe?: boolean;
|
|
25
|
+
id?: string;
|
|
26
|
+
participant?: string;
|
|
27
|
+
};
|
|
28
|
+
update: {
|
|
29
|
+
status?: number | string;
|
|
30
|
+
pollUpdates?: any;
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
timestamp?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface SocketMessageStatusEvent {
|
|
37
|
+
instanceId: string;
|
|
38
|
+
key: {
|
|
39
|
+
remoteJid?: string;
|
|
40
|
+
fromMe?: boolean;
|
|
41
|
+
id?: string;
|
|
42
|
+
participant?: string;
|
|
43
|
+
};
|
|
44
|
+
status: number | string;
|
|
45
|
+
update: Record<string, any>;
|
|
46
|
+
timestamp?: number;
|
|
47
|
+
}
|
|
48
|
+
export interface SocketMessageReactionEvent {
|
|
49
|
+
instanceId: string;
|
|
50
|
+
chatJid: string;
|
|
51
|
+
messageId: string;
|
|
52
|
+
emoji: string;
|
|
53
|
+
senderJid: string;
|
|
54
|
+
fromMe: boolean;
|
|
55
|
+
timestamp?: number;
|
|
56
|
+
}
|
|
57
|
+
export interface SocketMessageDeletedEvent {
|
|
58
|
+
instanceId: string;
|
|
59
|
+
chatJid: string;
|
|
60
|
+
messageId: string;
|
|
61
|
+
timestamp?: number;
|
|
62
|
+
}
|
|
63
|
+
export interface SocketChatMessageEvent {
|
|
64
|
+
instanceId: string;
|
|
65
|
+
chatJid?: string;
|
|
66
|
+
fromMe?: number | boolean;
|
|
67
|
+
body?: string;
|
|
68
|
+
messageType?: string;
|
|
69
|
+
timestamp?: number;
|
|
70
|
+
id?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface SocketChatsUpsertEvent {
|
|
73
|
+
instanceId: string;
|
|
74
|
+
chats: any[];
|
|
75
|
+
timestamp?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface SocketChatsUpdateEvent {
|
|
78
|
+
instanceId: string;
|
|
79
|
+
updates: any[];
|
|
80
|
+
timestamp?: number;
|
|
81
|
+
}
|
|
82
|
+
export interface SocketChatsDeleteEvent {
|
|
83
|
+
instanceId: string;
|
|
84
|
+
deletions: any[];
|
|
85
|
+
timestamp?: number;
|
|
86
|
+
}
|
|
87
|
+
export interface SocketContactsUpsertEvent {
|
|
88
|
+
instanceId: string;
|
|
89
|
+
contacts?: any[];
|
|
90
|
+
timestamp?: number;
|
|
91
|
+
}
|
|
92
|
+
export interface SocketContactsUpdateEvent {
|
|
93
|
+
instanceId: string;
|
|
94
|
+
updates?: any[];
|
|
95
|
+
timestamp?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface SocketPresenceUpdateEvent {
|
|
98
|
+
instanceId: string;
|
|
99
|
+
id?: string;
|
|
100
|
+
presences?: Record<string, {
|
|
101
|
+
lastKnownPresence?: string;
|
|
102
|
+
lastSeen?: number;
|
|
103
|
+
}>;
|
|
104
|
+
presence?: any;
|
|
105
|
+
timestamp?: number;
|
|
106
|
+
}
|
|
107
|
+
export interface SocketGroupParticipantsUpdateEvent {
|
|
108
|
+
instanceId: string;
|
|
109
|
+
update: {
|
|
110
|
+
id: string;
|
|
111
|
+
author?: string;
|
|
112
|
+
participants: string[];
|
|
113
|
+
action: "add" | "remove" | "promote" | "demote";
|
|
114
|
+
};
|
|
115
|
+
timestamp?: number;
|
|
116
|
+
}
|
|
117
|
+
export interface SocketGroupsUpdateEvent {
|
|
118
|
+
instanceId: string;
|
|
119
|
+
updates: any[];
|
|
120
|
+
timestamp?: number;
|
|
121
|
+
}
|
|
122
|
+
export interface SocketInstanceUpdateEvent {
|
|
123
|
+
instanceId: string;
|
|
124
|
+
status?: "disconnected" | "connecting" | "qr_ready" | "connected" | "stopped";
|
|
125
|
+
qr?: string | null;
|
|
126
|
+
pairingCode?: string | null;
|
|
127
|
+
phoneNumber?: string | null;
|
|
128
|
+
profileName?: string | null;
|
|
129
|
+
profilePicUrl?: string | null;
|
|
130
|
+
profileBio?: string | null;
|
|
131
|
+
expired?: boolean;
|
|
132
|
+
expires_at?: string | null;
|
|
133
|
+
timestamp?: number;
|
|
134
|
+
}
|
|
135
|
+
export interface SocketCallEvent {
|
|
136
|
+
instanceId: string;
|
|
137
|
+
calls: any[];
|
|
138
|
+
timestamp?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface SocketPollUpdateEvent {
|
|
141
|
+
instanceId: string;
|
|
142
|
+
key: any;
|
|
143
|
+
pollUpdates: any;
|
|
144
|
+
timestamp?: number;
|
|
145
|
+
}
|
|
146
|
+
export interface SocketGenericEvent {
|
|
147
|
+
instanceId: string;
|
|
148
|
+
event: string;
|
|
149
|
+
timestamp: number;
|
|
150
|
+
[key: string]: any;
|
|
151
|
+
}
|
|
152
|
+
export interface SocketTelegramMessageEvent {
|
|
153
|
+
instanceId: string;
|
|
154
|
+
messageId: number | string;
|
|
155
|
+
chatId: string;
|
|
156
|
+
senderId: string;
|
|
157
|
+
text: string;
|
|
158
|
+
fromMe: boolean;
|
|
159
|
+
timestamp: number;
|
|
160
|
+
}
|
|
161
|
+
export interface SocketTelegramMessageEditedEvent {
|
|
162
|
+
instanceId: string;
|
|
163
|
+
messageId: number | string;
|
|
164
|
+
chatId: string;
|
|
165
|
+
text: string;
|
|
166
|
+
}
|
|
167
|
+
export interface SocketTelegramMessageDeletedEvent {
|
|
168
|
+
instanceId: string;
|
|
169
|
+
deletedIds: Array<number | string>;
|
|
170
|
+
}
|
|
171
|
+
export interface SocketTelegramMessageReadEvent {
|
|
172
|
+
instanceId: string;
|
|
173
|
+
chatId: string;
|
|
174
|
+
maxId?: string | null;
|
|
175
|
+
out: boolean;
|
|
176
|
+
}
|
|
177
|
+
export interface SocketTelegramUserUpdateEvent {
|
|
178
|
+
instanceId: string;
|
|
179
|
+
userId: string;
|
|
180
|
+
online: boolean;
|
|
181
|
+
typing: boolean;
|
|
182
|
+
lastSeen?: any;
|
|
183
|
+
}
|
|
184
|
+
export interface SocketTelegramChatActionEvent {
|
|
185
|
+
instanceId: string;
|
|
186
|
+
chatId: string;
|
|
187
|
+
participants: string[];
|
|
188
|
+
userJoined: boolean;
|
|
189
|
+
userLeft: boolean;
|
|
190
|
+
}
|
|
191
|
+
export interface SocketTelegramCallbackQueryEvent {
|
|
192
|
+
instanceId: string;
|
|
193
|
+
queryId?: string | null;
|
|
194
|
+
chatId?: string | null;
|
|
195
|
+
data?: string | null;
|
|
196
|
+
senderId?: string | null;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Event Map for Strong Typing in Socket Listeners
|
|
200
|
+
*/
|
|
201
|
+
export interface BotcastSocketEventMap {
|
|
202
|
+
authenticated: SocketAuthenticatedEvent;
|
|
203
|
+
"messages.upsert": SocketMessagesUpsertEvent;
|
|
204
|
+
"messages.update": SocketMessagesUpdateEvent;
|
|
205
|
+
"messages.delete": {
|
|
206
|
+
instanceId: string;
|
|
207
|
+
item: any;
|
|
208
|
+
timestamp?: number;
|
|
209
|
+
};
|
|
210
|
+
"messages.reaction": {
|
|
211
|
+
instanceId: string;
|
|
212
|
+
reactions: any[];
|
|
213
|
+
timestamp?: number;
|
|
214
|
+
};
|
|
215
|
+
message_status: SocketMessageStatusEvent;
|
|
216
|
+
message_reaction: SocketMessageReactionEvent;
|
|
217
|
+
message_deleted: SocketMessageDeletedEvent;
|
|
218
|
+
chat_message: SocketChatMessageEvent;
|
|
219
|
+
"chats.upsert": SocketChatsUpsertEvent;
|
|
220
|
+
"chats.update": SocketChatsUpdateEvent;
|
|
221
|
+
"chats.delete": SocketChatsDeleteEvent;
|
|
222
|
+
chats_update: {
|
|
223
|
+
instanceId: string;
|
|
224
|
+
timestamp?: number;
|
|
225
|
+
};
|
|
226
|
+
"contacts.upsert": SocketContactsUpsertEvent;
|
|
227
|
+
"contacts.update": SocketContactsUpdateEvent;
|
|
228
|
+
contacts_update: {
|
|
229
|
+
instanceId: string;
|
|
230
|
+
timestamp?: number;
|
|
231
|
+
};
|
|
232
|
+
"presence.update": SocketPresenceUpdateEvent;
|
|
233
|
+
presence_update: SocketPresenceUpdateEvent;
|
|
234
|
+
"group-participants.update": SocketGroupParticipantsUpdateEvent;
|
|
235
|
+
"groups.update": SocketGroupsUpdateEvent;
|
|
236
|
+
"connection.update": SocketInstanceUpdateEvent;
|
|
237
|
+
instance_update: SocketInstanceUpdateEvent;
|
|
238
|
+
call: SocketCallEvent;
|
|
239
|
+
poll_update: SocketPollUpdateEvent;
|
|
240
|
+
instance_event: SocketGenericEvent;
|
|
241
|
+
"telegram.message": SocketTelegramMessageEvent;
|
|
242
|
+
"telegram.message_edited": SocketTelegramMessageEditedEvent;
|
|
243
|
+
"telegram.message_deleted": SocketTelegramMessageDeletedEvent;
|
|
244
|
+
"telegram.message_read": SocketTelegramMessageReadEvent;
|
|
245
|
+
"telegram.user_update": SocketTelegramUserUpdateEvent;
|
|
246
|
+
"telegram.chat_action": SocketTelegramChatActionEvent;
|
|
247
|
+
"telegram.callback_query": SocketTelegramCallbackQueryEvent;
|
|
248
|
+
connect: void;
|
|
249
|
+
disconnect: string;
|
|
250
|
+
connect_error: Error;
|
|
251
|
+
}
|
|
252
|
+
export type SocketEventHandler<T = any> = (data: T) => void | Promise<void>;
|
|
253
|
+
//# sourceMappingURL=socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/types/socket.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "botcast-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Official TypeScript/JavaScript SDK for Botcast WhatsApp & Telegram MTProto Multi-Instance API Gateway",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -16,6 +16,11 @@
|
|
|
16
16
|
"types": "./dist/webhooks/index.d.ts",
|
|
17
17
|
"import": "./dist/webhooks/index.js",
|
|
18
18
|
"require": "./dist/webhooks/index.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./socket": {
|
|
21
|
+
"types": "./dist/socket/index.d.ts",
|
|
22
|
+
"import": "./dist/socket/index.js",
|
|
23
|
+
"require": "./dist/socket/index.cjs"
|
|
19
24
|
}
|
|
20
25
|
},
|
|
21
26
|
"files": [
|
|
@@ -62,5 +67,8 @@
|
|
|
62
67
|
},
|
|
63
68
|
"devDependencies": {
|
|
64
69
|
"typescript": "^5.9.3"
|
|
70
|
+
},
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"socket.io-client": "^4.8.3"
|
|
65
73
|
}
|
|
66
74
|
}
|