@neelegirl/baileys 1.5.3 → 1.5.5
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 +16 -195
- package/index.js +38 -0
- package/package.json +16 -96
- package/LICENSE +0 -21
- package/WAProto/WAProto.proto +0 -5308
- package/WAProto/index.d.ts +0 -61295
- package/WAProto/index.js +0 -189754
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Defaults/index.d.ts +0 -78
- package/lib/Defaults/index.js +0 -149
- package/lib/Defaults/phonenumber-mcc.json +0 -223
- package/lib/Signal/WASignalGroup/GroupProtocol.js +0 -1909
- package/lib/Signal/WASignalGroup/ciphertext-message.d.ts +0 -9
- package/lib/Signal/WASignalGroup/ciphertext-message.js +0 -19
- package/lib/Signal/WASignalGroup/ciphertext_message.js +0 -16
- package/lib/Signal/WASignalGroup/generate-proto.sh +0 -1
- package/lib/Signal/WASignalGroup/group-session-builder.d.ts +0 -17
- package/lib/Signal/WASignalGroup/group-session-builder.js +0 -72
- package/lib/Signal/WASignalGroup/group.proto +0 -42
- package/lib/Signal/WASignalGroup/group_cipher.d.ts +0 -19
- package/lib/Signal/WASignalGroup/group_cipher.js +0 -111
- package/lib/Signal/WASignalGroup/group_session_builder.js +0 -46
- package/lib/Signal/WASignalGroup/index.d.ts +0 -11
- package/lib/Signal/WASignalGroup/index.js +0 -61
- package/lib/Signal/WASignalGroup/keyhelper.d.ts +0 -16
- package/lib/Signal/WASignalGroup/keyhelper.js +0 -66
- package/lib/Signal/WASignalGroup/protobufs.js +0 -3
- package/lib/Signal/WASignalGroup/queue_job.js +0 -69
- package/lib/Signal/WASignalGroup/readme.md +0 -6
- package/lib/Signal/WASignalGroup/sender-chain-key.d.ts +0 -14
- package/lib/Signal/WASignalGroup/sender-chain-key.js +0 -47
- package/lib/Signal/WASignalGroup/sender-key-distribution-message.d.ts +0 -17
- package/lib/Signal/WASignalGroup/sender-key-distribution-message.js +0 -71
- package/lib/Signal/WASignalGroup/sender-key-message.d.ts +0 -19
- package/lib/Signal/WASignalGroup/sender-key-message.js +0 -73
- package/lib/Signal/WASignalGroup/sender-key-name.d.ts +0 -19
- package/lib/Signal/WASignalGroup/sender-key-name.js +0 -59
- package/lib/Signal/WASignalGroup/sender-key-record.d.ts +0 -32
- package/lib/Signal/WASignalGroup/sender-key-record.js +0 -58
- package/lib/Signal/WASignalGroup/sender-key-state.d.ts +0 -44
- package/lib/Signal/WASignalGroup/sender-key-state.js +0 -147
- package/lib/Signal/WASignalGroup/sender-message-key.d.ts +0 -11
- package/lib/Signal/WASignalGroup/sender-message-key.js +0 -33
- package/lib/Signal/WASignalGroup/sender_chain_key.js +0 -50
- package/lib/Signal/WASignalGroup/sender_key_distribution_message.js +0 -78
- package/lib/Signal/WASignalGroup/sender_key_message.js +0 -92
- package/lib/Signal/WASignalGroup/sender_key_name.js +0 -70
- package/lib/Signal/WASignalGroup/sender_key_record.js +0 -56
- package/lib/Signal/WASignalGroup/sender_key_state.js +0 -129
- package/lib/Signal/WASignalGroup/sender_message_key.js +0 -39
- package/lib/Signal/libsignal.d.ts +0 -8
- package/lib/Signal/libsignal.js +0 -391
- package/lib/Signal/lid-mapping.d.ts +0 -28
- package/lib/Signal/lid-mapping.js +0 -184
- package/lib/Socket/Client/abstract-socket-client.d.ts +0 -15
- package/lib/Socket/Client/abstract-socket-client.js +0 -13
- package/lib/Socket/Client/index.d.ts +0 -2
- package/lib/Socket/Client/index.js +0 -22
- package/lib/Socket/Client/mobile-socket-client.d.ts +0 -12
- package/lib/Socket/Client/mobile-socket-client.js +0 -65
- package/lib/Socket/Client/types.d.ts +0 -16
- package/lib/Socket/Client/types.js +0 -18
- package/lib/Socket/Client/websocket.d.ts +0 -13
- package/lib/Socket/Client/websocket.js +0 -62
- package/lib/Socket/business.d.ts +0 -187
- package/lib/Socket/business.js +0 -415
- package/lib/Socket/chats.d.ts +0 -97
- package/lib/Socket/chats.js +0 -1118
- package/lib/Socket/communities.d.ts +0 -223
- package/lib/Socket/communities.js +0 -433
- package/lib/Socket/groups.d.ts +0 -129
- package/lib/Socket/groups.js +0 -360
- package/lib/Socket/index.d.ts +0 -191
- package/lib/Socket/index.js +0 -24
- package/lib/Socket/messages-recv.d.ts +0 -174
- package/lib/Socket/messages-recv.js +0 -1506
- package/lib/Socket/messages-send.d.ts +0 -165
- package/lib/Socket/messages-send.js +0 -1785
- package/lib/Socket/mex.d.ts +0 -2
- package/lib/Socket/mex.js +0 -47
- package/lib/Socket/newsletter.d.ts +0 -145
- package/lib/Socket/newsletter.js +0 -295
- package/lib/Socket/socket.d.ts +0 -45
- package/lib/Socket/socket.js +0 -934
- package/lib/Socket/usync.d.ts +0 -37
- package/lib/Socket/usync.js +0 -83
- package/lib/Store/index.d.ts +0 -4
- package/lib/Store/index.js +0 -24
- package/lib/Store/make-cache-manager-store.d.ts +0 -14
- package/lib/Store/make-cache-manager-store.js +0 -90
- package/lib/Store/make-in-memory-store.d.ts +0 -123
- package/lib/Store/make-in-memory-store.js +0 -429
- package/lib/Store/make-ordered-dictionary.d.ts +0 -12
- package/lib/Store/make-ordered-dictionary.js +0 -86
- package/lib/Store/object-repository.d.ts +0 -10
- package/lib/Store/object-repository.js +0 -31
- package/lib/Types/Auth.d.ts +0 -121
- package/lib/Types/Auth.js +0 -3
- package/lib/Types/Bussines.js +0 -3
- package/lib/Types/Bussiness.d.ts +0 -28
- package/lib/Types/Call.d.ts +0 -14
- package/lib/Types/Call.js +0 -3
- package/lib/Types/Chat.d.ts +0 -143
- package/lib/Types/Chat.js +0 -9
- package/lib/Types/Contact.d.ts +0 -23
- package/lib/Types/Contact.js +0 -3
- package/lib/Types/Events.d.ts +0 -226
- package/lib/Types/Events.js +0 -3
- package/lib/Types/GroupMetadata.d.ts +0 -66
- package/lib/Types/GroupMetadata.js +0 -3
- package/lib/Types/Label.d.ts +0 -48
- package/lib/Types/Label.js +0 -31
- package/lib/Types/LabelAssociation.d.ts +0 -35
- package/lib/Types/LabelAssociation.js +0 -13
- package/lib/Types/Message.d.ts +0 -484
- package/lib/Types/Message.js +0 -19
- package/lib/Types/MexUpdates.d.ts +0 -9
- package/lib/Types/MexUpdates.js +0 -18
- package/lib/Types/Newsletter.d.ts +0 -109
- package/lib/Types/Newsletter.js +0 -40
- package/lib/Types/Product.d.ts +0 -92
- package/lib/Types/Product.js +0 -3
- package/lib/Types/Signal.d.ts +0 -98
- package/lib/Types/Signal.js +0 -3
- package/lib/Types/Socket.d.ts +0 -141
- package/lib/Types/Socket.js +0 -3
- package/lib/Types/State.d.ts +0 -41
- package/lib/Types/State.js +0 -14
- package/lib/Types/USync.d.ts +0 -26
- package/lib/Types/USync.js +0 -3
- package/lib/Types/index.d.ts +0 -80
- package/lib/Types/index.js +0 -50
- package/lib/Utils/auth-utils.d.ts +0 -21
- package/lib/Utils/auth-utils.js +0 -528
- package/lib/Utils/baileys-event-stream.d.ts +0 -18
- package/lib/Utils/baileys-event-stream.js +0 -70
- package/lib/Utils/business.d.ts +0 -29
- package/lib/Utils/business.js +0 -255
- package/lib/Utils/chat-utils.d.ts +0 -82
- package/lib/Utils/chat-utils.js +0 -809
- package/lib/Utils/crypto.d.ts +0 -56
- package/lib/Utils/crypto.js +0 -189
- package/lib/Utils/decode-wa-message.d.ts +0 -53
- package/lib/Utils/decode-wa-message.js +0 -323
- package/lib/Utils/event-buffer.d.ts +0 -39
- package/lib/Utils/event-buffer.js +0 -595
- package/lib/Utils/generics.d.ts +0 -131
- package/lib/Utils/generics.js +0 -630
- package/lib/Utils/history.d.ts +0 -23
- package/lib/Utils/history.js +0 -104
- package/lib/Utils/index.d.ts +0 -20
- package/lib/Utils/index.js +0 -40
- package/lib/Utils/link-preview.d.ts +0 -23
- package/lib/Utils/link-preview.js +0 -120
- package/lib/Utils/logger.d.ts +0 -13
- package/lib/Utils/logger.js +0 -7
- package/lib/Utils/lt-hash.d.ts +0 -14
- package/lib/Utils/lt-hash.js +0 -58
- package/lib/Utils/make-mutex.d.ts +0 -9
- package/lib/Utils/make-mutex.js +0 -49
- package/lib/Utils/message-retry-manager.d.ts +0 -88
- package/lib/Utils/message-retry-manager.js +0 -160
- package/lib/Utils/messages-media.d.ts +0 -135
- package/lib/Utils/messages-media.js +0 -869
- package/lib/Utils/messages.d.ts +0 -105
- package/lib/Utils/messages.js +0 -1745
- package/lib/Utils/noise-handler.d.ts +0 -21
- package/lib/Utils/noise-handler.js +0 -165
- package/lib/Utils/process-message.d.ts +0 -49
- package/lib/Utils/process-message.js +0 -427
- package/lib/Utils/signal.d.ts +0 -42
- package/lib/Utils/signal.js +0 -166
- 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-multi-file-auth-state.d.ts +0 -18
- package/lib/Utils/use-multi-file-auth-state.js +0 -238
- package/lib/Utils/use-single-file-auth-state.d.ts +0 -13
- package/lib/Utils/use-single-file-auth-state.js +0 -80
- package/lib/Utils/validate-connection.d.ts +0 -13
- package/lib/Utils/validate-connection.js +0 -220
- package/lib/WABinary/constants.d.ts +0 -30
- package/lib/WABinary/constants.js +0 -1316
- package/lib/WABinary/decode.d.ts +0 -9
- package/lib/WABinary/decode.js +0 -288
- package/lib/WABinary/encode.d.ts +0 -3
- package/lib/WABinary/encode.js +0 -265
- package/lib/WABinary/generic-utils.d.ts +0 -28
- package/lib/WABinary/generic-utils.js +0 -142
- package/lib/WABinary/index.d.ts +0 -5
- package/lib/WABinary/index.js +0 -25
- package/lib/WABinary/jid-utils.d.ts +0 -58
- package/lib/WABinary/jid-utils.js +0 -104
- package/lib/WABinary/types.d.ts +0 -22
- package/lib/WABinary/types.js +0 -3
- package/lib/WAM/BinaryInfo.d.ts +0 -16
- package/lib/WAM/BinaryInfo.js +0 -17
- package/lib/WAM/constants.d.ts +0 -47
- package/lib/WAM/constants.js +0 -15371
- package/lib/WAM/encode.d.ts +0 -3
- package/lib/WAM/encode.js +0 -164
- package/lib/WAM/index.d.ts +0 -3
- package/lib/WAM/index.js +0 -23
- package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +0 -28
- package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -69
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -10
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -36
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -26
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -62
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -14
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -35
- package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +0 -10
- package/lib/WAUSync/Protocols/USyncLIDProtocol.js +0 -38
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -14
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -46
- package/lib/WAUSync/Protocols/index.d.ts +0 -6
- package/lib/WAUSync/Protocols/index.js +0 -26
- package/lib/WAUSync/USyncQuery.d.ts +0 -31
- package/lib/WAUSync/USyncQuery.js +0 -92
- package/lib/WAUSync/USyncUser.d.ts +0 -12
- package/lib/WAUSync/USyncUser.js +0 -30
- package/lib/WAUSync/index.d.ts +0 -3
- package/lib/WAUSync/index.js +0 -23
- package/lib/index.d.ts +0 -13
- package/lib/index.js +0 -33
package/lib/Signal/libsignal.js
DELETED
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k)
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k] } }
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc)
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k
|
|
12
|
-
o[k2] = m[k]
|
|
13
|
-
}))
|
|
14
|
-
|
|
15
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v })
|
|
17
|
-
}) : function(o, v) {
|
|
18
|
-
o["default"] = v
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = []
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k
|
|
26
|
-
return ar
|
|
27
|
-
}
|
|
28
|
-
return ownKeys(o)
|
|
29
|
-
}
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod
|
|
32
|
-
var result = {}
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i])
|
|
34
|
-
__setModuleDefault(result, mod)
|
|
35
|
-
return result
|
|
36
|
-
}
|
|
37
|
-
})()
|
|
38
|
-
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
40
|
-
|
|
41
|
-
const libsignal = __importStar(require("@neelegirl/libsignal"))
|
|
42
|
-
const Utils_1 = require("../Utils")
|
|
43
|
-
const WABinary_1 = require("../WABinary")
|
|
44
|
-
const sender_key_name_1 = require("./WASignalGroup/sender-key-name")
|
|
45
|
-
const sender_key_record_1 = require("./WASignalGroup/sender-key-record")
|
|
46
|
-
const Group_1 = require("./WASignalGroup")
|
|
47
|
-
const LIDMappingStore_1 = require("./lid-mapping")
|
|
48
|
-
|
|
49
|
-
function makeLibSignalRepository(auth, onWhatsAppFunc, logger) {
|
|
50
|
-
const lidMapping = new LIDMappingStore_1.LIDMappingStore(auth.keys, onWhatsAppFunc, logger)
|
|
51
|
-
const storage = signalStorage(auth, lidMapping)
|
|
52
|
-
const parsedKeys = auth.keys
|
|
53
|
-
|
|
54
|
-
function isLikelySyncMessage(addr) {
|
|
55
|
-
const key = addr.toString()
|
|
56
|
-
// Only bypass for WhatsApp system addresses, not regular user contacts
|
|
57
|
-
// Be very specific about sync service patterns
|
|
58
|
-
return (key.includes('@lid.whatsapp.net') || // WhatsApp system messages
|
|
59
|
-
key.includes('@broadcast') || // Broadcast messages
|
|
60
|
-
key.includes('@newsletter'))
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const repository = {
|
|
64
|
-
decryptGroupMessage({ group, authorJid, msg }) {
|
|
65
|
-
const senderName = jidToSignalSenderKeyName(group, authorJid)
|
|
66
|
-
const cipher = new Group_1.GroupCipher(storage, senderName)
|
|
67
|
-
// Use transaction to ensure atomicity
|
|
68
|
-
return parsedKeys.transaction(async () => {
|
|
69
|
-
return cipher.decrypt(msg)
|
|
70
|
-
}, group)
|
|
71
|
-
},
|
|
72
|
-
async processSenderKeyDistributionMessage({ item, authorJid }) {
|
|
73
|
-
const builder = new Group_1.GroupSessionBuilder(storage)
|
|
74
|
-
if (!item.groupId) {
|
|
75
|
-
throw new Error('Group ID is required for sender key distribution message')
|
|
76
|
-
}
|
|
77
|
-
const senderName = jidToSignalSenderKeyName(item.groupId, authorJid)
|
|
78
|
-
const senderMsg = new Group_1.SenderKeyDistributionMessage(null, null, null, null, item.axolotlSenderKeyDistributionMessage)
|
|
79
|
-
const senderNameStr = senderName.toString()
|
|
80
|
-
const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr])
|
|
81
|
-
if (!senderKey) {
|
|
82
|
-
await storage.storeSenderKey(senderName, new sender_key_record_1.SenderKeyRecord())
|
|
83
|
-
}
|
|
84
|
-
return parsedKeys.transaction(async () => {
|
|
85
|
-
const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr])
|
|
86
|
-
if (!senderKey) {
|
|
87
|
-
await storage.storeSenderKey(senderName, new sender_key_record_1.SenderKeyRecord())
|
|
88
|
-
}
|
|
89
|
-
await builder.process(senderName, senderMsg)
|
|
90
|
-
}, item.groupId)
|
|
91
|
-
},
|
|
92
|
-
async decryptMessage({ jid, type, ciphertext }) {
|
|
93
|
-
const addr = jidToSignalProtocolAddress(jid)
|
|
94
|
-
const session = new libsignal.SessionCipher(storage, addr)
|
|
95
|
-
async function doDecrypt() {
|
|
96
|
-
let result
|
|
97
|
-
switch (type) {
|
|
98
|
-
case 'pkmsg':
|
|
99
|
-
result = await session.decryptPreKeyWhisperMessage(ciphertext)
|
|
100
|
-
break
|
|
101
|
-
case 'msg':
|
|
102
|
-
result = await session.decryptWhisperMessage(ciphertext)
|
|
103
|
-
break
|
|
104
|
-
}
|
|
105
|
-
return result
|
|
106
|
-
}
|
|
107
|
-
if (isLikelySyncMessage(addr)) {
|
|
108
|
-
// If it's a sync message, we can skip the transaction
|
|
109
|
-
// as it is likely to be a system message that doesn't require strict atomicity
|
|
110
|
-
return await doDecrypt()
|
|
111
|
-
}
|
|
112
|
-
// If it's not a sync message, we need to ensure atomicity
|
|
113
|
-
// For regular messages, we use a transaction to ensure atomicity
|
|
114
|
-
return parsedKeys.transaction(async () => {
|
|
115
|
-
return await doDecrypt()
|
|
116
|
-
}, jid)
|
|
117
|
-
},
|
|
118
|
-
async encryptMessage({ jid, data }) {
|
|
119
|
-
// LID SINGLE SOURCE OF TRUTH: Always prefer LID when available
|
|
120
|
-
let encryptionJid = jid
|
|
121
|
-
// Check for LID mapping and use it if session exists
|
|
122
|
-
if (jid.includes('@s.whatsapp.net')) {
|
|
123
|
-
const lidForPN = await lidMapping.getLIDForPN(jid)
|
|
124
|
-
if (lidForPN?.includes('@lid')) {
|
|
125
|
-
const lidAddr = jidToSignalProtocolAddress(lidForPN)
|
|
126
|
-
const { [lidAddr.toString()]: lidSession } = await auth.keys.get('session', [lidAddr.toString()])
|
|
127
|
-
if (lidSession) {
|
|
128
|
-
// LID session exists, use it
|
|
129
|
-
encryptionJid = lidForPN
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
// Try to migrate if PN session exists
|
|
133
|
-
const pnAddr = jidToSignalProtocolAddress(jid)
|
|
134
|
-
const { [pnAddr.toString()]: pnSession } = await auth.keys.get('session', [pnAddr.toString()])
|
|
135
|
-
if (pnSession) {
|
|
136
|
-
// Migrate PN to LID
|
|
137
|
-
await repository.migrateSession([jid], lidForPN)
|
|
138
|
-
encryptionJid = lidForPN
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
const addr = jidToSignalProtocolAddress(encryptionJid)
|
|
144
|
-
const cipher = new libsignal.SessionCipher(storage, addr)
|
|
145
|
-
// Use transaction to ensure atomicity
|
|
146
|
-
return parsedKeys.transaction(async () => {
|
|
147
|
-
const { type: sigType, body } = await cipher.encrypt(data)
|
|
148
|
-
const type = sigType === 3 ? 'pkmsg' : 'msg'
|
|
149
|
-
return { type, ciphertext: Buffer.from(body, 'binary') }
|
|
150
|
-
}, jid)
|
|
151
|
-
},
|
|
152
|
-
async encryptGroupMessage({ group, meId, data }) {
|
|
153
|
-
const senderName = jidToSignalSenderKeyName(group, meId)
|
|
154
|
-
const builder = new Group_1.GroupSessionBuilder(storage)
|
|
155
|
-
const senderNameStr = senderName.toString()
|
|
156
|
-
return parsedKeys.transaction(async () => {
|
|
157
|
-
const { [senderNameStr]: senderKey } = await auth.keys.get('sender-key', [senderNameStr])
|
|
158
|
-
if (!senderKey) {
|
|
159
|
-
await storage.storeSenderKey(senderName, new sender_key_record_1.SenderKeyRecord())
|
|
160
|
-
}
|
|
161
|
-
const senderKeyDistributionMessage = await builder.create(senderName)
|
|
162
|
-
const session = new Group_1.GroupCipher(storage, senderName)
|
|
163
|
-
const ciphertext = await session.encrypt(data)
|
|
164
|
-
return {
|
|
165
|
-
ciphertext,
|
|
166
|
-
senderKeyDistributionMessage: senderKeyDistributionMessage.serialize()
|
|
167
|
-
}
|
|
168
|
-
}, group)
|
|
169
|
-
},
|
|
170
|
-
async injectE2ESession({ jid, session }) {
|
|
171
|
-
const cipher = new libsignal.SessionBuilder(storage, jidToSignalProtocolAddress(jid))
|
|
172
|
-
return parsedKeys.transaction(async () => {
|
|
173
|
-
await cipher.initOutgoing(session)
|
|
174
|
-
}, jid)
|
|
175
|
-
},
|
|
176
|
-
jidToSignalProtocolAddress(jid) {
|
|
177
|
-
return jidToSignalProtocolAddress(jid).toString()
|
|
178
|
-
},
|
|
179
|
-
// Optimized direct access to LID mapping store
|
|
180
|
-
lidMapping,
|
|
181
|
-
async validateSession(jid) {
|
|
182
|
-
try {
|
|
183
|
-
const addr = jidToSignalProtocolAddress(jid)
|
|
184
|
-
const session = await storage.loadSession(addr.toString())
|
|
185
|
-
if (!session) {
|
|
186
|
-
return { exists: false, reason: 'no session' }
|
|
187
|
-
}
|
|
188
|
-
if (!session.haveOpenSession()) {
|
|
189
|
-
return { exists: false, reason: 'no open session' }
|
|
190
|
-
}
|
|
191
|
-
return { exists: true }
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
return { exists: false, reason: 'validation error' }
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
async deleteSession(jids) {
|
|
198
|
-
if (!jids.length) return
|
|
199
|
-
|
|
200
|
-
// Convert JIDs to signal addresses and prepare for bulk deletion
|
|
201
|
-
const sessionUpdates = {}
|
|
202
|
-
|
|
203
|
-
jids.forEach(jid => {
|
|
204
|
-
const addr = jidToSignalProtocolAddress(jid)
|
|
205
|
-
sessionUpdates[addr.toString()] = null
|
|
206
|
-
})
|
|
207
|
-
|
|
208
|
-
// Single transaction for all deletions
|
|
209
|
-
return parsedKeys.transaction(async () => {
|
|
210
|
-
await auth.keys.set({ session: sessionUpdates })
|
|
211
|
-
}, `delete-${jids.length}-sessions`)
|
|
212
|
-
},
|
|
213
|
-
async migrateSession(fromJids, toJid) {
|
|
214
|
-
if (!fromJids.length || !toJid.includes('@lid'))
|
|
215
|
-
return { migrated: 0, skipped: 0, total: 0 }
|
|
216
|
-
|
|
217
|
-
// Filter valid PN JIDs
|
|
218
|
-
const validJids = fromJids.filter(jid => jid.includes('@s.whatsapp.net'))
|
|
219
|
-
|
|
220
|
-
if (!validJids.length)
|
|
221
|
-
return { migrated: 0, skipped: 0, total: fromJids.length }
|
|
222
|
-
|
|
223
|
-
// Single optimized transaction for all migrations
|
|
224
|
-
return parsedKeys.transaction(async () => {
|
|
225
|
-
// 1. Batch store all LID mappings
|
|
226
|
-
const mappings = validJids.map(jid => ({
|
|
227
|
-
lid: WABinary_1.transferDevice(jid, toJid),
|
|
228
|
-
pn: jid
|
|
229
|
-
}))
|
|
230
|
-
|
|
231
|
-
await lidMapping.storeLIDPNMappings(mappings)
|
|
232
|
-
|
|
233
|
-
// 2. Prepare migration operations
|
|
234
|
-
const migrationOps = validJids.map(jid => {
|
|
235
|
-
const lidWithDevice = WABinary_1.transferDevice(jid, toJid)
|
|
236
|
-
const fromDecoded = WABinary_1.jidDecode(jid)
|
|
237
|
-
const toDecoded = WABinary_1.jidDecode(lidWithDevice)
|
|
238
|
-
|
|
239
|
-
return {
|
|
240
|
-
fromJid: jid,
|
|
241
|
-
toJid: lidWithDevice,
|
|
242
|
-
pnUser: fromDecoded.user,
|
|
243
|
-
lidUser: toDecoded.user,
|
|
244
|
-
deviceId: fromDecoded.device || 0,
|
|
245
|
-
fromAddr: jidToSignalProtocolAddress(jid),
|
|
246
|
-
toAddr: jidToSignalProtocolAddress(lidWithDevice)
|
|
247
|
-
}
|
|
248
|
-
})
|
|
249
|
-
|
|
250
|
-
// 3. Batch check which LID sessions already exist
|
|
251
|
-
const lidAddrs = migrationOps.map(op => op.toAddr.toString())
|
|
252
|
-
const existingSessions = await auth.keys.get('session', lidAddrs)
|
|
253
|
-
|
|
254
|
-
// 4. Filter out sessions that already have LID sessions
|
|
255
|
-
const opsToMigrate = migrationOps.filter(op => !existingSessions[op.toAddr.toString()])
|
|
256
|
-
const skippedCount = migrationOps.length - opsToMigrate.length
|
|
257
|
-
|
|
258
|
-
if (!opsToMigrate.length) {
|
|
259
|
-
return { migrated: 0, skipped: skippedCount, total: validJids.length };
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
// 5. Execute all migrations in parallel
|
|
263
|
-
await Promise.all(opsToMigrate.map(async (op) => {
|
|
264
|
-
const fromSession = await storage.loadSession(op.fromAddr.toString())
|
|
265
|
-
|
|
266
|
-
if (fromSession?.haveOpenSession()) {
|
|
267
|
-
// Copy session to LID address
|
|
268
|
-
const sessionBytes = fromSession.serialize()
|
|
269
|
-
const copiedSession = libsignal.SessionRecord.deserialize(sessionBytes)
|
|
270
|
-
await storage.storeSession(op.toAddr.toString(), copiedSession)
|
|
271
|
-
|
|
272
|
-
// Delete PN session
|
|
273
|
-
await auth.keys.set({ session: { [op.fromAddr.toString()]: null } })
|
|
274
|
-
}
|
|
275
|
-
}))
|
|
276
|
-
|
|
277
|
-
return { migrated: opsToMigrate.length, skipped: skippedCount, total: validJids.length }
|
|
278
|
-
}, `migrate-${validJids.length}-sessions-${WABinary_1.jidDecode(toJid)?.user}`)
|
|
279
|
-
},
|
|
280
|
-
async encryptMessageWithWire({ encryptionJid, wireJid, data }) {
|
|
281
|
-
const result = await repository.encryptMessage({ jid: encryptionJid, data })
|
|
282
|
-
return { ...result, wireJid }
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
return repository
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
const jidToSignalProtocolAddress = (jid) => {
|
|
289
|
-
const decoded = WABinary_1.jidDecode(jid)
|
|
290
|
-
const { user, device, server } = decoded
|
|
291
|
-
|
|
292
|
-
if (!user) {
|
|
293
|
-
throw new Error(`JID decoded but user is empty: "${jid}" -> user: "${user}", server: "${server}", device: ${device}`)
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// LID addresses get _1 suffix for Signal protocol
|
|
297
|
-
const signalUser = server === 'lid' ? `${user}_1` : user
|
|
298
|
-
const finalDevice = device || 0
|
|
299
|
-
|
|
300
|
-
return new libsignal.ProtocolAddress(signalUser, finalDevice)
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
const jidToSignalSenderKeyName = (group, user) => {
|
|
304
|
-
return new sender_key_name_1.SenderKeyName(group, jidToSignalProtocolAddress(user))
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
function signalStorage({ creds, keys }, lidMapping) {
|
|
308
|
-
return {
|
|
309
|
-
loadSession: async (id) => {
|
|
310
|
-
try {
|
|
311
|
-
// LID SINGLE SOURCE OF TRUTH: Auto-redirect PN to LID if mapping exists
|
|
312
|
-
let actualId = id
|
|
313
|
-
if (id.includes('.') && !id.includes('_1')) {
|
|
314
|
-
// This is a PN signal address format (e.g., "1234567890.0")
|
|
315
|
-
// Convert back to JID to check for LID mapping
|
|
316
|
-
const parts = id.split('.')
|
|
317
|
-
const device = parts[1] || '0'
|
|
318
|
-
const pnJid = device === '0' ? `${parts[0]}@s.whatsapp.net` : `${parts[0]}:${device}@s.whatsapp.net`
|
|
319
|
-
const lidForPN = await lidMapping.getLIDForPN(pnJid)
|
|
320
|
-
if (lidForPN?.includes('@lid')) {
|
|
321
|
-
const lidAddr = jidToSignalProtocolAddress(lidForPN)
|
|
322
|
-
const lidId = lidAddr.toString()
|
|
323
|
-
// Check if LID session exists
|
|
324
|
-
const { [lidId]: lidSession } = await keys.get('session', [lidId])
|
|
325
|
-
if (lidSession) {
|
|
326
|
-
actualId = lidId
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
const { [actualId]: sess } = await keys.get('session', [actualId])
|
|
331
|
-
if (sess) {
|
|
332
|
-
return libsignal.SessionRecord.deserialize(sess)
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
catch (e) {
|
|
336
|
-
return null
|
|
337
|
-
}
|
|
338
|
-
return null
|
|
339
|
-
},
|
|
340
|
-
// TODO: Replace with libsignal.SessionRecord when type exports are added to libsignal
|
|
341
|
-
storeSession: async (id, session) => {
|
|
342
|
-
await keys.set({ session: { [id]: session.serialize() } })
|
|
343
|
-
},
|
|
344
|
-
isTrustedIdentity: () => {
|
|
345
|
-
return true
|
|
346
|
-
},
|
|
347
|
-
loadPreKey: async (id) => {
|
|
348
|
-
const keyId = id.toString()
|
|
349
|
-
const { [keyId]: key } = await keys.get('pre-key', [keyId])
|
|
350
|
-
if (key) {
|
|
351
|
-
return {
|
|
352
|
-
privKey: Buffer.from(key.private),
|
|
353
|
-
pubKey: Buffer.from(key.public)
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
},
|
|
357
|
-
removePreKey: (id) => keys.set({ 'pre-key': { [id]: null } }),
|
|
358
|
-
loadSignedPreKey: () => {
|
|
359
|
-
const key = creds.signedPreKey
|
|
360
|
-
return {
|
|
361
|
-
privKey: Buffer.from(key.keyPair.private),
|
|
362
|
-
pubKey: Buffer.from(key.keyPair.public)
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
|
-
loadSenderKey: async (senderKeyName) => {
|
|
366
|
-
const keyId = senderKeyName.toString()
|
|
367
|
-
const { [keyId]: key } = await keys.get('sender-key', [keyId])
|
|
368
|
-
if (key) {
|
|
369
|
-
return sender_key_record_1.SenderKeyRecord.deserialize(key)
|
|
370
|
-
}
|
|
371
|
-
return new sender_key_record_1.SenderKeyRecord()
|
|
372
|
-
},
|
|
373
|
-
storeSenderKey: async (senderKeyName, key) => {
|
|
374
|
-
const keyId = senderKeyName.toString()
|
|
375
|
-
const serialized = JSON.stringify(key.serialize())
|
|
376
|
-
await keys.set({ 'sender-key': { [keyId]: Buffer.from(serialized, 'utf-8') } })
|
|
377
|
-
},
|
|
378
|
-
getOurRegistrationId: () => creds.registrationId,
|
|
379
|
-
getOurIdentity: () => {
|
|
380
|
-
const { signedIdentityKey } = creds
|
|
381
|
-
return {
|
|
382
|
-
privKey: Buffer.from(signedIdentityKey.private),
|
|
383
|
-
pubKey: Buffer.from(Utils_1.generateSignalPubKey(signedIdentityKey.public))
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
module.exports = {
|
|
390
|
-
makeLibSignalRepository
|
|
391
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ILogger } from '@neelegirl/baileys/lib/Utils/loggerr'
|
|
2
|
-
import { SignalKeyStoreWithTransaction } from '@neelegirl/baileys/lib/Types'
|
|
3
|
-
|
|
4
|
-
export declare class LIDMappingStore {
|
|
5
|
-
private readonly mappingCache
|
|
6
|
-
private readonly keys
|
|
7
|
-
private onWhatsAppFunc?
|
|
8
|
-
constructor(keys: SignalKeyStoreWithTransaction, onWhatsAppFunc?: (...jids: string[], logger: ILogger ) => Promise<{
|
|
9
|
-
jid: string
|
|
10
|
-
exists: boolean
|
|
11
|
-
lid: string
|
|
12
|
-
}[] | undefined>)
|
|
13
|
-
/**
|
|
14
|
-
* Store LID-PN mapping - USER LEVEL
|
|
15
|
-
*/
|
|
16
|
-
storeLIDPNMappings(pairs: {
|
|
17
|
-
lid: string;
|
|
18
|
-
pn: string;
|
|
19
|
-
}[]): Promise<void>
|
|
20
|
-
/**
|
|
21
|
-
* Get LID for PN - Returns device-specific LID based on user mapping
|
|
22
|
-
*/
|
|
23
|
-
getLIDForPN(pn: string): Promise<string | null>
|
|
24
|
-
/**
|
|
25
|
-
* Get PN for LID - USER LEVEL with device construction
|
|
26
|
-
*/
|
|
27
|
-
getPNForLID(lid: string): Promise<string | null>
|
|
28
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
4
|
-
|
|
5
|
-
const lru_cache_1 = require("lru-cache")
|
|
6
|
-
const WABinary_1 = require("../WABinary")
|
|
7
|
-
|
|
8
|
-
class LIDMappingStore {
|
|
9
|
-
constructor(keys, onWhatsAppFunc, logger) {
|
|
10
|
-
this.mappingCache = new lru_cache_1.LRUCache({
|
|
11
|
-
ttl: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
12
|
-
ttlAutopurge: true,
|
|
13
|
-
updateAgeOnGet: true
|
|
14
|
-
})
|
|
15
|
-
this.keys = keys
|
|
16
|
-
this.logger = logger
|
|
17
|
-
this.onWhatsAppFunc = onWhatsAppFunc // needed to get LID from PN if not found
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Store LID-PN mapping - USER LEVEL
|
|
21
|
-
*/
|
|
22
|
-
async storeLIDPNMappings(pairs) {
|
|
23
|
-
// Validate inputs
|
|
24
|
-
const pairMap = {}
|
|
25
|
-
const logger = this.logger
|
|
26
|
-
|
|
27
|
-
for (const { lid, pn } of pairs) {
|
|
28
|
-
if (!((WABinary_1.isLidUser(lid) && WABinary_1.isJidUser(pn)) || (WABinary_1.isJidUser(lid) && WABinary_1.isLidUser(pn)))) {
|
|
29
|
-
logger.warn(`Invalid LID-PN mapping: ${lid}, ${pn}`)
|
|
30
|
-
continue
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const [lidJid, pnJid] = WABinary_1.isLidUser(lid) ? [lid, pn] : [pn, lid]
|
|
34
|
-
const lidDecoded = WABinary_1.jidDecode(lidJid)
|
|
35
|
-
const pnDecoded = WABinary_1.jidDecode(pnJid)
|
|
36
|
-
|
|
37
|
-
if (!lidDecoded || !pnDecoded) return
|
|
38
|
-
|
|
39
|
-
const pnUser = pnDecoded.user
|
|
40
|
-
const lidUser = lidDecoded.user
|
|
41
|
-
|
|
42
|
-
// Check if mapping already exists (cache first, then database)
|
|
43
|
-
let existingLidUser = this.mappingCache.get(`pn:${pnUser}`)
|
|
44
|
-
|
|
45
|
-
if (!existingLidUser) {
|
|
46
|
-
// Cache miss - check database
|
|
47
|
-
const stored = await this.keys.get('lid-mapping', [pnUser])
|
|
48
|
-
|
|
49
|
-
existingLidUser = stored[pnUser]
|
|
50
|
-
|
|
51
|
-
if (existingLidUser) {
|
|
52
|
-
// Update cache with database value
|
|
53
|
-
this.mappingCache.set(`pn:${pnUser}`, existingLidUser)
|
|
54
|
-
this.mappingCache.set(`lid:${existingLidUser}`, pnUser)
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (existingLidUser === lidUser) {
|
|
59
|
-
logger.debug({ pnUser, lidUser }, 'LID mapping already exists, skipping')
|
|
60
|
-
continue
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
pairMap[pnUser] = lidUser
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
logger.trace({ pairMap }, `Storing ${Object.keys(pairMap).length} pn mappings`)
|
|
67
|
-
|
|
68
|
-
await this.keys.transaction(async () => {
|
|
69
|
-
for (const [pnUser, lidUser] of Object.entries(pairMap)) {
|
|
70
|
-
await this.keys.set({
|
|
71
|
-
'lid-mapping': {
|
|
72
|
-
[pnUser]: lidUser, // "554396160286" -> "102765716062358"
|
|
73
|
-
[`${lidUser}_reverse`]: pnUser // "102765716062358_reverse" -> "554396160286"
|
|
74
|
-
}
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
// Update cache with both directions
|
|
78
|
-
this.mappingCache.set(`pn:${pnUser}`, lidUser)
|
|
79
|
-
this.mappingCache.set(`lid:${lidUser}`, pnUser)
|
|
80
|
-
}
|
|
81
|
-
}, 'lid-mapping')
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Get LID for PN - Returns device-specific LID based on user mapping
|
|
85
|
-
*/
|
|
86
|
-
async getLIDForPN(pn) {
|
|
87
|
-
if (!WABinary_1.isJidUser(pn)) return null
|
|
88
|
-
|
|
89
|
-
const logger = this.logger
|
|
90
|
-
const decoded = WABinary_1.jidDecode(pn)
|
|
91
|
-
|
|
92
|
-
if (!decoded) return null
|
|
93
|
-
|
|
94
|
-
// Check cache first for PN → LID mapping
|
|
95
|
-
const pnUser = decoded.user
|
|
96
|
-
|
|
97
|
-
let lidUser = this.mappingCache.get(`pn:${pnUser}`)
|
|
98
|
-
|
|
99
|
-
if (!lidUser) {
|
|
100
|
-
// Cache miss - check database
|
|
101
|
-
const stored = await this.keys.get('lid-mapping', [pnUser])
|
|
102
|
-
|
|
103
|
-
lidUser = stored[pnUser]
|
|
104
|
-
|
|
105
|
-
if (lidUser) {
|
|
106
|
-
// Cache the database result
|
|
107
|
-
this.mappingCache.set(`pn:${pnUser}`, lidUser)
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
else {
|
|
111
|
-
// Not in database - try USync
|
|
112
|
-
logger.trace(`No LID mapping found for PN user ${pnUser}; getting from USync`)
|
|
113
|
-
|
|
114
|
-
const { exists, lid } = (await this.onWhatsAppFunc?.(pn))?.[0] // this function already adds LIDs to mapping
|
|
115
|
-
|
|
116
|
-
if (exists && lid) {
|
|
117
|
-
lidUser = WABinary_1.jidDecode(lid)?.user
|
|
118
|
-
|
|
119
|
-
if (lidUser) {
|
|
120
|
-
// Cache the USync result
|
|
121
|
-
this.mappingCache.set(`pn:${pnUser}`, lidUser)
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
else {
|
|
126
|
-
return null
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if (typeof lidUser !== 'string' || !lidUser) {
|
|
132
|
-
logger.warn(`Invalid or empty LID user for PN ${pn}: lidUser = "${lidUser}"`)
|
|
133
|
-
return null
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Push the PN device ID to the LID to maintain device separation
|
|
137
|
-
const pnDevice = decoded.device !== undefined ? decoded.device : 0
|
|
138
|
-
const deviceSpecificLid = `${lidUser}:${pnDevice}@lid`
|
|
139
|
-
|
|
140
|
-
logger.trace(`getLIDForPN: ${pn} → ${deviceSpecificLid} (user mapping with device ${pnDevice})`)
|
|
141
|
-
|
|
142
|
-
return deviceSpecificLid
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Get PN for LID - USER LEVEL with device construction
|
|
146
|
-
*/
|
|
147
|
-
async getPNForLID(lid) {
|
|
148
|
-
if (!WABinary_1.isLidUser(lid)) return null
|
|
149
|
-
|
|
150
|
-
const logger = this.logger
|
|
151
|
-
const decoded = WABinary_1.jidDecode(lid)
|
|
152
|
-
|
|
153
|
-
if (!decoded) return null
|
|
154
|
-
|
|
155
|
-
// Check cache first for LID → PN mapping
|
|
156
|
-
const lidUser = decoded.user
|
|
157
|
-
|
|
158
|
-
let pnUser = this.mappingCache.get(`lid:${lidUser}`)
|
|
159
|
-
|
|
160
|
-
if (!pnUser || typeof pnUser !== 'string') {
|
|
161
|
-
// Cache miss - check database
|
|
162
|
-
const stored = await this.keys.get('lid-mapping', [`${lidUser}_reverse`]);
|
|
163
|
-
pnUser = stored[`${lidUser}_reverse`]
|
|
164
|
-
|
|
165
|
-
if (!pnUser || typeof pnUser !== 'string') {
|
|
166
|
-
logger.trace(`No reverse mapping found for LID user: ${lidUser}`)
|
|
167
|
-
return null
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
this.mappingCache.set(`lid:${lidUser}`, pnUser)
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Construct device-specific PN JID
|
|
174
|
-
const lidDevice = decoded.device !== undefined ? decoded.device : 0
|
|
175
|
-
const pnJid = `${pnUser}:${lidDevice}@s.whatsapp.net`
|
|
176
|
-
logger.trace(`Found reverse mapping: ${lid} → ${pnJid}`)
|
|
177
|
-
|
|
178
|
-
return pnJid
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
module.exports = {
|
|
183
|
-
LIDMappingStore
|
|
184
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
|
-
import { URL } from 'url';
|
|
3
|
-
import { SocketConfig } from '../../Types';
|
|
4
|
-
export declare abstract class AbstractSocketClient extends EventEmitter {
|
|
5
|
-
url: URL;
|
|
6
|
-
config: SocketConfig;
|
|
7
|
-
abstract get isOpen(): boolean;
|
|
8
|
-
abstract get isClosed(): boolean;
|
|
9
|
-
abstract get isClosing(): boolean;
|
|
10
|
-
abstract get isConnecting(): boolean;
|
|
11
|
-
constructor(url: URL, config: SocketConfig);
|
|
12
|
-
abstract connect(): Promise<void>;
|
|
13
|
-
abstract close(): Promise<void>;
|
|
14
|
-
abstract send(str: Uint8Array | string, cb?: (err?: Error) => void): boolean;
|
|
15
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AbstractSocketClient = void 0;
|
|
4
|
-
const events_1 = require("events");
|
|
5
|
-
class AbstractSocketClient extends events_1.EventEmitter {
|
|
6
|
-
constructor(url, config) {
|
|
7
|
-
super();
|
|
8
|
-
this.url = url;
|
|
9
|
-
this.config = config;
|
|
10
|
-
this.setMaxListeners(0);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
exports.AbstractSocketClient = AbstractSocketClient;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k)
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k] } }
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc)
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k
|
|
12
|
-
o[k2] = m[k]
|
|
13
|
-
}))
|
|
14
|
-
|
|
15
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
20
|
-
|
|
21
|
-
__exportStar(require("./types"), exports)
|
|
22
|
-
__exportStar(require("./websocket"), exports)
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Socket } from 'net';
|
|
2
|
-
import { AbstractSocketClient } from './abstract-socket-client';
|
|
3
|
-
export declare class MobileSocketClient extends AbstractSocketClient {
|
|
4
|
-
protected socket: Socket | null;
|
|
5
|
-
get isOpen(): boolean;
|
|
6
|
-
get isClosed(): boolean;
|
|
7
|
-
get isClosing(): boolean;
|
|
8
|
-
get isConnecting(): boolean;
|
|
9
|
-
connect(): Promise<void>;
|
|
10
|
-
close(): Promise<void>;
|
|
11
|
-
send(str: string | Uint8Array, cb?: (err?: Error) => void): boolean;
|
|
12
|
-
}
|