rynkai 0.2.1 → 0.3.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.
- package/README.md +48 -1
- package/dist/core/AccessControl.d.ts +68 -0
- package/dist/core/AccessControl.d.ts.map +1 -0
- package/dist/core/AccessControl.js +87 -0
- package/dist/core/AccessControl.js.map +1 -0
- package/dist/core/AccessControl.test.d.ts +2 -0
- package/dist/core/AccessControl.test.d.ts.map +1 -0
- package/dist/core/AccessControl.test.js +100 -0
- package/dist/core/AccessControl.test.js.map +1 -0
- package/dist/core/Client.d.ts +12 -0
- package/dist/core/Client.d.ts.map +1 -1
- package/dist/core/Client.js +42 -5
- package/dist/core/Client.js.map +1 -1
- package/dist/core/EventEmitterErrorSemantics.test.d.ts +2 -0
- package/dist/core/EventEmitterErrorSemantics.test.d.ts.map +1 -0
- package/dist/core/EventEmitterErrorSemantics.test.js +29 -0
- package/dist/core/EventEmitterErrorSemantics.test.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/session/FileSessionStore.d.ts.map +1 -1
- package/dist/session/FileSessionStore.js +6 -2
- package/dist/session/FileSessionStore.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,6 +64,30 @@ await bot.plugins.loadFromDirectory('./plugins');
|
|
|
64
64
|
await bot.connect();
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
## Blocklist / whitelist user & grup
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
import { AccessControl } from 'rynkai';
|
|
71
|
+
|
|
72
|
+
// Mode blocklist (default): bot terbuka untuk semua, kecuali yang di-block
|
|
73
|
+
const acl = new AccessControl({ replyMessage: 'Kamu diblokir dari bot ini.' });
|
|
74
|
+
acl.block('628123456789@s.whatsapp.net');
|
|
75
|
+
acl.unblock('628123456789@s.whatsapp.net');
|
|
76
|
+
|
|
77
|
+
bot.use(acl.middleware());
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
// Mode whitelist: bot privat, cuma JID tertentu yang boleh pakai
|
|
82
|
+
const acl = new AccessControl({ mode: 'whitelist' });
|
|
83
|
+
acl.allow('628123456789@s.whatsapp.net'); // izinkan user tertentu
|
|
84
|
+
acl.allow('120363000000000000@g.us'); // izinkan grup tertentu
|
|
85
|
+
|
|
86
|
+
bot.use(acl.middleware());
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Satu instance `AccessControl` bisa dipakai buat user maupun grup sekaligus (dibedakan dari suffix JID-nya). Middleware ini mengecek **sender DAN chatId grup** — kalau salah satu diblokir, command tidak diteruskan ke plugin.
|
|
90
|
+
|
|
67
91
|
## Reconnect backoff & graceful shutdown
|
|
68
92
|
|
|
69
93
|
Kalau koneksi putus (bukan karena logout), rynkai otomatis reconnect dengan **exponential backoff** (jeda 1 detik → 2 → 4 → ... sampai maksimal 30 detik, plus sedikit jitter acak) — bukan reconnect instan yang bisa bikin WA curiga.
|
|
@@ -274,6 +298,28 @@ const bot = new Client({
|
|
|
274
298
|
bot.on('pairingCode', (code) => console.log('Kode pairing:', code));
|
|
275
299
|
```
|
|
276
300
|
|
|
301
|
+
## Error handling
|
|
302
|
+
|
|
303
|
+
Kalau ada plugin/middleware yang throw error, rynkai **tidak akan crash** — errornya diisolasi per-pesan, jadi pesan lain tetap diproses normal. Ini berlaku otomatis walau kamu tidak pasang listener `error` sama sekali (rynkai selalu punya listener default internal, jadi aman dari perilaku khusus Node.js `EventEmitter` yang biasanya crash kalau event `'error'` di-emit tanpa listener).
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
bot.on('error', (err, { source, message }) => {
|
|
307
|
+
console.error(`Error dari ${source}:`, err);
|
|
308
|
+
// kirim ke Sentry/logging eksternal di sini kalau perlu
|
|
309
|
+
});
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Hal yang perlu diperhatikan sebelum produksi
|
|
313
|
+
|
|
314
|
+
rynkai membungkus Baileys dan menambah fitur di atasnya, tapi ada beberapa hal di luar kendali library ini yang tetap perlu kamu pertimbangkan sendiri:
|
|
315
|
+
|
|
316
|
+
- **Baileys itu unofficial API** — bukan API resmi Meta/WhatsApp. Risiko akun kena banned/flag selalu ada terlepas library apapun yang dipakai di atasnya, terutama kalau kirim pesan masif/spam ke banyak nomor asing.
|
|
317
|
+
- **`FileSessionStore` menyimpan kredensial sesi sebagai file JSON polos di disk**, tidak dienkripsi. Kalau server/device kamu diakses orang lain, sesi WA bisa dicuri. Untuk deployment produksi, pastikan folder `.rynkai-sessions/` dijaga (permission file, tidak masuk backup publik, dst), atau implement `SessionStore` custom yang enkripsi datanya.
|
|
318
|
+
- **Plugin loader pakai `require()` dinamis** — kalau folder plugin bisa diisi orang lain (misal upload file dari user tanpa validasi), itu sama saja dengan remote code execution. Jangan expose folder plugin ke input yang tidak terpercaya.
|
|
319
|
+
- **Belum ada integration test** terhadap koneksi WhatsApp asli (test suite yang ada murni unit test logic internal seperti parser/plugin loader/rate limiter) — karena butuh akun WA aktif buat testing end-to-end.
|
|
320
|
+
|
|
321
|
+
Ini normal untuk semua project di atas Baileys, bukan hal yang bisa "diselesaikan" library — tapi penting untuk disadari sebelum menganggap sesuatu "aman" secara menyeluruh.
|
|
322
|
+
|
|
277
323
|
## Testing
|
|
278
324
|
|
|
279
325
|
```bash
|
|
@@ -302,6 +348,7 @@ Masih tahap awal (0.1.0). Yang sudah ada:
|
|
|
302
348
|
- [x] GitHub Actions CI (auto build+test tiap push/PR, matrix Node 20 & 22)
|
|
303
349
|
- [x] Message reactions (`react`, `removeReaction`) & read receipt (`markAsRead`, `autoRead`)
|
|
304
350
|
- [x] Graceful shutdown (`disconnect()`) + reconnect exponential backoff dengan jitter
|
|
351
|
+
- [x] Blocklist/whitelist user & grup built-in (`AccessControl`)
|
|
305
352
|
|
|
306
353
|
Belum ada (rencana selanjutnya):
|
|
307
|
-
- [
|
|
354
|
+
- [x] ~~CLI scaffold (`npx create-rynkai-bot`)~~ — sudah tersedia sebagai package terpisah
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Middleware } from './Middleware';
|
|
2
|
+
export type AccessControlMode = 'blocklist' | 'whitelist';
|
|
3
|
+
export interface AccessControlConfig {
|
|
4
|
+
/**
|
|
5
|
+
* 'blocklist' (default): semua JID boleh pakai bot KECUALI yang ada di list.
|
|
6
|
+
* 'whitelist': semua JID diblokir KECUALI yang ada di list.
|
|
7
|
+
*/
|
|
8
|
+
mode?: AccessControlMode;
|
|
9
|
+
/** Daftar awal JID (user atau grup, bisa dicampur). */
|
|
10
|
+
initial?: string[];
|
|
11
|
+
/**
|
|
12
|
+
* Pesan yang dikirim ke JID yang diblokir. Default: tidak ada balasan sama
|
|
13
|
+
* sekali (silent) — command diam-diam tidak dijalankan.
|
|
14
|
+
*/
|
|
15
|
+
replyMessage?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Kelola daftar blokir/izin untuk user & group JID, dan sediakan sebagai
|
|
19
|
+
* middleware siap pakai lewat client.use(). Satu instance bisa dipakai untuk
|
|
20
|
+
* JID user maupun grup sekaligus (keduanya cuma string JID, dibedakan
|
|
21
|
+
* suffix "@s.whatsapp.net" vs "@g.us").
|
|
22
|
+
*
|
|
23
|
+
* Mode blocklist (paling umum — bot terbuka untuk semua, kecuali yang di-block):
|
|
24
|
+
* ```ts
|
|
25
|
+
* const acl = new AccessControl({ mode: 'blocklist', replyMessage: 'Kamu diblokir dari bot ini.' });
|
|
26
|
+
* acl.block('628123456789@s.whatsapp.net');
|
|
27
|
+
* bot.use(acl.middleware());
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* Mode whitelist (bot privat — cuma JID tertentu yang boleh pakai):
|
|
31
|
+
* ```ts
|
|
32
|
+
* const acl = new AccessControl({ mode: 'whitelist' });
|
|
33
|
+
* acl.allow('628123456789@s.whatsapp.net');
|
|
34
|
+
* acl.allow('120363000000000000@g.us'); // izinkan satu grup spesifik
|
|
35
|
+
* bot.use(acl.middleware());
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare class AccessControl {
|
|
39
|
+
private mode;
|
|
40
|
+
private entries;
|
|
41
|
+
private replyMessage?;
|
|
42
|
+
constructor(config?: AccessControlConfig);
|
|
43
|
+
/** Tambah JID ke daftar. Di mode blocklist ini artinya "blokir", di mode whitelist artinya "izinkan". */
|
|
44
|
+
add(jid: string): void;
|
|
45
|
+
/** Alias add() — lebih intuitif dipakai di mode blocklist. */
|
|
46
|
+
block(jid: string): void;
|
|
47
|
+
/** Alias add() — lebih intuitif dipakai di mode whitelist. */
|
|
48
|
+
allow(jid: string): void;
|
|
49
|
+
/** Hapus JID dari daftar. */
|
|
50
|
+
remove(jid: string): void;
|
|
51
|
+
/** Alias remove() — lebih intuitif dipakai di mode blocklist. */
|
|
52
|
+
unblock(jid: string): void;
|
|
53
|
+
/** Alias remove() — lebih intuitif dipakai di mode whitelist. */
|
|
54
|
+
disallow(jid: string): void;
|
|
55
|
+
/** Cek apakah JID ada di daftar (terlepas dari mode aktif). */
|
|
56
|
+
has(jid: string): boolean;
|
|
57
|
+
/** Semua JID yang ada di daftar saat ini. */
|
|
58
|
+
list(): string[];
|
|
59
|
+
/** True kalau JID ini boleh pakai bot, sesuai mode aktif saat ini. */
|
|
60
|
+
isAllowed(jid: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Ubah instance ini jadi Middleware siap pakai lewat client.use().
|
|
63
|
+
* Mengecek sender (JID pengirim) DAN chatId (JID grup kalau di grup) —
|
|
64
|
+
* keduanya harus lolos supaya command diteruskan ke plugin.
|
|
65
|
+
*/
|
|
66
|
+
middleware(): Middleware;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=AccessControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessControl.d.ts","sourceRoot":"","sources":["../../src/core/AccessControl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,MAAM,GAAE,mBAAwB;IAM5C,yGAAyG;IACzG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAItB,8DAA8D;IAC9D,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,8DAA8D;IAC9D,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,6BAA6B;IAC7B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,iEAAiE;IACjE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,iEAAiE;IACjE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3B,+DAA+D;IAC/D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,6CAA6C;IAC7C,IAAI,IAAI,MAAM,EAAE;IAIhB,sEAAsE;IACtE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK/B;;;;OAIG;IACH,UAAU,IAAI,UAAU;CAczB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccessControl = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Kelola daftar blokir/izin untuk user & group JID, dan sediakan sebagai
|
|
6
|
+
* middleware siap pakai lewat client.use(). Satu instance bisa dipakai untuk
|
|
7
|
+
* JID user maupun grup sekaligus (keduanya cuma string JID, dibedakan
|
|
8
|
+
* suffix "@s.whatsapp.net" vs "@g.us").
|
|
9
|
+
*
|
|
10
|
+
* Mode blocklist (paling umum — bot terbuka untuk semua, kecuali yang di-block):
|
|
11
|
+
* ```ts
|
|
12
|
+
* const acl = new AccessControl({ mode: 'blocklist', replyMessage: 'Kamu diblokir dari bot ini.' });
|
|
13
|
+
* acl.block('628123456789@s.whatsapp.net');
|
|
14
|
+
* bot.use(acl.middleware());
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* Mode whitelist (bot privat — cuma JID tertentu yang boleh pakai):
|
|
18
|
+
* ```ts
|
|
19
|
+
* const acl = new AccessControl({ mode: 'whitelist' });
|
|
20
|
+
* acl.allow('628123456789@s.whatsapp.net');
|
|
21
|
+
* acl.allow('120363000000000000@g.us'); // izinkan satu grup spesifik
|
|
22
|
+
* bot.use(acl.middleware());
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
class AccessControl {
|
|
26
|
+
constructor(config = {}) {
|
|
27
|
+
this.mode = config.mode ?? 'blocklist';
|
|
28
|
+
this.entries = new Set(config.initial ?? []);
|
|
29
|
+
this.replyMessage = config.replyMessage;
|
|
30
|
+
}
|
|
31
|
+
/** Tambah JID ke daftar. Di mode blocklist ini artinya "blokir", di mode whitelist artinya "izinkan". */
|
|
32
|
+
add(jid) {
|
|
33
|
+
this.entries.add(jid);
|
|
34
|
+
}
|
|
35
|
+
/** Alias add() — lebih intuitif dipakai di mode blocklist. */
|
|
36
|
+
block(jid) {
|
|
37
|
+
this.add(jid);
|
|
38
|
+
}
|
|
39
|
+
/** Alias add() — lebih intuitif dipakai di mode whitelist. */
|
|
40
|
+
allow(jid) {
|
|
41
|
+
this.add(jid);
|
|
42
|
+
}
|
|
43
|
+
/** Hapus JID dari daftar. */
|
|
44
|
+
remove(jid) {
|
|
45
|
+
this.entries.delete(jid);
|
|
46
|
+
}
|
|
47
|
+
/** Alias remove() — lebih intuitif dipakai di mode blocklist. */
|
|
48
|
+
unblock(jid) {
|
|
49
|
+
this.remove(jid);
|
|
50
|
+
}
|
|
51
|
+
/** Alias remove() — lebih intuitif dipakai di mode whitelist. */
|
|
52
|
+
disallow(jid) {
|
|
53
|
+
this.remove(jid);
|
|
54
|
+
}
|
|
55
|
+
/** Cek apakah JID ada di daftar (terlepas dari mode aktif). */
|
|
56
|
+
has(jid) {
|
|
57
|
+
return this.entries.has(jid);
|
|
58
|
+
}
|
|
59
|
+
/** Semua JID yang ada di daftar saat ini. */
|
|
60
|
+
list() {
|
|
61
|
+
return [...this.entries];
|
|
62
|
+
}
|
|
63
|
+
/** True kalau JID ini boleh pakai bot, sesuai mode aktif saat ini. */
|
|
64
|
+
isAllowed(jid) {
|
|
65
|
+
const inList = this.entries.has(jid);
|
|
66
|
+
return this.mode === 'blocklist' ? !inList : inList;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Ubah instance ini jadi Middleware siap pakai lewat client.use().
|
|
70
|
+
* Mengecek sender (JID pengirim) DAN chatId (JID grup kalau di grup) —
|
|
71
|
+
* keduanya harus lolos supaya command diteruskan ke plugin.
|
|
72
|
+
*/
|
|
73
|
+
middleware() {
|
|
74
|
+
return async (ctx, next) => {
|
|
75
|
+
const { sender, chatId } = ctx.message;
|
|
76
|
+
if (!this.isAllowed(sender) || !this.isAllowed(chatId)) {
|
|
77
|
+
if (this.replyMessage) {
|
|
78
|
+
await ctx.reply(this.replyMessage);
|
|
79
|
+
}
|
|
80
|
+
return; // next() tidak dipanggil — command tidak diteruskan ke plugin
|
|
81
|
+
}
|
|
82
|
+
await next();
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.AccessControl = AccessControl;
|
|
87
|
+
//# sourceMappingURL=AccessControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessControl.js","sourceRoot":"","sources":["../../src/core/AccessControl.ts"],"names":[],"mappings":";;;AAmBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,aAAa;IAKxB,YAAY,SAA8B,EAAE;QAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED,yGAAyG;IACzG,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,6BAA6B;IAC7B,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,iEAAiE;IACjE,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,iEAAiE;IACjE,QAAQ,CAAC,GAAW;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,+DAA+D;IAC/D,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,6CAA6C;IAC7C,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,sEAAsE;IACtE,SAAS,CAAC,GAAW;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrC,CAAC;gBACD,OAAO,CAAC,8DAA8D;YACxE,CAAC;YAED,MAAM,IAAI,EAAE,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;CACF;AA5ED,sCA4EC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessControl.test.d.ts","sourceRoot":"","sources":["../../src/core/AccessControl.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const AccessControl_1 = require("./AccessControl");
|
|
5
|
+
function fakeCtx(sender, chatId = sender) {
|
|
6
|
+
return {
|
|
7
|
+
client: {},
|
|
8
|
+
message: { sender, chatId },
|
|
9
|
+
args: [],
|
|
10
|
+
reply: vitest_1.vi.fn(async () => { }),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
(0, vitest_1.describe)('AccessControl', () => {
|
|
14
|
+
(0, vitest_1.describe)('mode blocklist (default)', () => {
|
|
15
|
+
(0, vitest_1.it)('mengizinkan semua JID secara default', () => {
|
|
16
|
+
const acl = new AccessControl_1.AccessControl();
|
|
17
|
+
(0, vitest_1.expect)(acl.isAllowed('siapa-saja@s.whatsapp.net')).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('memblokir JID yang di-block()', () => {
|
|
20
|
+
const acl = new AccessControl_1.AccessControl();
|
|
21
|
+
acl.block('spammer@s.whatsapp.net');
|
|
22
|
+
(0, vitest_1.expect)(acl.isAllowed('spammer@s.whatsapp.net')).toBe(false);
|
|
23
|
+
(0, vitest_1.expect)(acl.isAllowed('orang-lain@s.whatsapp.net')).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('unblock() mengembalikan akses', () => {
|
|
26
|
+
const acl = new AccessControl_1.AccessControl();
|
|
27
|
+
acl.block('user@s.whatsapp.net');
|
|
28
|
+
acl.unblock('user@s.whatsapp.net');
|
|
29
|
+
(0, vitest_1.expect)(acl.isAllowed('user@s.whatsapp.net')).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.describe)('mode whitelist', () => {
|
|
33
|
+
(0, vitest_1.it)('memblokir semua JID secara default', () => {
|
|
34
|
+
const acl = new AccessControl_1.AccessControl({ mode: 'whitelist' });
|
|
35
|
+
(0, vitest_1.expect)(acl.isAllowed('siapa-saja@s.whatsapp.net')).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.it)('mengizinkan JID yang di-allow()', () => {
|
|
38
|
+
const acl = new AccessControl_1.AccessControl({ mode: 'whitelist' });
|
|
39
|
+
acl.allow('owner@s.whatsapp.net');
|
|
40
|
+
(0, vitest_1.expect)(acl.isAllowed('owner@s.whatsapp.net')).toBe(true);
|
|
41
|
+
(0, vitest_1.expect)(acl.isAllowed('orang-lain@s.whatsapp.net')).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('disallow() mencabut izin', () => {
|
|
44
|
+
const acl = new AccessControl_1.AccessControl({ mode: 'whitelist' });
|
|
45
|
+
acl.allow('user@s.whatsapp.net');
|
|
46
|
+
acl.disallow('user@s.whatsapp.net');
|
|
47
|
+
(0, vitest_1.expect)(acl.isAllowed('user@s.whatsapp.net')).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.describe)('list() & has()', () => {
|
|
51
|
+
(0, vitest_1.it)('list() mengembalikan semua entry', () => {
|
|
52
|
+
const acl = new AccessControl_1.AccessControl({ initial: ['a@s.whatsapp.net', 'b@s.whatsapp.net'] });
|
|
53
|
+
(0, vitest_1.expect)(acl.list().sort()).toEqual(['a@s.whatsapp.net', 'b@s.whatsapp.net']);
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.it)('has() mengecek keberadaan di list terlepas dari mode', () => {
|
|
56
|
+
const acl = new AccessControl_1.AccessControl({ mode: 'whitelist', initial: ['a@s.whatsapp.net'] });
|
|
57
|
+
(0, vitest_1.expect)(acl.has('a@s.whatsapp.net')).toBe(true);
|
|
58
|
+
(0, vitest_1.expect)(acl.has('b@s.whatsapp.net')).toBe(false);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
(0, vitest_1.describe)('middleware()', () => {
|
|
62
|
+
(0, vitest_1.it)('meneruskan ke next() kalau sender & chatId diizinkan', async () => {
|
|
63
|
+
const acl = new AccessControl_1.AccessControl();
|
|
64
|
+
const next = vitest_1.vi.fn(async () => { });
|
|
65
|
+
const mw = acl.middleware();
|
|
66
|
+
await mw(fakeCtx('user@s.whatsapp.net'), next);
|
|
67
|
+
(0, vitest_1.expect)(next).toHaveBeenCalledOnce();
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)('tidak memanggil next() kalau sender diblokir', async () => {
|
|
70
|
+
const acl = new AccessControl_1.AccessControl();
|
|
71
|
+
acl.block('spammer@s.whatsapp.net');
|
|
72
|
+
const next = vitest_1.vi.fn(async () => { });
|
|
73
|
+
const mw = acl.middleware();
|
|
74
|
+
await mw(fakeCtx('spammer@s.whatsapp.net'), next);
|
|
75
|
+
(0, vitest_1.expect)(next).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.it)('mengirim replyMessage kalau diblokir dan replyMessage diset', async () => {
|
|
78
|
+
const acl = new AccessControl_1.AccessControl({ replyMessage: 'Diblokir!' });
|
|
79
|
+
acl.block('spammer@s.whatsapp.net');
|
|
80
|
+
const ctx = fakeCtx('spammer@s.whatsapp.net');
|
|
81
|
+
await acl.middleware()(ctx, vitest_1.vi.fn());
|
|
82
|
+
(0, vitest_1.expect)(ctx.reply).toHaveBeenCalledWith('Diblokir!');
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.it)('tidak reply sama sekali kalau replyMessage tidak diset (silent)', async () => {
|
|
85
|
+
const acl = new AccessControl_1.AccessControl();
|
|
86
|
+
acl.block('spammer@s.whatsapp.net');
|
|
87
|
+
const ctx = fakeCtx('spammer@s.whatsapp.net');
|
|
88
|
+
await acl.middleware()(ctx, vitest_1.vi.fn());
|
|
89
|
+
(0, vitest_1.expect)(ctx.reply).not.toHaveBeenCalled();
|
|
90
|
+
});
|
|
91
|
+
(0, vitest_1.it)('memblokir kalau chatId (grup) diblokir walau sender diizinkan', async () => {
|
|
92
|
+
const acl = new AccessControl_1.AccessControl();
|
|
93
|
+
acl.block('120363000000000000@g.us');
|
|
94
|
+
const next = vitest_1.vi.fn(async () => { });
|
|
95
|
+
await acl.middleware()(fakeCtx('user-biasa@s.whatsapp.net', '120363000000000000@g.us'), next);
|
|
96
|
+
(0, vitest_1.expect)(next).not.toHaveBeenCalled();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=AccessControl.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessControl.test.js","sourceRoot":"","sources":["../../src/core/AccessControl.test.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Client.d.ts
CHANGED
|
@@ -22,6 +22,17 @@ export interface RynkaiEvents {
|
|
|
22
22
|
}) => void;
|
|
23
23
|
/** Ditembak kalau maxRetries reconnect sudah tercapai dan client menyerah. */
|
|
24
24
|
'reconnect-failed': () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Ditembak kalau ada error tak tertangani dari plugin, middleware, atau
|
|
27
|
+
* internal handler (autoRead, dsb). Bot TIDAK crash karena error ini —
|
|
28
|
+
* sudah diisolasi per-pesan — tapi kalau tidak ada listener, error tetap
|
|
29
|
+
* di-log via pino internal. Pasang listener ini kalau mau reporting sendiri
|
|
30
|
+
* (misal kirim ke Sentry/log eksternal).
|
|
31
|
+
*/
|
|
32
|
+
error: (err: unknown, context: {
|
|
33
|
+
source: string;
|
|
34
|
+
message?: NormalizedMessage;
|
|
35
|
+
}) => void;
|
|
25
36
|
}
|
|
26
37
|
/**
|
|
27
38
|
* Client utama rynkai. Bungkus WASocket Baileys dan expose API yang lebih
|
|
@@ -40,6 +51,7 @@ export declare class Client extends EventEmitter {
|
|
|
40
51
|
private backoff;
|
|
41
52
|
private manualClose;
|
|
42
53
|
private reconnectTimer;
|
|
54
|
+
private connectionState;
|
|
43
55
|
constructor(config: RynkaiConfig);
|
|
44
56
|
/**
|
|
45
57
|
* Daftarkan middleware yang jalan sebelum (dan bisa membungkus) eksekusi plugin.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"AAAA,OAAqB,EAGnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAiB,MAAM,UAAU,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAMxD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,2BAA2B,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrE,gFAAgF;IAChF,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,8EAA8E;IAC9E,kBAAkB,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"AAAA,OAAqB,EAGnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAiB,MAAM,UAAU,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAMxD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,2BAA2B,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrE,gFAAgF;IAChF,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,8EAA8E;IAC9E,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;KAAE,KAAK,IAAI,CAAC;CACzF;AAED;;;;GAIG;AACH,qBAAa,MAAO,SAAQ,YAAY;IAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACpC,SAAgB,OAAO,eAAsB;IAE7C,OAAO,CAAC,MAAM,CAC8F;IAC5G,OAAO,CAAC,YAAY,CAA+D;IACnF,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,eAAe,CAAgE;gBAE3E,MAAM,EAAE,YAAY;IAgChC;;;;OAIG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKjC,kEAAkE;IAC5D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiH9B,+EAA+E;YACjE,cAAc;IA6B5B,+FAA+F;IACzF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,gGAAgG;IAC1F,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,4FAA4F;IACtF,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhE,qGAAqG;IAC/F,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrE,yDAAyD;IACnD,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjF,oEAAoE;IAC9D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvE;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,oFAAoF;IAC9E,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAK/D,kCAAkC;IAC5B,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7E,uCAAuC;IACjC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF,sCAAsC;IAChC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjF,6CAA6C;IACvC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF,yCAAyC;IACnC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B;;;;;;;;;OASG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAG3E,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;CAG5F"}
|
package/dist/core/Client.js
CHANGED
|
@@ -61,6 +61,7 @@ class Client extends events_1.EventEmitter {
|
|
|
61
61
|
this.middlewares = [];
|
|
62
62
|
this.manualClose = false;
|
|
63
63
|
this.reconnectTimer = null;
|
|
64
|
+
this.connectionState = 'idle';
|
|
64
65
|
this.config = {
|
|
65
66
|
prefix: '.',
|
|
66
67
|
printQR: !config.pairingCode,
|
|
@@ -78,6 +79,16 @@ class Client extends events_1.EventEmitter {
|
|
|
78
79
|
this.rateLimiter = config.rateLimit ? new RateLimiter_1.RateLimiter(config.rateLimit) : null;
|
|
79
80
|
this.sendQueue = new SendQueue_1.SendQueue(config.sendQueue);
|
|
80
81
|
this.backoff = new Backoff_1.Backoff(config.reconnect);
|
|
82
|
+
// PENTING: Node.js EventEmitter melempar (throw) error secara sinkron
|
|
83
|
+
// kalau event 'error' di-emit tanpa ada listener sama sekali. Tanpa
|
|
84
|
+
// default listener ini, fitur isolasi error yang kita bangun (supaya
|
|
85
|
+
// plugin yang gagal tidak men-crash bot) justru jadi celah crash baru
|
|
86
|
+
// kalau consumer lupa pasang bot.on('error', ...). Listener default ini
|
|
87
|
+
// menjamin itu tidak pernah terjadi; consumer tetap bisa pasang listener
|
|
88
|
+
// tambahan sendiri untuk reporting custom.
|
|
89
|
+
super.on('error', (err, context) => {
|
|
90
|
+
this.logger.error({ err, context }, 'Unhandled error di rynkai (tidak men-crash proses)');
|
|
91
|
+
});
|
|
81
92
|
}
|
|
82
93
|
/**
|
|
83
94
|
* Daftarkan middleware yang jalan sebelum (dan bisa membungkus) eksekusi plugin.
|
|
@@ -90,6 +101,10 @@ class Client extends events_1.EventEmitter {
|
|
|
90
101
|
}
|
|
91
102
|
/** Konek ke WhatsApp. Resolve setelah koneksi berhasil "open". */
|
|
92
103
|
async connect() {
|
|
104
|
+
if (this.connectionState === 'connecting' || this.connectionState === 'connected') {
|
|
105
|
+
throw new Error('Client sudah terhubung atau sedang menyambungkan. Panggil disconnect() dulu sebelum connect() lagi.');
|
|
106
|
+
}
|
|
107
|
+
this.connectionState = 'connecting';
|
|
93
108
|
this.manualClose = false;
|
|
94
109
|
const state = await this.sessionStore.load();
|
|
95
110
|
if (!state) {
|
|
@@ -103,7 +118,13 @@ class Client extends events_1.EventEmitter {
|
|
|
103
118
|
printQRInTerminal: false, // kita handle sendiri lewat event 'qr'
|
|
104
119
|
});
|
|
105
120
|
this.sock.ev.on('creds.update', async () => {
|
|
106
|
-
|
|
121
|
+
try {
|
|
122
|
+
await this.sessionStore.save(state);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
this.logger.error(err, 'gagal menyimpan sesi (creds.update)');
|
|
126
|
+
this.emit('error', err, { source: 'sessionStore.save' });
|
|
127
|
+
}
|
|
107
128
|
});
|
|
108
129
|
if (this.config.pairingCode && !this.sock.authState.creds.registered) {
|
|
109
130
|
const code = await this.sock.requestPairingCode(this.config.pairingCode.phoneNumber);
|
|
@@ -115,10 +136,12 @@ class Client extends events_1.EventEmitter {
|
|
|
115
136
|
this.emit('qr', qr);
|
|
116
137
|
}
|
|
117
138
|
if (connection === 'open') {
|
|
139
|
+
this.connectionState = 'connected';
|
|
118
140
|
this.backoff.reset();
|
|
119
141
|
this.emit('ready');
|
|
120
142
|
}
|
|
121
143
|
if (connection === 'close') {
|
|
144
|
+
this.connectionState = 'disconnected';
|
|
122
145
|
const statusCode = lastDisconnect?.error?.output?.statusCode;
|
|
123
146
|
const loggedOut = statusCode === baileys_1.DisconnectReason.loggedOut;
|
|
124
147
|
this.emit('disconnected', String(statusCode ?? 'unknown'));
|
|
@@ -146,11 +169,23 @@ class Client extends events_1.EventEmitter {
|
|
|
146
169
|
if (!raw.message)
|
|
147
170
|
continue;
|
|
148
171
|
const message = (0, MessageParser_1.parseMessage)(raw);
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
172
|
+
// Setiap pesan diisolasi try/catch-nya sendiri: kalau satu pesan
|
|
173
|
+
// gagal diproses (plugin/middleware/autoRead error), pesan lain
|
|
174
|
+
// di batch yang sama tetap lanjut diproses, dan proses bot tidak crash.
|
|
175
|
+
try {
|
|
176
|
+
this.emit('message', message);
|
|
177
|
+
if (this.config.autoRead && !message.fromMe) {
|
|
178
|
+
await this.markAsRead(message).catch((err) => {
|
|
179
|
+
this.logger.error(err, 'gagal markAsRead');
|
|
180
|
+
this.emit('error', err, { source: 'autoRead', message });
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
await this.dispatchPlugin(message);
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
this.logger.error(err, 'error tak tertangani saat memproses pesan');
|
|
187
|
+
this.emit('error', err, { source: 'dispatchPlugin', message });
|
|
152
188
|
}
|
|
153
|
-
await this.dispatchPlugin(message);
|
|
154
189
|
}
|
|
155
190
|
});
|
|
156
191
|
this.sock.ev.on('group-participants.update', (event) => {
|
|
@@ -279,6 +314,7 @@ class Client extends events_1.EventEmitter {
|
|
|
279
314
|
/** Logout & bersihkan sesi tersimpan. */
|
|
280
315
|
async logout() {
|
|
281
316
|
this.manualClose = true;
|
|
317
|
+
this.connectionState = 'disconnected';
|
|
282
318
|
if (this.reconnectTimer)
|
|
283
319
|
clearTimeout(this.reconnectTimer);
|
|
284
320
|
await this.sock?.logout();
|
|
@@ -296,6 +332,7 @@ class Client extends events_1.EventEmitter {
|
|
|
296
332
|
*/
|
|
297
333
|
async disconnect() {
|
|
298
334
|
this.manualClose = true;
|
|
335
|
+
this.connectionState = 'disconnected';
|
|
299
336
|
if (this.reconnectTimer)
|
|
300
337
|
clearTimeout(this.reconnectTimer);
|
|
301
338
|
this.sock?.end(undefined);
|
package/dist/core/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterErrorSemantics.test.d.ts","sourceRoot":"","sources":["../../src/core/EventEmitterErrorSemantics.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
/**
|
|
6
|
+
* Test ini bukan nguji Client secara penuh (butuh koneksi WA asli),
|
|
7
|
+
* tapi menguji prinsip yang jadi dasar fix di Client: Node.js EventEmitter
|
|
8
|
+
* melempar error secara sinkron kalau event 'error' di-emit tanpa listener
|
|
9
|
+
* sama sekali. Client HARUS selalu punya minimal satu listener 'error'
|
|
10
|
+
* terpasang dari constructor-nya sendiri (lihat Client.ts) supaya emit('error', ...)
|
|
11
|
+
* dari isolasi plugin/middleware tidak pernah men-crash proses consumer
|
|
12
|
+
* yang lupa pasang bot.on('error', ...).
|
|
13
|
+
*/
|
|
14
|
+
(0, vitest_1.describe)('EventEmitter "error" semantics (dasar fix di Client)', () => {
|
|
15
|
+
(0, vitest_1.it)('EventEmitter bawaan Node MELEMPAR error kalau tidak ada listener sama sekali', () => {
|
|
16
|
+
const emitter = new events_1.EventEmitter();
|
|
17
|
+
(0, vitest_1.expect)(() => emitter.emit('error', new Error('boom'))).toThrow('boom');
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('EventEmitter TIDAK melempar kalau sudah ada minimal satu listener error', () => {
|
|
20
|
+
const emitter = new events_1.EventEmitter();
|
|
21
|
+
let caught = null;
|
|
22
|
+
emitter.on('error', (err) => {
|
|
23
|
+
caught = err;
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.expect)(() => emitter.emit('error', new Error('boom'))).not.toThrow();
|
|
26
|
+
(0, vitest_1.expect)(caught.message).toBe('boom');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=EventEmitterErrorSemantics.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterErrorSemantics.test.js","sourceRoot":"","sources":["../../src/core/EventEmitterErrorSemantics.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,mCAAsC;AAEtC;;;;;;;;GAQG;AACH,IAAA,iBAAQ,EAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,IAAA,WAAE,EAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,OAAO,GAAG,IAAI,qBAAY,EAAE,CAAC;QACnC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,OAAO,GAAG,IAAI,qBAAY,EAAE,CAAC;QACnC,IAAI,MAAM,GAAY,IAAI,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACrE,IAAA,eAAM,EAAE,MAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,11 +6,13 @@ export { RateLimiter } from './core/RateLimiter';
|
|
|
6
6
|
export { compose } from './core/Middleware';
|
|
7
7
|
export { SendQueue } from './core/SendQueue';
|
|
8
8
|
export { Backoff } from './core/Backoff';
|
|
9
|
+
export { AccessControl } from './core/AccessControl';
|
|
9
10
|
export { downloadMedia } from './media/downloadMedia';
|
|
10
11
|
export type { NormalizedMessage, NormalizedMessageType, SessionStore, Plugin, PluginContext, RynkaiConfig, } from './types';
|
|
11
12
|
export type { Middleware, NextFunction } from './core/Middleware';
|
|
12
13
|
export type { RateLimitConfig } from './core/RateLimiter';
|
|
13
14
|
export type { SendQueueConfig } from './core/SendQueue';
|
|
14
15
|
export type { BackoffConfig } from './core/Backoff';
|
|
16
|
+
export type { AccessControlConfig, AccessControlMode } from './core/AccessControl';
|
|
15
17
|
export type { GroupParticipantsEvent, RynkaiEvents } from './core/Client';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
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,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,MAAM,EACN,aAAa,EACb,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,MAAM,EACN,aAAa,EACb,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.downloadMedia = exports.Backoff = exports.SendQueue = exports.compose = exports.RateLimiter = exports.PluginLoader = exports.MessageBuilder = exports.FileSessionStore = exports.Client = void 0;
|
|
3
|
+
exports.downloadMedia = exports.AccessControl = exports.Backoff = exports.SendQueue = exports.compose = exports.RateLimiter = exports.PluginLoader = exports.MessageBuilder = exports.FileSessionStore = exports.Client = void 0;
|
|
4
4
|
var Client_1 = require("./core/Client");
|
|
5
5
|
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
|
|
6
6
|
var FileSessionStore_1 = require("./session/FileSessionStore");
|
|
@@ -17,6 +17,8 @@ var SendQueue_1 = require("./core/SendQueue");
|
|
|
17
17
|
Object.defineProperty(exports, "SendQueue", { enumerable: true, get: function () { return SendQueue_1.SendQueue; } });
|
|
18
18
|
var Backoff_1 = require("./core/Backoff");
|
|
19
19
|
Object.defineProperty(exports, "Backoff", { enumerable: true, get: function () { return Backoff_1.Backoff; } });
|
|
20
|
+
var AccessControl_1 = require("./core/AccessControl");
|
|
21
|
+
Object.defineProperty(exports, "AccessControl", { enumerable: true, get: function () { return AccessControl_1.AccessControl; } });
|
|
20
22
|
var downloadMedia_1 = require("./media/downloadMedia");
|
|
21
23
|
Object.defineProperty(exports, "downloadMedia", { enumerable: true, get: function () { return downloadMedia_1.downloadMedia; } });
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,+DAA8D;AAArD,oHAAA,gBAAgB,OAAA;AACzB,2DAA0D;AAAjD,gHAAA,cAAc,OAAA;AACvB,sDAAqD;AAA5C,4GAAA,YAAY,OAAA;AACrB,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,gDAA4C;AAAnC,qGAAA,OAAO,OAAA;AAChB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,uDAAsD;AAA7C,8GAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,+DAA8D;AAArD,oHAAA,gBAAgB,OAAA;AACzB,2DAA0D;AAAjD,gHAAA,cAAc,OAAA;AACvB,sDAAqD;AAA5C,4GAAA,YAAY,OAAA;AACrB,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,gDAA4C;AAAnC,qGAAA,OAAO,OAAA;AAChB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AACtB,uDAAsD;AAA7C,8GAAA,aAAa,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSessionStore.d.ts","sourceRoot":"","sources":["../../src/session/FileSessionStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,SAAS,CAAsC;gBAE3C,WAAW,EAAE,MAAM,EAAE,OAAO,SAAqB;IAIvD,IAAI,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAM3C,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"FileSessionStore.d.ts","sourceRoot":"","sources":["../../src/session/FileSessionStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,SAAS,CAAsC;gBAE3C,WAAW,EAAE,MAAM,EAAE,OAAO,SAAqB;IAIvD,IAAI,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAM3C,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B"}
|
|
@@ -57,11 +57,15 @@ class FileSessionStore {
|
|
|
57
57
|
}
|
|
58
58
|
async save(_state) {
|
|
59
59
|
// useMultiFileAuthState sudah otomatis nulis ke disk tiap kali keys/creds
|
|
60
|
-
// berubah
|
|
61
|
-
// yang di-provide-nya. Lihat ConnectionManager untuk pemanggilannya.
|
|
60
|
+
// berubah — kita cukup panggil saveCreds yang di-provide-nya lewat load().
|
|
62
61
|
if (this.saveCreds) {
|
|
63
62
|
await this.saveCreds();
|
|
63
|
+
return;
|
|
64
64
|
}
|
|
65
|
+
// Kalau ini kejadian, artinya save() dipanggil sebelum load() pernah
|
|
66
|
+
// sukses — biasanya bug di pemanggil (mestinya connect() selalu load()
|
|
67
|
+
// dulu). Di-log biar tidak silent-fail dan bikin sesi hilang tanpa jejak.
|
|
68
|
+
console.warn('[rynkai] FileSessionStore.save() dipanggil sebelum load() pernah sukses — perubahan sesi TIDAK tersimpan.');
|
|
65
69
|
}
|
|
66
70
|
async clear() {
|
|
67
71
|
if (fs.existsSync(this.folder)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSessionStore.js","sourceRoot":"","sources":["../../src/session/FileSessionStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA0F;AAC1F,uCAAyB;AACzB,2CAA6B;AAG7B;;;;;GAKG;AACH,MAAa,gBAAgB;IAM3B,YAAY,WAAmB,EAAE,OAAO,GAAG,kBAAkB;QAJ7D,uEAAuE;QACvE,qEAAqE;QAC7D,cAAS,GAAiC,IAAI,CAAC;QAGrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,+BAAqB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAA2B;QACpC,0EAA0E;QAC1E,
|
|
1
|
+
{"version":3,"file":"FileSessionStore.js","sourceRoot":"","sources":["../../src/session/FileSessionStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA0F;AAC1F,uCAAyB;AACzB,2CAA6B;AAG7B;;;;;GAKG;AACH,MAAa,gBAAgB;IAM3B,YAAY,WAAmB,EAAE,OAAO,GAAG,kBAAkB;QAJ7D,uEAAuE;QACvE,qEAAqE;QAC7D,cAAS,GAAiC,IAAI,CAAC;QAGrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,+BAAqB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAA2B;QACpC,0EAA0E;QAC1E,2EAA2E;QAC3E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,qEAAqE;QACrE,uEAAuE;QACvE,0EAA0E;QAC1E,OAAO,CAAC,IAAI,CACV,2GAA2G,CAC5G,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AAtCD,4CAsCC"}
|
package/package.json
CHANGED