@alannxd/baileys 6.0.4 → 6.0.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/WAProto/GenerateStatics.sh +3 -0
- package/WAProto/WAProto.proto +5479 -0
- package/WAProto/fix-imports.js +85 -0
- package/WAProto/index.d.ts +14017 -0
- package/WAProto/index.js +201 -160
- package/engine-requirements.js +1 -1
- package/lib/Defaults/index.d.ts +37 -15
- package/lib/Defaults/index.js +119 -136
- package/lib/Signal/Group/ciphertext-message.d.ts +1 -0
- package/lib/Signal/Group/ciphertext-message.js +2 -5
- package/lib/Signal/Group/group-session-builder.d.ts +4 -3
- package/lib/Signal/Group/group-session-builder.js +7 -41
- package/lib/Signal/Group/group_cipher.d.ts +4 -4
- package/lib/Signal/Group/group_cipher.js +37 -51
- package/lib/Signal/Group/index.d.ts +12 -11
- package/lib/Signal/Group/index.js +12 -57
- package/lib/Signal/Group/keyhelper.d.ts +2 -1
- package/lib/Signal/Group/keyhelper.js +7 -44
- package/lib/Signal/Group/sender-chain-key.d.ts +3 -2
- package/lib/Signal/Group/sender-chain-key.js +7 -15
- package/lib/Signal/Group/sender-key-distribution-message.d.ts +2 -1
- package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
- package/lib/Signal/Group/sender-key-message.d.ts +2 -1
- package/lib/Signal/Group/sender-key-message.js +9 -12
- package/lib/Signal/Group/sender-key-name.d.ts +1 -0
- package/lib/Signal/Group/sender-key-name.js +2 -5
- package/lib/Signal/Group/sender-key-record.d.ts +3 -2
- package/lib/Signal/Group/sender-key-record.js +9 -21
- package/lib/Signal/Group/sender-key-state.d.ts +7 -6
- package/lib/Signal/Group/sender-key-state.js +27 -42
- package/lib/Signal/Group/sender-message-key.d.ts +1 -0
- package/lib/Signal/Group/sender-message-key.js +4 -7
- package/lib/Signal/libsignal.d.ts +5 -3
- package/lib/Signal/libsignal.js +347 -90
- package/lib/Signal/lid-mapping.d.ts +23 -0
- package/lib/Signal/lid-mapping.js +277 -0
- package/lib/Socket/Client/index.d.ts +3 -3
- package/lib/Socket/Client/index.js +3 -19
- package/lib/Socket/Client/{abstract-socket-client.d.ts → types.d.ts} +4 -5
- package/lib/Socket/Client/types.js +11 -0
- package/lib/Socket/Client/{web-socket-client.d.ts → websocket.d.ts} +3 -2
- package/lib/Socket/Client/websocket.js +54 -0
- package/lib/Socket/business.d.ts +154 -108
- package/lib/Socket/business.js +162 -43
- package/lib/Socket/chats.d.ts +96 -239
- package/lib/Socket/chats.js +627 -427
- package/lib/Socket/communities.d.ts +239 -146
- package/lib/Socket/communities.js +90 -80
- package/lib/Socket/groups.d.ts +104 -57
- package/lib/Socket/groups.js +154 -161
- package/lib/Socket/index.d.ts +202 -115
- package/lib/Socket/index.js +11 -10
- package/lib/Socket/luxu.d.ts +22 -266
- package/lib/Socket/luxu.js +422 -465
- package/lib/Socket/messages-recv.d.ts +136 -84
- package/lib/Socket/messages-recv.js +1421 -615
- package/lib/Socket/messages-send.d.ts +142 -126
- package/lib/Socket/messages-send.js +878 -671
- package/lib/Socket/mex.d.ts +3 -0
- package/lib/Socket/mex.js +42 -0
- package/lib/Socket/newsletter.d.ts +121 -85
- package/lib/Socket/newsletter.js +147 -272
- package/lib/Socket/socket.d.ts +34 -19
- package/lib/Socket/socket.js +544 -313
- package/lib/Store/index.d.ts +10 -3
- package/lib/Store/index.js +10 -10
- package/lib/Store/keyed-db.d.ts +22 -0
- package/lib/Store/keyed-db.js +108 -0
- package/lib/Store/make-cache-manager-store.d.ts +17 -11
- package/lib/Store/make-cache-manager-store.js +43 -41
- package/lib/Store/make-in-memory-store.d.ts +39 -118
- package/lib/Store/make-in-memory-store.js +112 -341
- package/lib/Store/make-ordered-dictionary.d.ts +11 -10
- package/lib/Store/make-ordered-dictionary.js +14 -20
- package/lib/Store/object-repository.d.ts +10 -9
- package/lib/Store/object-repository.js +11 -6
- package/lib/Types/Auth.d.ts +19 -12
- package/lib/Types/Auth.js +2 -2
- package/lib/Types/Bussines.d.ts +25 -0
- package/lib/Types/Bussines.js +2 -0
- package/lib/Types/Call.d.ts +3 -1
- package/lib/Types/Call.js +2 -2
- package/lib/Types/Chat.d.ts +35 -13
- package/lib/Types/Chat.js +8 -4
- package/lib/Types/Contact.d.ts +8 -1
- package/lib/Types/Contact.js +2 -2
- package/lib/Types/Events.d.ts +116 -17
- package/lib/Types/Events.js +2 -2
- package/lib/Types/GroupMetadata.d.ts +21 -5
- package/lib/Types/GroupMetadata.js +2 -2
- package/lib/Types/Label.d.ts +12 -0
- package/lib/Types/Label.js +3 -5
- package/lib/Types/LabelAssociation.d.ts +1 -0
- package/lib/Types/LabelAssociation.js +3 -5
- package/lib/Types/Message.d.ts +105 -58
- package/lib/Types/Message.js +11 -9
- package/lib/Types/Mex.d.ts +141 -0
- package/lib/Types/Mex.js +37 -0
- package/lib/Types/Product.d.ts +2 -1
- package/lib/Types/Product.js +2 -2
- package/lib/Types/Signal.d.ts +32 -2
- package/lib/Types/Signal.js +2 -2
- package/lib/Types/Socket.d.ts +50 -25
- package/lib/Types/Socket.js +3 -2
- package/lib/Types/State.d.ts +72 -2
- package/lib/Types/State.js +56 -2
- package/lib/Types/USync.d.ts +3 -2
- package/lib/Types/USync.js +2 -2
- package/lib/Types/index.d.ts +22 -14
- package/lib/Types/index.js +15 -31
- package/lib/Utils/auth-utils.d.ts +12 -6
- package/lib/Utils/auth-utils.js +239 -143
- package/lib/Utils/browser-utils.d.ts +4 -0
- package/lib/Utils/browser-utils.js +28 -0
- package/lib/Utils/business.d.ts +3 -2
- package/lib/Utils/business.js +66 -69
- package/lib/Utils/chat-utils.d.ts +52 -23
- package/lib/Utils/chat-utils.js +396 -253
- package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
- package/lib/Utils/companion-reg-client-utils.js +35 -0
- package/lib/Utils/crypto.d.ts +18 -22
- package/lib/Utils/crypto.js +57 -90
- package/lib/Utils/decode-wa-message.d.ts +55 -8
- package/lib/Utils/decode-wa-message.js +203 -84
- package/lib/Utils/event-buffer.d.ts +9 -8
- package/lib/Utils/event-buffer.js +185 -77
- package/lib/Utils/generics.d.ts +28 -29
- package/lib/Utils/generics.js +180 -210
- package/lib/Utils/history.d.ts +18 -9
- package/lib/Utils/history.js +93 -55
- package/lib/Utils/identity-change-handler.d.ts +44 -0
- package/lib/Utils/identity-change-handler.js +50 -0
- package/lib/Utils/index.d.ts +22 -17
- package/lib/Utils/index.js +22 -33
- package/lib/Utils/link-preview.d.ts +5 -5
- package/lib/Utils/link-preview.js +16 -24
- package/lib/Utils/logger.d.ts +11 -3
- package/lib/Utils/logger.js +3 -7
- package/lib/Utils/lt-hash.d.ts +8 -12
- package/lib/Utils/lt-hash.js +3 -46
- package/lib/Utils/make-mutex.d.ts +4 -2
- package/lib/Utils/make-mutex.js +24 -34
- package/lib/Utils/message-retry-manager.d.ts +115 -0
- package/lib/Utils/message-retry-manager.js +265 -0
- package/lib/Utils/messages-media.d.ts +61 -44
- package/lib/Utils/messages-media.js +451 -482
- package/lib/Utils/messages.d.ts +32 -18
- package/lib/Utils/messages.js +458 -369
- package/lib/Utils/noise-handler.d.ts +13 -14
- package/lib/Utils/noise-handler.js +145 -99
- package/lib/Utils/offline-node-processor.d.ts +17 -0
- package/lib/Utils/offline-node-processor.js +40 -0
- package/lib/Utils/pre-key-manager.d.ts +28 -0
- package/lib/Utils/pre-key-manager.js +106 -0
- package/lib/Utils/process-message.d.ts +31 -12
- package/lib/Utils/process-message.js +459 -150
- package/lib/Utils/reporting-utils.d.ts +11 -0
- package/lib/Utils/reporting-utils.js +258 -0
- package/lib/Utils/signal.d.ts +20 -5
- package/lib/Utils/signal.js +120 -72
- package/lib/Utils/stanza-ack.d.ts +11 -0
- package/lib/Utils/stanza-ack.js +38 -0
- package/lib/Utils/sync-action-utils.d.ts +19 -0
- package/lib/Utils/sync-action-utils.js +49 -0
- package/lib/Utils/tc-token-utils.d.ts +37 -0
- package/lib/Utils/tc-token-utils.js +163 -0
- package/lib/Utils/use-multi-file-auth-state.d.ts +2 -2
- package/lib/Utils/use-multi-file-auth-state.js +29 -27
- package/lib/Utils/validate-connection.d.ts +7 -7
- package/lib/Utils/validate-connection.js +73 -99
- package/lib/WABinary/constants.d.ts +25 -27
- package/lib/WABinary/constants.js +1281 -20
- package/lib/WABinary/decode.d.ts +5 -5
- package/lib/WABinary/decode.js +52 -42
- package/lib/WABinary/encode.d.ts +3 -3
- package/lib/WABinary/encode.js +110 -155
- package/lib/WABinary/generic-utils.d.ts +8 -7
- package/lib/WABinary/generic-utils.js +48 -49
- package/lib/WABinary/index.d.ts +6 -5
- package/lib/WABinary/index.js +6 -21
- package/lib/WABinary/jid-utils.d.ts +25 -8
- package/lib/WABinary/jid-utils.js +74 -40
- package/lib/WABinary/types.d.ts +2 -1
- package/lib/WABinary/types.js +2 -2
- package/lib/WAM/BinaryInfo.d.ts +3 -11
- package/lib/WAM/BinaryInfo.js +2 -5
- package/lib/WAM/constants.d.ts +5 -3
- package/lib/WAM/constants.js +19071 -11568
- package/lib/WAM/encode.d.ts +3 -3
- package/lib/WAM/encode.js +17 -22
- package/lib/WAM/index.d.ts +4 -3
- package/lib/WAM/index.js +4 -19
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +4 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +3 -2
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +3 -2
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +3 -2
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +4 -3
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +5 -3
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
- package/lib/WAUSync/Protocols/index.d.ts +6 -4
- package/lib/WAUSync/Protocols/index.js +6 -20
- package/lib/WAUSync/USyncQuery.d.ts +6 -4
- package/lib/WAUSync/USyncQuery.js +44 -35
- package/lib/WAUSync/USyncUser.d.ts +10 -5
- package/lib/WAUSync/USyncUser.js +10 -5
- package/lib/WAUSync/index.d.ts +4 -0
- package/lib/WAUSync/index.js +4 -19
- package/lib/index.d.ts +10 -9
- package/lib/index.js +12 -34
- package/package.json +84 -51
- package/WAProto/fix-import.js +0 -29
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Defaults/phonenumber-mcc.json +0 -223
- package/lib/Signal/Group/queue-job.d.ts +0 -1
- package/lib/Signal/Group/queue-job.js +0 -57
- package/lib/Socket/Client/abstract-socket-client.js +0 -13
- package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
- package/lib/Socket/Client/mobile-socket-client.js +0 -65
- package/lib/Socket/Client/web-socket-client.js +0 -62
- package/lib/Socket/registration.d.ts +0 -267
- package/lib/Socket/registration.js +0 -166
- package/lib/Socket/usync.d.ts +0 -36
- package/lib/Socket/usync.js +0 -70
- package/lib/Types/Newsletter.d.ts +0 -103
- package/lib/Types/Newsletter.js +0 -38
- package/lib/Utils/baileys-event-stream.d.ts +0 -16
- package/lib/Utils/baileys-event-stream.js +0 -63
package/lib/Store/index.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
export * from './make-cache-manager-store';
|
|
2
|
+
export * from './make-in-memory-store';
|
|
3
|
+
export * from './make-ordered-dictionary';
|
|
4
|
+
export * from './object-repository';
|
|
5
|
+
export * from './keyed-db
|
|
6
|
+
export { default as makeCacheManagerStore } from './make-cache-manager-store';
|
|
7
|
+
export { default as makeInMemoryStore } from './make-in-memory-store';
|
|
8
|
+
export { default as makeOrderedDictionary } from './make-ordered-dictionary';
|
|
9
|
+
export { default as objectRepository } from './object-repository';
|
|
10
|
+
export { default as keyedDB} from './keyed-db';
|
package/lib/Store/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
export * from './make-cache-manager-store.js';
|
|
2
|
+
export * from './make-in-memory-store.js';
|
|
3
|
+
export * from './make-ordered-dictionary.js';
|
|
4
|
+
export * from './object-repository.js';
|
|
5
|
+
export * from './keyed-db.js';
|
|
6
|
+
export { default as makeCacheManagerStore } from './make-cache-manager-store.js';
|
|
7
|
+
export { default as makeInMemoryStore } from './make-in-memory-store.js';
|
|
8
|
+
export { default as makeOrderedDictionary } from './make-ordered-dictionary.js';
|
|
9
|
+
export { default as objectRepository } from './object-repository.js';
|
|
10
|
+
export { default as keyedDB } from './keyed-db.js';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare class KeyedDB<T> {
|
|
2
|
+
private _compare: (a: string, b: string) => number;
|
|
3
|
+
private _idGetter: (item: T) => string;
|
|
4
|
+
private _array: T[];
|
|
5
|
+
private _dict: { [id: string]: T };
|
|
6
|
+
constructor(compareFn: (a: string, b: string) => number, idGetter: (item: T) => string);
|
|
7
|
+
get length(): number;
|
|
8
|
+
get(id: string): T | undefined;
|
|
9
|
+
insert(entry: T, mode?: 'insert'): boolean;
|
|
10
|
+
insertIfAbsent(...entries: T[]): T[];
|
|
11
|
+
upsert(...entries: T[]): T[];
|
|
12
|
+
update(id: string, updater: (item: T) => void): boolean;
|
|
13
|
+
updateAssign(id: string, update: Partial<T>): boolean;
|
|
14
|
+
deleteById(id: string): boolean;
|
|
15
|
+
clear(): void;
|
|
16
|
+
all(): T[];
|
|
17
|
+
filter(predicate: (item: T) => boolean): void;
|
|
18
|
+
count(): number;
|
|
19
|
+
toJSON(): T[];
|
|
20
|
+
fromJSON(array: T[]): void;
|
|
21
|
+
}
|
|
22
|
+
export default KeyedDB;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export default class KeyedDB {
|
|
2
|
+
constructor(compareFn, idGetter) {
|
|
3
|
+
if (typeof compareFn !== "function" || typeof idGetter !== "function") {
|
|
4
|
+
throw new Error("KeyedDB requires compare and idGetter functions");
|
|
5
|
+
}
|
|
6
|
+
this._compare = compareFn;
|
|
7
|
+
this._idGetter = idGetter;
|
|
8
|
+
this._array = [];
|
|
9
|
+
this._dict = {};
|
|
10
|
+
}
|
|
11
|
+
get length() {
|
|
12
|
+
return this._array.length;
|
|
13
|
+
}
|
|
14
|
+
get(id) {
|
|
15
|
+
return this._dict[id];
|
|
16
|
+
}
|
|
17
|
+
insert(entry, mode = "insert") {
|
|
18
|
+
const id = this._idGetter(entry);
|
|
19
|
+
const existing = this._dict[id];
|
|
20
|
+
if (existing && mode === "insert") {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
this._dict[id] = entry;
|
|
24
|
+
let inserted = false;
|
|
25
|
+
for (let i = 0; i < this._array.length; i++) {
|
|
26
|
+
const cmp = this._compare(this._idGetter(this._array[i]), id);
|
|
27
|
+
if (cmp < 0) {
|
|
28
|
+
this._array.splice(i, 0, entry);
|
|
29
|
+
inserted = true;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!inserted) this._array.push(entry);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
insertIfAbsent(...entries) {
|
|
37
|
+
const added = [];
|
|
38
|
+
for (const entry of entries) {
|
|
39
|
+
if (!this._dict[this._idGetter(entry)]) {
|
|
40
|
+
this.insert(entry);
|
|
41
|
+
added.push(entry);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return added;
|
|
45
|
+
}
|
|
46
|
+
upsert(...entries) {
|
|
47
|
+
const added = [];
|
|
48
|
+
for (const entry of entries) {
|
|
49
|
+
const id = this._idGetter(entry);
|
|
50
|
+
if (this._dict[id]) {
|
|
51
|
+
const idx = this._array.findIndex(e => this._idGetter(e) === id);
|
|
52
|
+
if (idx >= 0) this._array[idx] = entry;
|
|
53
|
+
this._dict[id] = entry;
|
|
54
|
+
} else {
|
|
55
|
+
this.insert(entry);
|
|
56
|
+
added.push(entry);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return added;
|
|
60
|
+
}
|
|
61
|
+
update(id, updater) {
|
|
62
|
+
const item = this._dict[id];
|
|
63
|
+
if (!item) return false;
|
|
64
|
+
updater(item);
|
|
65
|
+
const idx = this._array.findIndex(e => this._idGetter(e) === id);
|
|
66
|
+
if (idx >= 0) this._array[idx] = item;
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
updateAssign(id, update) {
|
|
70
|
+
const item = this._dict[id];
|
|
71
|
+
if (!item) return false;
|
|
72
|
+
Object.assign(item, update);
|
|
73
|
+
const idx = this._array.findIndex(e => this._idGetter(e) === id);
|
|
74
|
+
if (idx >= 0) this._array[idx] = item;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
deleteById(id) {
|
|
78
|
+
if (!this._dict[id]) return false;
|
|
79
|
+
delete this._dict[id];
|
|
80
|
+
const idx = this._array.findIndex(e => this._idGetter(e) === id);
|
|
81
|
+
if (idx >= 0) this._array.splice(idx, 1);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
clear() {
|
|
85
|
+
this._array = [];
|
|
86
|
+
this._dict = {};
|
|
87
|
+
}
|
|
88
|
+
all() {
|
|
89
|
+
return [...this._array];
|
|
90
|
+
}
|
|
91
|
+
filter(predicate) {
|
|
92
|
+
this._array = this._array.filter(predicate);
|
|
93
|
+
this._dict = {};
|
|
94
|
+
for (const entry of this._array) {
|
|
95
|
+
this._dict[this._idGetter(entry)] = entry;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
count() {
|
|
99
|
+
return this._array.length;
|
|
100
|
+
}
|
|
101
|
+
toJSON() {
|
|
102
|
+
return this._array;
|
|
103
|
+
}
|
|
104
|
+
fromJSON(array) {
|
|
105
|
+
this.clear();
|
|
106
|
+
for (const entry of array) this.insert(entry);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { Store } from 'cache-manager';
|
|
2
|
+
import { proto as WAProto } from '../../WAProto';
|
|
3
|
+
|
|
4
|
+
interface AuthState {
|
|
5
|
+
clearState: () => Promise<void>;
|
|
6
|
+
saveCreds: () => Promise<void>;
|
|
7
|
+
state: {
|
|
8
|
+
creds: any;
|
|
9
|
+
keys: {
|
|
10
|
+
get: (type: string, ids: string[]) => Promise<{ [id: string]: any }>;
|
|
11
|
+
set: (data: { [category: string]: { [id: string]: any } }) => Promise<void>;
|
|
11
12
|
};
|
|
12
|
-
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare function makeCacheManagerAuthState(store: Store, sessionKey: string): Promise<AuthState>;
|
|
17
|
+
|
|
13
18
|
export default makeCacheManagerAuthState;
|
|
19
|
+
export { makeCacheManagerAuthState };
|
|
@@ -1,71 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const makeCacheManagerAuthState = async (store, sessionKey) => {
|
|
1
|
+
import { createRequire } from "module";
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
const cacheManager = require("cache-manager");
|
|
4
|
+
|
|
5
|
+
import * as WAProto_1 from "../../WAProto/index.js";
|
|
6
|
+
import * as Utils_1 from "../Utils/index.js";
|
|
7
|
+
import logger from "../Utils/logger.js";
|
|
8
|
+
|
|
9
|
+
export default async function makeCacheManagerAuthState(store, sessionKey) {
|
|
11
10
|
const defaultKey = (file) => `${sessionKey}:${file}`;
|
|
12
|
-
const databaseConn = await
|
|
11
|
+
const databaseConn = await cacheManager.caching(store);
|
|
12
|
+
|
|
13
13
|
const writeData = async (file, data) => {
|
|
14
14
|
let ttl = undefined;
|
|
15
|
-
if (file ===
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
if (file === "creds") ttl = 63115200; // 2 years
|
|
16
|
+
await databaseConn.set(
|
|
17
|
+
defaultKey(file),
|
|
18
|
+
JSON.stringify(data, Utils_1.BufferJSON.replacer),
|
|
19
|
+
ttl
|
|
20
|
+
);
|
|
19
21
|
};
|
|
22
|
+
|
|
20
23
|
const readData = async (file) => {
|
|
21
24
|
try {
|
|
22
25
|
const data = await databaseConn.get(defaultKey(file));
|
|
23
|
-
if (data)
|
|
24
|
-
return JSON.parse(data, Utils_1.BufferJSON.reviver);
|
|
25
|
-
}
|
|
26
|
+
if (data) return JSON.parse(data, Utils_1.BufferJSON.reviver);
|
|
26
27
|
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
logger_1.default.error(error);
|
|
28
|
+
} catch (error) {
|
|
29
|
+
logger.error(error);
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
+
|
|
33
34
|
const removeData = async (file) => {
|
|
34
35
|
try {
|
|
35
36
|
return await databaseConn.del(defaultKey(file));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
logger_1.default.error(`Error removing ${file} from session ${sessionKey}`);
|
|
37
|
+
} catch {
|
|
38
|
+
logger.error(`Error removing ${file} from session ${sessionKey}`);
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
|
+
|
|
41
42
|
const clearState = async () => {
|
|
42
43
|
try {
|
|
43
44
|
const result = await databaseConn.store.keys(`${sessionKey}*`);
|
|
44
|
-
await Promise.all(result.map(async (key) =>
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
}
|
|
45
|
+
await Promise.all(result.map(async (key) => databaseConn.del(key)));
|
|
46
|
+
} catch {}
|
|
48
47
|
};
|
|
49
|
-
|
|
48
|
+
|
|
49
|
+
const creds = (await readData("creds")) || Utils_1.initAuthCreds();
|
|
50
|
+
|
|
50
51
|
return {
|
|
51
52
|
clearState,
|
|
52
|
-
saveCreds: () => writeData(
|
|
53
|
+
saveCreds: () => writeData("creds", creds),
|
|
53
54
|
state: {
|
|
54
55
|
creds,
|
|
55
56
|
keys: {
|
|
56
57
|
get: async (type, ids) => {
|
|
57
58
|
const data = {};
|
|
58
|
-
await Promise.all(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
await Promise.all(
|
|
60
|
+
ids.map(async (id) => {
|
|
61
|
+
let value = await readData(`${type}-${id}`);
|
|
62
|
+
if (type === "app-state-sync-key" && value) {
|
|
63
|
+
value =
|
|
64
|
+
WAProto_1.proto.Message.AppStateSyncKeyData.fromObject(value);
|
|
65
|
+
}
|
|
66
|
+
data[id] = value;
|
|
67
|
+
})
|
|
68
|
+
);
|
|
65
69
|
return data;
|
|
66
70
|
},
|
|
67
71
|
set: async (data) => {
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
72
|
const tasks = [];
|
|
70
73
|
for (const category in data) {
|
|
71
74
|
for (const id in data[category]) {
|
|
@@ -75,9 +78,8 @@ const makeCacheManagerAuthState = async (store, sessionKey) => {
|
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
await Promise.all(tasks);
|
|
78
|
-
}
|
|
81
|
+
}
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
84
|
};
|
|
82
|
-
}
|
|
83
|
-
exports.default = makeCacheManagerAuthState;
|
|
85
|
+
}
|
|
@@ -1,118 +1,39 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
groupMetadata: {
|
|
43
|
-
[_: string]: GroupMetadata;
|
|
44
|
-
};
|
|
45
|
-
state: ConnectionState;
|
|
46
|
-
presences: {
|
|
47
|
-
[id: string]: {
|
|
48
|
-
[participant: string]: PresenceData;
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
labels: ObjectRepository<Label>;
|
|
52
|
-
labelAssociations: KeyedDB<LabelAssociation, string>;
|
|
53
|
-
bind: (ev: BaileysEventEmitter) => void;
|
|
54
|
-
/** loads messages from the store, if not found -- uses the legacy connection */
|
|
55
|
-
loadMessages: (jid: string, count: number, cursor: WAMessageCursor) => Promise<proto.IWebMessageInfo[]>;
|
|
56
|
-
/**
|
|
57
|
-
* Get all available labels for profile
|
|
58
|
-
*
|
|
59
|
-
* Keep in mind that the list is formed from predefined tags and tags
|
|
60
|
-
* that were "caught" during their editing.
|
|
61
|
-
*/
|
|
62
|
-
getLabels: () => ObjectRepository<Label>;
|
|
63
|
-
/**
|
|
64
|
-
* Get labels for chat
|
|
65
|
-
*
|
|
66
|
-
* @returns Label IDs
|
|
67
|
-
**/
|
|
68
|
-
getChatLabels: (chatId: string) => LabelAssociation[];
|
|
69
|
-
/**
|
|
70
|
-
* Get labels for message
|
|
71
|
-
*
|
|
72
|
-
* @returns Label IDs
|
|
73
|
-
**/
|
|
74
|
-
getMessageLabels: (messageId: string) => string[];
|
|
75
|
-
loadMessage: (jid: string, id: string) => Promise<proto.IWebMessageInfo | undefined>;
|
|
76
|
-
mostRecentMessage: (jid: string) => Promise<proto.IWebMessageInfo>;
|
|
77
|
-
fetchImageUrl: (jid: string, sock: WASocket | undefined) => Promise<string | null | undefined>;
|
|
78
|
-
fetchGroupMetadata: (jid: string, sock: WASocket | undefined) => Promise<GroupMetadata>;
|
|
79
|
-
fetchMessageReceipts: ({ remoteJid, id }: WAMessageKey) => Promise<proto.IUserReceipt[] | null | undefined>;
|
|
80
|
-
toJSON: () => {
|
|
81
|
-
chats: KeyedDB<Chat, string>;
|
|
82
|
-
contacts: {
|
|
83
|
-
[_: string]: Contact;
|
|
84
|
-
};
|
|
85
|
-
messages: {
|
|
86
|
-
[_: string]: {
|
|
87
|
-
array: proto.IWebMessageInfo[];
|
|
88
|
-
get: (id: string) => proto.IWebMessageInfo | undefined;
|
|
89
|
-
upsert: (item: proto.IWebMessageInfo, mode: "append" | "prepend") => void;
|
|
90
|
-
update: (item: proto.IWebMessageInfo) => boolean;
|
|
91
|
-
remove: (item: proto.IWebMessageInfo) => boolean;
|
|
92
|
-
updateAssign: (id: string, update: Partial<proto.IWebMessageInfo>) => boolean;
|
|
93
|
-
clear: () => void;
|
|
94
|
-
filter: (contain: (item: proto.IWebMessageInfo) => boolean) => void;
|
|
95
|
-
toJSON: () => proto.IWebMessageInfo[];
|
|
96
|
-
fromJSON: (newItems: proto.IWebMessageInfo[]) => void;
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
labels: ObjectRepository<Label>;
|
|
100
|
-
labelAssociations: KeyedDB<LabelAssociation, string>;
|
|
101
|
-
};
|
|
102
|
-
fromJSON: (json: {
|
|
103
|
-
chats: Chat[];
|
|
104
|
-
contacts: {
|
|
105
|
-
[id: string]: Contact;
|
|
106
|
-
};
|
|
107
|
-
messages: {
|
|
108
|
-
[id: string]: proto.IWebMessageInfo[];
|
|
109
|
-
};
|
|
110
|
-
labels: {
|
|
111
|
-
[labelId: string]: Label;
|
|
112
|
-
};
|
|
113
|
-
labelAssociations: LabelAssociation[];
|
|
114
|
-
}) => void;
|
|
115
|
-
writeToFile: (path: string) => void;
|
|
116
|
-
readFromFile: (path: string) => void;
|
|
117
|
-
};
|
|
118
|
-
export default _default;
|
|
1
|
+
import { proto as WAProto } from '../../WAProto';
|
|
2
|
+
import { LabelAssociationType } from '../Types/LabelAssociation';
|
|
3
|
+
|
|
4
|
+
interface StoreConfig {
|
|
5
|
+
socket: any;
|
|
6
|
+
chatKey?: any;
|
|
7
|
+
labelAssociationKey?: any;
|
|
8
|
+
logger?: any;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface Store {
|
|
12
|
+
chats: any;
|
|
13
|
+
contacts: any;
|
|
14
|
+
messages: any;
|
|
15
|
+
groupMetadata: any;
|
|
16
|
+
state: any;
|
|
17
|
+
presences: any;
|
|
18
|
+
labels: any;
|
|
19
|
+
labelAssociations: any;
|
|
20
|
+
bind: (ev: any) => void;
|
|
21
|
+
loadMessages: (jid: string, count: number, cursor: any) => Promise<any[]>;
|
|
22
|
+
getLabels: () => any[];
|
|
23
|
+
getChatLabels: (chatId: string) => any[];
|
|
24
|
+
getMessageLabels: (messageId: string) => any[];
|
|
25
|
+
loadMessage: (jid: string, id: string) => Promise<any>;
|
|
26
|
+
mostRecentMessage: (jid: string) => Promise<any>;
|
|
27
|
+
fetchImageUrl: (jid: string, sock: any) => Promise<string | undefined>;
|
|
28
|
+
fetchGroupMetadata: (jid: string, sock: any) => Promise<any>;
|
|
29
|
+
fetchMessageReceipts: (opts: { remoteJid: string; id: string }) => Promise<any[] | undefined>;
|
|
30
|
+
toJSON: () => any;
|
|
31
|
+
fromJSON: (json: any) => void;
|
|
32
|
+
writeToFile: (path: string) => void;
|
|
33
|
+
readFromFile: (path: string) => void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare function makeStore(config: StoreConfig): Store;
|
|
37
|
+
|
|
38
|
+
export default makeStore;
|
|
39
|
+
export { makeStore, waChatKey, waMessageID, waLabelAssociationKey };
|