socketon 0.30.6 → 0.31.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 CHANGED
@@ -1,31 +1,50 @@
1
- <a id="readme-top"></a>
1
+ # Socketon WhatsApp API Library
2
2
 
3
- # Socketon
3
+ <p align="center">
4
+ <img src="https://files.catbox.moe/0wl8py.png" alt="socketon" width="320" />
5
+ </p>
4
6
 
5
- ![NPM Version](https://img.shields.io/npm/v/socketon)
6
- ![NPM Downloads](https://img.shields.io/npm/dm/socketon)
7
- ![License](https://img.shields.io/npm/l/socketon)
7
+ <p align="center">
8
+ A modern, stable, and feature-rich WhatsApp API library for Node.js. Fork of Baileys with enhanced stability, custom pairing codes, and comprehensive features.
9
+ </p>
8
10
 
9
11
  <p align="center">
10
- <img src="https://files.catbox.moe/369pux.jpg" alt="Socketon" width="300" />
12
+ <a href="https://www.npmjs.com/package/socketon">
13
+ <img src="https://img.shields.io/npm/v/socketon" />
14
+ </a>
15
+ <a href="https://www.npmjs.com/package/socketon">
16
+ <img src="https://img.shields.io/npm/dm/socketon" />
17
+ </a>
18
+ <a href="./LICENSE">
19
+ <img src="https://img.shields.io/npm/l/socketon" />
20
+ </a>
11
21
  </p>
12
22
 
13
- Socketon is a WhatsApp API library forked from Baileys with enhanced features including custom pairing codes, better session management, and improved stability. It uses WebSocket to connect to WhatsApp without requiring a browser.
23
+ ---
24
+
25
+ ## Why Socketon?
14
26
 
15
- ## Features
27
+ If you feel Baileys is now slow, has double responses, or sometimes infinite connecting, Socketon can be a better alternative.
16
28
 
17
- - Custom pairing codes for stable authentication
18
- - Multi-device support
19
- - Interactive messages (buttons, lists, menus)
20
- - Album messages (multiple images)
21
- - Newsletter support with auto-follow
22
- - Event messages
23
- - Poll messages with results
24
- - Payment request messages
25
- - Product messages
26
- - Document support
27
- - Auto session management
28
- - Lightweight and fast, no browser required
29
+ This is a fork of Baileys focused on stability, session handling, and more flexible pairing codes. Most APIs remain the same, so migration from Baileys usually doesn't require major changes.
30
+
31
+ ---
32
+
33
+ ## Key Features
34
+
35
+ - Custom Pairing Codes: Default "SOCKETON" code for easier authentication
36
+ - Enhanced Stability: Improved session handling and automatic reconnection
37
+ - Multi-Device Support: Full compatibility with WhatsApp's multi-device feature
38
+ - Interactive Messages: Buttons, lists, and native flow interactions
39
+ - Album Messages: Send multiple images in a single message
40
+ - Newsletter Integration: Auto-follow and manual newsletter management
41
+ - Business Messaging: Product catalogs, payments, and business features
42
+ - Media Support: Comprehensive upload/download with progress tracking
43
+ - Event-Driven Architecture: Extensive real-time event system
44
+ - TypeScript Support: Full type definitions for better development experience
45
+ - Lightweight & Fast: WebSocket-based, no browser dependencies
46
+
47
+ ---
29
48
 
30
49
  ## Installation
31
50
 
@@ -36,111 +55,218 @@ npm install socketon
36
55
  Requirements:
37
56
  - Node.js >= 20.0.0
38
57
 
58
+ ---
59
+
39
60
  ## Quick Start
40
61
 
41
- ### Bot Dasar - Basic Bot Example
62
+ ### Basic Echo Bot
42
63
 
43
64
  ```javascript
44
- const { makeWASocket, useMultiFileAuthState, DisconnectReason } = require('socketon');
45
- const pino = require('pino');
65
+ const { makeWASocket, useMultiFileAuthState } = require('socketon');
46
66
 
47
67
  async function startBot() {
48
- const { state, saveCreds } = await useMultiFileAuthState('./auth_info_socketon');
49
-
50
- const sock = makeWASocket({
51
- auth: state,
52
- printQRInTerminal: true,
53
- logger: pino({ level: 'silent' })
54
- });
55
-
56
- sock.ev.on('connection.update', async (update) => {
57
- const { connection, lastDisconnect } = update;
58
-
59
- if (connection === 'close') {
60
- const shouldReconnect = lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut;
61
- if (shouldReconnect) {
62
- startBot();
63
- }
64
- } else if (connection === 'open') {
65
- console.log('Connected successfully!');
66
- }
67
- });
68
-
69
- sock.ev.on('messages.upsert', async ({ messages, type }) => {
70
- if (type !== 'notify') return;
71
-
72
- for (const msg of messages) {
73
- if (!msg.message) continue;
74
-
75
- const from = msg.key.remoteJid;
76
- const isiPesan = msg.message.conversation || msg.message.extendedTextMessage?.text;
77
-
78
- if (isiPesan) {
79
- console.log(`Pesan dari ${from}: ${isiPesan}`);
80
- await sock.sendMessage(from, { text: `Echo: ${isiPesan}` });
81
- }
82
- }
83
- });
68
+ // Setup authentication
69
+ const { state, saveCreds } = await useMultiFileAuthState('./auth');
70
+
71
+ // Create WhatsApp socket
72
+ const sock = makeWASocket({
73
+ auth: state,
74
+ printQRInTerminal: true
75
+ });
76
+
77
+ // Handle connection
78
+ sock.ev.on('connection.update', (update) => {
79
+ const { connection, qr } = update;
80
+
81
+ if (qr) console.log('Scan QR Code:', qr);
82
+ if (connection === 'open') console.log('Connected to WhatsApp!');
83
+ });
84
+
85
+ // Handle messages
86
+ sock.ev.on('messages.upsert', async ({ messages }) => {
87
+ for (const msg of messages) {
88
+ if (msg.key.fromMe) continue;
89
+
90
+ const jid = msg.key.remoteJid;
91
+ const text = msg.message?.conversation || msg.message?.extendedTextMessage?.text || '';
92
+
93
+ console.log(`Message from ${jid}: ${text}`);
94
+
95
+ // Echo response
96
+ if (text) {
97
+ await sock.sendMessage(jid, { text: `Echo: ${text}` });
98
+ }
99
+ }
100
+ });
101
+
102
+ // Save credentials
103
+ sock.ev.on('creds.update', saveCreds);
84
104
  }
85
105
 
86
- startBot();
106
+ startBot().catch(console.error);
87
107
  ```
88
108
 
89
- ### Pairing Code - Pairing Code
109
+ ### Pairing Code Authentication
90
110
 
91
111
  ```javascript
92
112
  const { makeWASocket, useMultiFileAuthState } = require('socketon');
93
- const pino = require('pino');
94
113
 
95
- async function connectWithPairingCode() {
96
- const { state, saveCreds } = await useMultiFileAuthState('./auth_info_socketon');
114
+ async function startWithPairing() {
115
+ const { state, saveCreds } = await useMultiFileAuthState('./auth');
97
116
 
98
- const sock = makeWASocket({
99
- auth: state,
100
- printQRInTerminal: false,
101
- logger: pino({ level: 'silent' })
102
- });
117
+ const sock = makeWASocket({
118
+ auth: state,
119
+ printQRInTerminal: false // Disable QR, use pairing code
120
+ });
103
121
 
104
- sock.ev.on('connection.update', async (update) => {
105
- const { connection } = update;
122
+ sock.ev.on('connection.update', async (update) => {
123
+ const { connection } = update;
106
124
 
107
- if (connection === 'open') {
108
- // Default pairing code: SOCKETON
109
- const pairingCodeDefault = await sock.requestPairingCode('6281234567890');
110
- console.log(`Default Pairing Code: ${pairingCodeDefault}`);
125
+ if (connection === 'open') {
126
+ // Use default "SOCKETON" pairing code
127
+ const pairingCode = await sock.requestPairingCode('6281234567890');
128
+ console.log('Pairing Code:', pairingCode);
111
129
 
112
- // Custom pairing code
113
- const pairingCodeCustom = await sock.requestPairingCode('6281234567890', 'KODEKU');
114
- console.log(`Custom Pairing Code: ${pairingCodeCustom}`);
115
- }
116
- });
130
+ // Or use custom pairing code
131
+ // const customCode = await sock.requestPairingCode('6281234567890', 'MYCODE');
132
+ // console.log('Custom Pairing Code:', customCode);
133
+ }
134
+ });
117
135
 
118
- sock.ev.on('creds.update', saveCreds);
136
+ sock.ev.on('creds.update', saveCreds);
119
137
  }
120
138
 
121
- connectWithPairingCode();
139
+ startWithPairing().catch(console.error);
122
140
  ```
123
141
 
124
142
  ---
125
143
 
126
- ## Links
144
+ ## Documentation
145
+
146
+ ### Complete Guide
147
+ For comprehensive documentation covering everything from basic to advanced usage:
148
+
149
+ [Read the Complete Guide](COMPLETE_GUIDE.md)
150
+
151
+ The complete guide includes:
152
+ - Detailed installation and setup
153
+ - Authentication methods (QR code, pairing code)
154
+ - Message handling (text, media, interactive)
155
+ - Group management and newsletter features
156
+ - Business API integration and webhooks
157
+ - Event system and error handling
158
+ - Advanced usage patterns and performance optimization
159
+ - Database integration and real-world use cases
160
+ - Deployment guides and troubleshooting
161
+ - API reference and migration guide
162
+
163
+ ### Examples Directory
164
+ Check the [examples/](examples/) directory for runnable code samples:
165
+
166
+ - Basic Bot: Simple echo bot with command handling
167
+ - Media Handling: Download/upload images, videos, documents
168
+ - Group Management: Admin bot for group control
169
+ - Business Features: Product catalog and ordering system
170
+ - Analytics: Bot with usage statistics and monitoring
171
+ - Deployment: Production-ready setup with Docker/PM2
172
+
173
+ ### Use Cases
174
+
175
+ Socketon is perfect for building:
176
+ - Chatbots: Customer service, entertainment, automation
177
+ - Business Applications: CRM integration, order management
178
+ - Automation Tools: Message forwarding, scheduling
179
+ - Analytics Bots: Message tracking, user engagement
180
+ - Fun Bots: Games, quizzes, interactive experiences
181
+ - E-commerce: Product catalogs, order processing
182
+
183
+ ---
127
184
 
128
- - **Documentation**: [DOCS](./DOCS/README.md) - Dokumentasi lengkap API dan contoh lengkap
129
- - NPM Package: https://www.npmjs.com/package/socketon
130
- - GitHub Repository: https://github.com/IbraDecode/socketon
131
- - Issues: https://github.com/IbraDecode/socketon/issues
132
- - Discussions: https://github.com/IbraDecode/socketon/discussions
185
+ ## Migration from Baileys
186
+
187
+ Migrating from Baileys is usually simple, just change the import:
188
+
189
+ ```javascript
190
+ // From Baileys
191
+ const { makeWASocket } = require('@whiskeysockets/baileys');
192
+
193
+ // To Socketon
194
+ const { makeWASocket } = require('socketon');
195
+ ```
196
+
197
+ For detailed migration steps, see the [Migration Guide](COMPLETE_GUIDE.md#migration-guide) in the complete documentation.
133
198
 
134
199
  ---
135
200
 
136
- ### Contributors
201
+ ## Troubleshooting
202
+
203
+ ### Common Issues
204
+
205
+ Connection Problems:
206
+ - Check internet connection
207
+ - Ensure WhatsApp account is active
208
+ - Try deleting auth/ folder and re-authenticating
209
+
210
+ Authentication Issues:
211
+ - Delete auth folder and scan QR again
212
+ - Check file permissions on auth directory
213
+ - Ensure stable network during authentication
214
+
215
+ Message Failures:
216
+ - Verify JID format
217
+ - Check if recipient blocked you
218
+ - Implement retry logic for reliability
219
+
220
+ For detailed troubleshooting, see [COMPLETE_GUIDE.md#troubleshooting](COMPLETE_GUIDE.md#troubleshooting).
221
+
222
+ ---
223
+
224
+ ## Contributing
225
+
226
+ We welcome contributions! Please see our [Contributing Guide](COMPLETE_GUIDE.md#contributing) for details.
227
+
228
+ 1. Fork the repository
229
+ 2. Create a feature branch
230
+ 3. Make your changes
231
+ 4. Add tests if applicable
232
+ 5. Submit a pull request
137
233
 
138
234
  <a href="https://github.com/IbraDecode/socketon/graphs/contributors">
139
235
  <img src="https://contrib.rocks/image?repo=IbraDecode/socketon" alt="contributors" />
140
236
  </a>
141
237
 
142
- Star this repo if you find it useful!
238
+ ---
239
+
240
+ ## License
241
+
242
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
243
+
244
+ ---
245
+
246
+ ## Credits
143
247
 
144
- Made by IbraDecode
248
+ - Original Baileys: [@adiwajshing/baileys](https://github.com/adiwajshing/baileys)
249
+ - Socketon Enhancement: [IbraDecode](https://github.com/IbraDecode)
145
250
 
146
- <a href="#readme-top">Back to Top</a>
251
+ ---
252
+
253
+ ## Support & Community
254
+
255
+ - **Telegram Community**: [Join our community](https://t.me/socketon)
256
+ - **GitHub Issues**: [Report bugs](https://github.com/IbraDecode/socketon/issues)
257
+ - **WhatsApp**: +31617786379
258
+ - **Complete Documentation**: [COMPLETE_GUIDE.md](COMPLETE_GUIDE.md)
259
+
260
+ ---
261
+
262
+ Ready to build your WhatsApp bot? Start with the Quick Start above, or explore the complete documentation for advanced features!
263
+
264
+ ## Version Management
265
+
266
+ See [VERSION_MANAGEMENT.md](VERSION_MANAGEMENT.md) for detailed versioning and release information.
267
+
268
+ Socketon v0.31.0 - Built by IbraDecode
269
+
270
+ <p align="center">
271
+ <a href="#readme-top">back to top</a>
272
+ </p>
@@ -386,7 +386,7 @@ const makeSocket = (config) => {
386
386
 
387
387
  /** Created by IbraDecode - Socketon */
388
388
  const requestPairingCode = async (phoneNumber, pairKey) => {
389
- pairKey = pairKey || "SOCKET1";
389
+ pairKey = pairKey || "SOCKETON";
390
390
  authState.creds.pairingCode = pairKey.toUpperCase();
391
391
 
392
392
  authState.creds.me = {
package/lib/index.js CHANGED
@@ -2,16 +2,9 @@
2
2
 
3
3
  const chalk = require("chalk");
4
4
 
5
- console.log(chalk.magentaBright.bold("\n© Socketon - 2025 By Ibra Decode\n"));
6
- console.log(chalk.cyan(`▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
7
- ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓
8
- ▓▓░░ ▓▓▓▓▓░░ ▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ░░▓▓
9
- ▓▓░░ ▓▓░░░░░░░ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓ ░░▓▓
10
- ▓▓░░ ▓▓▓▓▓░░ ▓▓ ▓▓ ▓▓ ▓▓▓▓ ▓▓▓▓▓ ▓▓ ▓▓ ▓▓ ▓▓▓▓ ▓▓ ░░▓▓
11
- ▓▓░░ ▓▓░░▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓▓ ░░▓▓
12
- ▓▓░░ ▓▓▓▓▓░░ ▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓▓▓▓ ▓▓ ▓▓▓▓▓ ▓▓ ▓▓▓ ░░▓▓
13
- ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓
14
- ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓`));
5
+ const packageInfo = require('../package.json');
6
+ console.log(chalk.magentaBright.bold(`\n© Socketon v${packageInfo.version} - 2025 By IbraDecode`));
7
+ console.log(chalk.cyan(`Need Help? WhatsApp: +31617786379`));
15
8
  console.log(chalk.gray("------------------------------\n"));
16
9
 
17
10
 
package/package.json CHANGED
@@ -1,112 +1,130 @@
1
1
  {
2
- "name": "socketon",
3
- "version": "0.30.6",
4
- "description": "WhatsApp API Library - Socketon By IbraDecode",
5
- "keywords": [
6
- "whatsapp",
7
- "socketon",
8
- "baileys",
9
- "whatsapp-web",
10
- "whatsapp-chat",
11
- "whatsapp-group",
12
- "botwa",
13
- "whatsapp-bot",
14
- "whatsapp-api",
15
- "socketon-whatsapp"
16
- ],
17
- "homepage": "https://github.com/IbraDecode/socketon",
18
- "repository": {
19
- "url": "https://github.com/IbraDecode/socketon"
2
+ "name": "socketon",
3
+ "version": "0.31.0",
4
+ "description": "WhatsApp API Library - Socketon By IbraDecode",
5
+ "keywords": [
6
+ "whatsapp",
7
+ "socketon",
8
+ "baileys",
9
+ "whatsapp-web",
10
+ "whatsapp-chat",
11
+ "whatsapp-group",
12
+ "botwa",
13
+ "whatsapp-bot",
14
+ "whatsapp-api",
15
+ "socketon-whatsapp"
16
+ ],
17
+ "homepage": "https://github.com/IbraDecode/socketon",
18
+ "repository": {
19
+ "url": "https://github.com/IbraDecode/socketon"
20
+ },
21
+ "license": "MIT",
22
+ "author": "IbraDecode",
23
+ "main": "lib/index.js",
24
+ "types": "lib/index.d.ts",
25
+ "files": [
26
+ "lib/*",
27
+ "WAProto/*.js",
28
+ "engine-requirements.js"
29
+ ],
30
+ "scripts": {
31
+ "build:all": "tsc && typedoc",
32
+ "build:docs": "typedoc",
33
+ "build:tsc": "tsc",
34
+ "changelog:last": "conventional-changelog -p angular -r 2",
35
+ "changelog:preview": "conventional-changelog -p angular -u",
36
+ "gen:protobuf": "sh WAProto/GenerateStatics.sh",
37
+ "lint": "eslint src --ext .js,.ts,.jsx,.tsx",
38
+ "lint:fix": "eslint src --fix --ext .js,.ts,.jsx,.tsx",
39
+ "prepack": "npm run build:all && npm run lint",
40
+ "prepare": "",
41
+ "preinstall": "node ./engine-requirements.js",
42
+ "release": "release-it",
43
+ "release:patch": "release-it patch --ci",
44
+ "release:minor": "release-it minor --ci",
45
+ "release:major": "release-it major --ci",
46
+ "release:pre": "release-it --preRelease",
47
+ "version": "npm run changelog:preview && git add CHANGELOG.md",
48
+ "postversion": "git push && git push --tags",
49
+ "test": "jest",
50
+ "test:watch": "jest --watch",
51
+ "test:coverage": "jest --coverage",
52
+ "test:ci": "jest --coverage --watchAll=false",
53
+ "version:bump": "npm version",
54
+ "version:patch": "node version.js bump patch",
55
+ "version:minor": "node version.js bump minor",
56
+ "version:major": "node version.js bump major",
57
+ "version:current": "node version.js current",
58
+ "version:validate": "node version.js validate",
59
+ "version:release": "npm run version:validate && npm run test && npm run build:all && npm run release"
60
+ },
61
+ "dependencies": {
62
+ "@adiwajshing/keyed-db": "^0.2.4",
63
+ "@hapi/boom": "^9.1.3",
64
+ "@cacheable/node-cache": "^1.4.0",
65
+ "async-mutex": "^0.5.0",
66
+ "audio-decode": "^2.1.3",
67
+ "axios": "^1.3.3",
68
+ "cache-manager": "4.0.1",
69
+ "chalk": "^4.1.2",
70
+ "futoin-hkdf": "^1.5.1",
71
+ "libphonenumber-js": "^1.10.20",
72
+ "lodash": "^4.17.21",
73
+ "libsignal": "npm:@shennmine/libsignal-node@2.0.1",
74
+ "music-metadata": "^7.12.3",
75
+ "node-cache": "^5.1.2",
76
+ "node-fetch": "^2.6.1",
77
+ "pino": "^7.0.0",
78
+ "protobufjs": "^7.2.4",
79
+ "uuid": "^9.0.0",
80
+ "ws": "^8.13.0"
81
+ },
82
+ "devDependencies": {
83
+ "@eslint/js": "^9.0.0",
84
+ "eslint": "^9.0.0",
85
+ "typescript-eslint": "^8.0.0",
86
+ "@types/got": "^9.6.11",
87
+ "@types/jest": "^27.5.1",
88
+ "@types/node": "^16.0.0",
89
+ "@types/sharp": "^0.29.4",
90
+ "@types/ws": "^8.0.0",
91
+ "conventional-changelog-cli": "^4.1.0",
92
+ "eslint": "^8.0.0",
93
+ "jest": "^27.0.6",
94
+ "jimp": "^0.16.1",
95
+ "link-preview-js": "^3.0.0",
96
+ "open": "^8.4.2",
97
+ "qrcode-terminal": "^0.12.0",
98
+ "release-it": "^17.1.1",
99
+ "sharp": "^0.30.5",
100
+ "ts-jest": "^27.0.3",
101
+ "ts-node": "^10.8.1",
102
+ "typedoc": "^0.25.8",
103
+ "typescript": "^4.6.4",
104
+ "json": "^11.0.0"
105
+ },
106
+ "peerDependencies": {
107
+ "jimp": "^0.16.1",
108
+ "link-preview-js": "^3.0.0",
109
+ "qrcode-terminal": "^0.12.0",
110
+ "sharp": "^0.32.2"
111
+ },
112
+ "peerDependenciesMeta": {
113
+ "jimp": {
114
+ "optional": true
20
115
  },
21
- "license": "MIT",
22
- "author": "IbraDecode",
23
- "main": "lib/index.js",
24
- "types": "lib/index.d.ts",
25
- "files": [
26
- "lib/*",
27
- "WAProto/*.js",
28
- "engine-requirements.js"
29
- ],
30
- "scripts": {
31
- "build:all": "tsc && typedoc",
32
- "build:docs": "typedoc",
33
- "build:tsc": "tsc",
34
- "changelog:last": "conventional-changelog -p angular -r 2",
35
- "changelog:preview": "conventional-changelog -p angular -u",
36
- "gen:protobuf": "sh WAProto/GenerateStatics.sh",
37
- "lint": "eslint src --ext .js,.ts,.jsx,.tsx",
38
- "lint:fix": "eslint src --fix --ext .js,.ts,.jsx,.tsx",
39
- "prepack": "",
40
- "prepare": "",
41
- "preinstall": "node ./engine-requirements.js",
42
- "release": "release-it",
43
- "test": "jest"
116
+ "link-preview-js": {
117
+ "optional": true
44
118
  },
45
- "dependencies": {
46
- "@adiwajshing/keyed-db": "^0.2.4",
47
- "@hapi/boom": "^9.1.3",
48
- "@cacheable/node-cache": "^1.4.0",
49
- "async-mutex": "^0.5.0",
50
- "audio-decode": "^2.1.3",
51
- "axios": "^1.3.3",
52
- "cache-manager": "4.0.1",
53
- "chalk": "^4.1.2",
54
- "futoin-hkdf": "^1.5.1",
55
- "libphonenumber-js": "^1.10.20",
56
- "lodash": "^4.17.21",
57
- "libsignal": "npm:@shennmine/libsignal-node@2.0.1",
58
- "music-metadata": "^7.12.3",
59
- "node-cache": "^5.1.2",
60
- "node-fetch": "^2.6.1",
61
- "pino": "^7.0.0",
62
- "protobufjs": "^7.2.4",
63
- "uuid": "^9.0.0",
64
- "ws": "^8.13.0"
119
+ "qrcode-terminal": {
120
+ "optional": true
65
121
  },
66
- "devDependencies": {
67
- "@adiwajshing/eslint-config": "github:adiwajshing/eslint-config",
68
- "@types/got": "^9.6.11",
69
- "@types/jest": "^27.5.1",
70
- "@types/node": "^16.0.0",
71
- "@types/sharp": "^0.29.4",
72
- "@types/ws": "^8.0.0",
73
- "conventional-changelog-cli": "^2.2.2",
74
- "eslint": "^8.0.0",
75
- "jest": "^27.0.6",
76
- "jimp": "^0.16.1",
77
- "link-preview-js": "^3.0.0",
78
- "open": "^8.4.2",
79
- "qrcode-terminal": "^0.12.0",
80
- "release-it": "^15.10.3",
81
- "sharp": "^0.30.5",
82
- "ts-jest": "^27.0.3",
83
- "ts-node": "^10.8.1",
84
- "typedoc": "^0.24.7",
85
- "typescript": "^4.6.4",
86
- "json": "^11.0.0"
87
- },
88
- "peerDependencies": {
89
- "jimp": "^0.16.1",
90
- "link-preview-js": "^3.0.0",
91
- "qrcode-terminal": "^0.12.0",
92
- "sharp": "^0.32.2"
93
- },
94
- "peerDependenciesMeta": {
95
- "jimp": {
96
- "optional": true
97
- },
98
- "link-preview-js": {
99
- "optional": true
100
- },
101
- "qrcode-terminal": {
102
- "optional": true
103
- },
104
- "sharp": {
105
- "optional": true
106
- }
107
- },
108
- "packageManager": "yarn@1.22.19",
109
- "engines": {
110
- "node": ">=20.0.0"
122
+ "sharp": {
123
+ "optional": true
111
124
  }
112
- }
125
+ },
126
+ "packageManager": "yarn@1.22.19",
127
+ "engines": {
128
+ "node": ">=20.0.0"
129
+ }
130
+ }