@pontalabs/baileys 1.0.11 → 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.
Files changed (119) hide show
  1. package/README.md +96 -85
  2. package/lib/Defaults/connection.js +39 -0
  3. package/lib/Defaults/constants.js +50 -0
  4. package/lib/Defaults/history.js +13 -0
  5. package/lib/Defaults/index.js +36 -151
  6. package/lib/Defaults/media.js +43 -0
  7. package/lib/Defaults/phonenumber-mcc.json +221 -221
  8. package/lib/Defaults/prefix.js +12 -0
  9. package/lib/Defaults/vialeys-version.json +7 -0
  10. package/lib/Signal/Group/ciphertext-message.js +10 -15
  11. package/lib/Signal/Group/group-session-builder.js +34 -60
  12. package/lib/Signal/Group/group_cipher.js +69 -76
  13. package/lib/Signal/Group/index.js +41 -60
  14. package/lib/Signal/Group/keyhelper.js +12 -57
  15. package/lib/Signal/Group/sender-chain-key.js +20 -33
  16. package/lib/Signal/Group/sender-key-distribution-message.js +43 -48
  17. package/lib/Signal/Group/sender-key-message.js +58 -53
  18. package/lib/Signal/Group/sender-key-name.js +21 -31
  19. package/lib/Signal/Group/sender-key-record.js +21 -34
  20. package/lib/Signal/Group/sender-key-state.js +59 -106
  21. package/lib/Signal/Group/sender-message-key.js +16 -21
  22. package/lib/Signal/libsignal.js +282 -203
  23. package/lib/Signal/lid-mapping.js +164 -184
  24. package/lib/Socket/Client/index.js +31 -22
  25. package/lib/Socket/Client/types.js +9 -15
  26. package/lib/Socket/Client/websocket.js +42 -37
  27. package/lib/Socket/business.js +212 -336
  28. package/lib/Socket/chats.js +696 -940
  29. package/lib/Socket/community.js +454 -369
  30. package/lib/Socket/groups.js +278 -280
  31. package/lib/Socket/index.js +9 -21
  32. package/lib/Socket/messages-recv.js +1027 -1570
  33. package/lib/Socket/messages-send.js +1180 -1136
  34. package/lib/Socket/mex.js +59 -0
  35. package/lib/Socket/newsletter.js +193 -251
  36. package/lib/Socket/socket.js +758 -898
  37. package/lib/Store/index.js +35 -24
  38. package/lib/Store/make-cache-manager-store.js +53 -66
  39. package/lib/Store/make-in-memory-store.js +319 -325
  40. package/lib/Store/make-ordered-dictionary.js +49 -57
  41. package/lib/Store/object-repository.js +10 -15
  42. package/lib/Types/Auth.js +2 -3
  43. package/lib/Types/Bussines.js +2 -3
  44. package/lib/Types/Call.js +2 -3
  45. package/lib/Types/Chat.js +10 -9
  46. package/lib/Types/Contact.js +2 -3
  47. package/lib/Types/Events.js +2 -3
  48. package/lib/Types/GroupMetadata.js +2 -3
  49. package/lib/Types/Label.js +6 -12
  50. package/lib/Types/LabelAssociation.js +4 -13
  51. package/lib/Types/Message.js +10 -18
  52. package/lib/Types/MexUpdates.js +15 -18
  53. package/lib/Types/Newsletter.js +26 -34
  54. package/lib/Types/Product.js +2 -3
  55. package/lib/Types/Signal.js +2 -3
  56. package/lib/Types/Socket.js +2 -3
  57. package/lib/Types/State.js +8 -13
  58. package/lib/Types/USync.js +2 -3
  59. package/lib/Types/index.js +49 -40
  60. package/lib/Utils/auth-utils.js +190 -495
  61. package/lib/Utils/browser-utils.js +29 -0
  62. package/lib/Utils/business.js +177 -199
  63. package/lib/Utils/chat-utils.js +711 -624
  64. package/lib/Utils/crypto.js +116 -161
  65. package/lib/Utils/decode-wa-message.js +225 -321
  66. package/lib/Utils/event-buffer.js +363 -405
  67. package/lib/Utils/generics.js +318 -472
  68. package/lib/Utils/history.js +72 -76
  69. package/lib/Utils/index.js +49 -41
  70. package/lib/Utils/link-preview.js +59 -103
  71. package/lib/Utils/logger.js +4 -7
  72. package/lib/Utils/lt-hash.js +29 -42
  73. package/lib/Utils/make-mutex.js +26 -42
  74. package/lib/Utils/message-retry-manager.js +134 -160
  75. package/lib/Utils/messages-media.js +665 -731
  76. package/lib/Utils/messages.js +518 -1
  77. package/lib/Utils/noise-handler.js +127 -125
  78. package/lib/Utils/pre-key-manager.js +86 -0
  79. package/lib/Utils/process-message.js +739 -351
  80. package/lib/Utils/signal.js +146 -129
  81. package/lib/Utils/use-multi-file-auth-state.js +68 -135
  82. package/lib/Utils/validate-connection.js +183 -142
  83. package/lib/Utils/vialeys-event-stream.js +41 -0
  84. package/lib/WABinary/constants.js +1281 -1289
  85. package/lib/WABinary/decode.js +145 -200
  86. package/lib/WABinary/encode.js +149 -202
  87. package/lib/WABinary/generic-utils.js +79 -97
  88. package/lib/WABinary/index.js +36 -25
  89. package/lib/WABinary/jid-utils.js +91 -123
  90. package/lib/WABinary/types.js +2 -3
  91. package/lib/WAM/BinaryInfo.js +8 -13
  92. package/lib/WAM/constants.js +16584 -11464
  93. package/lib/WAM/encode.js +117 -133
  94. package/lib/WAM/index.js +34 -23
  95. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +62 -69
  96. package/lib/WAUSync/Protocols/USyncContactProtocol.js +11 -25
  97. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +32 -44
  98. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +13 -23
  99. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +24 -38
  100. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +17 -31
  101. package/lib/WAUSync/Protocols/index.js +37 -26
  102. package/lib/WAUSync/USyncQuery.js +66 -66
  103. package/lib/WAUSync/USyncUser.js +13 -18
  104. package/lib/WAUSync/index.js +34 -23
  105. package/lib/index.js +95 -28
  106. package/package.json +2 -1
  107. package/lib/Defaults/baileys-version.json +0 -3
  108. package/lib/Signal/Group/queue-job.d.ts +0 -1
  109. package/lib/Signal/Group/queue-job.js +0 -57
  110. package/lib/Socket/usync.d.ts +0 -37
  111. package/lib/Socket/usync.js +0 -83
  112. package/lib/Utils/baileys-event-stream.d.ts +0 -18
  113. package/lib/Utils/baileys-event-stream.js +0 -70
  114. package/lib/Utils/signal-housekeeping.d.ts +0 -19
  115. package/lib/Utils/signal-housekeeping.js +0 -73
  116. package/lib/Utils/use-mongo-file-auth-state.d.ts +0 -6
  117. package/lib/Utils/use-mongo-file-auth-state.js +0 -84
  118. package/lib/Utils/use-single-file-auth-state.d.ts +0 -13
  119. 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
