gifted-baileys 1.5.4 → 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/WAProto/WAProto.proto +88 -969
- package/WAProto/index.d.ts +1256 -13195
- package/WAProto/index.js +74730 -125106
- package/package.json +9 -27
- package/src/Defaults/baileys-version.json +3 -0
- package/{lib → src}/Defaults/index.js +14 -7
- package/src/Defaults/index.ts +131 -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/{lib → src}/Socket/Client/index.js +3 -2
- 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 -28
- package/src/Socket/business.ts +281 -0
- package/{lib → src}/Socket/chats.js +176 -174
- package/src/Socket/chats.ts +1030 -0
- package/{lib → src}/Socket/groups.js +68 -80
- 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 +211 -378
- package/src/Socket/messages-recv.ts +985 -0
- package/{lib → src}/Socket/messages-send.js +177 -452
- package/src/Socket/messages-send.ts +871 -0
- package/{lib → src}/Socket/newsletter.js +98 -107
- package/src/Socket/newsletter.ts +282 -0
- package/{lib → src}/Socket/registration.js +48 -56
- package/src/Socket/registration.ts +250 -0
- package/{lib → src}/Socket/socket.js +77 -77
- 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 +32 -36
- 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/src/Types/Label.ts +36 -0
- package/{lib/Types/LabelAssociation.d.ts → src/Types/LabelAssociation.ts} +22 -16
- package/src/Types/Message.ts +288 -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 -61
- package/src/Types/State.ts +29 -0
- package/src/Types/index.ts +59 -0
- package/{lib → src}/Utils/auth-utils.js +90 -73
- 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 +43 -15
- package/src/Utils/business.ts +275 -0
- package/{lib → src}/Utils/chat-utils.js +94 -87
- package/src/Utils/chat-utils.ts +860 -0
- package/{lib → src}/Utils/crypto.js +2 -4
- 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 +86 -67
- package/src/Utils/generics.ts +434 -0
- package/{lib → src}/Utils/history.js +39 -13
- 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 +255 -193
- package/src/Utils/messages-media.ts +847 -0
- package/{lib → src}/Utils/messages.js +118 -588
- package/src/Utils/messages.ts +956 -0
- package/src/Utils/noise-handler.ts +197 -0
- package/{lib → src}/Utils/process-message.js +30 -27
- package/src/Utils/process-message.ts +414 -0
- package/{lib → src}/Utils/signal.js +42 -25
- package/src/Utils/signal.ts +177 -0
- package/{lib → src}/Utils/use-multi-file-auth-state.js +28 -27
- package/src/Utils/use-multi-file-auth-state.ts +90 -0
- package/{lib → src}/Utils/validate-connection.js +9 -40
- package/src/Utils/validate-connection.ts +238 -0
- package/src/WABinary/constants.ts +42 -0
- package/src/WABinary/decode.ts +265 -0
- package/{lib → src}/WABinary/encode.js +10 -16
- package/src/WABinary/encode.ts +236 -0
- package/src/WABinary/generic-utils.ts +121 -0
- package/src/WABinary/index.ts +5 -0
- package/src/WABinary/jid-utils.ts +68 -0
- package/src/WABinary/types.ts +17 -0
- package/src/WAM/BinaryInfo.ts +12 -0
- package/src/WAM/constants.ts +15382 -0
- package/src/WAM/encode.ts +174 -0
- package/src/WAM/index.ts +3 -0
- package/{lib → src}/index.js +0 -1
- package/src/index.ts +13 -0
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Defaults/index.d.ts +0 -284
- package/lib/Signal/libsignal.d.ts +0 -3
- package/lib/Signal/libsignal.js +0 -161
- package/lib/Socket/Client/abstract-socket-client.d.ts +0 -15
- package/lib/Socket/Client/index.d.ts +0 -2
- 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 -17
- package/lib/Socket/Client/types.js +0 -13
- package/lib/Socket/Client/websocket.d.ts +0 -12
- package/lib/Socket/Client/websocket.js +0 -62
- package/lib/Socket/business.d.ts +0 -170
- package/lib/Socket/chats.d.ts +0 -81
- package/lib/Socket/groups.d.ts +0 -115
- package/lib/Socket/index.d.ts +0 -172
- package/lib/Socket/messages-recv.d.ts +0 -158
- package/lib/Socket/messages-send.d.ts +0 -155
- package/lib/Socket/newsletter.d.ts +0 -132
- package/lib/Socket/registration.d.ts +0 -264
- package/lib/Socket/socket.d.ts +0 -44
- package/lib/Socket/usync.d.ts +0 -37
- package/lib/Socket/usync.js +0 -70
- package/lib/Store/index.d.ts +0 -3
- package/lib/Store/make-cache-manager-store.d.ts +0 -14
- package/lib/Store/make-in-memory-store.d.ts +0 -118
- 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 -109
- package/lib/Types/Call.d.ts +0 -13
- package/lib/Types/Chat.d.ts +0 -107
- package/lib/Types/Events.d.ts +0 -172
- package/lib/Types/GroupMetadata.d.ts +0 -56
- package/lib/Types/Label.d.ts +0 -46
- package/lib/Types/Message.d.ts +0 -433
- package/lib/Types/Newsletter.d.ts +0 -92
- 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/USync.d.ts +0 -25
- package/lib/Types/USync.js +0 -2
- package/lib/Types/index.d.ts +0 -66
- 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 -70
- package/lib/Utils/crypto.d.ts +0 -40
- package/lib/Utils/decode-wa-message.d.ts +0 -36
- package/lib/Utils/decode-wa-message.js +0 -226
- package/lib/Utils/event-buffer.d.ts +0 -35
- package/lib/Utils/generics.d.ts +0 -88
- package/lib/Utils/history.d.ts +0 -19
- package/lib/Utils/index.d.ts +0 -17
- package/lib/Utils/link-preview.d.ts +0 -21
- package/lib/Utils/logger.d.ts +0 -2
- 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 -113
- package/lib/Utils/messages.d.ts +0 -77
- 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 -33
- 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 -6
- package/lib/WABinary/encode.d.ts +0 -2
- package/lib/WABinary/generic-utils.d.ts +0 -14
- package/lib/WABinary/index.d.ts +0 -5
- package/lib/WABinary/jid-utils.d.ts +0 -31
- package/lib/WABinary/types.d.ts +0 -18
- package/lib/WAM/BinaryInfo.d.ts +0 -8
- package/lib/WAM/constants.d.ts +0 -38
- package/lib/WAM/encode.d.ts +0 -2
- package/lib/WAM/index.d.ts +0 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -32
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -57
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -30
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
- package/lib/WAUSync/Protocols/index.d.ts +0 -4
- package/lib/WAUSync/Protocols/index.js +0 -20
- package/lib/WAUSync/USyncQuery.d.ts +0 -26
- package/lib/WAUSync/USyncQuery.js +0 -79
- package/lib/WAUSync/USyncUser.d.ts +0 -10
- package/lib/WAUSync/USyncUser.js +0 -22
- package/lib/WAUSync/index.d.ts +0 -3
- package/lib/WAUSync/index.js +0 -19
- /package/{lib → src}/Defaults/phonenumber-mcc.json +0 -0
- /package/{lib → src}/Socket/Client/abstract-socket-client.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/Label.js +0 -0
- /package/{lib → src}/Types/LabelAssociation.js +0 -0
- /package/{lib → src}/Types/Message.js +0 -0
- /package/{lib → src}/Types/Newsletter.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}/Types/index.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}/Utils/noise-handler.js +0 -0
- /package/{lib → src}/WABinary/constants.js +0 -0
- /package/{lib → src}/WABinary/decode.js +0 -0
- /package/{lib → src}/WABinary/generic-utils.js +0 -0
- /package/{lib → src}/WABinary/index.js +0 -0
- /package/{lib → src}/WABinary/jid-utils.js +0 -0
- /package/{lib → src}/WABinary/types.js +0 -0
- /package/{lib → src}/WAM/BinaryInfo.js +0 -0
- /package/{lib → src}/WAM/constants.js +0 -0
- /package/{lib → src}/WAM/encode.js +0 -0
- /package/{lib → src}/WAM/index.js +0 -0
- /package/{lib → src}/gifted +0 -0
|
@@ -1,4 +1,20 @@
|
|
|
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
|
+
};
|
|
11
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
2
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
19
|
exports.processSyncAction = exports.chatModificationToAppPatch = exports.decodePatches = exports.decodeSyncdSnapshot = exports.downloadExternalPatch = exports.downloadExternalBlob = exports.extractSyncdPatches = exports.decodeSyncdPatch = exports.decodeSyncdMutations = exports.encodeSyncdPatch = exports.newLTHashState = void 0;
|
|
4
20
|
const boom_1 = require("@hapi/boom");
|
|
@@ -46,7 +62,7 @@ const to64BitNetworkOrder = (e) => {
|
|
|
46
62
|
return buff;
|
|
47
63
|
};
|
|
48
64
|
const makeLtHashGenerator = ({ indexValueMap, hash }) => {
|
|
49
|
-
indexValueMap = {
|
|
65
|
+
indexValueMap = Object.assign({}, indexValueMap);
|
|
50
66
|
const addBuffs = [];
|
|
51
67
|
const subBuffs = [];
|
|
52
68
|
return {
|
|
@@ -99,13 +115,13 @@ const generatePatchMac = (snapshotMac, valueMacs, version, type, key) => {
|
|
|
99
115
|
};
|
|
100
116
|
const newLTHashState = () => ({ version: 0, hash: Buffer.alloc(128), indexValueMap: {} });
|
|
101
117
|
exports.newLTHashState = newLTHashState;
|
|
102
|
-
const encodeSyncdPatch =
|
|
103
|
-
const key = !!myAppStateKeyId ?
|
|
118
|
+
const encodeSyncdPatch = (_a, myAppStateKeyId_1, state_1, getAppStateSyncKey_1) => __awaiter(void 0, [_a, myAppStateKeyId_1, state_1, getAppStateSyncKey_1], void 0, function* ({ type, index, syncAction, apiVersion, operation }, myAppStateKeyId, state, getAppStateSyncKey) {
|
|
119
|
+
const key = !!myAppStateKeyId ? yield getAppStateSyncKey(myAppStateKeyId) : undefined;
|
|
104
120
|
if (!key) {
|
|
105
121
|
throw new boom_1.Boom(`myAppStateKey ("${myAppStateKeyId}") not present`, { statusCode: 404 });
|
|
106
122
|
}
|
|
107
123
|
const encKeyId = Buffer.from(myAppStateKeyId, 'base64');
|
|
108
|
-
state = {
|
|
124
|
+
state = Object.assign(Object.assign({}, state), { indexValueMap: Object.assign({}, state.indexValueMap) });
|
|
109
125
|
const indexBuffer = Buffer.from(JSON.stringify(index));
|
|
110
126
|
const dataProto = WAProto_1.proto.SyncActionData.fromObject({
|
|
111
127
|
index: indexBuffer,
|
|
@@ -146,9 +162,9 @@ const encodeSyncdPatch = async ({ type, index, syncAction, apiVersion, operation
|
|
|
146
162
|
const base64Index = indexMac.toString('base64');
|
|
147
163
|
state.indexValueMap[base64Index] = { valueMac };
|
|
148
164
|
return { patch, state };
|
|
149
|
-
};
|
|
165
|
+
});
|
|
150
166
|
exports.encodeSyncdPatch = encodeSyncdPatch;
|
|
151
|
-
const decodeSyncdMutations =
|
|
167
|
+
const decodeSyncdMutations = (msgMutations, initialState, getAppStateSyncKey, onMutation, validateMacs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
152
168
|
const ltGenerator = makeLtHashGenerator(initialState);
|
|
153
169
|
// indexKey used to HMAC sign record.index.blob
|
|
154
170
|
// valueEncryptionKey used to AES-256-CBC encrypt record.value.blob[0:-32]
|
|
@@ -158,7 +174,7 @@ const decodeSyncdMutations = async (msgMutations, initialState, getAppStateSyncK
|
|
|
158
174
|
// otherwise, if it's only a record -- it'll be a SET mutation
|
|
159
175
|
const operation = 'operation' in msgMutation ? msgMutation.operation : WAProto_1.proto.SyncdMutation.SyncdOperation.SET;
|
|
160
176
|
const record = ('record' in msgMutation && !!msgMutation.record) ? msgMutation.record : msgMutation;
|
|
161
|
-
const key =
|
|
177
|
+
const key = yield getKey(record.keyId.id);
|
|
162
178
|
const content = Buffer.from(record.value.blob);
|
|
163
179
|
const encContent = content.slice(0, -32);
|
|
164
180
|
const ogValueMac = content.slice(-32);
|
|
@@ -185,20 +201,22 @@ const decodeSyncdMutations = async (msgMutations, initialState, getAppStateSyncK
|
|
|
185
201
|
});
|
|
186
202
|
}
|
|
187
203
|
return ltGenerator.finish();
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
204
|
+
function getKey(keyId) {
|
|
205
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
206
|
+
const base64Key = Buffer.from(keyId).toString('base64');
|
|
207
|
+
const keyEnc = yield getAppStateSyncKey(base64Key);
|
|
208
|
+
if (!keyEnc) {
|
|
209
|
+
throw new boom_1.Boom(`failed to find key "${base64Key}" to decode mutation`, { statusCode: 404, data: { msgMutations } });
|
|
210
|
+
}
|
|
211
|
+
return mutationKeys(keyEnc.keyData);
|
|
212
|
+
});
|
|
195
213
|
}
|
|
196
|
-
};
|
|
214
|
+
});
|
|
197
215
|
exports.decodeSyncdMutations = decodeSyncdMutations;
|
|
198
|
-
const decodeSyncdPatch =
|
|
216
|
+
const decodeSyncdPatch = (msg, name, initialState, getAppStateSyncKey, onMutation, validateMacs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
199
217
|
if (validateMacs) {
|
|
200
218
|
const base64Key = Buffer.from(msg.keyId.id).toString('base64');
|
|
201
|
-
const mainKeyObj =
|
|
219
|
+
const mainKeyObj = yield getAppStateSyncKey(base64Key);
|
|
202
220
|
if (!mainKeyObj) {
|
|
203
221
|
throw new boom_1.Boom(`failed to find key "${base64Key}" to decode patch`, { statusCode: 404, data: { msg } });
|
|
204
222
|
}
|
|
@@ -209,15 +227,15 @@ const decodeSyncdPatch = async (msg, name, initialState, getAppStateSyncKey, onM
|
|
|
209
227
|
throw new boom_1.Boom('Invalid patch mac');
|
|
210
228
|
}
|
|
211
229
|
}
|
|
212
|
-
const result =
|
|
230
|
+
const result = yield (0, exports.decodeSyncdMutations)(msg.mutations, initialState, getAppStateSyncKey, onMutation, validateMacs);
|
|
213
231
|
return result;
|
|
214
|
-
};
|
|
232
|
+
});
|
|
215
233
|
exports.decodeSyncdPatch = decodeSyncdPatch;
|
|
216
|
-
const extractSyncdPatches =
|
|
234
|
+
const extractSyncdPatches = (result, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
217
235
|
const syncNode = (0, WABinary_1.getBinaryNodeChild)(result, 'sync');
|
|
218
236
|
const collectionNodes = (0, WABinary_1.getBinaryNodeChildren)(syncNode, 'collection');
|
|
219
237
|
const final = {};
|
|
220
|
-
|
|
238
|
+
yield Promise.all(collectionNodes.map((collectionNode) => __awaiter(void 0, void 0, void 0, function* () {
|
|
221
239
|
const patchesNode = (0, WABinary_1.getBinaryNodeChild)(collectionNode, 'patches');
|
|
222
240
|
const patches = (0, WABinary_1.getBinaryNodeChildren)(patchesNode || collectionNode, 'patch');
|
|
223
241
|
const snapshotNode = (0, WABinary_1.getBinaryNodeChild)(collectionNode, 'snapshot');
|
|
@@ -230,7 +248,7 @@ const extractSyncdPatches = async (result, options) => {
|
|
|
230
248
|
snapshotNode.content = Buffer.from(Object.values(snapshotNode.content));
|
|
231
249
|
}
|
|
232
250
|
const blobRef = WAProto_1.proto.ExternalBlobReference.decode(snapshotNode.content);
|
|
233
|
-
const data =
|
|
251
|
+
const data = yield (0, exports.downloadExternalBlob)(blobRef, options);
|
|
234
252
|
snapshot = WAProto_1.proto.SyncdSnapshot.decode(data);
|
|
235
253
|
}
|
|
236
254
|
for (let { content } of patches) {
|
|
@@ -246,32 +264,45 @@ const extractSyncdPatches = async (result, options) => {
|
|
|
246
264
|
}
|
|
247
265
|
}
|
|
248
266
|
final[name] = { patches: syncds, hasMorePatches, snapshot };
|
|
249
|
-
}));
|
|
267
|
+
})));
|
|
250
268
|
return final;
|
|
251
|
-
};
|
|
269
|
+
});
|
|
252
270
|
exports.extractSyncdPatches = extractSyncdPatches;
|
|
253
|
-
const downloadExternalBlob =
|
|
254
|
-
|
|
271
|
+
const downloadExternalBlob = (blob, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
272
|
+
var _a, e_1, _b, _c;
|
|
273
|
+
const stream = yield (0, messages_media_1.downloadContentFromMessage)(blob, 'md-app-state', { options });
|
|
255
274
|
const bufferArray = [];
|
|
256
|
-
|
|
257
|
-
|
|
275
|
+
try {
|
|
276
|
+
for (var _d = true, stream_1 = __asyncValues(stream), stream_1_1; stream_1_1 = yield stream_1.next(), _a = stream_1_1.done, !_a; _d = true) {
|
|
277
|
+
_c = stream_1_1.value;
|
|
278
|
+
_d = false;
|
|
279
|
+
const chunk = _c;
|
|
280
|
+
bufferArray.push(chunk);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
284
|
+
finally {
|
|
285
|
+
try {
|
|
286
|
+
if (!_d && !_a && (_b = stream_1.return)) yield _b.call(stream_1);
|
|
287
|
+
}
|
|
288
|
+
finally { if (e_1) throw e_1.error; }
|
|
258
289
|
}
|
|
259
290
|
return Buffer.concat(bufferArray);
|
|
260
|
-
};
|
|
291
|
+
});
|
|
261
292
|
exports.downloadExternalBlob = downloadExternalBlob;
|
|
262
|
-
const downloadExternalPatch =
|
|
263
|
-
const buffer =
|
|
293
|
+
const downloadExternalPatch = (blob, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
294
|
+
const buffer = yield (0, exports.downloadExternalBlob)(blob, options);
|
|
264
295
|
const syncData = WAProto_1.proto.SyncdMutations.decode(buffer);
|
|
265
296
|
return syncData;
|
|
266
|
-
};
|
|
297
|
+
});
|
|
267
298
|
exports.downloadExternalPatch = downloadExternalPatch;
|
|
268
|
-
const decodeSyncdSnapshot =
|
|
299
|
+
const decodeSyncdSnapshot = (name_1, snapshot_1, getAppStateSyncKey_1, minimumVersionNumber_1, ...args_1) => __awaiter(void 0, [name_1, snapshot_1, getAppStateSyncKey_1, minimumVersionNumber_1, ...args_1], void 0, function* (name, snapshot, getAppStateSyncKey, minimumVersionNumber, validateMacs = true) {
|
|
269
300
|
const newState = (0, exports.newLTHashState)();
|
|
270
301
|
newState.version = (0, generics_1.toNumber)(snapshot.version.version);
|
|
271
302
|
const mutationMap = {};
|
|
272
303
|
const areMutationsRequired = typeof minimumVersionNumber === 'undefined'
|
|
273
304
|
|| newState.version > minimumVersionNumber;
|
|
274
|
-
const { hash, indexValueMap } =
|
|
305
|
+
const { hash, indexValueMap } = yield (0, exports.decodeSyncdMutations)(snapshot.records, newState, getAppStateSyncKey, areMutationsRequired
|
|
275
306
|
? (mutation) => {
|
|
276
307
|
var _a;
|
|
277
308
|
const index = (_a = mutation.syncAction.index) === null || _a === void 0 ? void 0 : _a.toString();
|
|
@@ -282,7 +313,7 @@ const decodeSyncdSnapshot = async (name, snapshot, getAppStateSyncKey, minimumVe
|
|
|
282
313
|
newState.indexValueMap = indexValueMap;
|
|
283
314
|
if (validateMacs) {
|
|
284
315
|
const base64Key = Buffer.from(snapshot.keyId.id).toString('base64');
|
|
285
|
-
const keyEnc =
|
|
316
|
+
const keyEnc = yield getAppStateSyncKey(base64Key);
|
|
286
317
|
if (!keyEnc) {
|
|
287
318
|
throw new boom_1.Boom(`failed to find key "${base64Key}" to decode mutation`);
|
|
288
319
|
}
|
|
@@ -296,27 +327,25 @@ const decodeSyncdSnapshot = async (name, snapshot, getAppStateSyncKey, minimumVe
|
|
|
296
327
|
state: newState,
|
|
297
328
|
mutationMap
|
|
298
329
|
};
|
|
299
|
-
};
|
|
330
|
+
});
|
|
300
331
|
exports.decodeSyncdSnapshot = decodeSyncdSnapshot;
|
|
301
|
-
const decodePatches =
|
|
332
|
+
const decodePatches = (name_1, syncds_1, initial_1, getAppStateSyncKey_1, options_1, minimumVersionNumber_1, logger_1, ...args_1) => __awaiter(void 0, [name_1, syncds_1, initial_1, getAppStateSyncKey_1, options_1, minimumVersionNumber_1, logger_1, ...args_1], void 0, function* (name, syncds, initial, getAppStateSyncKey, options, minimumVersionNumber, logger, validateMacs = true) {
|
|
302
333
|
var _a;
|
|
303
|
-
const newState = {
|
|
304
|
-
...initial,
|
|
305
|
-
indexValueMap: { ...initial.indexValueMap }
|
|
306
|
-
};
|
|
334
|
+
const newState = Object.assign(Object.assign({}, initial), { indexValueMap: Object.assign({}, initial.indexValueMap) });
|
|
307
335
|
const mutationMap = {};
|
|
308
|
-
for (
|
|
336
|
+
for (let i = 0; i < syncds.length; i++) {
|
|
337
|
+
const syncd = syncds[i];
|
|
309
338
|
const { version, keyId, snapshotMac } = syncd;
|
|
310
339
|
if (syncd.externalMutations) {
|
|
311
340
|
logger === null || logger === void 0 ? void 0 : logger.trace({ name, version }, 'downloading external patch');
|
|
312
|
-
const ref =
|
|
341
|
+
const ref = yield (0, exports.downloadExternalPatch)(syncd.externalMutations, options);
|
|
313
342
|
logger === null || logger === void 0 ? void 0 : logger.debug({ name, version, mutations: ref.mutations.length }, 'downloaded external patch');
|
|
314
343
|
(_a = syncd.mutations) === null || _a === void 0 ? void 0 : _a.push(...ref.mutations);
|
|
315
344
|
}
|
|
316
345
|
const patchVersion = (0, generics_1.toNumber)(version.version);
|
|
317
346
|
newState.version = patchVersion;
|
|
318
347
|
const shouldMutate = typeof minimumVersionNumber === 'undefined' || patchVersion > minimumVersionNumber;
|
|
319
|
-
const decodeResult =
|
|
348
|
+
const decodeResult = yield (0, exports.decodeSyncdPatch)(syncd, name, newState, getAppStateSyncKey, shouldMutate
|
|
320
349
|
? mutation => {
|
|
321
350
|
var _a;
|
|
322
351
|
const index = (_a = mutation.syncAction.index) === null || _a === void 0 ? void 0 : _a.toString();
|
|
@@ -327,7 +356,7 @@ const decodePatches = async (name, syncds, initial, getAppStateSyncKey, options,
|
|
|
327
356
|
newState.indexValueMap = decodeResult.indexValueMap;
|
|
328
357
|
if (validateMacs) {
|
|
329
358
|
const base64Key = Buffer.from(keyId.id).toString('base64');
|
|
330
|
-
const keyEnc =
|
|
359
|
+
const keyEnc = yield getAppStateSyncKey(base64Key);
|
|
331
360
|
if (!keyEnc) {
|
|
332
361
|
throw new boom_1.Boom(`failed to find key "${base64Key}" to decode mutation`);
|
|
333
362
|
}
|
|
@@ -341,7 +370,7 @@ const decodePatches = async (name, syncds, initial, getAppStateSyncKey, options,
|
|
|
341
370
|
syncd.mutations = [];
|
|
342
371
|
}
|
|
343
372
|
return { state: newState, mutationMap };
|
|
344
|
-
};
|
|
373
|
+
});
|
|
345
374
|
exports.decodePatches = decodePatches;
|
|
346
375
|
const chatModificationToAppPatch = (mod, jid) => {
|
|
347
376
|
const OP = WAProto_1.proto.SyncdMutation.SyncdOperation;
|
|
@@ -417,31 +446,25 @@ const chatModificationToAppPatch = (mod, jid) => {
|
|
|
417
446
|
operation: OP.SET
|
|
418
447
|
};
|
|
419
448
|
}
|
|
420
|
-
else if ('deleteForMe' in mod) {
|
|
421
|
-
const { timestamp, key, deleteMedia } = mod.deleteForMe;
|
|
422
|
-
patch = {
|
|
423
|
-
syncAction: {
|
|
424
|
-
deleteMessageForMeAction: {
|
|
425
|
-
deleteMedia,
|
|
426
|
-
messageTimestamp: timestamp
|
|
427
|
-
}
|
|
428
|
-
},
|
|
429
|
-
index: ['deleteMessageForMe', jid, key.id, key.fromMe ? '1' : '0', '0'],
|
|
430
|
-
type: 'regular_high',
|
|
431
|
-
apiVersion: 3,
|
|
432
|
-
operation: OP.SET
|
|
433
|
-
};
|
|
434
|
-
}
|
|
435
449
|
else if ('clear' in mod) {
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
450
|
+
if (mod.clear === 'all') {
|
|
451
|
+
throw new boom_1.Boom('not supported');
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
const key = mod.clear.messages[0];
|
|
455
|
+
patch = {
|
|
456
|
+
syncAction: {
|
|
457
|
+
deleteMessageForMeAction: {
|
|
458
|
+
deleteMedia: false,
|
|
459
|
+
messageTimestamp: key.timestamp
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
index: ['deleteMessageForMe', jid, key.id, key.fromMe ? '1' : '0', '0'],
|
|
463
|
+
type: 'regular_high',
|
|
464
|
+
apiVersion: 3,
|
|
465
|
+
operation: OP.SET
|
|
466
|
+
};
|
|
467
|
+
}
|
|
445
468
|
}
|
|
446
469
|
else if ('pin' in mod) {
|
|
447
470
|
patch = {
|
|
@@ -496,22 +519,6 @@ const chatModificationToAppPatch = (mod, jid) => {
|
|
|
496
519
|
operation: OP.SET,
|
|
497
520
|
};
|
|
498
521
|
}
|
|
499
|
-
else if ('addLabel' in mod) {
|
|
500
|
-
patch = {
|
|
501
|
-
syncAction: {
|
|
502
|
-
labelEditAction: {
|
|
503
|
-
name: mod.addLabel.name,
|
|
504
|
-
color: mod.addLabel.color,
|
|
505
|
-
predefinedId: mod.addLabel.predefinedId,
|
|
506
|
-
deleted: mod.addLabel.deleted
|
|
507
|
-
}
|
|
508
|
-
},
|
|
509
|
-
index: ['label_edit', mod.addLabel.id],
|
|
510
|
-
type: 'regular',
|
|
511
|
-
apiVersion: 3,
|
|
512
|
-
operation: OP.SET,
|
|
513
|
-
};
|
|
514
|
-
}
|
|
515
522
|
else if ('addChatLabel' in mod) {
|
|
516
523
|
patch = {
|
|
517
524
|
syncAction: {
|
|
@@ -659,7 +666,7 @@ const processSyncAction = (syncAction, ev, me, initialSyncOpts, logger) => {
|
|
|
659
666
|
else if (action === null || action === void 0 ? void 0 : action.pushNameSetting) {
|
|
660
667
|
const name = (_b = action === null || action === void 0 ? void 0 : action.pushNameSetting) === null || _b === void 0 ? void 0 : _b.name;
|
|
661
668
|
if (name && (me === null || me === void 0 ? void 0 : me.name) !== name) {
|
|
662
|
-
ev.emit('creds.update', { me: {
|
|
669
|
+
ev.emit('creds.update', { me: Object.assign(Object.assign({}, me), { name }) });
|
|
663
670
|
}
|
|
664
671
|
}
|
|
665
672
|
else if (action === null || action === void 0 ? void 0 : action.pinAction) {
|