@pontalabs/baileys 1.0.10 → 1.1.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 +96 -85
- package/lib/Defaults/connection.js +39 -0
- package/lib/Defaults/constants.js +50 -0
- package/lib/Defaults/history.js +13 -0
- package/lib/Defaults/index.js +36 -151
- package/lib/Defaults/media.js +43 -0
- package/lib/Defaults/phonenumber-mcc.json +221 -221
- package/lib/Defaults/prefix.js +12 -0
- package/lib/Defaults/vialeys-version.json +7 -0
- package/lib/Signal/Group/ciphertext-message.js +10 -15
- package/lib/Signal/Group/group-session-builder.js +34 -60
- package/lib/Signal/Group/group_cipher.js +69 -76
- package/lib/Signal/Group/index.js +41 -60
- package/lib/Signal/Group/keyhelper.js +12 -57
- package/lib/Signal/Group/sender-chain-key.js +20 -33
- package/lib/Signal/Group/sender-key-distribution-message.js +43 -48
- package/lib/Signal/Group/sender-key-message.js +58 -53
- package/lib/Signal/Group/sender-key-name.js +21 -31
- package/lib/Signal/Group/sender-key-record.js +21 -34
- package/lib/Signal/Group/sender-key-state.js +59 -106
- package/lib/Signal/Group/sender-message-key.js +16 -21
- package/lib/Signal/libsignal.js +282 -203
- package/lib/Signal/lid-mapping.js +164 -184
- package/lib/Socket/Client/index.js +31 -22
- package/lib/Socket/Client/types.js +9 -15
- package/lib/Socket/Client/websocket.js +42 -37
- package/lib/Socket/business.js +212 -336
- package/lib/Socket/chats.js +696 -940
- package/lib/Socket/community.js +454 -369
- package/lib/Socket/groups.js +278 -280
- package/lib/Socket/index.js +9 -21
- package/lib/Socket/messages-recv.js +1027 -1570
- package/lib/Socket/messages-send.js +1180 -1136
- package/lib/Socket/mex.js +59 -0
- package/lib/Socket/newsletter.js +193 -251
- package/lib/Socket/socket.js +758 -898
- package/lib/Store/index.js +35 -24
- package/lib/Store/make-cache-manager-store.js +53 -66
- package/lib/Store/make-in-memory-store.js +319 -325
- package/lib/Store/make-ordered-dictionary.js +49 -57
- package/lib/Store/object-repository.js +10 -15
- package/lib/Types/Auth.js +2 -3
- package/lib/Types/Bussines.js +2 -3
- package/lib/Types/Call.js +2 -3
- package/lib/Types/Chat.js +10 -9
- package/lib/Types/Contact.js +2 -3
- package/lib/Types/Events.js +2 -3
- package/lib/Types/GroupMetadata.js +2 -3
- package/lib/Types/Label.js +6 -12
- package/lib/Types/LabelAssociation.js +4 -13
- package/lib/Types/Message.js +10 -18
- package/lib/Types/MexUpdates.js +15 -18
- package/lib/Types/Newsletter.js +26 -34
- package/lib/Types/Product.js +2 -3
- package/lib/Types/Signal.js +2 -3
- package/lib/Types/Socket.js +2 -3
- package/lib/Types/State.js +8 -13
- package/lib/Types/USync.js +2 -3
- package/lib/Types/index.js +49 -40
- package/lib/Utils/auth-utils.js +190 -495
- package/lib/Utils/browser-utils.js +29 -0
- package/lib/Utils/business.js +177 -199
- package/lib/Utils/chat-utils.js +711 -624
- package/lib/Utils/crypto.js +116 -161
- package/lib/Utils/decode-wa-message.js +225 -321
- package/lib/Utils/event-buffer.js +363 -405
- package/lib/Utils/generics.js +318 -472
- package/lib/Utils/history.js +72 -76
- package/lib/Utils/index.js +49 -41
- package/lib/Utils/link-preview.js +59 -103
- package/lib/Utils/logger.js +4 -7
- package/lib/Utils/lt-hash.js +29 -42
- package/lib/Utils/make-mutex.js +26 -42
- package/lib/Utils/message-retry-manager.js +134 -160
- package/lib/Utils/messages-media.js +665 -731
- package/lib/Utils/messages.js +518 -1
- package/lib/Utils/noise-handler.js +127 -125
- package/lib/Utils/pre-key-manager.js +86 -0
- package/lib/Utils/process-message.js +739 -351
- package/lib/Utils/signal.js +146 -129
- package/lib/Utils/use-multi-file-auth-state.js +68 -135
- package/lib/Utils/validate-connection.js +183 -142
- package/lib/Utils/vialeys-event-stream.js +41 -0
- package/lib/WABinary/constants.js +1281 -1289
- package/lib/WABinary/decode.js +145 -200
- package/lib/WABinary/encode.js +149 -202
- package/lib/WABinary/generic-utils.js +79 -97
- package/lib/WABinary/index.js +36 -25
- package/lib/WABinary/jid-utils.js +91 -123
- package/lib/WABinary/types.js +2 -3
- package/lib/WAM/BinaryInfo.js +8 -13
- package/lib/WAM/constants.js +16584 -11464
- package/lib/WAM/encode.js +117 -133
- package/lib/WAM/index.js +34 -23
- package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +62 -69
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +11 -25
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +32 -44
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +13 -23
- package/lib/WAUSync/Protocols/USyncLIDProtocol.js +24 -38
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +17 -31
- package/lib/WAUSync/Protocols/index.js +37 -26
- package/lib/WAUSync/USyncQuery.js +66 -66
- package/lib/WAUSync/USyncUser.js +13 -18
- package/lib/WAUSync/index.js +34 -23
- package/lib/index.js +95 -28
- package/package.json +4 -3
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Signal/Group/queue-job.d.ts +0 -1
- package/lib/Signal/Group/queue-job.js +0 -57
- package/lib/Socket/usync.d.ts +0 -37
- package/lib/Socket/usync.js +0 -83
- package/lib/Utils/baileys-event-stream.d.ts +0 -18
- package/lib/Utils/baileys-event-stream.js +0 -70
- package/lib/Utils/signal-housekeeping.d.ts +0 -19
- package/lib/Utils/signal-housekeeping.js +0 -73
- package/lib/Utils/use-mongo-file-auth-state.d.ts +0 -6
- package/lib/Utils/use-mongo-file-auth-state.js +0 -84
- package/lib/Utils/use-single-file-auth-state.d.ts +0 -13
- package/lib/Utils/use-single-file-auth-state.js +0 -80
package/README.md
CHANGED
|
@@ -50,61 +50,14 @@
|
|
|
50
50
|
- [Groups](#-groups)
|
|
51
51
|
- [Privacy](#-privacy)
|
|
52
52
|
- [Advanced](#-advanced)
|
|
53
|
-
- [API Reference](#-api-reference)
|
|
54
53
|
- [Contributing](#-contributing)
|
|
55
54
|
- [License](#-license)
|
|
56
55
|
- [Disclaimer](#-disclaimer)
|
|
57
56
|
|
|
58
57
|
---
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
This fork builds on top of the original Baileys library with **targeted, production-ready patches** designed for modern bot development and AI integrations.
|
|
63
|
-
|
|
64
|
-
| # | Patch | Description |
|
|
65
|
-
|:---:|:---|:---|
|
|
66
|
-
| 01 | 🤖 **Rich Text** | AI-styled markdown text via `richText` |
|
|
67
|
-
| 02 | 💻 **Rich Code Block** | Syntax-highlighted code blocks with language support |
|
|
68
|
-
| 03 | 📊 **Rich Table** | Structured data tables with headers and rows |
|
|
69
|
-
| 04 | 🖼️ **Rich Images** | Image grid / carousel for AI-generated visuals |
|
|
70
|
-
| 05 | 🎥 **Rich Video** | Video embeds rendered as AI animated media |
|
|
71
|
-
| 06 | 💡 **Rich Suggestions** | Follow-up prompt pills (like native AI chat) |
|
|
72
|
-
| 07 | 🔣 **Rich LaTeX** | Math formula rendering via `GenAILatexItem` |
|
|
73
|
-
| 08 | 🛍️ **Rich Product** | Product cards with horizontal scroll carousel |
|
|
74
|
-
| 09 | 📰 **Rich Post** | Post cards with author metadata and carousel |
|
|
75
|
-
| 10 | 🎬 **Rich Reels** | Reels carousel with engagement stats |
|
|
76
|
-
| 11 | 🔍 **Rich Sources** | Search result source list with favicons |
|
|
77
|
-
| 12 | 📌 **Rich Tip & Footer** | Metadata blocks for branding and disclaimers |
|
|
78
|
-
| 13 | 🔀 **Rich Mixed** | Combine all rich types freely in `items` arrays |
|
|
79
|
-
| 14 | 🔗 **Rich Response** | Full array mode with inline citations |
|
|
80
|
-
| 15 | 🪪 **Custom Message ID** | All outgoing IDs prefixed with `PONTASOCKETS` |
|
|
81
|
-
| 16 | 🐛 **LID Bug Fixes** | Full resolution for participant, sender, and admin LID issues |
|
|
82
|
-
| 17 | 📦 **makeInMemoryStore Fix** | Stable session handling and store behavior |
|
|
83
|
-
| 18 | 📣 **Newsletter Support** | Full channel/newsletter create, follow, react, and admin tools |
|
|
84
|
-
| 19 | 🤖 **AI Logo Message** | Bot avatar support in message context |
|
|
85
|
-
| 20 | 📊 **Logger Buffer Clear** | Prevents memory buildup from log buffers |
|
|
86
|
-
| 21 | 🔁 **LID → JID Conversion** | Auto-converts LID mentions, sender, and member LIDs to JID |
|
|
87
|
-
| 22 | 📍 **Location + Buttons** | Location messages with native list menu and extra buttons |
|
|
88
|
-
| 23 | 📢 **Group Status** | Styled group status (text/media) with audience control |
|
|
89
|
-
| 24 | 📦 **Order Status** | Interactive order tracking cards with native `order_status` flow |
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## 🌟 Features
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
✔ Multi-Device Support ✔ End-to-End Encryption
|
|
97
|
-
✔ Real-Time Messaging ✔ Session Persistence
|
|
98
|
-
✔ Rich AI Bot Messages ✔ Newsletter Management
|
|
99
|
-
✔ Group & Channel Management ✔ Inline Citations & LaTeX
|
|
100
|
-
✔ Poll, Album, Carousel ✔ LID → JID Auto-Conversion
|
|
101
|
-
✔ Product / Post / Reels Cards ✔ Math Formula Rendering
|
|
102
|
-
✔ Location + Button Messages ✔ Group Status & Order Status
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## 📥 Installation
|
|
59
|
+
<details>
|
|
60
|
+
<summary><h2>📥 Installation</h2></summary>
|
|
108
61
|
|
|
109
62
|
```bash
|
|
110
63
|
# npm
|
|
@@ -114,9 +67,12 @@ npm install @pontalabs/baileys
|
|
|
114
67
|
yarn add @pontalabs/baileys
|
|
115
68
|
```
|
|
116
69
|
|
|
70
|
+
</details>
|
|
71
|
+
|
|
117
72
|
---
|
|
118
73
|
|
|
119
|
-
|
|
74
|
+
<details>
|
|
75
|
+
<summary><h2>🚀 Quick Start</h2></summary>
|
|
120
76
|
|
|
121
77
|
```js
|
|
122
78
|
import makeWASocket, { useMultiFileAuthState } from '@pontalabs/baileys'
|
|
@@ -139,6 +95,8 @@ async function start() {
|
|
|
139
95
|
start()
|
|
140
96
|
```
|
|
141
97
|
|
|
98
|
+
</details>
|
|
99
|
+
|
|
142
100
|
---
|
|
143
101
|
|
|
144
102
|
## 📖 Documentation
|
|
@@ -169,7 +127,7 @@ if (!sock.authState.creds.registered) {
|
|
|
169
127
|
const number = '62xxxx'
|
|
170
128
|
const code = await sock.requestPairingCode(number)
|
|
171
129
|
// Or custom 8-digit code:
|
|
172
|
-
const customCode = await sock.requestPairingCode(number, '
|
|
130
|
+
const customCode = await sock.requestPairingCode(number, 'PontaLabs')
|
|
173
131
|
console.log(code)
|
|
174
132
|
}
|
|
175
133
|
```
|
|
@@ -349,7 +307,7 @@ await sock.sendAlbumMessage(jid, [
|
|
|
349
307
|
await sock.sendMessage(jid, {
|
|
350
308
|
text: 'Choose an option:',
|
|
351
309
|
title: 'Title',
|
|
352
|
-
footer: '©
|
|
310
|
+
footer: '© PontaLabs Baileys',
|
|
353
311
|
interactive: [{
|
|
354
312
|
name: 'quick_reply',
|
|
355
313
|
buttonParamsJson: JSON.stringify({ display_text: 'Quick Reply', id: '123' })
|
|
@@ -360,12 +318,12 @@ await sock.sendMessage(jid, {
|
|
|
360
318
|
await sock.sendMessage(jid, {
|
|
361
319
|
text: 'Check out our collection!',
|
|
362
320
|
title: 'Catalog',
|
|
363
|
-
footer: '©
|
|
321
|
+
footer: '© PontaLabs Baileys',
|
|
364
322
|
cards: [{
|
|
365
323
|
image: { url: 'https://example.com/image.jpg' },
|
|
366
324
|
title: 'Product Name',
|
|
367
325
|
body: 'Product description',
|
|
368
|
-
footer: '©
|
|
326
|
+
footer: '© PontaLabs',
|
|
369
327
|
buttons: [{
|
|
370
328
|
name: 'quick_reply',
|
|
371
329
|
buttonParamsJson: JSON.stringify({ display_text: 'Select', id: '1' })
|
|
@@ -375,6 +333,57 @@ await sock.sendMessage(jid, {
|
|
|
375
333
|
```
|
|
376
334
|
</details>
|
|
377
335
|
|
|
336
|
+
<details>
|
|
337
|
+
<summary><b>🔩 Raw / Legacy Buttons</b></summary>
|
|
338
|
+
|
|
339
|
+
> Varian tombol raw/proto WhatsApp mentah — lebih fleksibel, tapi kamu yang susun strukturnya sendiri.
|
|
340
|
+
|
|
341
|
+
#### `buttonsMessage`
|
|
342
|
+
|
|
343
|
+
Kirim objek `buttonsMessage` proto WhatsApp mentah — thumbnail lokasi di dalamnya otomatis diproses kalau berupa Buffer/URL/path.
|
|
344
|
+
|
|
345
|
+
```js
|
|
346
|
+
await sock.sendMessage(jid, {
|
|
347
|
+
buttonsMessage: {
|
|
348
|
+
contentText: 'Pilih salah satu:',
|
|
349
|
+
footerText: '© PontaCT',
|
|
350
|
+
buttons: [
|
|
351
|
+
{ buttonId: 'a', buttonText: { displayText: 'Opsi A' }, type: 1 },
|
|
352
|
+
{ buttonId: 'b', buttonText: { displayText: 'Opsi B' }, type: 1 }
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
}, { quoted: message })
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
#### `templateButtons`
|
|
359
|
+
|
|
360
|
+
```js
|
|
361
|
+
await sock.sendMessage(jid, {
|
|
362
|
+
text: 'Butuh bantuan?',
|
|
363
|
+
footer: '© PontaCT',
|
|
364
|
+
templateButtons: [
|
|
365
|
+
{ index: 1, urlButton: { displayText: 'Kunjungi Website', url: 'https://example.com' } },
|
|
366
|
+
{ index: 2, callButton: { displayText: 'Telepon', phoneNumber: '+6281234567890' } }
|
|
367
|
+
]
|
|
368
|
+
}, { quoted: message })
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
#### `interactiveButtons`
|
|
372
|
+
|
|
373
|
+
```js
|
|
374
|
+
await sock.sendMessage(jid, {
|
|
375
|
+
title: 'Menu Utama',
|
|
376
|
+
subtitle: 'Silakan pilih',
|
|
377
|
+
text: 'Ada yang bisa dibantu?',
|
|
378
|
+
footer: '© PontaCT',
|
|
379
|
+
interactiveButtons: [
|
|
380
|
+
{ name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Mulai', id: 'start' }) }
|
|
381
|
+
]
|
|
382
|
+
}, { quoted: message })
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
</details>
|
|
386
|
+
|
|
378
387
|
<details>
|
|
379
388
|
<summary><b>📌 Pin & Keep</b></summary>
|
|
380
389
|
|
|
@@ -1372,6 +1381,22 @@ await sock.sendMessage(jid, {
|
|
|
1372
1381
|
|
|
1373
1382
|
---
|
|
1374
1383
|
|
|
1384
|
+
<details>
|
|
1385
|
+
<summary><b>🔗 Legacy Rich Message (Inline Parse)</b></summary>
|
|
1386
|
+
|
|
1387
|
+
> Mode teks kaya versi lama: tulis kutipan/link/LaTeX langsung di dalam teks pakai sintaks `[teks](url)` untuk link, `[](url)` untuk sitasi, dan `[rumus|w|h](rumus)` untuk LaTeX — otomatis di-parse jadi entity inline.
|
|
1388
|
+
|
|
1389
|
+
```js
|
|
1390
|
+
await sock.sendMessage(jid, {
|
|
1391
|
+
richMessage: {
|
|
1392
|
+
text: 'Menurut [Wikipedia](https://wikipedia.org/wiki/Node.js), Node.js dibuat oleh Ryan Dahl.'
|
|
1393
|
+
}
|
|
1394
|
+
}, { quoted: message })
|
|
1395
|
+
```
|
|
1396
|
+
</details>
|
|
1397
|
+
|
|
1398
|
+
---
|
|
1399
|
+
|
|
1375
1400
|
## 📣 Newsletter
|
|
1376
1401
|
|
|
1377
1402
|
<details>
|
|
@@ -1603,38 +1628,24 @@ sock.ws.on('CB:edge_routing', (node) => {
|
|
|
1603
1628
|
```
|
|
1604
1629
|
</details>
|
|
1605
1630
|
|
|
1606
|
-
|
|
1631
|
+
<details>
|
|
1632
|
+
<summary><b>📅 Event RSVP Utilities</b></summary>
|
|
1607
1633
|
|
|
1608
|
-
|
|
1634
|
+
> Dua fungsi util untuk memproses respons RSVP (`GOING` / `NOT_GOING` / `MAYBE`) pada pesan event kalender secara lokal, tanpa perlu ambil ulang dari server.
|
|
1609
1635
|
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
| `sock.newsletterCreate(name, desc, picture)` | Create a newsletter |
|
|
1624
|
-
| `sock.newsletterFollow(jid)` | Follow a newsletter |
|
|
1625
|
-
| `sock.newsletterUnfollow(jid)` | Unfollow a newsletter |
|
|
1626
|
-
| `sock.newsletterMute(jid)` | Mute a newsletter |
|
|
1627
|
-
| `sock.newsletterUnmute(jid)` | Unmute a newsletter |
|
|
1628
|
-
| `sock.newsletterReactMessage(jid, id, emoji)` | React to a newsletter post |
|
|
1629
|
-
| `sock.updateProfilePicture(jid, content)` | Update profile picture |
|
|
1630
|
-
| `sock.removeProfilePicture(jid)` | Remove profile picture |
|
|
1631
|
-
| `sock.updateBlockStatus(jid, status)` | Block or unblock a user |
|
|
1632
|
-
| `sock.updateLastSeenPrivacy(value)` | Control last seen visibility |
|
|
1633
|
-
| `sock.updateOnlinePrivacy(value)` | Control online status visibility |
|
|
1634
|
-
| `sock.updateProfilePicturePrivacy(value)` | Control profile picture visibility |
|
|
1635
|
-
| `sock.updateReadReceiptsPrivacy(value)` | Control read receipts |
|
|
1636
|
-
| `sock.updateGroupsAddPrivacy(value)` | Control who can add you to groups |
|
|
1637
|
-
| `sock.updateDefaultDisappearingMode(seconds)` | Set default disappearing messages |
|
|
1636
|
+
```js
|
|
1637
|
+
const { updateMessageWithEventResponse, getAggregateResponsesInEventMessage } = require('@pontalabs/baileys')
|
|
1638
|
+
|
|
1639
|
+
// terapkan RSVP baru ke object event message yang sudah kamu simpan
|
|
1640
|
+
updateMessageWithEventResponse(eventMsg, {
|
|
1641
|
+
eventResponseMessageKey: update.key,
|
|
1642
|
+
response: { response: 1 } // 1 = GOING
|
|
1643
|
+
})
|
|
1644
|
+
|
|
1645
|
+
// rekap semua RSVP jadi { GOING: [...], NOT_GOING: [...], MAYBE: [...] }
|
|
1646
|
+
const summary = getAggregateResponsesInEventMessage(eventMsg, sock.user.lid)
|
|
1647
|
+
```
|
|
1648
|
+
</details>
|
|
1638
1649
|
|
|
1639
1650
|
---
|
|
1640
1651
|
|
|
@@ -1650,7 +1661,7 @@ sock.ws.on('CB:edge_routing', (node) => {
|
|
|
1650
1661
|
|
|
1651
1662
|
## 🤝 Contributing
|
|
1652
1663
|
|
|
1653
|
-
1. **Fork**
|
|
1664
|
+
1. **Fork** repository
|
|
1654
1665
|
2. Create a feature branch: `git checkout -b feat/your-feature`
|
|
1655
1666
|
3. Commit your changes: `git commit -m "feat: add something awesome"`
|
|
1656
1667
|
4. Push to your branch: `git push origin feat/your-feature`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const { Browsers: Browsers } = require("../Utils");
|
|
4
|
+
const { default: logger } = require("../Utils/logger");
|
|
5
|
+
const { makeLibSignalRepository: makeLibSignalRepository } = require("../Signal/libsignal");
|
|
6
|
+
const { version: version } = require("./vialeys-version.json");
|
|
7
|
+
const DEFAULT_CONNECTION_CONFIG = {
|
|
8
|
+
version: version,
|
|
9
|
+
browser: Browsers.windows("Chrome"),
|
|
10
|
+
waWebSocketUrl: "wss://web.whatsapp.com/ws/chat",
|
|
11
|
+
connectTimeoutMs: 2e4,
|
|
12
|
+
keepAliveIntervalMs: 3e4,
|
|
13
|
+
logger: logger.child({ class: "baileys" }),
|
|
14
|
+
printQRInTerminal: false,
|
|
15
|
+
emitOwnEvents: true,
|
|
16
|
+
defaultQueryTimeoutMs: 6e4,
|
|
17
|
+
customUploadHosts: [],
|
|
18
|
+
retryRequestDelayMs: 250,
|
|
19
|
+
maxMsgRetryCount: 5,
|
|
20
|
+
fireInitQueries: true,
|
|
21
|
+
auth: undefined,
|
|
22
|
+
markOnlineOnConnect: true,
|
|
23
|
+
syncFullHistory: false,
|
|
24
|
+
patchMessageBeforeSending: (msg) => msg,
|
|
25
|
+
shouldSyncHistoryMessage: () => true,
|
|
26
|
+
shouldIgnoreJid: () => false,
|
|
27
|
+
linkPreviewImageThumbnailWidth: 192,
|
|
28
|
+
transactionOpts: { maxCommitRetries: 10, delayBetweenTriesMs: 3e3 },
|
|
29
|
+
generateHighQualityLinkPreview: false,
|
|
30
|
+
enableAutoSessionRecreation: true,
|
|
31
|
+
enableRecentMessageCache: true,
|
|
32
|
+
options: {},
|
|
33
|
+
appStateMacVerification: { patch: false, snapshot: false },
|
|
34
|
+
countryCode: "US",
|
|
35
|
+
getMessage: async () => undefined,
|
|
36
|
+
cachedGroupMetadata: async () => undefined,
|
|
37
|
+
makeSignalRepository: makeLibSignalRepository,
|
|
38
|
+
};
|
|
39
|
+
module.exports = { DEFAULT_CONNECTION_CONFIG: DEFAULT_CONNECTION_CONFIG };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const UNAUTHORIZED_CODES = [401, 403, 419];
|
|
4
|
+
const PHONENUMBER_MCC = require("./phonenumber-mcc.json");
|
|
5
|
+
const DEFAULT_ORIGIN = "https://web.whatsapp.com";
|
|
6
|
+
const PHONE_CONNECTION_CB = "CB:Pong";
|
|
7
|
+
const WA_ADV_ACCOUNT_SIG_PREFIX = Buffer.from([6, 0]);
|
|
8
|
+
const WA_ADV_DEVICE_SIG_PREFIX = Buffer.from([6, 1]);
|
|
9
|
+
const WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX = Buffer.from([6, 5]);
|
|
10
|
+
const WA_ADV_HOSTED_DEVICE_SIG_PREFIX = Buffer.from([6, 6]);
|
|
11
|
+
const WA_DEFAULT_EPHEMERAL = 7 * 24 * 60 * 60;
|
|
12
|
+
const NOISE_MODE = "Noise_XX_25519_AESGCM_SHA256\0\0\0\0";
|
|
13
|
+
const DICT_VERSION = 3;
|
|
14
|
+
const KEY_BUNDLE_TYPE = Buffer.from([5]);
|
|
15
|
+
const NOISE_WA_HEADER = Buffer.from([87, 65, 6, DICT_VERSION]);
|
|
16
|
+
const URL_REGEX =
|
|
17
|
+
/https:\/\/(?![^:@\/\s]+:[^:@\/\s]+@)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?/g;
|
|
18
|
+
const MIN_PREKEY_COUNT = 5;
|
|
19
|
+
const INITIAL_PREKEY_COUNT = 812;
|
|
20
|
+
const UPLOAD_TIMEOUT = 3e4;
|
|
21
|
+
const MIN_UPLOAD_INTERVAL = 5e3;
|
|
22
|
+
const WA_CERT_DETAILS = { SERIAL: 0 };
|
|
23
|
+
const DEFAULT_CACHE_TTLS = {
|
|
24
|
+
SIGNAL_STORE: 5 * 60,
|
|
25
|
+
MSG_RETRY: 60 * 60,
|
|
26
|
+
CALL_OFFER: 5 * 60,
|
|
27
|
+
USER_DEVICES: 5 * 60,
|
|
28
|
+
};
|
|
29
|
+
module.exports = {
|
|
30
|
+
UNAUTHORIZED_CODES: UNAUTHORIZED_CODES,
|
|
31
|
+
PHONENUMBER_MCC: PHONENUMBER_MCC,
|
|
32
|
+
DEFAULT_ORIGIN: DEFAULT_ORIGIN,
|
|
33
|
+
PHONE_CONNECTION_CB: PHONE_CONNECTION_CB,
|
|
34
|
+
WA_ADV_ACCOUNT_SIG_PREFIX: WA_ADV_ACCOUNT_SIG_PREFIX,
|
|
35
|
+
WA_ADV_DEVICE_SIG_PREFIX: WA_ADV_DEVICE_SIG_PREFIX,
|
|
36
|
+
WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX: WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX,
|
|
37
|
+
WA_ADV_HOSTED_DEVICE_SIG_PREFIX: WA_ADV_HOSTED_DEVICE_SIG_PREFIX,
|
|
38
|
+
WA_DEFAULT_EPHEMERAL: WA_DEFAULT_EPHEMERAL,
|
|
39
|
+
NOISE_MODE: NOISE_MODE,
|
|
40
|
+
DICT_VERSION: DICT_VERSION,
|
|
41
|
+
KEY_BUNDLE_TYPE: KEY_BUNDLE_TYPE,
|
|
42
|
+
NOISE_WA_HEADER: NOISE_WA_HEADER,
|
|
43
|
+
URL_REGEX: URL_REGEX,
|
|
44
|
+
MIN_PREKEY_COUNT: MIN_PREKEY_COUNT,
|
|
45
|
+
MIN_UPLOAD_INTERVAL: MIN_UPLOAD_INTERVAL,
|
|
46
|
+
INITIAL_PREKEY_COUNT: INITIAL_PREKEY_COUNT,
|
|
47
|
+
UPLOAD_TIMEOUT: UPLOAD_TIMEOUT,
|
|
48
|
+
WA_CERT_DETAILS: WA_CERT_DETAILS,
|
|
49
|
+
DEFAULT_CACHE_TTLS: DEFAULT_CACHE_TTLS,
|
|
50
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const { proto: proto } = require("../../WAProto");
|
|
4
|
+
const PROCESSABLE_HISTORY_TYPES = [
|
|
5
|
+
proto.Message.HistorySyncType.INITIAL_BOOTSTRAP,
|
|
6
|
+
proto.Message.HistorySyncType.PUSH_NAME,
|
|
7
|
+
proto.Message.HistorySyncType.RECENT,
|
|
8
|
+
proto.Message.HistorySyncType.FULL,
|
|
9
|
+
proto.Message.HistorySyncType.ON_DEMAND,
|
|
10
|
+
proto.HistorySync.HistorySyncType.NON_BLOCKING_DATA,
|
|
11
|
+
proto.HistorySync.HistorySyncType.INITIAL_STATUS_V3,
|
|
12
|
+
];
|
|
13
|
+
module.exports = { PROCESSABLE_HISTORY_TYPES: PROCESSABLE_HISTORY_TYPES };
|
package/lib/Defaults/index.js
CHANGED
|
@@ -1,151 +1,36 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Object.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
exports
|
|
33
|
-
|
|
34
|
-
exports
|
|
35
|
-
|
|
36
|
-
exports
|
|
37
|
-
|
|
38
|
-
exports.PLACEHOLDER_MAX_AGE_SECONDS = 14 * 24 * 60 * 60
|
|
39
|
-
|
|
40
|
-
exports.NOISE_MODE = 'Noise_XX_25519_AESGCM_SHA256\0\0\0\0'
|
|
41
|
-
|
|
42
|
-
exports.DICT_VERSION = 3
|
|
43
|
-
|
|
44
|
-
exports.KEY_BUNDLE_TYPE = Buffer.from([5])
|
|
45
|
-
|
|
46
|
-
exports.NOISE_WA_HEADER = Buffer.from([87, 65, 6, exports.DICT_VERSION]) // last is "DICT_VERSION"
|
|
47
|
-
|
|
48
|
-
/** from: https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url */
|
|
49
|
-
exports.URL_REGEX = /https:\/\/(?![^:@\/\s]+:[^:@\/\s]+@)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?/g
|
|
50
|
-
|
|
51
|
-
exports.WA_CERT_DETAILS = {
|
|
52
|
-
SERIAL: 0,
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
exports.PROCESSABLE_HISTORY_TYPES = [
|
|
56
|
-
WAProto_1.proto.Message.HistorySyncType.INITIAL_BOOTSTRAP,
|
|
57
|
-
WAProto_1.proto.Message.HistorySyncType.PUSH_NAME,
|
|
58
|
-
WAProto_1.proto.Message.HistorySyncType.RECENT,
|
|
59
|
-
WAProto_1.proto.Message.HistorySyncType.FULL,
|
|
60
|
-
WAProto_1.proto.Message.HistorySyncType.ON_DEMAND
|
|
61
|
-
]
|
|
62
|
-
|
|
63
|
-
exports.DEFAULT_CONNECTION_CONFIG = {
|
|
64
|
-
version: baileys_version_json_1.version,
|
|
65
|
-
browser: Utils_1.Browsers.windows('Chrome'),
|
|
66
|
-
waWebSocketUrl: 'wss://web.whatsapp.com/ws/chat',
|
|
67
|
-
connectTimeoutMs: 20000,
|
|
68
|
-
keepAliveIntervalMs: 30000,
|
|
69
|
-
logger: logger_1.default.child({ class: 'baileys' }),
|
|
70
|
-
printQRInTerminal: false,
|
|
71
|
-
emitOwnEvents: true,
|
|
72
|
-
defaultQueryTimeoutMs: 60000,
|
|
73
|
-
customUploadHosts: [],
|
|
74
|
-
retryRequestDelayMs: 250,
|
|
75
|
-
maxMsgRetryCount: 5,
|
|
76
|
-
fireInitQueries: true,
|
|
77
|
-
auth: undefined,
|
|
78
|
-
markOnlineOnConnect: true,
|
|
79
|
-
syncFullHistory: false,
|
|
80
|
-
patchMessageBeforeSending: msg => msg,
|
|
81
|
-
shouldSyncHistoryMessage: () => true,
|
|
82
|
-
shouldIgnoreJid: () => false,
|
|
83
|
-
linkPreviewImageThumbnailWidth: 192,
|
|
84
|
-
transactionOpts: { maxCommitRetries: 10, delayBetweenTriesMs: 3000 },
|
|
85
|
-
generateHighQualityLinkPreview: false,
|
|
86
|
-
enableAutoSessionRecreation: true,
|
|
87
|
-
enableRecentMessageCache: false,
|
|
88
|
-
options: {},
|
|
89
|
-
appStateMacVerification: {
|
|
90
|
-
patch: false,
|
|
91
|
-
snapshot: false,
|
|
92
|
-
},
|
|
93
|
-
countryCode: 'EN',
|
|
94
|
-
getMessage: async () => undefined,
|
|
95
|
-
cachedGroupMetadata: async () => undefined,
|
|
96
|
-
makeSignalRepository: libsignal_1.makeLibSignalRepository
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
exports.MEDIA_PATH_MAP = {
|
|
100
|
-
image: '/mms/image',
|
|
101
|
-
video: '/mms/video',
|
|
102
|
-
document: '/mms/document',
|
|
103
|
-
audio: '/mms/audio',
|
|
104
|
-
sticker: '/mms/image',
|
|
105
|
-
'sticker-pack': '/mms/sticker',
|
|
106
|
-
'thumbnail-link': '/mms/image',
|
|
107
|
-
'product-catalog-image': '/product/image',
|
|
108
|
-
'md-app-state': '',
|
|
109
|
-
'md-msg-hist': '/mms/md-app-state',
|
|
110
|
-
'biz-cover-photo': '/pps/biz-cover-photo'
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
exports.MEDIA_HKDF_KEY_MAPPING = {
|
|
114
|
-
'audio': 'Audio',
|
|
115
|
-
'document': 'Document',
|
|
116
|
-
'gif': 'Video',
|
|
117
|
-
'image': 'Image',
|
|
118
|
-
'ppic': '',
|
|
119
|
-
'product': 'Image',
|
|
120
|
-
'ptt': 'Audio',
|
|
121
|
-
'video': 'Video',
|
|
122
|
-
'sticker': 'Image',
|
|
123
|
-
'sticker-pack': 'Sticker Pack',
|
|
124
|
-
'thumbnail-document': 'Document Thumbnail',
|
|
125
|
-
'thumbnail-image': 'Image Thumbnail',
|
|
126
|
-
'thumbnail-video': 'Video Thumbnail',
|
|
127
|
-
'thumbnail-link': 'Link Thumbnail',
|
|
128
|
-
'md-msg-hist': 'History',
|
|
129
|
-
'md-app-state': 'App State',
|
|
130
|
-
'product-catalog-image': '',
|
|
131
|
-
'payment-bg-image': 'Payment Background',
|
|
132
|
-
'ptv': 'Video',
|
|
133
|
-
'biz-cover-photo': 'Image'
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
exports.MEDIA_KEYS = Object.keys(exports.MEDIA_PATH_MAP)
|
|
137
|
-
|
|
138
|
-
exports.MIN_PREKEY_COUNT = 5
|
|
139
|
-
|
|
140
|
-
exports.INITIAL_PREKEY_COUNT = 30
|
|
141
|
-
|
|
142
|
-
exports.UPLOAD_TIMEOUT = 30000 // 30 seconds
|
|
143
|
-
|
|
144
|
-
exports.MIN_UPLOAD_INTERVAL = 5000 // seconds minimum between uploads
|
|
145
|
-
|
|
146
|
-
exports.DEFAULT_CACHE_TTLS = {
|
|
147
|
-
SIGNAL_STORE: 5 * 60,
|
|
148
|
-
MSG_RETRY: 60 * 60,
|
|
149
|
-
CALL_OFFER: 5 * 60,
|
|
150
|
-
USER_DEVICES: 5 * 60, // 5 minutes
|
|
151
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
const __createBinding =
|
|
3
|
+
(this && this.__createBinding) ||
|
|
4
|
+
(Object.create
|
|
5
|
+
? function (o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
let desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return m[k];
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}
|
|
18
|
+
: function (o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
});
|
|
22
|
+
const __exportStar =
|
|
23
|
+
(this && this.__exportStar) ||
|
|
24
|
+
function (m, exports) {
|
|
25
|
+
for (var p in m) {
|
|
26
|
+
if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) {
|
|
27
|
+
__createBinding(exports, m, p);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
__exportStar(require("./connection"), exports);
|
|
33
|
+
__exportStar(require("./constants"), exports);
|
|
34
|
+
__exportStar(require("./history"), exports);
|
|
35
|
+
__exportStar(require("./media"), exports);
|
|
36
|
+
__exportStar(require("./prefix"), exports);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const MEDIA_PATH_MAP = {
|
|
4
|
+
image: "/mms/image",
|
|
5
|
+
video: "/mms/video",
|
|
6
|
+
document: "/mms/document",
|
|
7
|
+
audio: "/mms/audio",
|
|
8
|
+
sticker: "/mms/image",
|
|
9
|
+
"sticker-pack": "/mms/sticker",
|
|
10
|
+
"thumbnail-link": "/mms/image",
|
|
11
|
+
"product-catalog-image": "/product/image",
|
|
12
|
+
"md-app-state": "",
|
|
13
|
+
"md-msg-hist": "/mms/md-app-state",
|
|
14
|
+
"biz-cover-photo": "/pps/biz-cover-photo",
|
|
15
|
+
};
|
|
16
|
+
const MEDIA_HKDF_KEY_MAPPING = {
|
|
17
|
+
audio: "Audio",
|
|
18
|
+
document: "Document",
|
|
19
|
+
gif: "Video",
|
|
20
|
+
image: "Image",
|
|
21
|
+
ppic: "",
|
|
22
|
+
product: "Image",
|
|
23
|
+
ptt: "Audio",
|
|
24
|
+
video: "Video",
|
|
25
|
+
sticker: "Image",
|
|
26
|
+
"sticker-pack": "Sticker Pack",
|
|
27
|
+
"thumbnail-document": "Document Thumbnail",
|
|
28
|
+
"thumbnail-image": "Image Thumbnail",
|
|
29
|
+
"thumbnail-video": "Video Thumbnail",
|
|
30
|
+
"thumbnail-link": "Link Thumbnail",
|
|
31
|
+
"md-msg-hist": "History",
|
|
32
|
+
"md-app-state": "App State",
|
|
33
|
+
"product-catalog-image": "",
|
|
34
|
+
"payment-bg-image": "Payment Background",
|
|
35
|
+
ptv: "Video",
|
|
36
|
+
"biz-cover-photo": "Image",
|
|
37
|
+
};
|
|
38
|
+
const MEDIA_KEYS = Object.keys(MEDIA_PATH_MAP);
|
|
39
|
+
module.exports = {
|
|
40
|
+
MEDIA_KEYS: MEDIA_KEYS,
|
|
41
|
+
MEDIA_PATH_MAP: MEDIA_PATH_MAP,
|
|
42
|
+
MEDIA_HKDF_KEY_MAPPING: MEDIA_HKDF_KEY_MAPPING,
|
|
43
|
+
};
|