gifted-baileys 1.5.0 → 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/LICENSE +1 -1
- package/README.md +1429 -684
- package/package.json +11 -26
- package/src/Defaults/baileys-version.json +3 -0
- package/{lib → src}/Defaults/index.js +16 -8
- package/src/Defaults/index.ts +131 -0
- package/src/Defaults/phonenumber-mcc.json +223 -0
- package/src/Signal/libsignal.js +180 -0
- package/src/Signal/libsignal.ts +141 -0
- package/src/Socket/Client/abstract-socket-client.ts +19 -0
- package/src/Socket/Client/index.ts +3 -0
- package/src/Socket/Client/mobile-socket-client.js +78 -0
- package/src/Socket/Client/mobile-socket-client.ts +66 -0
- package/src/Socket/Client/web-socket-client.js +75 -0
- package/src/Socket/Client/web-socket-client.ts +57 -0
- package/{lib → src}/Socket/business.js +33 -27
- package/src/Socket/business.ts +281 -0
- package/{lib → src}/Socket/chats.js +197 -178
- package/src/Socket/chats.ts +1030 -0
- package/{lib → src}/Socket/groups.js +69 -79
- package/src/Socket/groups.ts +356 -0
- package/{lib → src}/Socket/index.js +1 -4
- package/src/Socket/index.ts +13 -0
- package/{lib → src}/Socket/messages-recv.js +160 -108
- package/src/Socket/messages-recv.ts +985 -0
- package/{lib → src}/Socket/messages-send.js +183 -100
- package/src/Socket/messages-send.ts +871 -0
- package/src/Socket/newsletter.js +227 -0
- package/src/Socket/newsletter.ts +282 -0
- package/{lib → src}/Socket/registration.js +55 -63
- package/src/Socket/registration.ts +250 -0
- package/{lib → src}/Socket/socket.js +107 -66
- package/src/Socket/socket.ts +777 -0
- package/src/Store/index.ts +3 -0
- package/{lib → src}/Store/make-cache-manager-store.js +34 -25
- package/src/Store/make-cache-manager-store.ts +100 -0
- package/{lib → src}/Store/make-in-memory-store.js +51 -61
- package/src/Store/make-in-memory-store.ts +475 -0
- package/src/Store/make-ordered-dictionary.ts +86 -0
- package/{lib → src}/Store/object-repository.js +1 -1
- package/src/Store/object-repository.ts +32 -0
- package/src/Tests/test.app-state-sync.js +204 -0
- package/src/Tests/test.app-state-sync.ts +207 -0
- package/src/Tests/test.event-buffer.js +270 -0
- package/src/Tests/test.event-buffer.ts +319 -0
- package/src/Tests/test.key-store.js +76 -0
- package/src/Tests/test.key-store.ts +92 -0
- package/src/Tests/test.libsignal.js +141 -0
- package/src/Tests/test.libsignal.ts +186 -0
- package/src/Tests/test.media-download.js +93 -0
- package/src/Tests/test.media-download.ts +76 -0
- package/src/Tests/test.messages.js +33 -0
- package/src/Tests/test.messages.ts +37 -0
- package/src/Tests/utils.js +34 -0
- package/src/Tests/utils.ts +36 -0
- package/src/Types/Auth.ts +113 -0
- package/src/Types/Call.ts +15 -0
- package/src/Types/Chat.ts +106 -0
- package/{lib/Types/Contact.d.ts → src/Types/Contact.ts} +9 -8
- package/src/Types/Events.ts +93 -0
- package/src/Types/GroupMetadata.ts +53 -0
- package/{lib → src}/Types/Label.js +1 -1
- package/src/Types/Label.ts +36 -0
- package/{lib → src}/Types/LabelAssociation.js +1 -1
- package/{lib/Types/LabelAssociation.d.ts → src/Types/LabelAssociation.ts} +22 -16
- package/src/Types/Message.ts +288 -0
- package/src/Types/Newsletter.js +32 -0
- package/src/Types/Newsletter.ts +98 -0
- package/src/Types/Product.ts +85 -0
- package/src/Types/Signal.ts +68 -0
- package/{lib/Types/Socket.d.ts → src/Types/Socket.ts} +68 -56
- package/src/Types/State.ts +29 -0
- package/{lib → src}/Types/index.js +2 -1
- package/src/Types/index.ts +59 -0
- package/{lib → src}/Utils/auth-utils.js +95 -76
- package/src/Utils/auth-utils.ts +222 -0
- package/src/Utils/baileys-event-stream.js +92 -0
- package/src/Utils/baileys-event-stream.ts +66 -0
- package/{lib → src}/Utils/business.js +45 -17
- package/src/Utils/business.ts +275 -0
- package/{lib → src}/Utils/chat-utils.js +74 -46
- package/src/Utils/chat-utils.ts +860 -0
- package/{lib → src}/Utils/crypto.js +31 -21
- package/src/Utils/crypto.ts +131 -0
- package/src/Utils/decode-wa-message.js +211 -0
- package/src/Utils/decode-wa-message.ts +228 -0
- package/{lib → src}/Utils/event-buffer.js +13 -4
- package/src/Utils/event-buffer.ts +613 -0
- package/{lib → src}/Utils/generics.js +98 -45
- package/src/Utils/generics.ts +434 -0
- package/{lib → src}/Utils/history.js +39 -10
- package/src/Utils/history.ts +112 -0
- package/src/Utils/index.ts +17 -0
- package/{lib → src}/Utils/link-preview.js +54 -17
- package/src/Utils/link-preview.ts +122 -0
- package/src/Utils/logger.ts +3 -0
- package/src/Utils/lt-hash.ts +61 -0
- package/{lib → src}/Utils/make-mutex.js +13 -4
- package/src/Utils/make-mutex.ts +44 -0
- package/{lib → src}/Utils/messages-media.js +296 -192
- package/src/Utils/messages-media.ts +847 -0
- package/{lib → src}/Utils/messages.js +124 -113
- package/src/Utils/messages.ts +956 -0
- package/{lib → src}/Utils/noise-handler.js +16 -3
- package/src/Utils/noise-handler.ts +197 -0
- package/{lib → src}/Utils/process-message.js +33 -29
- package/src/Utils/process-message.ts +414 -0
- package/{lib → src}/Utils/signal.js +23 -14
- package/src/Utils/signal.ts +177 -0
- package/{lib → src}/Utils/use-multi-file-auth-state.js +28 -19
- package/src/Utils/use-multi-file-auth-state.ts +90 -0
- package/{lib → src}/Utils/validate-connection.js +25 -42
- package/src/Utils/validate-connection.ts +238 -0
- package/src/WABinary/constants.ts +42 -0
- package/{lib → src}/WABinary/decode.js +17 -7
- package/src/WABinary/decode.ts +265 -0
- package/{lib → src}/WABinary/encode.js +17 -7
- package/src/WABinary/encode.ts +236 -0
- package/{lib → src}/WABinary/generic-utils.js +2 -2
- package/src/WABinary/generic-utils.ts +121 -0
- package/src/WABinary/index.ts +5 -0
- package/{lib → src}/WABinary/jid-utils.js +4 -1
- package/src/WABinary/jid-utils.ts +68 -0
- package/src/WABinary/types.ts +17 -0
- package/src/WAM/BinaryInfo.js +13 -0
- package/src/WAM/BinaryInfo.ts +12 -0
- package/src/WAM/constants.js +15350 -0
- package/src/WAM/constants.ts +15382 -0
- package/src/WAM/encode.js +155 -0
- package/src/WAM/encode.ts +174 -0
- package/src/WAM/index.js +19 -0
- package/src/WAM/index.ts +3 -0
- package/src/gifted +1 -0
- package/{lib → src}/index.js +1 -0
- package/src/index.ts +13 -0
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Defaults/index.d.ts +0 -284
- package/lib/Defaults/phonenumber-mcc.json +0 -223
- package/lib/Signal/libsignal.d.ts +0 -3
- package/lib/Signal/libsignal.js +0 -152
- package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
- package/lib/Socket/Client/index.d.ts +0 -3
- 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.d.ts +0 -12
- package/lib/Socket/Client/web-socket-client.js +0 -62
- package/lib/Socket/business.d.ts +0 -135
- package/lib/Socket/chats.d.ts +0 -79
- package/lib/Socket/groups.d.ts +0 -113
- package/lib/Socket/index.d.ts +0 -137
- package/lib/Socket/messages-recv.d.ts +0 -124
- package/lib/Socket/messages-send.d.ts +0 -119
- package/lib/Socket/registration.d.ts +0 -232
- package/lib/Socket/socket.d.ts +0 -42
- package/lib/Store/index.d.ts +0 -3
- package/lib/Store/make-cache-manager-store.d.ts +0 -13
- package/lib/Store/make-in-memory-store.d.ts +0 -117
- package/lib/Store/make-ordered-dictionary.d.ts +0 -13
- package/lib/Store/object-repository.d.ts +0 -10
- package/lib/Types/Auth.d.ts +0 -108
- package/lib/Types/Call.d.ts +0 -13
- package/lib/Types/Chat.d.ts +0 -102
- package/lib/Types/Events.d.ts +0 -157
- package/lib/Types/GroupMetadata.d.ts +0 -52
- package/lib/Types/Label.d.ts +0 -35
- package/lib/Types/Message.d.ts +0 -261
- package/lib/Types/Product.d.ts +0 -78
- package/lib/Types/Signal.d.ts +0 -57
- package/lib/Types/State.d.ts +0 -27
- package/lib/Types/index.d.ts +0 -56
- package/lib/Utils/auth-utils.d.ts +0 -18
- package/lib/Utils/baileys-event-stream.d.ts +0 -16
- package/lib/Utils/baileys-event-stream.js +0 -63
- package/lib/Utils/business.d.ts +0 -22
- package/lib/Utils/chat-utils.d.ts +0 -71
- package/lib/Utils/crypto.d.ts +0 -41
- package/lib/Utils/decode-wa-message.d.ts +0 -19
- package/lib/Utils/decode-wa-message.js +0 -174
- package/lib/Utils/event-buffer.d.ts +0 -35
- package/lib/Utils/generics.d.ts +0 -94
- package/lib/Utils/history.d.ts +0 -15
- package/lib/Utils/index.d.ts +0 -17
- package/lib/Utils/link-preview.d.ts +0 -21
- package/lib/Utils/logger.d.ts +0 -4
- package/lib/Utils/lt-hash.d.ts +0 -12
- package/lib/Utils/make-mutex.d.ts +0 -7
- package/lib/Utils/messages-media.d.ts +0 -107
- package/lib/Utils/messages.d.ts +0 -76
- package/lib/Utils/noise-handler.d.ts +0 -20
- package/lib/Utils/process-message.d.ts +0 -41
- package/lib/Utils/signal.d.ts +0 -32
- package/lib/Utils/use-multi-file-auth-state.d.ts +0 -12
- package/lib/Utils/validate-connection.d.ts +0 -11
- package/lib/WABinary/constants.d.ts +0 -27
- package/lib/WABinary/decode.d.ts +0 -7
- package/lib/WABinary/encode.d.ts +0 -3
- package/lib/WABinary/generic-utils.d.ts +0 -15
- package/lib/WABinary/index.d.ts +0 -5
- package/lib/WABinary/jid-utils.d.ts +0 -29
- package/lib/WABinary/types.d.ts +0 -18
- package/lib/index.d.ts +0 -10
- /package/{lib → src}/Socket/Client/abstract-socket-client.js +0 -0
- /package/{lib → src}/Socket/Client/index.js +0 -0
- /package/{lib → src}/Store/index.js +0 -0
- /package/{lib → src}/Store/make-ordered-dictionary.js +0 -0
- /package/{lib → src}/Types/Auth.js +0 -0
- /package/{lib → src}/Types/Call.js +0 -0
- /package/{lib → src}/Types/Chat.js +0 -0
- /package/{lib → src}/Types/Contact.js +0 -0
- /package/{lib → src}/Types/Events.js +0 -0
- /package/{lib → src}/Types/GroupMetadata.js +0 -0
- /package/{lib → src}/Types/Message.js +0 -0
- /package/{lib → src}/Types/Product.js +0 -0
- /package/{lib → src}/Types/Signal.js +0 -0
- /package/{lib → src}/Types/Socket.js +0 -0
- /package/{lib → src}/Types/State.js +0 -0
- /package/{lib → src}/Utils/index.js +0 -0
- /package/{lib → src}/Utils/logger.js +0 -0
- /package/{lib → src}/Utils/lt-hash.js +0 -0
- /package/{lib → src}/WABinary/constants.js +0 -0
- /package/{lib → src}/WABinary/index.js +0 -0
- /package/{lib → src}/WABinary/types.js +0 -0
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
@@ -7,19 +16,19 @@ const cache_manager_1 = require("cache-manager");
|
|
|
7
16
|
const WAProto_1 = require("../../WAProto");
|
|
8
17
|
const Utils_1 = require("../Utils");
|
|
9
18
|
const logger_1 = __importDefault(require("../Utils/logger"));
|
|
10
|
-
const makeCacheManagerAuthState =
|
|
19
|
+
const makeCacheManagerAuthState = (store, sessionKey) => __awaiter(void 0, void 0, void 0, function* () {
|
|
11
20
|
const defaultKey = (file) => `${sessionKey}:${file}`;
|
|
12
|
-
const databaseConn =
|
|
13
|
-
const writeData =
|
|
21
|
+
const databaseConn = yield (0, cache_manager_1.caching)(store);
|
|
22
|
+
const writeData = (file, data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
23
|
let ttl = undefined;
|
|
15
24
|
if (file === 'creds') {
|
|
16
25
|
ttl = 63115200; // 2 years
|
|
17
26
|
}
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
const readData =
|
|
27
|
+
yield databaseConn.set(defaultKey(file), JSON.stringify(data, Utils_1.BufferJSON.replacer), ttl);
|
|
28
|
+
});
|
|
29
|
+
const readData = (file) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
30
|
try {
|
|
22
|
-
const data =
|
|
31
|
+
const data = yield databaseConn.get(defaultKey(file));
|
|
23
32
|
if (data) {
|
|
24
33
|
return JSON.parse(data, Utils_1.BufferJSON.reviver);
|
|
25
34
|
}
|
|
@@ -29,42 +38,42 @@ const makeCacheManagerAuthState = async (store, sessionKey) => {
|
|
|
29
38
|
logger_1.default.error(error);
|
|
30
39
|
return null;
|
|
31
40
|
}
|
|
32
|
-
};
|
|
33
|
-
const removeData =
|
|
41
|
+
});
|
|
42
|
+
const removeData = (file) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
43
|
try {
|
|
35
|
-
return
|
|
44
|
+
return yield databaseConn.del(defaultKey(file));
|
|
36
45
|
}
|
|
37
46
|
catch (_a) {
|
|
38
47
|
logger_1.default.error(`Error removing ${file} from session ${sessionKey}`);
|
|
39
48
|
}
|
|
40
|
-
};
|
|
41
|
-
const clearState =
|
|
49
|
+
});
|
|
50
|
+
const clearState = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
51
|
try {
|
|
43
|
-
const result =
|
|
44
|
-
|
|
52
|
+
const result = yield databaseConn.store.keys(`${sessionKey}*`);
|
|
53
|
+
yield Promise.all(result.map((key) => __awaiter(void 0, void 0, void 0, function* () { return yield databaseConn.del(key); })));
|
|
45
54
|
}
|
|
46
55
|
catch (err) {
|
|
47
56
|
}
|
|
48
|
-
};
|
|
49
|
-
const creds = (
|
|
57
|
+
});
|
|
58
|
+
const creds = (yield readData('creds')) || (0, Utils_1.initAuthCreds)();
|
|
50
59
|
return {
|
|
51
60
|
clearState,
|
|
52
61
|
saveCreds: () => writeData('creds', creds),
|
|
53
62
|
state: {
|
|
54
63
|
creds,
|
|
55
64
|
keys: {
|
|
56
|
-
get:
|
|
65
|
+
get: (type, ids) => __awaiter(void 0, void 0, void 0, function* () {
|
|
57
66
|
const data = {};
|
|
58
|
-
|
|
59
|
-
let value =
|
|
67
|
+
yield Promise.all(ids.map((id) => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
|
+
let value = yield readData(`${type}-${id}`);
|
|
60
69
|
if (type === 'app-state-sync-key' && value) {
|
|
61
70
|
value = WAProto_1.proto.Message.AppStateSyncKeyData.fromObject(value);
|
|
62
71
|
}
|
|
63
72
|
data[id] = value;
|
|
64
|
-
}));
|
|
73
|
+
})));
|
|
65
74
|
return data;
|
|
66
|
-
},
|
|
67
|
-
set:
|
|
75
|
+
}),
|
|
76
|
+
set: (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
77
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
78
|
const tasks = [];
|
|
70
79
|
for (const category in data) {
|
|
@@ -74,10 +83,10 @@ const makeCacheManagerAuthState = async (store, sessionKey) => {
|
|
|
74
83
|
tasks.push(value ? writeData(key, value) : removeData(key));
|
|
75
84
|
}
|
|
76
85
|
}
|
|
77
|
-
|
|
78
|
-
},
|
|
86
|
+
yield Promise.all(tasks);
|
|
87
|
+
}),
|
|
79
88
|
}
|
|
80
89
|
}
|
|
81
90
|
};
|
|
82
|
-
};
|
|
91
|
+
});
|
|
83
92
|
exports.default = makeCacheManagerAuthState;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { caching, Storage } from 'cache-manager'
|
|
2
|
+
import { proto } from '../../WAProto'
|
|
3
|
+
import { AuthenticationCreds } from '../Types'
|
|
4
|
+
import { BufferJSON, initAuthCreds } from '../Utils'
|
|
5
|
+
import logger from '../Utils/logger'
|
|
6
|
+
|
|
7
|
+
const makeCacheManagerAuthState = async(store: Storage, sessionKey: string) => {
|
|
8
|
+
const defaultKey = (file: string): string => `${sessionKey}:${file}`
|
|
9
|
+
|
|
10
|
+
const databaseConn = await caching(store)
|
|
11
|
+
|
|
12
|
+
const writeData = async(file: string, data: object) => {
|
|
13
|
+
let ttl: number | undefined = undefined
|
|
14
|
+
if(file === 'creds') {
|
|
15
|
+
ttl = 63115200 // 2 years
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
await databaseConn.set(
|
|
19
|
+
defaultKey(file),
|
|
20
|
+
JSON.stringify(data, BufferJSON.replacer),
|
|
21
|
+
ttl
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const readData = async(file: string): Promise<AuthenticationCreds | null> => {
|
|
26
|
+
try {
|
|
27
|
+
const data = await databaseConn.get(defaultKey(file))
|
|
28
|
+
|
|
29
|
+
if(data) {
|
|
30
|
+
return JSON.parse(data as string, BufferJSON.reviver)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return null
|
|
34
|
+
} catch(error) {
|
|
35
|
+
logger.error(error)
|
|
36
|
+
return null
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const removeData = async(file: string) => {
|
|
41
|
+
try {
|
|
42
|
+
return await databaseConn.del(defaultKey(file))
|
|
43
|
+
} catch{
|
|
44
|
+
logger.error(`Error removing ${file} from session ${sessionKey}`)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const clearState = async() => {
|
|
49
|
+
try {
|
|
50
|
+
const result = await databaseConn.store.keys(`${sessionKey}*`)
|
|
51
|
+
await Promise.all(
|
|
52
|
+
result.map(async(key) => await databaseConn.del(key))
|
|
53
|
+
)
|
|
54
|
+
} catch(err) {
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const creds: AuthenticationCreds = (await readData('creds')) || initAuthCreds()
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
clearState,
|
|
62
|
+
saveCreds: () => writeData('creds', creds),
|
|
63
|
+
state: {
|
|
64
|
+
creds,
|
|
65
|
+
keys: {
|
|
66
|
+
get: async(type: string, ids: string[]) => {
|
|
67
|
+
const data = {}
|
|
68
|
+
await Promise.all(
|
|
69
|
+
ids.map(async(id) => {
|
|
70
|
+
let value: proto.Message.AppStateSyncKeyData | AuthenticationCreds | null =
|
|
71
|
+
await readData(`${type}-${id}`)
|
|
72
|
+
if(type === 'app-state-sync-key' && value) {
|
|
73
|
+
value = proto.Message.AppStateSyncKeyData.fromObject(value)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
data[id] = value
|
|
77
|
+
})
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
return data
|
|
81
|
+
},
|
|
82
|
+
set: async(data) => {
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
|
+
const tasks: Promise<any>[] = []
|
|
85
|
+
for(const category in data) {
|
|
86
|
+
for(const id in data[category]) {
|
|
87
|
+
const value = data[category][id]
|
|
88
|
+
const key = `${category}-${id}`
|
|
89
|
+
tasks.push(value ? writeData(key, value) : removeData(key))
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
await Promise.all(tasks)
|
|
94
|
+
},
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export default makeCacheManagerAuthState
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
@@ -23,48 +32,11 @@ exports.waLabelAssociationKey = {
|
|
|
23
32
|
compare: (k1, k2) => k2.localeCompare(k1)
|
|
24
33
|
};
|
|
25
34
|
const makeMessagesDictionary = () => (0, make_ordered_dictionary_1.default)(exports.waMessageID);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
color: 1,
|
|
32
|
-
deleted: false
|
|
33
|
-
},
|
|
34
|
-
'2': {
|
|
35
|
-
id: '2',
|
|
36
|
-
name: 'New order',
|
|
37
|
-
predefinedId: '2',
|
|
38
|
-
color: 2,
|
|
39
|
-
deleted: false
|
|
40
|
-
},
|
|
41
|
-
'3': {
|
|
42
|
-
id: '3',
|
|
43
|
-
name: 'Pending payment',
|
|
44
|
-
predefinedId: '3',
|
|
45
|
-
color: 3,
|
|
46
|
-
deleted: false
|
|
47
|
-
},
|
|
48
|
-
'4': {
|
|
49
|
-
id: '4',
|
|
50
|
-
name: 'Paid',
|
|
51
|
-
predefinedId: '4',
|
|
52
|
-
color: 4,
|
|
53
|
-
deleted: false
|
|
54
|
-
},
|
|
55
|
-
'5': {
|
|
56
|
-
id: '5',
|
|
57
|
-
name: 'Order completed',
|
|
58
|
-
predefinedId: '5',
|
|
59
|
-
color: 5,
|
|
60
|
-
deleted: false
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
64
|
-
// const logger = _logger || DEFAULT_CONNECTION_CONFIG.logger.child({ stream: 'in-mem-store' })
|
|
65
|
-
chatKey = chatKey || (0, exports.waChatKey)(true);
|
|
66
|
-
labelAssociationKey = labelAssociationKey || exports.waLabelAssociationKey;
|
|
67
|
-
const logger = _logger || Defaults_1.DEFAULT_CONNECTION_CONFIG.logger.child({ stream: 'in-mem-store' });
|
|
35
|
+
exports.default = (config) => {
|
|
36
|
+
const socket = config.socket;
|
|
37
|
+
const chatKey = config.chatKey || (0, exports.waChatKey)(true);
|
|
38
|
+
const labelAssociationKey = config.labelAssociationKey || exports.waLabelAssociationKey;
|
|
39
|
+
const logger = config.logger || Defaults_1.DEFAULT_CONNECTION_CONFIG.logger.child({ stream: 'in-mem-store' });
|
|
68
40
|
const KeyedDB = require('@adiwajshing/keyed-db').default;
|
|
69
41
|
const chats = new KeyedDB(chatKey, c => c.id);
|
|
70
42
|
const messages = {};
|
|
@@ -72,7 +44,7 @@ exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
|
72
44
|
const groupMetadata = {};
|
|
73
45
|
const presences = {};
|
|
74
46
|
const state = { connection: 'close' };
|
|
75
|
-
const labels = new object_repository_1.ObjectRepository(
|
|
47
|
+
const labels = new object_repository_1.ObjectRepository();
|
|
76
48
|
const labelAssociations = new KeyedDB(labelAssociationKey, labelAssociationKey.key);
|
|
77
49
|
const assertMessageList = (jid) => {
|
|
78
50
|
if (!messages[jid]) {
|
|
@@ -129,16 +101,34 @@ exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
|
129
101
|
ev.on('contacts.upsert', contacts => {
|
|
130
102
|
contactsUpsert(contacts);
|
|
131
103
|
});
|
|
132
|
-
ev.on('contacts.update', updates => {
|
|
104
|
+
ev.on('contacts.update', (updates) => __awaiter(void 0, void 0, void 0, function* () {
|
|
105
|
+
var _a;
|
|
133
106
|
for (const update of updates) {
|
|
107
|
+
let contact;
|
|
134
108
|
if (contacts[update.id]) {
|
|
135
|
-
|
|
109
|
+
contact = contacts[update.id];
|
|
136
110
|
}
|
|
137
111
|
else {
|
|
138
|
-
|
|
112
|
+
const contactHashes = yield Promise.all(Object.keys(contacts).map((contactId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
113
|
+
const { user } = (0, WABinary_1.jidDecode)(contactId);
|
|
114
|
+
return [contactId, (yield (0, Utils_1.md5)(Buffer.from(user + 'WA_ADD_NOTIF', 'utf8'))).toString('base64').slice(0, 3)];
|
|
115
|
+
})));
|
|
116
|
+
contact = contacts[((_a = contactHashes.find(([, b]) => b === update.id)) === null || _a === void 0 ? void 0 : _a[0]) || '']; // find contact by attrs.hash, when user is not saved as a contact
|
|
139
117
|
}
|
|
118
|
+
if (contact) {
|
|
119
|
+
if (update.imgUrl === 'changed') {
|
|
120
|
+
contact.imgUrl = socket ? yield (socket === null || socket === void 0 ? void 0 : socket.profilePictureUrl(contact.id)) : undefined;
|
|
121
|
+
}
|
|
122
|
+
else if (update.imgUrl === 'removed') {
|
|
123
|
+
delete contact.imgUrl;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
return logger.debug({ update }, 'got update for non-existant contact');
|
|
128
|
+
}
|
|
129
|
+
Object.assign(contacts[contact.id], contact);
|
|
140
130
|
}
|
|
141
|
-
});
|
|
131
|
+
}));
|
|
142
132
|
ev.on('chats.upsert', newChats => {
|
|
143
133
|
chats.upsert(...newChats);
|
|
144
134
|
});
|
|
@@ -146,7 +136,7 @@ exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
|
146
136
|
for (let update of updates) {
|
|
147
137
|
const result = chats.update(update.id, chat => {
|
|
148
138
|
if (update.unreadCount > 0) {
|
|
149
|
-
update = {
|
|
139
|
+
update = Object.assign({}, update);
|
|
150
140
|
update.unreadCount = (chat.unreadCount || 0) + update.unreadCount;
|
|
151
141
|
}
|
|
152
142
|
Object.assign(chat, update);
|
|
@@ -325,7 +315,7 @@ exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
|
325
315
|
labelAssociations,
|
|
326
316
|
bind,
|
|
327
317
|
/** loads messages from the store, if not found -- uses the legacy connection */
|
|
328
|
-
loadMessages:
|
|
318
|
+
loadMessages: (jid, count, cursor) => __awaiter(void 0, void 0, void 0, function* () {
|
|
329
319
|
const list = assertMessageList(jid);
|
|
330
320
|
const mode = !cursor || 'before' in cursor ? 'before' : 'after';
|
|
331
321
|
const cursorKey = !!cursor ? ('before' in cursor ? cursor.before : cursor.after) : undefined;
|
|
@@ -348,7 +338,7 @@ exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
|
348
338
|
messages = [];
|
|
349
339
|
}
|
|
350
340
|
return messages;
|
|
351
|
-
},
|
|
341
|
+
}),
|
|
352
342
|
/**
|
|
353
343
|
* Get all available labels for profile
|
|
354
344
|
*
|
|
@@ -377,31 +367,31 @@ exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
|
377
367
|
.all();
|
|
378
368
|
return associations.map(({ labelId }) => labelId);
|
|
379
369
|
},
|
|
380
|
-
loadMessage:
|
|
381
|
-
mostRecentMessage:
|
|
370
|
+
loadMessage: (jid, id) => __awaiter(void 0, void 0, void 0, function* () { var _a; return (_a = messages[jid]) === null || _a === void 0 ? void 0 : _a.get(id); }),
|
|
371
|
+
mostRecentMessage: (jid) => __awaiter(void 0, void 0, void 0, function* () {
|
|
382
372
|
var _a;
|
|
383
373
|
const message = (_a = messages[jid]) === null || _a === void 0 ? void 0 : _a.array.slice(-1)[0];
|
|
384
374
|
return message;
|
|
385
|
-
},
|
|
386
|
-
fetchImageUrl:
|
|
375
|
+
}),
|
|
376
|
+
fetchImageUrl: (jid, sock) => __awaiter(void 0, void 0, void 0, function* () {
|
|
387
377
|
const contact = contacts[jid];
|
|
388
378
|
if (!contact) {
|
|
389
379
|
return sock === null || sock === void 0 ? void 0 : sock.profilePictureUrl(jid);
|
|
390
380
|
}
|
|
391
381
|
if (typeof contact.imgUrl === 'undefined') {
|
|
392
|
-
contact.imgUrl =
|
|
382
|
+
contact.imgUrl = yield (sock === null || sock === void 0 ? void 0 : sock.profilePictureUrl(jid));
|
|
393
383
|
}
|
|
394
384
|
return contact.imgUrl;
|
|
395
|
-
},
|
|
396
|
-
fetchGroupMetadata:
|
|
385
|
+
}),
|
|
386
|
+
fetchGroupMetadata: (jid, sock) => __awaiter(void 0, void 0, void 0, function* () {
|
|
397
387
|
if (!groupMetadata[jid]) {
|
|
398
|
-
const metadata =
|
|
388
|
+
const metadata = yield (sock === null || sock === void 0 ? void 0 : sock.groupMetadata(jid));
|
|
399
389
|
if (metadata) {
|
|
400
390
|
groupMetadata[jid] = metadata;
|
|
401
391
|
}
|
|
402
392
|
}
|
|
403
393
|
return groupMetadata[jid];
|
|
404
|
-
},
|
|
394
|
+
}),
|
|
405
395
|
// fetchBroadcastListInfo: async(jid: string, sock: WASocket | undefined) => {
|
|
406
396
|
// if(!groupMetadata[jid]) {
|
|
407
397
|
// const metadata = await sock?.getBroadcastListInfo(jid)
|
|
@@ -411,11 +401,11 @@ exports.default = ({ logger: _logger, chatKey, labelAssociationKey }) => {
|
|
|
411
401
|
// }
|
|
412
402
|
// return groupMetadata[jid]
|
|
413
403
|
// },
|
|
414
|
-
fetchMessageReceipts:
|
|
404
|
+
fetchMessageReceipts: (_a) => __awaiter(void 0, [_a], void 0, function* ({ remoteJid, id }) {
|
|
415
405
|
const list = messages[remoteJid];
|
|
416
406
|
const msg = list === null || list === void 0 ? void 0 : list.get(id);
|
|
417
407
|
return msg === null || msg === void 0 ? void 0 : msg.userReceipt;
|
|
418
|
-
},
|
|
408
|
+
}),
|
|
419
409
|
toJSON,
|
|
420
410
|
fromJSON,
|
|
421
411
|
writeToFile: (path) => {
|