baileys-joss 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1052 -2593
- package/WAProto/fix-imports.js +22 -18
- package/WAProto/index.js +22 -18
- package/lib/Defaults/index.d.ts +15 -6
- package/lib/Defaults/index.d.ts.map +1 -1
- package/lib/Defaults/index.js +16 -7
- package/lib/Defaults/index.js.map +1 -1
- package/lib/Signal/libsignal.d.ts.map +1 -1
- package/lib/Signal/libsignal.js +105 -16
- package/lib/Signal/libsignal.js.map +1 -1
- package/lib/Signal/lid-mapping.d.ts +8 -9
- package/lib/Signal/lid-mapping.d.ts.map +1 -1
- package/lib/Signal/lid-mapping.js +88 -31
- package/lib/Signal/lid-mapping.js.map +1 -1
- package/lib/Socket/business.d.ts +21 -4
- package/lib/Socket/business.d.ts.map +1 -1
- package/lib/Socket/chats.d.ts +18 -2
- package/lib/Socket/chats.d.ts.map +1 -1
- package/lib/Socket/chats.js +263 -43
- package/lib/Socket/chats.js.map +1 -1
- package/lib/Socket/communities.d.ts +21 -4
- package/lib/Socket/communities.d.ts.map +1 -1
- package/lib/Socket/groups.d.ts +15 -2
- package/lib/Socket/groups.d.ts.map +1 -1
- package/lib/Socket/groups.js +20 -0
- package/lib/Socket/groups.js.map +1 -1
- package/lib/Socket/index.d.ts +21 -4
- package/lib/Socket/index.d.ts.map +1 -1
- package/lib/Socket/messages-recv.d.ts +25 -7
- package/lib/Socket/messages-recv.d.ts.map +1 -1
- package/lib/Socket/messages-recv.js +810 -332
- package/lib/Socket/messages-recv.js.map +1 -1
- package/lib/Socket/messages-send.d.ts +20 -2
- package/lib/Socket/messages-send.d.ts.map +1 -1
- package/lib/Socket/messages-send.js +149 -47
- package/lib/Socket/messages-send.js.map +1 -1
- package/lib/Socket/newsletter.d.ts +13 -1
- package/lib/Socket/newsletter.d.ts.map +1 -1
- package/lib/Socket/newsletter.js +2 -2
- package/lib/Socket/newsletter.js.map +1 -1
- package/lib/Socket/socket.d.ts +8 -2
- package/lib/Socket/socket.d.ts.map +1 -1
- package/lib/Socket/socket.js +109 -26
- package/lib/Socket/socket.js.map +1 -1
- package/lib/Types/Auth.d.ts +2 -0
- package/lib/Types/Auth.d.ts.map +1 -1
- package/lib/Types/Call.d.ts +2 -1
- package/lib/Types/Call.d.ts.map +1 -1
- package/lib/Types/Chat.d.ts +1 -0
- package/lib/Types/Chat.d.ts.map +1 -1
- package/lib/Types/Contact.d.ts +2 -0
- package/lib/Types/Contact.d.ts.map +1 -1
- package/lib/Types/Events.d.ts +21 -1
- package/lib/Types/Events.d.ts.map +1 -1
- package/lib/Types/GroupMetadata.d.ts +4 -0
- package/lib/Types/GroupMetadata.d.ts.map +1 -1
- package/lib/Types/Message.d.ts +20 -5
- package/lib/Types/Message.d.ts.map +1 -1
- package/lib/Types/Message.js.map +1 -1
- package/lib/Types/{Newsletter.d.ts → Mex.d.ts} +11 -5
- package/lib/Types/Mex.d.ts.map +1 -0
- package/lib/Types/{Newsletter.js → Mex.js} +9 -3
- package/lib/Types/Mex.js.map +1 -0
- package/lib/Types/Signal.d.ts +12 -1
- package/lib/Types/Signal.d.ts.map +1 -1
- package/lib/Types/Socket.d.ts +3 -0
- package/lib/Types/Socket.d.ts.map +1 -1
- package/lib/Types/State.d.ts +58 -0
- package/lib/Types/State.d.ts.map +1 -1
- package/lib/Types/State.js +43 -0
- package/lib/Types/State.js.map +1 -1
- package/lib/Types/index.d.ts +2 -1
- package/lib/Types/index.d.ts.map +1 -1
- package/lib/Types/index.js +1 -1
- package/lib/Types/index.js.map +1 -1
- package/lib/Utils/auth-utils.d.ts +5 -0
- package/lib/Utils/auth-utils.d.ts.map +1 -1
- package/lib/Utils/auth-utils.js +12 -0
- package/lib/Utils/auth-utils.js.map +1 -1
- package/lib/Utils/browser-utils.d.ts.map +1 -1
- package/lib/Utils/browser-utils.js +1 -0
- package/lib/Utils/browser-utils.js.map +1 -1
- package/lib/Utils/chat-export.js +30 -30
- package/lib/Utils/chat-utils.d.ts +31 -1
- package/lib/Utils/chat-utils.d.ts.map +1 -1
- package/lib/Utils/chat-utils.js +123 -63
- package/lib/Utils/chat-utils.js.map +1 -1
- package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
- package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
- package/lib/Utils/companion-reg-client-utils.js +35 -0
- package/lib/Utils/companion-reg-client-utils.js.map +1 -0
- package/lib/Utils/crypto.d.ts +4 -8
- package/lib/Utils/crypto.d.ts.map +1 -1
- package/lib/Utils/crypto.js +2 -26
- package/lib/Utils/crypto.js.map +1 -1
- package/lib/Utils/decode-wa-message.d.ts +18 -0
- package/lib/Utils/decode-wa-message.d.ts.map +1 -1
- package/lib/Utils/decode-wa-message.js +34 -0
- package/lib/Utils/decode-wa-message.js.map +1 -1
- package/lib/Utils/event-buffer.d.ts +2 -0
- package/lib/Utils/event-buffer.d.ts.map +1 -1
- package/lib/Utils/event-buffer.js +49 -1
- package/lib/Utils/event-buffer.js.map +1 -1
- package/lib/Utils/generics.d.ts +1 -0
- package/lib/Utils/generics.d.ts.map +1 -1
- package/lib/Utils/generics.js +10 -1
- package/lib/Utils/generics.js.map +1 -1
- package/lib/Utils/history.d.ts +2 -0
- package/lib/Utils/history.d.ts.map +1 -1
- package/lib/Utils/history.js +12 -9
- package/lib/Utils/history.js.map +1 -1
- package/lib/Utils/identity-change-handler.d.ts +7 -0
- package/lib/Utils/identity-change-handler.d.ts.map +1 -1
- package/lib/Utils/identity-change-handler.js +1 -0
- package/lib/Utils/identity-change-handler.js.map +1 -1
- package/lib/Utils/index.d.ts +27 -48
- package/lib/Utils/index.d.ts.map +1 -1
- package/lib/Utils/index.js +27 -77
- package/lib/Utils/index.js.map +1 -1
- package/lib/Utils/link-preview.js +2 -2
- package/lib/Utils/link-preview.js.map +1 -1
- package/lib/Utils/lt-hash.d.ts +7 -12
- package/lib/Utils/lt-hash.d.ts.map +1 -1
- package/lib/Utils/lt-hash.js +2 -42
- package/lib/Utils/lt-hash.js.map +1 -1
- package/lib/Utils/meme-generator.js +33 -33
- package/lib/Utils/message-retry-manager.d.ts +35 -2
- package/lib/Utils/message-retry-manager.d.ts.map +1 -1
- package/lib/Utils/message-retry-manager.js +99 -2
- package/lib/Utils/message-retry-manager.js.map +1 -1
- package/lib/Utils/messages-media.d.ts +6 -3
- package/lib/Utils/messages-media.d.ts.map +1 -1
- package/lib/Utils/messages-media.js +25 -11
- package/lib/Utils/messages-media.js.map +1 -1
- package/lib/Utils/messages.d.ts.map +1 -1
- package/lib/Utils/messages.js +28 -5
- package/lib/Utils/messages.js.map +1 -1
- package/lib/Utils/mini-games.js +7 -7
- package/lib/Utils/noise-handler.d.ts +7 -7
- package/lib/Utils/noise-handler.d.ts.map +1 -1
- package/lib/Utils/noise-handler.js +33 -27
- package/lib/Utils/noise-handler.js.map +1 -1
- package/lib/Utils/offline-node-processor.d.ts +17 -0
- package/lib/Utils/offline-node-processor.d.ts.map +1 -0
- package/lib/Utils/offline-node-processor.js +40 -0
- package/lib/Utils/offline-node-processor.js.map +1 -0
- package/lib/Utils/process-message.d.ts.map +1 -1
- package/lib/Utils/process-message.js +140 -14
- package/lib/Utils/process-message.js.map +1 -1
- package/lib/Utils/qr-generator.js +16 -16
- package/lib/Utils/reporting-utils.js +2 -2
- package/lib/Utils/reporting-utils.js.map +1 -1
- package/lib/Utils/signal.d.ts +13 -0
- package/lib/Utils/signal.d.ts.map +1 -1
- package/lib/Utils/signal.js +42 -0
- package/lib/Utils/signal.js.map +1 -1
- package/lib/Utils/stanza-ack.d.ts +11 -0
- package/lib/Utils/stanza-ack.d.ts.map +1 -0
- package/lib/Utils/stanza-ack.js +38 -0
- package/lib/Utils/stanza-ack.js.map +1 -0
- package/lib/Utils/sync-action-utils.d.ts.map +1 -1
- package/lib/Utils/sync-action-utils.js +1 -0
- package/lib/Utils/sync-action-utils.js.map +1 -1
- package/lib/Utils/tc-token-utils.d.ts +26 -1
- package/lib/Utils/tc-token-utils.d.ts.map +1 -1
- package/lib/Utils/tc-token-utils.js +151 -5
- package/lib/Utils/tc-token-utils.js.map +1 -1
- package/lib/Utils/templates.js +104 -104
- package/lib/Utils/validate-connection.d.ts.map +1 -1
- package/lib/Utils/validate-connection.js +12 -2
- package/lib/Utils/validate-connection.js.map +1 -1
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -1
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +26 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -1
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/index.d.ts +1 -0
- package/lib/WAUSync/Protocols/index.d.ts.map +1 -1
- package/lib/WAUSync/Protocols/index.js +1 -0
- package/lib/WAUSync/Protocols/index.js.map +1 -1
- package/lib/WAUSync/USyncQuery.d.ts +1 -0
- package/lib/WAUSync/USyncQuery.d.ts.map +1 -1
- package/lib/WAUSync/USyncQuery.js +6 -2
- package/lib/WAUSync/USyncQuery.js.map +1 -1
- package/lib/WAUSync/USyncUser.d.ts +4 -0
- package/lib/WAUSync/USyncUser.d.ts.map +1 -1
- package/lib/WAUSync/USyncUser.js +8 -0
- package/lib/WAUSync/USyncUser.js.map +1 -1
- package/package.json +41 -12
- package/lib/Types/Newsletter.d.ts.map +0 -1
- package/lib/Types/Newsletter.js.map +0 -1
|
@@ -15,5 +15,10 @@ export declare function makeCacheableSignalKeyStore(store: SignalKeyStore, logge
|
|
|
15
15
|
* @returns SignalKeyStore with transaction capability
|
|
16
16
|
*/
|
|
17
17
|
export declare const addTransactionCapability: (state: SignalKeyStore, logger: ILogger, { maxCommitRetries, delayBetweenTriesMs }: TransactionCapabilityOptions) => SignalKeyStoreWithTransaction;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the authenticated user's JID, or throws a Boom-401 if creds are not yet authenticated.
|
|
20
|
+
* Use this anywhere we'd otherwise reach for `creds.me!.id` to fail fast with a descriptive error.
|
|
21
|
+
*/
|
|
22
|
+
export declare const assertMeId: (creds: AuthenticationCreds) => string;
|
|
18
23
|
export declare const initAuthCreds: () => AuthenticationCreds;
|
|
19
24
|
//# sourceMappingURL=auth-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-utils.d.ts","sourceRoot":"","sources":["../../src/Utils/auth-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-utils.d.ts","sourceRoot":"","sources":["../../src/Utils/auth-utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACX,mBAAmB,EACnB,UAAU,EAGV,cAAc,EACd,6BAA6B,EAC7B,4BAA4B,EAC5B,MAAM,UAAU,CAAA;AAGjB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAYvC;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,cAAc,EACrB,MAAM,CAAC,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,UAAU,GACjB,cAAc,CAkEhB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GACpC,OAAO,cAAc,EACrB,QAAQ,OAAO,EACf,2CAA2C,4BAA4B,KACrE,6BAiOF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,mBAAmB,KAAG,MAOvD,CAAA;AAED,eAAO,MAAM,aAAa,QAAO,mBAsBhC,CAAA"}
|
package/lib/Utils/auth-utils.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import NodeCache from '@cacheable/node-cache';
|
|
2
|
+
import { Boom } from '@hapi/boom';
|
|
2
3
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
3
4
|
import { Mutex } from 'async-mutex';
|
|
4
5
|
import { randomBytes } from 'crypto';
|
|
@@ -264,6 +265,17 @@ export const addTransactionCapability = (state, logger, { maxCommitRetries, dela
|
|
|
264
265
|
}
|
|
265
266
|
};
|
|
266
267
|
};
|
|
268
|
+
/**
|
|
269
|
+
* Returns the authenticated user's JID, or throws a Boom-401 if creds are not yet authenticated.
|
|
270
|
+
* Use this anywhere we'd otherwise reach for `creds.me!.id` to fail fast with a descriptive error.
|
|
271
|
+
*/
|
|
272
|
+
export const assertMeId = (creds) => {
|
|
273
|
+
const id = creds.me?.id;
|
|
274
|
+
if (!id) {
|
|
275
|
+
throw new Boom('Cannot proceed: socket is not authenticated yet (creds.me.id is missing)', { statusCode: 401 });
|
|
276
|
+
}
|
|
277
|
+
return id;
|
|
278
|
+
};
|
|
267
279
|
export const initAuthCreds = () => {
|
|
268
280
|
const identityKey = Curve.generateKeyPair();
|
|
269
281
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-utils.js","sourceRoot":"","sources":["../../src/Utils/auth-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-utils.js","sourceRoot":"","sources":["../../src/Utils/auth-utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAUhD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAWjD;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAC1C,KAAqB,EACrB,MAAgB,EAChB,MAAmB;IAEnB,MAAM,KAAK,GACV,MAAM;QACN,IAAI,SAAS,CAA6C;YACzD,MAAM,EAAE,kBAAkB,CAAC,YAAY,EAAE,YAAY;YACrD,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,IAAI;SACpB,CAAC,CAAA;IAEH,wCAAwC;IACxC,MAAM,UAAU,GAAG,IAAI,KAAK,EAAE,CAAA;IAE9B,SAAS,WAAW,CAAC,IAAY,EAAE,EAAU;QAC5C,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,CAAA;IACvB,CAAC;IAED,OAAO;QACN,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;YAClB,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;gBACzC,MAAM,IAAI,GAAoD,EAAE,CAAA;gBAChE,MAAM,UAAU,GAAa,EAAE,CAAA;gBAE/B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;oBACtB,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAiC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAQ,CAAA;oBAC5F,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;wBACjC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;oBAChB,CAAC;yBAAM,CAAC;wBACP,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACpB,CAAC;gBACF,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACvB,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAA;oBACjE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;oBACjD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;wBAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;wBACxB,IAAI,IAAI,EAAE,CAAC;4BACV,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;4BACf,4EAA4E;4BAC5E,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAkD,CAAC,CAAA;wBAC3F,CAAC;oBACF,CAAC;gBACF,CAAC;gBAED,OAAO,IAAI,CAAA;YACZ,CAAC,CAAC,CAAA;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI;YACb,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;gBACzC,IAAI,IAAI,GAAG,CAAC,CAAA;gBACZ,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;oBACzB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,IAA+B,CAAC,EAAE,CAAC;wBACxD,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAA+B,CAAE,CAAC,EAAE,CAAE,CAAC,CAAA;wBACnF,IAAI,IAAI,CAAC,CAAA;oBACV,CAAC;gBACF,CAAC;gBAED,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,CAAC,CAAA;gBACxC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;QACH,CAAC;QACD,KAAK,CAAC,KAAK;YACV,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;YACtB,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;QACtB,CAAC;KACD,CAAA;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,KAAqB,EACrB,MAAe,EACf,EAAE,gBAAgB,EAAE,mBAAmB,EAAgC,EACvC,EAAE;IAClC,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAsB,CAAA;IAE7D,2EAA2E;IAC3E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE3C,0DAA0D;IAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAA;IAC1C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAElD,6CAA6C;IAC7C,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEtD;;OAEG;IACH,SAAS,QAAQ,CAAC,GAAW;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS,UAAU,CAAC,GAAW;QAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC,CAAA;YAC/B,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS,iBAAiB,CAAC,GAAW;QACrC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5C,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,SAAS,iBAAiB,CAAC,GAAW;QACrC,MAAM,KAAK,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAClD,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAEhC,wDAAwD;QACxD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAChC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACrB,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC7B,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACH,SAAS,eAAe;QACvB,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,UAAU,eAAe,CAAC,SAAwB;QACtD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAC3C,OAAM;QACP,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAEtC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACJ,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAA;gBACvF,OAAM;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAG,gBAAgB,GAAG,OAAO,GAAG,CAAC,CAAA;gBAClD,MAAM,CAAC,IAAI,CAAC,4CAA4C,WAAW,EAAE,CAAC,CAAA;gBAEtE,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,KAAK,CAAA;gBACZ,CAAC;gBAED,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAA;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO;QACN,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;YAEhC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACV,sEAAsE;gBACtE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAC5B,CAAC;YAED,qCAAqC;YACrC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;YACpC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAA;YAEjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,SAAS,EAAE,CAAA;gBACf,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,sCAAsC,CAAC,CAAA;gBAErF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;gBAEnF,eAAe;gBACf,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAK,EAAU,CAAA;gBAChD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,OAAO,CAAC,CAAA;YACzC,CAAC;YAED,kCAAkC;YAClC,MAAM,MAAM,GAA2B,EAAE,CAAA;YACzC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;gBACnB,CAAC;YACF,CAAC;YAED,OAAO,MAAM,CAAA;QACd,CAAC;QAED,GAAG,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;YACjB,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;YAEhC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACV,sDAAsD;gBACtD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAE/B,mCAAmC;gBACnC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,KAAgC,CAAA;oBAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;wBACxB,MAAM,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;oBAClD,CAAC;gBACF,CAAC;gBAED,6BAA6B;gBAC7B,MAAM,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;oBAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAA+B,CAAC,EAAmB,CAAA;oBACnF,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC1B,CAAC,CAAC,CACF,CACD,CAAA;gBACD,OAAM;YACP,CAAC;YAED,8CAA8C;YAC9C,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAA;YAEpE,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAA+B,CAAA;gBAE3C,0BAA0B;gBAC1B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAK,EAAU,CAAA;gBAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAK,EAAU,CAAA;gBAEtD,gCAAgC;gBAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjF,CAAC;qBAAM,CAAC;oBACP,mBAAmB;oBACnB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;oBACzC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9C,CAAC;YACF,CAAC;QACF,CAAC;QAED,eAAe;QAEf,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;YAErC,8CAA8C;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;gBACpD,OAAO,IAAI,EAAE,CAAA;YACd,CAAC;YAED,qDAAqD;YACrD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;YAC7B,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAEtB,IAAI,CAAC;gBACJ,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;oBAC1C,MAAM,GAAG,GAAuB;wBAC/B,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,CAAC;qBACZ,CAAA;oBAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;oBAEpC,IAAI,CAAC;wBACJ,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;wBAE7C,mBAAmB;wBACnB,MAAM,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;wBAEpC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,uBAAuB,CAAC,CAAA;wBAEnE,OAAO,MAAM,CAAA;oBACd,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,kCAAkC,CAAC,CAAA;wBAC3D,MAAM,KAAK,CAAA;oBACZ,CAAC;gBACF,CAAC,CAAC,CAAA;YACH,CAAC;oBAAS,CAAC;gBACV,iBAAiB,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAA0B,EAAU,EAAE;IAChE,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,IAAI,IAAI,CAAC,0EAA0E,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAA;IAChH,CAAC;IAED,OAAO,EAAE,CAAA;AACV,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,GAAwB,EAAE;IACtD,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,EAAE,CAAA;IAC3C,OAAO;QACN,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAE;QACjC,uBAAuB,EAAE,KAAK,CAAC,eAAe,EAAE;QAChD,iBAAiB,EAAE,WAAW;QAC9B,YAAY,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,cAAc,EAAE,sBAAsB,EAAE;QACxC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChD,wBAAwB,EAAE,EAAE;QAC5B,YAAY,EAAE,CAAC;QACf,uBAAuB,EAAE,CAAC;QAC1B,kBAAkB,EAAE,CAAC;QACrB,eAAe,EAAE;YAChB,cAAc,EAAE,KAAK;SACrB;QACD,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;KACzB,CAAA;AACF,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-utils.d.ts","sourceRoot":"","sources":["../../src/Utils/browser-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAgB3C,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"browser-utils.d.ts","sourceRoot":"","sources":["../../src/Utils/browser-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAgB3C,eAAO,MAAM,QAAQ,EAAE,WAQtB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,WAG5C,CAAA"}
|
|
@@ -18,6 +18,7 @@ export const Browsers = {
|
|
|
18
18
|
macOS: browser => ['Mac OS', browser, '14.4.1'],
|
|
19
19
|
baileys: browser => ['Baileys', browser, '6.5.0'],
|
|
20
20
|
windows: browser => ['Windows', browser, '10.0.22631'],
|
|
21
|
+
android: browser => [browser, 'Android', ''],
|
|
21
22
|
/** The appropriate browser based on your OS & release */
|
|
22
23
|
appropriate: browser => [PLATFORM_MAP[platform()] || 'Ubuntu', browser, release()]
|
|
23
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-utils.js","sourceRoot":"","sources":["../../src/Utils/browser-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAG9C,MAAM,YAAY,GAAG;IACpB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;CACjB,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACpC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;IACjD,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC;IACtD,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;CAClF,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE;IAChD,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAS,CAAC,CAAA;IACjF,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA,CAAC,QAAQ;AAC7D,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"browser-utils.js","sourceRoot":"","sources":["../../src/Utils/browser-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAG9C,MAAM,YAAY,GAAG;IACpB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;CACjB,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACpC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;IACjD,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC;IAC5C,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;CAClF,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE;IAChD,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAS,CAAC,CAAA;IACjF,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA,CAAC,QAAQ;AAC7D,CAAC,CAAA"}
|
package/lib/Utils/chat-export.js
CHANGED
|
@@ -129,44 +129,44 @@ const exportToJson = (messages, options) => {
|
|
|
129
129
|
*/
|
|
130
130
|
const exportToHtml = (messages, options) => {
|
|
131
131
|
const title = options.title || 'Chat Export';
|
|
132
|
-
const css = options.customCss || `
|
|
133
|
-
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background: #f0f0f0; }
|
|
134
|
-
.header { text-align: center; margin-bottom: 20px; }
|
|
135
|
-
.message { margin: 10px 0; padding: 10px 15px; border-radius: 10px; max-width: 80%; }
|
|
136
|
-
.message.from-me { background: #dcf8c6; margin-left: auto; }
|
|
137
|
-
.message.from-other { background: white; }
|
|
138
|
-
.sender { font-weight: bold; font-size: 0.9em; color: #128c7e; }
|
|
139
|
-
.time { font-size: 0.75em; color: #888; margin-top: 5px; }
|
|
140
|
-
.text { margin-top: 5px; word-wrap: break-word; }
|
|
141
|
-
.media-info { font-style: italic; color: #666; }
|
|
132
|
+
const css = options.customCss || `
|
|
133
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background: #f0f0f0; }
|
|
134
|
+
.header { text-align: center; margin-bottom: 20px; }
|
|
135
|
+
.message { margin: 10px 0; padding: 10px 15px; border-radius: 10px; max-width: 80%; }
|
|
136
|
+
.message.from-me { background: #dcf8c6; margin-left: auto; }
|
|
137
|
+
.message.from-other { background: white; }
|
|
138
|
+
.sender { font-weight: bold; font-size: 0.9em; color: #128c7e; }
|
|
139
|
+
.time { font-size: 0.75em; color: #888; margin-top: 5px; }
|
|
140
|
+
.text { margin-top: 5px; word-wrap: break-word; }
|
|
141
|
+
.media-info { font-style: italic; color: #666; }
|
|
142
142
|
`;
|
|
143
143
|
const messageHtml = messages.map(msg => {
|
|
144
144
|
const isFromMe = msg.key.fromMe;
|
|
145
145
|
const sender = getSender(msg);
|
|
146
146
|
const text = extractText(msg);
|
|
147
147
|
const time = formatDate(msg.messageTimestamp, options.dateFormat);
|
|
148
|
-
return `
|
|
149
|
-
<div class="message ${isFromMe ? 'from-me' : 'from-other'}">
|
|
150
|
-
<div class="sender">${escapeHtml(sender)}</div>
|
|
151
|
-
<div class="text">${escapeHtml(text)}</div>
|
|
152
|
-
<div class="time">${escapeHtml(time)}</div>
|
|
148
|
+
return `
|
|
149
|
+
<div class="message ${isFromMe ? 'from-me' : 'from-other'}">
|
|
150
|
+
<div class="sender">${escapeHtml(sender)}</div>
|
|
151
|
+
<div class="text">${escapeHtml(text)}</div>
|
|
152
|
+
<div class="time">${escapeHtml(time)}</div>
|
|
153
153
|
</div>`;
|
|
154
154
|
}).join('\n');
|
|
155
|
-
return `<!DOCTYPE html>
|
|
156
|
-
<html>
|
|
157
|
-
<head>
|
|
158
|
-
<meta charset="UTF-8">
|
|
159
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
160
|
-
<title>${escapeHtml(title)}</title>
|
|
161
|
-
<style>${css}</style>
|
|
162
|
-
</head>
|
|
163
|
-
<body>
|
|
164
|
-
<div class="header">
|
|
165
|
-
<h1>${escapeHtml(title)}</h1>
|
|
166
|
-
<p>${messages.length} messages</p>
|
|
167
|
-
</div>
|
|
168
|
-
${messageHtml}
|
|
169
|
-
</body>
|
|
155
|
+
return `<!DOCTYPE html>
|
|
156
|
+
<html>
|
|
157
|
+
<head>
|
|
158
|
+
<meta charset="UTF-8">
|
|
159
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
160
|
+
<title>${escapeHtml(title)}</title>
|
|
161
|
+
<style>${css}</style>
|
|
162
|
+
</head>
|
|
163
|
+
<body>
|
|
164
|
+
<div class="header">
|
|
165
|
+
<h1>${escapeHtml(title)}</h1>
|
|
166
|
+
<p>${messages.length} messages</p>
|
|
167
|
+
</div>
|
|
168
|
+
${messageHtml}
|
|
169
|
+
</body>
|
|
170
170
|
</html>`;
|
|
171
171
|
};
|
|
172
172
|
/**
|
|
@@ -6,7 +6,37 @@ type FetchAppStateSyncKey = (keyId: string) => Promise<proto.Message.IAppStateSy
|
|
|
6
6
|
export type ChatMutationMap = {
|
|
7
7
|
[index: string]: ChatMutation;
|
|
8
8
|
};
|
|
9
|
+
type Mac = {
|
|
10
|
+
indexMac: Uint8Array;
|
|
11
|
+
valueMac: Uint8Array;
|
|
12
|
+
operation: proto.SyncdMutation.SyncdOperation;
|
|
13
|
+
};
|
|
14
|
+
export declare const makeLtHashGenerator: ({ indexValueMap, hash }: Pick<LTHashState, "hash" | "indexValueMap">) => {
|
|
15
|
+
mix: ({ indexMac, valueMac, operation }: Mac) => void;
|
|
16
|
+
finish: () => {
|
|
17
|
+
hash: Buffer<ArrayBuffer>;
|
|
18
|
+
indexValueMap: {
|
|
19
|
+
[indexMacBase64: string]: {
|
|
20
|
+
valueMac: Uint8Array | Buffer;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|
|
9
25
|
export declare const newLTHashState: () => LTHashState;
|
|
26
|
+
export declare const ensureLTHashStateVersion: (state: LTHashState) => LTHashState;
|
|
27
|
+
export declare const MAX_SYNC_ATTEMPTS = 2;
|
|
28
|
+
/**
|
|
29
|
+
* Check if an error is a missing app state sync key.
|
|
30
|
+
* WA Web treats these as "Blocked" (waits for key arrival), not fatal.
|
|
31
|
+
* In Baileys we retry with a snapshot which may use a different key.
|
|
32
|
+
*/
|
|
33
|
+
export declare const isMissingKeyError: (error: any) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Determines if an app state sync error is unrecoverable.
|
|
36
|
+
* TypeError indicates a WASM crash; otherwise we give up after MAX_SYNC_ATTEMPTS.
|
|
37
|
+
* Missing keys are NOT checked here — they are handled separately as "Blocked".
|
|
38
|
+
*/
|
|
39
|
+
export declare const isAppStateSyncIrrecoverable: (error: any, attempts: number) => boolean;
|
|
10
40
|
export declare const encodeSyncdPatch: ({ type, index, syncAction, apiVersion, operation }: WAPatchCreate, myAppStateKeyId: string, state: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey) => Promise<{
|
|
11
41
|
patch: proto.ISyncdPatch;
|
|
12
42
|
state: LTHashState;
|
|
@@ -56,7 +86,7 @@ export declare const extractSyncdPatches: (result: BinaryNode, options: RequestI
|
|
|
56
86
|
}>;
|
|
57
87
|
export declare const downloadExternalBlob: (blob: proto.IExternalBlobReference, options: RequestInit) => Promise<Buffer<ArrayBuffer>>;
|
|
58
88
|
export declare const downloadExternalPatch: (blob: proto.IExternalBlobReference, options: RequestInit) => Promise<proto.SyncdMutations>;
|
|
59
|
-
export declare const decodeSyncdSnapshot: (name: WAPatchName, snapshot: proto.ISyncdSnapshot, getAppStateSyncKey: FetchAppStateSyncKey, minimumVersionNumber: number | undefined, validateMacs?: boolean) => Promise<{
|
|
89
|
+
export declare const decodeSyncdSnapshot: (name: WAPatchName, snapshot: proto.ISyncdSnapshot, getAppStateSyncKey: FetchAppStateSyncKey, minimumVersionNumber: number | undefined, validateMacs?: boolean, logger?: ILogger) => Promise<{
|
|
60
90
|
state: LTHashState;
|
|
61
91
|
mutationMap: ChatMutationMap;
|
|
62
92
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-utils.d.ts","sourceRoot":"","sources":["../../src/Utils/chat-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-utils.d.ts","sourceRoot":"","sources":["../../src/Utils/chat-utils.ts"],"names":[],"mappings":"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"}
|
package/lib/Utils/chat-utils.js
CHANGED
|
@@ -1,49 +1,44 @@
|
|
|
1
1
|
import { Boom } from '@hapi/boom';
|
|
2
|
+
import { expandAppStateKeys } from 'whatsapp-rust-bridge';
|
|
2
3
|
import { proto } from '../../WAProto/index.js';
|
|
3
4
|
import { LabelAssociationType } from '../Types/LabelAssociation.js';
|
|
4
5
|
import { getBinaryNodeChild, getBinaryNodeChildren, isJidGroup, jidNormalizedUser } from '../WABinary/index.js';
|
|
5
|
-
import { aesDecrypt, aesEncrypt,
|
|
6
|
+
import { aesDecrypt, aesEncrypt, hmacSign } from './crypto.js';
|
|
6
7
|
import { toNumber } from './generics.js';
|
|
7
8
|
import { LT_HASH_ANTI_TAMPERING } from './lt-hash.js';
|
|
8
9
|
import { downloadContentFromMessage } from './messages-media.js';
|
|
9
10
|
import { emitSyncActionResults, processContactAction } from './sync-action-utils.js';
|
|
10
|
-
const mutationKeys =
|
|
11
|
-
const
|
|
11
|
+
const mutationKeys = (keydata) => {
|
|
12
|
+
const keys = expandAppStateKeys(keydata);
|
|
12
13
|
return {
|
|
13
|
-
indexKey:
|
|
14
|
-
valueEncryptionKey:
|
|
15
|
-
valueMacKey:
|
|
16
|
-
snapshotMacKey:
|
|
17
|
-
patchMacKey:
|
|
14
|
+
indexKey: keys.indexKey,
|
|
15
|
+
valueEncryptionKey: keys.valueEncryptionKey,
|
|
16
|
+
valueMacKey: keys.valueMacKey,
|
|
17
|
+
snapshotMacKey: keys.snapshotMacKey,
|
|
18
|
+
patchMacKey: keys.patchMacKey
|
|
18
19
|
};
|
|
19
20
|
};
|
|
20
21
|
const generateMac = (operation, data, keyId, key) => {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return Buffer.concat([buff, Buffer.from(keyId, 'base64')]);
|
|
33
|
-
};
|
|
34
|
-
const keyData = getKeyData();
|
|
35
|
-
const last = Buffer.alloc(8); // 8 bytes
|
|
36
|
-
last.set([keyData.length], last.length - 1);
|
|
37
|
-
const total = Buffer.concat([keyData, data, last]);
|
|
22
|
+
const opByte = operation === proto.SyncdMutation.SyncdOperation.SET ? 0x01 : 0x02;
|
|
23
|
+
const keyIdBuffer = typeof keyId === 'string' ? Buffer.from(keyId, 'base64') : keyId;
|
|
24
|
+
const keyData = new Uint8Array(1 + keyIdBuffer.length);
|
|
25
|
+
keyData[0] = opByte;
|
|
26
|
+
keyData.set(keyIdBuffer, 1);
|
|
27
|
+
const last = new Uint8Array(8);
|
|
28
|
+
last[7] = keyData.length;
|
|
29
|
+
const total = new Uint8Array(keyData.length + data.length + last.length);
|
|
30
|
+
total.set(keyData, 0);
|
|
31
|
+
total.set(data, keyData.length);
|
|
32
|
+
total.set(last, keyData.length + data.length);
|
|
38
33
|
const hmac = hmacSign(total, key, 'sha512');
|
|
39
|
-
return hmac.
|
|
34
|
+
return hmac.subarray(0, 32);
|
|
40
35
|
};
|
|
41
36
|
const to64BitNetworkOrder = (e) => {
|
|
42
37
|
const buff = Buffer.alloc(8);
|
|
43
38
|
buff.writeUint32BE(e, 4);
|
|
44
39
|
return buff;
|
|
45
40
|
};
|
|
46
|
-
const makeLtHashGenerator = ({ indexValueMap, hash }) => {
|
|
41
|
+
export const makeLtHashGenerator = ({ indexValueMap, hash }) => {
|
|
47
42
|
indexValueMap = { ...indexValueMap };
|
|
48
43
|
const addBuffs = [];
|
|
49
44
|
const subBuffs = [];
|
|
@@ -53,26 +48,27 @@ const makeLtHashGenerator = ({ indexValueMap, hash }) => {
|
|
|
53
48
|
const prevOp = indexValueMap[indexMacBase64];
|
|
54
49
|
if (operation === proto.SyncdMutation.SyncdOperation.REMOVE) {
|
|
55
50
|
if (!prevOp) {
|
|
56
|
-
|
|
51
|
+
// WA Web does not throw here — it logs a warning and skips the subtract.
|
|
52
|
+
// The missing REMOVE will cause an LTHash mismatch, which is handled
|
|
53
|
+
// by the MAC validation layer (snapshot recovery or retry).
|
|
54
|
+
return;
|
|
57
55
|
}
|
|
58
56
|
// remove from index value mac, since this mutation is erased
|
|
59
57
|
delete indexValueMap[indexMacBase64];
|
|
60
58
|
}
|
|
61
59
|
else {
|
|
62
|
-
addBuffs.push(
|
|
60
|
+
addBuffs.push(valueMac);
|
|
63
61
|
// add this index into the history map
|
|
64
62
|
indexValueMap[indexMacBase64] = { valueMac };
|
|
65
63
|
}
|
|
66
64
|
if (prevOp) {
|
|
67
|
-
subBuffs.push(
|
|
65
|
+
subBuffs.push(prevOp.valueMac);
|
|
68
66
|
}
|
|
69
67
|
},
|
|
70
|
-
finish:
|
|
71
|
-
const
|
|
72
|
-
const result = await LT_HASH_ANTI_TAMPERING.subtractThenAdd(hashArrayBuffer, addBuffs, subBuffs);
|
|
73
|
-
const buffer = Buffer.from(result);
|
|
68
|
+
finish: () => {
|
|
69
|
+
const result = LT_HASH_ANTI_TAMPERING.subtractThenAdd(hash, subBuffs, addBuffs);
|
|
74
70
|
return {
|
|
75
|
-
hash:
|
|
71
|
+
hash: Buffer.from(result),
|
|
76
72
|
indexValueMap
|
|
77
73
|
};
|
|
78
74
|
}
|
|
@@ -87,10 +83,33 @@ const generatePatchMac = (snapshotMac, valueMacs, version, type, key) => {
|
|
|
87
83
|
return hmacSign(total, key);
|
|
88
84
|
};
|
|
89
85
|
export const newLTHashState = () => ({ version: 0, hash: Buffer.alloc(128), indexValueMap: {} });
|
|
86
|
+
export const ensureLTHashStateVersion = (state) => {
|
|
87
|
+
if (typeof state.version !== 'number' || isNaN(state.version)) {
|
|
88
|
+
state.version = 0;
|
|
89
|
+
}
|
|
90
|
+
return state;
|
|
91
|
+
};
|
|
92
|
+
export const MAX_SYNC_ATTEMPTS = 2;
|
|
93
|
+
/**
|
|
94
|
+
* Check if an error is a missing app state sync key.
|
|
95
|
+
* WA Web treats these as "Blocked" (waits for key arrival), not fatal.
|
|
96
|
+
* In Baileys we retry with a snapshot which may use a different key.
|
|
97
|
+
*/
|
|
98
|
+
export const isMissingKeyError = (error) => {
|
|
99
|
+
return error?.data?.isMissingKey === true;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Determines if an app state sync error is unrecoverable.
|
|
103
|
+
* TypeError indicates a WASM crash; otherwise we give up after MAX_SYNC_ATTEMPTS.
|
|
104
|
+
* Missing keys are NOT checked here — they are handled separately as "Blocked".
|
|
105
|
+
*/
|
|
106
|
+
export const isAppStateSyncIrrecoverable = (error, attempts) => {
|
|
107
|
+
return attempts >= MAX_SYNC_ATTEMPTS || error?.name === 'TypeError';
|
|
108
|
+
};
|
|
90
109
|
export const encodeSyncdPatch = async ({ type, index, syncAction, apiVersion, operation }, myAppStateKeyId, state, getAppStateSyncKey) => {
|
|
91
110
|
const key = !!myAppStateKeyId ? await getAppStateSyncKey(myAppStateKeyId) : undefined;
|
|
92
111
|
if (!key) {
|
|
93
|
-
throw new Boom(`myAppStateKey ("${myAppStateKeyId}") not present`, {
|
|
112
|
+
throw new Boom(`myAppStateKey ("${myAppStateKeyId}") not present`, { data: { isMissingKey: true } });
|
|
94
113
|
}
|
|
95
114
|
const encKeyId = Buffer.from(myAppStateKeyId, 'base64');
|
|
96
115
|
state = { ...state, indexValueMap: { ...state.indexValueMap } };
|
|
@@ -102,14 +121,14 @@ export const encodeSyncdPatch = async ({ type, index, syncAction, apiVersion, op
|
|
|
102
121
|
version: apiVersion
|
|
103
122
|
});
|
|
104
123
|
const encoded = proto.SyncActionData.encode(dataProto).finish();
|
|
105
|
-
const keyValue =
|
|
124
|
+
const keyValue = mutationKeys(key.keyData);
|
|
106
125
|
const encValue = aesEncrypt(encoded, keyValue.valueEncryptionKey);
|
|
107
126
|
const valueMac = generateMac(operation, encValue, encKeyId, keyValue.valueMacKey);
|
|
108
127
|
const indexMac = hmacSign(indexBuffer, keyValue.indexKey);
|
|
109
128
|
// update LT hash
|
|
110
129
|
const generator = makeLtHashGenerator(state);
|
|
111
130
|
generator.mix({ indexMac, valueMac, operation });
|
|
112
|
-
Object.assign(state,
|
|
131
|
+
Object.assign(state, generator.finish());
|
|
113
132
|
state.version += 1;
|
|
114
133
|
const snapshotMac = generateSnapshotMac(state.hash, state.version, type, keyValue.snapshotMacKey);
|
|
115
134
|
const patch = {
|
|
@@ -137,6 +156,7 @@ export const encodeSyncdPatch = async ({ type, index, syncAction, apiVersion, op
|
|
|
137
156
|
};
|
|
138
157
|
export const decodeSyncdMutations = async (msgMutations, initialState, getAppStateSyncKey, onMutation, validateMacs) => {
|
|
139
158
|
const ltGenerator = makeLtHashGenerator(initialState);
|
|
159
|
+
const derivedKeyCache = new Map();
|
|
140
160
|
// indexKey used to HMAC sign record.index.blob
|
|
141
161
|
// valueEncryptionKey used to AES-256-CBC encrypt record.value.blob[0:-32]
|
|
142
162
|
// the remaining record.value.blob[0:-32] is the mac, it the HMAC sign of key.keyId + decoded proto data + length of bytes in keyId
|
|
@@ -145,17 +165,36 @@ export const decodeSyncdMutations = async (msgMutations, initialState, getAppSta
|
|
|
145
165
|
// otherwise, if it's only a record -- it'll be a SET mutation
|
|
146
166
|
const operation = 'operation' in msgMutation ? msgMutation.operation : proto.SyncdMutation.SyncdOperation.SET;
|
|
147
167
|
const record = 'record' in msgMutation && !!msgMutation.record ? msgMutation.record : msgMutation;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
168
|
+
let key;
|
|
169
|
+
try {
|
|
170
|
+
key = await getKey(record.keyId.id);
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
// Missing-key errors must propagate so the orchestrator can park the
|
|
174
|
+
// collection (Blocked) and retry when APP_STATE_SYNC_KEY_SHARE arrives.
|
|
175
|
+
// Other errors → individual record corruption, skip and keep going.
|
|
176
|
+
if (isMissingKeyError(err))
|
|
177
|
+
throw err;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const content = record.value.blob;
|
|
181
|
+
const encContent = content.subarray(0, -32);
|
|
182
|
+
const ogValueMac = content.subarray(-32);
|
|
152
183
|
if (validateMacs) {
|
|
153
184
|
const contentHmac = generateMac(operation, encContent, record.keyId.id, key.valueMacKey);
|
|
154
185
|
if (Buffer.compare(contentHmac, ogValueMac) !== 0) {
|
|
155
|
-
|
|
186
|
+
// HMAC verification failed — skip this record
|
|
187
|
+
continue;
|
|
156
188
|
}
|
|
157
189
|
}
|
|
158
|
-
|
|
190
|
+
let result;
|
|
191
|
+
try {
|
|
192
|
+
result = aesDecrypt(encContent, key.valueEncryptionKey);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// decrypt failed — skip this record instead of aborting
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
159
198
|
const syncAction = proto.SyncActionData.decode(result);
|
|
160
199
|
if (validateMacs) {
|
|
161
200
|
const hmac = hmacSign(syncAction.index, key.indexKey);
|
|
@@ -171,17 +210,22 @@ export const decodeSyncdMutations = async (msgMutations, initialState, getAppSta
|
|
|
171
210
|
operation: operation
|
|
172
211
|
});
|
|
173
212
|
}
|
|
174
|
-
return
|
|
213
|
+
return ltGenerator.finish();
|
|
175
214
|
async function getKey(keyId) {
|
|
176
215
|
const base64Key = Buffer.from(keyId).toString('base64');
|
|
216
|
+
const cached = derivedKeyCache.get(base64Key);
|
|
217
|
+
if (cached) {
|
|
218
|
+
return cached;
|
|
219
|
+
}
|
|
177
220
|
const keyEnc = await getAppStateSyncKey(base64Key);
|
|
178
221
|
if (!keyEnc) {
|
|
179
222
|
throw new Boom(`failed to find key "${base64Key}" to decode mutation`, {
|
|
180
|
-
|
|
181
|
-
data: { msgMutations }
|
|
223
|
+
data: { isMissingKey: true, msgMutations }
|
|
182
224
|
});
|
|
183
225
|
}
|
|
184
|
-
|
|
226
|
+
const keys = mutationKeys(keyEnc.keyData);
|
|
227
|
+
derivedKeyCache.set(base64Key, keys);
|
|
228
|
+
return keys;
|
|
185
229
|
}
|
|
186
230
|
};
|
|
187
231
|
export const decodeSyncdPatch = async (msg, name, initialState, getAppStateSyncKey, onMutation, validateMacs) => {
|
|
@@ -189,9 +233,9 @@ export const decodeSyncdPatch = async (msg, name, initialState, getAppStateSyncK
|
|
|
189
233
|
const base64Key = Buffer.from(msg.keyId.id).toString('base64');
|
|
190
234
|
const mainKeyObj = await getAppStateSyncKey(base64Key);
|
|
191
235
|
if (!mainKeyObj) {
|
|
192
|
-
throw new Boom(`failed to find key "${base64Key}" to decode patch`, {
|
|
236
|
+
throw new Boom(`failed to find key "${base64Key}" to decode patch`, { data: { isMissingKey: true, msg } });
|
|
193
237
|
}
|
|
194
|
-
const mainKey =
|
|
238
|
+
const mainKey = mutationKeys(mainKeyObj.keyData);
|
|
195
239
|
const mutationmacs = msg.mutations.map(mutation => mutation.record.value.blob.slice(-32));
|
|
196
240
|
const patchMac = generatePatchMac(msg.snapshotMac, mutationmacs, toNumber(msg.version.version), name, mainKey.patchMacKey);
|
|
197
241
|
if (Buffer.compare(patchMac, msg.patchMac) !== 0) {
|
|
@@ -250,7 +294,7 @@ export const downloadExternalPatch = async (blob, options) => {
|
|
|
250
294
|
const syncData = proto.SyncdMutations.decode(buffer);
|
|
251
295
|
return syncData;
|
|
252
296
|
};
|
|
253
|
-
export const decodeSyncdSnapshot = async (name, snapshot, getAppStateSyncKey, minimumVersionNumber, validateMacs = true) => {
|
|
297
|
+
export const decodeSyncdSnapshot = async (name, snapshot, getAppStateSyncKey, minimumVersionNumber, validateMacs = true, logger) => {
|
|
254
298
|
const newState = newLTHashState();
|
|
255
299
|
newState.version = toNumber(snapshot.version.version);
|
|
256
300
|
const mutationMap = {};
|
|
@@ -267,12 +311,17 @@ export const decodeSyncdSnapshot = async (name, snapshot, getAppStateSyncKey, mi
|
|
|
267
311
|
const base64Key = Buffer.from(snapshot.keyId.id).toString('base64');
|
|
268
312
|
const keyEnc = await getAppStateSyncKey(base64Key);
|
|
269
313
|
if (!keyEnc) {
|
|
270
|
-
throw new Boom(`failed to find key "${base64Key}" to decode mutation
|
|
314
|
+
throw new Boom(`failed to find key "${base64Key}" to decode mutation`, { data: { isMissingKey: true } });
|
|
271
315
|
}
|
|
272
|
-
const result =
|
|
316
|
+
const result = mutationKeys(keyEnc.keyData);
|
|
273
317
|
const computedSnapshotMac = generateSnapshotMac(newState.hash, newState.version, name, result.snapshotMacKey);
|
|
274
318
|
if (Buffer.compare(snapshot.mac, computedSnapshotMac) !== 0) {
|
|
275
|
-
|
|
319
|
+
// LTHash verification may fail when decodeSyncdMutations skipped undecryptable
|
|
320
|
+
// records (poisoned server-side snapshot); the aggregate client hash diverges
|
|
321
|
+
// from the server-computed mac. Fall through with a warning so the session stays
|
|
322
|
+
// alive with partial state, symmetric to how decodePatches handles its own
|
|
323
|
+
// LTHash mismatch a few lines below.
|
|
324
|
+
logger?.warn({ name, version: newState.version }, 'LTHash verification failed on snapshot, continuing with partial state');
|
|
276
325
|
}
|
|
277
326
|
}
|
|
278
327
|
return {
|
|
@@ -297,24 +346,34 @@ export const decodePatches = async (name, syncds, initial, getAppStateSyncKey, o
|
|
|
297
346
|
const patchVersion = toNumber(version.version);
|
|
298
347
|
newState.version = patchVersion;
|
|
299
348
|
const shouldMutate = typeof minimumVersionNumber === 'undefined' || patchVersion > minimumVersionNumber;
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
349
|
+
let decodeResult;
|
|
350
|
+
try {
|
|
351
|
+
decodeResult = await decodeSyncdPatch(syncd, name, newState, getAppStateSyncKey, shouldMutate
|
|
352
|
+
? mutation => {
|
|
353
|
+
const index = mutation.syncAction.index?.toString();
|
|
354
|
+
mutationMap[index] = mutation;
|
|
355
|
+
}
|
|
356
|
+
: () => { }, validateMacs);
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
if (isMissingKeyError(err))
|
|
360
|
+
throw err;
|
|
361
|
+
logger?.warn({ name, version: patchVersion, error: err.message }, 'failed to decode patch, skipping');
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
306
364
|
newState.hash = decodeResult.hash;
|
|
307
365
|
newState.indexValueMap = decodeResult.indexValueMap;
|
|
308
366
|
if (validateMacs) {
|
|
309
367
|
const base64Key = Buffer.from(keyId.id).toString('base64');
|
|
310
368
|
const keyEnc = await getAppStateSyncKey(base64Key);
|
|
311
369
|
if (!keyEnc) {
|
|
312
|
-
throw new Boom(`failed to find key "${base64Key}" to decode mutation
|
|
370
|
+
throw new Boom(`failed to find key "${base64Key}" to decode mutation`, { data: { isMissingKey: true } });
|
|
313
371
|
}
|
|
314
|
-
const result =
|
|
372
|
+
const result = mutationKeys(keyEnc.keyData);
|
|
315
373
|
const computedSnapshotMac = generateSnapshotMac(newState.hash, newState.version, name, result.snapshotMacKey);
|
|
316
374
|
if (Buffer.compare(snapshotMac, computedSnapshotMac) !== 0) {
|
|
317
|
-
|
|
375
|
+
logger?.warn({ name, version: newState.version }, 'LTHash verification failed, skipping remaining patches');
|
|
376
|
+
break;
|
|
318
377
|
}
|
|
319
378
|
}
|
|
320
379
|
// clear memory used up by the mutations
|
|
@@ -779,6 +838,7 @@ export const processSyncAction = (syncAction, ev, me, initialSyncOpts, logger) =
|
|
|
779
838
|
action.lidContactAction.firstName ||
|
|
780
839
|
action.lidContactAction.username ||
|
|
781
840
|
undefined,
|
|
841
|
+
username: action.lidContactAction.username || undefined,
|
|
782
842
|
lid: id,
|
|
783
843
|
phoneNumber: undefined
|
|
784
844
|
}
|