- ## ✨ Why This Fork?
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
- ## 🚀 Quick Start
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, 'PONTASOCKETS')
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: '© PONTASOCKETS Baileys',
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: '© PONTASOCKETS Baileys',
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: '© PONTASOCKETS',
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
- ## 📚 API Reference
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
- | Method | Description |
1611
- |:---|:---|
1612
- | `makeWASocket(options)` | Create a new WhatsApp socket connection |
1613
- | `useMultiFileAuthState(path)` | Multi-file authentication state manager |
1614
- | `sock.sendMessage(jid, content, opts)` | Send any message type |
1615
- | `sock.sendAlbumMessage(jid, contents, opts)` | Send album/carousel of media |
1616
- | `sock.groupCreate(title, participants)` | Create a new group |
1617
- | `sock.groupMetadata(jid)` | Fetch group metadata |
1618
- | `sock.groupSettingUpdate(jid, setting)` | Update group settings |
1619
- | `sock.groupParticipantsUpdate(jid, participants, action)` | Modify group members |
1620
- | `sock.groupInviteCode(jid)` | Get group invite code |
1621
- | `sock.groupRevokeInvite(jid)` | Revoke and regenerate invite |
1622
- | `sock.newsletterMetadata(type, value)` | Fetch newsletter info |
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** the repository
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 };
@@ -1,151 +1,36 @@
1
- "use strict"
2
-
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- }
6
-
7
- Object.defineProperty(exports, "__esModule", { value: true })
8
-
9
- exports.DEFAULT_CACHE_TTLS = exports.UPLOAD_TIMEOUT = exports.MIN_UPLOAD_INTERVAL = exports.INITIAL_PREKEY_COUNT = exports.MIN_PREKEY_COUNT = exports.MEDIA_KEYS = exports.MEDIA_HKDF_KEY_MAPPING = exports.MEDIA_PATH_MAP = exports.DEFAULT_CONNECTION_CONFIG = exports.PROCESSABLE_HISTORY_TYPES = exports.WA_CERT_DETAILS = exports.URL_REGEX = exports.NOISE_WA_HEADER = exports.KEY_BUNDLE_TYPE = exports.DICT_VERSION = exports.NOISE_MODE = exports.WA_DEFAULT_EPHEMERAL = exports.PHONE_CONNECTION_CB = exports.DEF_TAG_PREFIX = exports.DEF_CALLBACK_PREFIX = exports.CALL_AUDIO_PREFIX = exports.CALL_VIDEO_PREFIX = exports.DEFAULT_ORIGIN = exports.UNAUTHORIZED_CODES = null
10
-
11
- const WAProto_1 = require("../../WAProto");
12
- const libsignal_1 = require("../Signal/libsignal");
13
- const Utils_1 = require("../Utils");
14
- const logger_1 = __importDefault(require("../Utils/logger"));
15
- const baileys_version_json_1 = require("./baileys-version.json");
16
- const phonenumber_mcc_json_1 = __importDefault(require("./phonenumber-mcc.json"))
17
-
18
- exports.UNAUTHORIZED_CODES = [401, 403, 419]
19
-
20
- exports.PHONENUMBER_MCC = phonenumber_mcc_json_1.default
21
-
22
- exports.DEFAULT_ORIGIN = 'https://web.whatsapp.com'
23
-
24
- exports.CALL_VIDEO_PREFIX = 'https://call.whatsapp.com/video/'
25
-
26
- exports.CALL_AUDIO_PREFIX = 'https://call.whatsapp.com/voice/'
27
-
28
- exports.DEF_CALLBACK_PREFIX = 'CB:'
29
-
30
- exports.DEF_TAG_PREFIX = 'TAG:'
31
-
32
- exports.PHONE_CONNECTION_CB = 'CB:Pong'
33
-
34
- exports.WA_DEFAULT_EPHEMERAL = 7 * 24 * 60 * 60
35
-
36
- exports.STATUS_EXPIRY_SECONDS = 24 * 60 * 60
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
+ };