sauruspro-bail 5.0.0 → 5.0.2-alpha.spr.test

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +12 -9
  2. package/docs/CHANGELOG.md +35 -4
  3. package/docs/SPR.md +61 -24
  4. package/lib/Defaults/index.js +5 -1
  5. package/lib/Socket/dinonic-handler.d.ts +27 -0
  6. package/lib/Socket/dinonic-handler.js +882 -0
  7. package/lib/Socket/index.js +8 -1
  8. package/lib/Socket/messages-recv.js +26 -0
  9. package/lib/Socket/messages-send.js +25 -0
  10. package/lib/Utils/MessageBuilder.d.ts +215 -0
  11. package/lib/Utils/MessageBuilder.js +3991 -0
  12. package/lib/Utils/a2ui.d.ts +202 -0
  13. package/lib/Utils/a2ui.js +732 -0
  14. package/lib/Utils/airich-registry.js +3 -0
  15. package/lib/Utils/baileys-event-stream.js +58 -0
  16. package/lib/Utils/bot-signature.d.ts +22 -0
  17. package/lib/Utils/bot-signature.js +124 -0
  18. package/lib/Utils/dinonic-spr.d.ts +73 -0
  19. package/lib/Utils/dinonic-spr.js +739 -0
  20. package/lib/Utils/extras.d.ts +449 -0
  21. package/lib/Utils/extras.js +1377 -0
  22. package/lib/Utils/html-app.d.ts +39 -0
  23. package/lib/Utils/html-app.js +291 -0
  24. package/lib/Utils/index.js +14 -2
  25. package/lib/Utils/metaai.d.ts +438 -0
  26. package/lib/Utils/metaai.js +911 -0
  27. package/lib/Utils/modern-messages.d.ts +150 -0
  28. package/lib/Utils/modern-messages.js +496 -0
  29. package/lib/Utils/native-flow.d.ts +14 -0
  30. package/lib/Utils/native-flow.js +118 -0
  31. package/lib/Utils/newsletter-status.js +9 -53
  32. package/lib/Utils/payment-messages.d.ts +59 -0
  33. package/lib/Utils/payment-messages.js +156 -0
  34. package/lib/Utils/scheduled-message.d.ts +82 -0
  35. package/lib/Utils/scheduled-message.js +113 -0
  36. package/lib/Utils/status-stickers.d.ts +78 -0
  37. package/lib/Utils/status-stickers.js +261 -0
  38. package/lib/index.js +2 -2
  39. package/package.json +4 -4
  40. package/lib/Utils/dinolith-spr.d.ts +0 -26
  41. package/lib/Utils/dinolith-spr.js +0 -521
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  ![node](https://img.shields.io/badge/Node.js-20%2B-22c55e?style=for-the-badge)
12
12
  ![license](https://img.shields.io/badge/License-MIT-3b82f6?style=for-the-badge)
13
13
 
14
- **Owner: Saurus / Dinolith** · **Version: 5.0.0**
14
+ **Owner: Saurus / Dinonic** · **Version: 5.0.2-alpha.spr.test**
15
15
 
16
16
  </div>
17
17
 
@@ -22,12 +22,11 @@
22
22
  | | |
23
23
  |---|---|
24
24
  | Package | `sauruspro-bail` |
25
- | Version | `5.0.0` |
26
- | Owner | Saurus / Dinolith |
25
+ | Version | `5.0.2-alpha.spr.test` |
26
+ | Owner | Saurus / Dinonic |
27
27
  | Module type | ESM (`"type": "module"`) |
28
28
  | Runtime | Node.js >= 20 |
29
- | Telegram | [@lordsaurus](https://t.me/lordsaurus) · [@sauruspro_real](https://t.me/sauruspro_real) |
30
- | Channel | [@infobaileys](https://t.me/infobaileys) |
29
+ | Telegram | [@lordsaurus](https://t.me/lordsaurus) · [@lordsaurus](https://t.me/lordsaurus) |
31
30
 
32
31
  ## ✨ Features
33
32
 
@@ -101,9 +100,13 @@ Dokumentasi lengkap: **[docs/NEWSLETTER-STATUS.md](docs/NEWSLETTER-STATUS.md)**
101
100
  ```js
102
101
  await sock.sPR(jid, { conversation: 'Halo!' })
103
102
  // alias: sock.relayMessageSelective(jid, message, options)
103
+
104
+ // pesan privat per orang + foto profil
105
+ await sock.sPRPrivate(groupJid, targetJid, { publicText: 'Ada pesan', privateText: 'rahasia' })
106
+ await sock.sPRBroadcast(groupJid, { template: 'Halo {name}!' })
104
107
  ```
105
108
 
106
- Dokumentasi lengkap: **[docs/SPR.md](docs/SPR.md)** · SPR dibuat oleh **Nixel** (watermark di `dinolith-spr.js` tidak boleh dihapus).
109
+ Dokumentasi lengkap: **[docs/SPR.md](docs/SPR.md)**
107
110
 
108
111
  ## 📚 Dokumentasi
109
112
 
@@ -121,10 +124,10 @@ Library ini tidak berafiliasi dengan WhatsApp/Meta. Gunakan dengan bijak dan pat
121
124
 
122
125
  <div align="center">
123
126
 
124
- **Saurus / Dinolith**
127
+ **Saurus / Dinonic**
125
128
 
126
- Telegram [@lordsaurus](https://t.me/lordsaurus) · Channel [@infobaileys](https://t.me/infobaileys)
129
+ Telegram [@lordsaurus](https://t.me/lordsaurus)
127
130
 
128
- Made with ❤️ by Saurus / Dinolith
131
+ Made with ❤️ by Saurus / Dinonic
129
132
 
130
133
  </div>
package/docs/CHANGELOG.md CHANGED
@@ -1,21 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.0.2-alpha.spr.test
4
+ ### Changed
5
+ - `lib/Utils/dinonic-spr.js` ditulis ulang dari nol (engine baru, sender key sekali pakai). API `sPR` / `selectiveRelay` tetap kompatibel.
6
+
7
+ ### Added (diadaptasi dari plugin zapo-js, MIT)
8
+ - Opsi `personal` pada `sPR`: pesan khusus per orang.
9
+ - `sPRPrivate`, `sPRBroadcast` (`{name}` + mention + foto profil), `getSPRTargets`, `loadSPRAvatars`.
10
+ - Batas target 100 + hitung overflow, cache foto, budget/timeout, konkurensi.
11
+ - Reporting token memakai util resmi, tctoken memakai pengecekan expired.
12
+
13
+ ## 5.0.1
14
+ **Owner: Saurus / Dinonic**
15
+
16
+ ### Added (fitur tambahan, by Saurus)
17
+ - **A2UI / Bloks widget**: `a2uiText`, `a2uiButton`, `a2uiCard`, `a2uiTabs`, `a2uiModal`, dll, plus `sendA2UI`, `sendBloksWidget`.
18
+ - **DinonicBuilder** (`sock.DinonicBuilder`): Button, ButtonV2, Carousel, AIRich, Toolkit.
19
+ - **Extras / AIRich lengkap**, **HTML App** (`sendHtmlApp`, `sendHtmlDocument`), **Meta AI sections**, **Bot Signature**, **Native Flow**.
20
+ - **Modern Messages**: komentar, event invite, pertanyaan/jawaban, poll add option, scheduled call, undangan newsletter, status mention/reaction/audience.
21
+ - **Payment Messages** (payment reminder, split payment), **Scheduled Message** (conditional reveal), **Status Stickers** (musik, link, lokasi, pesan, channel).
22
+ - **Dinonic handler** (`Socket/dinonic-handler.js`): Interactive/Carousel, Buttons, Flow, Group Story di `sendMessage`, plus `sock.sendStatusWhatsApp` dan `sock.getName`.
23
+ - Opsi socket: `rejectCalls`, `callRejectMessage`, `autoReadStatus`, `autoReadMessages`.
24
+ - `baileys-event-stream`, file `.d.ts` untuk modul baru.
25
+
26
+ ### Changed
27
+ - Semua nama `dinolith` → `dinonic` (termasuk file `dinonic-spr.js`). Branding fitur tambahan diganti menjadi Saurus / Dinonic.
28
+ - **Newsletter Status** diganti dengan implementasi penuh (alias `prepareNewsletterStatusContent` dan `makeNewsletterStatusAttribution` tetap ada).
29
+ - Pesan `interactiveMessage`, `buttonsMessage`, `flowMessage`, `carouselMessage`/`cards` sekarang lewat handler Dinonic.
30
+
31
+ ### Tidak dibawa
32
+ - Telegram adapter dan bridge, auto-follow channel (sudah ada di `Socket/newsletter.js`), registrasi mobile, mobile client, `phonenumber-mcc` (dasar Baileys lama).
33
+
3
34
  ## 5.0.0
4
- **Owner: Saurus / Dinolith**
35
+ **Owner: Saurus / Dinonic**
5
36
 
6
37
  ### Added
7
38
  - **Newsletter Status**: `sendNewsletterStatus`, `sendNewsletterStatusReaction`, `revokeNewsletterStatus`, `getNewsletterStatuses`, `getNewsletterStatusUpdates`, plus `sock.newsletter.{sendStatus, reactToStatus, revokeStatus, fetchStatuses, fetchStatusUpdates}`.
8
- - File tipe `newsletter-status.d.ts` dan `dinolith-spr.d.ts`.
39
+ - File tipe `newsletter-status.d.ts` dan `dinonic-spr.d.ts`.
9
40
  - Dokumentasi di folder `docs/`.
10
41
  - Export `sPR` / `selectiveRelay` dari entry utama.
11
42
 
12
43
  ### Fixed
13
- - `dinolith-spr.js` mengimpor `encodeSignedDeviceIdentity` dari `generics.js` (tidak ada), sehingga seluruh paket gagal load. Sekarang dari `validate-connection.js`.
44
+ - `dinonic-spr.js` mengimpor `encodeSignedDeviceIdentity` dari `generics.js` (tidak ada), sehingga seluruh paket gagal load. Sekarang dari `validate-connection.js`.
14
45
  - SPR: disamakan penuh dengan SPR diezyxhao-baileys 1.4.0 (logika identik, hanya CJS → ESM), termasuk fallback `conn.user` saat `authState.creds.me` kosong.
15
46
  - `package.json`: `"type": "module"` ditambahkan (kode ESM), duplikat `lru-cache` di devDependencies dihapus.
16
47
 
17
48
  ### Changed
18
- - Versi `3.0.0` → `5.0.0`, author/owner `Saurus / Dinolith`.
49
+ - Versi `3.0.0` → `5.0.0`, author/owner `Saurus / Dinonic`.
19
50
  - README ditulis ulang, banner menampilkan versi & owner.
20
51
 
21
52
  ### Notes
package/docs/SPR.md CHANGED
@@ -1,51 +1,88 @@
1
- # 🎯 SPR (Selective Relay)
1
+ # 🎯 SPR (Selective & Private Relay)
2
2
 
3
- Kirim pesan dengan kontrol **device/JID mana yang menerima kunci asli**, sisanya menerima kunci palsu sehingga tidak bisa membuka pesan.
3
+ Kirim pesan dengan kontrol **siapa membaca apa**. Tiap device penerima masuk salah satu peran:
4
4
 
5
- > Modul SPR dibuat oleh **Nixel**. Watermark di `lib/Utils/dinolith-spr.js` wajib dipertahankan. Lisensi aslinya melarang reupload/resell sebagai produk mandiri dan mengaku sebagai karya sendiri.
5
+ | Peran | Yang diterima |
6
+ |---|---|
7
+ | `public` | pesan umum (menerima sender key sekali pakai) |
8
+ | `personal` | pesan khusus miliknya (enkripsi 1-lawan-1), tanpa pesan umum |
9
+ | `hidden` | tidak menerima apa-apa |
10
+
11
+ Sender key dibuat baru untuk setiap pesan dan tidak disimpan, jadi device yang tidak diberi kunci tidak bisa membuka pesan meski pernah menerima pesan lain dari bot.
12
+
13
+ ## API
6
14
 
7
15
  ```js
8
- await sock.sPR(jid, message, options)
9
- // alias
10
- await sock.relayMessageSelective(jid, message, options)
16
+ await sock.sPR(jid, message, options) // alias: sock.relayMessageSelective
17
+ await sock.sPRPrivate(groupJid, targetJid, { publicText, privateText })
18
+ await sock.sPRBroadcast(groupJid, { template })
19
+ await sock.getSPRTargets(groupJid, { limit })
11
20
  ```
12
21
 
13
- Juga bisa di-import: `import { sPR, selectiveRelay } from 'sauruspro-bail'`
14
- (`sPR(conn, jid, message, options)`, parameter pertama adalah socket).
22
+ Bisa juga di-import: `import { sPR, sPRPrivate, sPRBroadcast } from 'sauruspro-bail'` (parameter pertama adalah socket).
15
23
 
16
- ## Options
24
+ ## sPR options
17
25
 
18
26
  | Option | Default | Keterangan |
19
27
  |---|---|---|
20
- | `mode` | `"exclude"` | `exclude`: target **tidak** menerima. `include`: **hanya** target yang menerima |
21
- | `target` | `[]` | Daftar JID (PN atau LID) |
28
+ | `mode` | `"exclude"` | `exclude`: target **tidak** menerima pesan publik. `include`: **hanya** target |
29
+ | `target` | `[]` | Daftar JID (PN atau LID, alias dicocokkan otomatis) |
30
+ | `personal` | - | Pesan khusus per orang: `{ jid: message }`, `Map`, atau `({jid,user}) => message` |
22
31
  | `targetMe` | - | `true/false` memaksa device milik sendiri menerima/tidak |
23
- | `deviceMode` | `"all"` | `all` / `primary` (device 0) / `secondary` (device lain) |
32
+ | `deviceMode` | `"all"` | `all` / `primary` (device 0) / `secondary` |
24
33
  | `hideDecryptFail` | `true` | Sembunyikan placeholder gagal-dekripsi |
25
34
  | `messageId` | auto | ID pesan kustom |
26
35
  | `additionalAttributes` / `additionalNodes` | - | Atribut/node tambahan pada stanza |
27
36
  | `useUserDevicesCache` / `useCachedGroupMetadata` | - | Pakai cache |
28
37
  | `statusJidList` | - | Untuk status broadcast |
29
38
 
39
+ `message` boleh `null` bila semua penerima punya pesan `personal`.
40
+
30
41
  ## Contoh
31
42
 
32
43
  ```js
33
- // Kirim ke grup, tapi sembunyikan dari 1 orang
44
+ // Sembunyikan dari 1 orang
34
45
  await sock.sPR(groupJid, { conversation: 'rahasia' }, {
35
- mode: 'exclude',
36
- target: ['6281234567890@s.whatsapp.net']
46
+ mode: 'exclude', target: ['6281234567890@s.whatsapp.net']
47
+ })
48
+
49
+ // Pesan umum untuk semua, pesan lain khusus untuk A
50
+ await sock.sPR(groupJid, { conversation: 'info umum' }, {
51
+ personal: { '6281234567890@s.whatsapp.net': { conversation: 'info khusus kamu' } }
52
+ })
53
+ ```
54
+
55
+ ## sPRPrivate (setara `!spr publik | privat`)
56
+
57
+ Anggota lain melihat `publicText`, `targetJid` melihat `privateText` dengan foto profilnya sendiri.
58
+
59
+ ```js
60
+ await sock.sPRPrivate(groupJid, targetJid, {
61
+ publicText: 'Pesan ini memiliki isi khusus untuk beberapa penerima.',
62
+ privateText: 'rahasia buat kamu',
63
+ avatar: true
37
64
  })
65
+ // -> { id, avatar }
66
+ ```
38
67
 
39
- // Hanya kirim ke 1 orang di grup
40
- await sock.sPR(groupJid, { conversation: 'khusus kamu' }, {
41
- mode: 'include',
42
- target: ['6281234567890@s.whatsapp.net']
68
+ ## sPRBroadcast (setara `!sbpr` / `!sbrp`)
69
+
70
+ Tiap anggota menerima pesan sendiri: `{name}` menjadi @mention orang itu, plus foto profilnya.
71
+ Anggota di luar `limit` (default 100) melihat `publicText`. Bot tidak dihitung, admin didahulukan.
72
+
73
+ ```js
74
+ await sock.sPRBroadcast(groupJid, {
75
+ template: 'Halo {name}, ada pesan untukmu.',
76
+ limit: 100,
77
+ avatar: true
43
78
  })
79
+ // -> { id, targets, total, overflow, withAvatar }
44
80
  ```
45
81
 
46
- ## Perubahan v5.0.0
82
+ Foto profil diambil konkuren (10 sekaligus) dengan budget 10 dtk dan batas keras 14 dtk; gagal/lambat otomatis jatuh ke pesan teks. Hasil di-cache (200 entri).
83
+
84
+ ## Catatan
47
85
 
48
- - `lib/Utils/dinolith-spr.js` diganti dengan port langsung dari `spr.js` diezyxhao-baileys 1.4.0. Logika **identik**; yang berubah hanya sintaks modul (CJS → ESM).
49
- - Termasuk fallback `me.id` / `me.lid` ke `conn.user` (tidak crash saat `authState.creds.me` kosong).
50
- - `sPR` & `selectiveRelay` diexport dari entry utama.
51
- - `encodeSignedDeviceIdentity` diimpor dari `validate-connection.js` (sebelumnya salah dari `generics.js` sehingga paket gagal load).
86
+ - Penerima `personal` hanya melihat pesan personalnya; pesan umum tidak dikirim ke mereka.
87
+ - Fitur privat/broadcast diadaptasi dari plugin zapo-js (MIT).
88
+ - Perubahan v5.0.2-alpha.spr.test: engine ditulis ulang (kode baru), tambah `personal`, `sPRPrivate`, `sPRBroadcast`, `getSPRTargets`, `loadSPRAvatars`. API `sPR`/`selectiveRelay` lama tetap kompatibel.
@@ -81,7 +81,11 @@ export const DEFAULT_CONNECTION_CONFIG = {
81
81
  countryCode: 'US',
82
82
  getMessage: async () => undefined,
83
83
  cachedGroupMetadata: async () => undefined,
84
- makeSignalRepository: makeLibSignalRepository
84
+ makeSignalRepository: makeLibSignalRepository,
85
+ rejectCalls: false,
86
+ callRejectMessage: undefined,
87
+ autoReadStatus: false,
88
+ autoReadMessages: false
85
89
  };
86
90
  export const MEDIA_PATH_MAP = {
87
91
  image: '/mms/image',
@@ -0,0 +1,27 @@
1
+ export declare class DinonicHandler {
2
+ constructor(utils: any, waUploadToServer: any, relayMessageFn: any, config: any, sock: any);
3
+ utils: any;
4
+ relayMessage: any;
5
+ waUploadToServer: any;
6
+ config: any;
7
+ sock: any;
8
+ bail: {
9
+ generateWAMessageContent: any;
10
+ generateMessageID: any;
11
+ getContentType: (msg: any) => string;
12
+ };
13
+ contactCache: Map<string, any>;
14
+ detectType(content: any): 'PAYMENT' | 'PRODUCT' | 'INTERACTIVE' | 'ALBUM' | 'EVENT' | 'POLL_RESULT' | 'GROUP_STORY' | 'FLOW' | null;
15
+ getName(jid: string): Promise<string>;
16
+ handlePayment(content: any, quoted?: any): Promise<any>;
17
+ handleProduct(content: any, jid: string, quoted?: any): Promise<any>;
18
+ handleInteractive(content: any, jid: string, quoted?: any): Promise<any>;
19
+ handleAlbum(content: any, jid: string, quoted?: any): Promise<any>;
20
+ handleEvent(content: any, jid: string, quoted?: any): Promise<any>;
21
+ handlePollResult(content: any, jid: string, quoted?: any): Promise<any>;
22
+ handleGroupStory(content: any, jid: string, quoted?: any): Promise<any>;
23
+ handleFlow(content: any, jid: string, quoted?: any): Promise<any>;
24
+ sendStatusWhatsApp(content: any, jids?: string[]): Promise<any>;
25
+ }
26
+
27
+ export default DinonicHandler;