@vex-chat/libvex 6.2.2 → 6.3.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/dist/Client.d.ts +32 -2
- package/dist/Client.d.ts.map +1 -1
- package/dist/Client.js +192 -23
- package/dist/Client.js.map +1 -1
- package/dist/Storage.d.ts +5 -0
- package/dist/Storage.d.ts.map +1 -1
- package/dist/__tests__/harness/memory-storage.d.ts +1 -0
- package/dist/__tests__/harness/memory-storage.d.ts.map +1 -1
- package/dist/__tests__/harness/memory-storage.js +15 -0
- package/dist/__tests__/harness/memory-storage.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/retention.d.ts +26 -0
- package/dist/retention.d.ts.map +1 -0
- package/dist/retention.js +51 -0
- package/dist/retention.js.map +1 -0
- package/dist/storage/schema.d.ts +2 -0
- package/dist/storage/schema.d.ts.map +1 -1
- package/dist/storage/sqlite.d.ts +2 -0
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +54 -2
- package/dist/storage/sqlite.js.map +1 -1
- package/package.json +3 -3
- package/src/Client.ts +281 -30
- package/src/Storage.ts +7 -0
- package/src/__tests__/harness/memory-storage.ts +19 -0
- package/src/__tests__/harness/shared-suite.ts +30 -21
- package/src/__tests__/retention.test.ts +39 -0
- package/src/index.ts +4 -0
- package/src/retention.ts +68 -0
- package/src/storage/schema.ts +2 -0
- package/src/storage/sqlite.ts +69 -2
package/dist/Client.d.ts
CHANGED
|
@@ -103,6 +103,13 @@ export interface ClientOptions {
|
|
|
103
103
|
host?: string;
|
|
104
104
|
/** Use sqlite in-memory mode (`:memory:`) instead of a file. */
|
|
105
105
|
inMemoryDb?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Maximum age (in days) for messages kept in local storage. Values above
|
|
108
|
+
* 30 are clamped to 30 to match server retention. Peers may request a
|
|
109
|
+
* shorter window via an optional plaintext hint; this setting is still
|
|
110
|
+
* capped at 30 and is not enforceable against a modified client.
|
|
111
|
+
*/
|
|
112
|
+
localMessageRetentionDays?: number;
|
|
106
113
|
/** Whether local message history should be persisted by default storage. */
|
|
107
114
|
saveHistory?: boolean;
|
|
108
115
|
/** Use `http/ws` instead of `https/wss`. Intended for local/dev environments. */
|
|
@@ -276,6 +283,12 @@ export interface Message {
|
|
|
276
283
|
readerID: string;
|
|
277
284
|
/** Recipient device ID. */
|
|
278
285
|
recipient: string;
|
|
286
|
+
/**
|
|
287
|
+
* Optional peer hint (1–30): cooperative senders prefix plaintext; used
|
|
288
|
+
* with {@link ClientOptions.localMessageRetentionDays} to pick the
|
|
289
|
+
* shorter local retention window. Ignored when absent.
|
|
290
|
+
*/
|
|
291
|
+
retentionHintDays?: number;
|
|
279
292
|
/** Sender device ID. */
|
|
280
293
|
sender: string;
|
|
281
294
|
/** Time the message was created/received. */
|
|
@@ -411,7 +424,9 @@ export interface Messages {
|
|
|
411
424
|
/** Deletes local history for a user/channel. */
|
|
412
425
|
delete: (userOrChannelID: string) => Promise<void>;
|
|
413
426
|
/** Sends an encrypted message to all members of a channel. */
|
|
414
|
-
group: (channelID: string, message: string
|
|
427
|
+
group: (channelID: string, message: string, opts?: {
|
|
428
|
+
retentionHintDays?: number;
|
|
429
|
+
}) => Promise<void>;
|
|
415
430
|
/** Deletes all locally stored message history. */
|
|
416
431
|
purge: () => Promise<void>;
|
|
417
432
|
/** Returns local direct-message history with one user. */
|
|
@@ -419,7 +434,9 @@ export interface Messages {
|
|
|
419
434
|
/** Returns local group-message history for one channel. */
|
|
420
435
|
retrieveGroup: (channelID: string) => Promise<Message[]>;
|
|
421
436
|
/** Sends an encrypted direct message to one user. */
|
|
422
|
-
send: (userID: string, message: string
|
|
437
|
+
send: (userID: string, message: string, opts?: {
|
|
438
|
+
retentionHintDays?: number;
|
|
439
|
+
}) => Promise<void>;
|
|
423
440
|
}
|
|
424
441
|
/**
|
|
425
442
|
* @ignore
|
|
@@ -704,6 +721,8 @@ export declare class Client {
|
|
|
704
721
|
private readonly httpAbortController;
|
|
705
722
|
private readonly idKeys;
|
|
706
723
|
private isAlive;
|
|
724
|
+
private localMessageRetentionDays;
|
|
725
|
+
private localRetentionPurgeTimer;
|
|
707
726
|
private readonly mailInterval?;
|
|
708
727
|
private manuallyClosing;
|
|
709
728
|
/**
|
|
@@ -722,6 +741,7 @@ export declare class Client {
|
|
|
722
741
|
private postAuthVersion;
|
|
723
742
|
private readonly prefixes;
|
|
724
743
|
private reading;
|
|
744
|
+
private retentionPurgeDebounce;
|
|
725
745
|
private readonly seenMailIDs;
|
|
726
746
|
private sessionRecords;
|
|
727
747
|
private readonly signKeys;
|
|
@@ -810,6 +830,8 @@ export declare class Client {
|
|
|
810
830
|
* Gets the hex string representations of the public and private keys.
|
|
811
831
|
*/
|
|
812
832
|
getKeys(): Keys;
|
|
833
|
+
/** Current local retention cap in days (always 1–30). */
|
|
834
|
+
getLocalMessageRetentionDays(): number;
|
|
813
835
|
/**
|
|
814
836
|
* Authenticates with username/password and stores the Bearer auth token.
|
|
815
837
|
*
|
|
@@ -867,6 +889,11 @@ export declare class Client {
|
|
|
867
889
|
*/
|
|
868
890
|
register(username?: string, password?: string): Promise<[null | User, Error | null]>;
|
|
869
891
|
removeAllListeners(event?: keyof ClientEvents): this;
|
|
892
|
+
/**
|
|
893
|
+
* Updates the local retention cap (1–30 days) and prunes immediately.
|
|
894
|
+
* Does not affect server-side storage.
|
|
895
|
+
*/
|
|
896
|
+
setLocalMessageRetentionDays(days: number): void;
|
|
870
897
|
/**
|
|
871
898
|
* Triggers an immediate inbox sync by fetching `/mail` once.
|
|
872
899
|
* Useful on mobile foreground resume where background work may pause.
|
|
@@ -891,6 +918,7 @@ export declare class Client {
|
|
|
891
918
|
exp: number;
|
|
892
919
|
user: User;
|
|
893
920
|
}>;
|
|
921
|
+
private acknowledgeInboundMail;
|
|
894
922
|
private approveDeviceRequest;
|
|
895
923
|
private beginPasskeyAuthentication;
|
|
896
924
|
private beginPasskeyRegistration;
|
|
@@ -1020,6 +1048,7 @@ export declare class Client {
|
|
|
1020
1048
|
private retrieveInvites;
|
|
1021
1049
|
private retrieveKeyBundle;
|
|
1022
1050
|
private retrieveOrCreateDevice;
|
|
1051
|
+
private runLocalRetentionPurge;
|
|
1023
1052
|
/**
|
|
1024
1053
|
* `xDHAsync` and other helpers in `@vex-chat/crypto` use the process-wide
|
|
1025
1054
|
* active profile. When several {@link Client} instances use different
|
|
@@ -1027,6 +1056,7 @@ export declare class Client {
|
|
|
1027
1056
|
* of that crypto work.
|
|
1028
1057
|
*/
|
|
1029
1058
|
private runWithThisCryptoProfile;
|
|
1059
|
+
private scheduleRetentionPurge;
|
|
1030
1060
|
private send;
|
|
1031
1061
|
private sendGroupMessage;
|
|
1032
1062
|
private sendMail;
|
package/dist/Client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
|
package/dist/Client.js
CHANGED
|
@@ -9,6 +9,7 @@ import axios, { isAxiosError } from "axios";
|
|
|
9
9
|
import { EventEmitter } from "eventemitter3";
|
|
10
10
|
import * as uuid from "uuid";
|
|
11
11
|
import { z } from "zod/v4";
|
|
12
|
+
import { clampLocalMessageRetentionDays, formatVexRetentionEnvelope, stripVexRetentionEnvelope, } from "./retention.js";
|
|
12
13
|
import { WebSocketAdapter, WebSocketNotOpenError, } from "./transport/websocket.js";
|
|
13
14
|
import { decodeFipsInitialExtraV1, encodeFipsInitialExtraV1, fipsP256AdFromIdentityPubs, fipsP256PreKeySignPayload, isFipsInitialExtraV1, } from "./utils/fipsMailExtra.js";
|
|
14
15
|
import { decodeRatchetHeader, deriveBootstrapSendChain, encodeRatchetHeader, hasRemoteDhChanged, initRatchetSession, ratchetStepReceive, ratchetStepSend, sessionToSqlPatch, takeReceiveMessageKey, takeSendMessageKey, } from "./utils/ratchet.js";
|
|
@@ -333,7 +334,7 @@ export class Client {
|
|
|
333
334
|
* @param channelID - The channel to send a message to.
|
|
334
335
|
* @param message - The message to send.
|
|
335
336
|
*/
|
|
336
|
-
group: this.sendGroupMessage
|
|
337
|
+
group: (channelID, message, opts) => this.sendGroupMessage(channelID, message, opts),
|
|
337
338
|
purge: this.purgeHistory.bind(this),
|
|
338
339
|
/**
|
|
339
340
|
* Gets the message history with a specific userID.
|
|
@@ -354,7 +355,7 @@ export class Client {
|
|
|
354
355
|
* @param userID - The user to send a message to.
|
|
355
356
|
* @param message - The message to send.
|
|
356
357
|
*/
|
|
357
|
-
send: this.sendMessage
|
|
358
|
+
send: (userID, message, opts) => this.sendMessage(userID, message, opts),
|
|
358
359
|
};
|
|
359
360
|
/**
|
|
360
361
|
* Server moderation helper methods.
|
|
@@ -495,6 +496,8 @@ export class Client {
|
|
|
495
496
|
httpAbortController = new AbortController();
|
|
496
497
|
idKeys;
|
|
497
498
|
isAlive = true;
|
|
499
|
+
localMessageRetentionDays;
|
|
500
|
+
localRetentionPurgeTimer = null;
|
|
498
501
|
mailInterval;
|
|
499
502
|
manuallyClosing = false;
|
|
500
503
|
/**
|
|
@@ -516,6 +519,7 @@ export class Client {
|
|
|
516
519
|
postAuthVersion = 0;
|
|
517
520
|
prefixes;
|
|
518
521
|
reading = false;
|
|
522
|
+
retentionPurgeDebounce = null;
|
|
519
523
|
seenMailIDs = new Set();
|
|
520
524
|
sessionRecords = {};
|
|
521
525
|
// these are created from one set of sign keys
|
|
@@ -527,6 +531,7 @@ export class Client {
|
|
|
527
531
|
xKeyRing;
|
|
528
532
|
constructor(material, options, storage) {
|
|
529
533
|
this.options = options;
|
|
534
|
+
this.localMessageRetentionDays = clampLocalMessageRetentionDays(options?.localMessageRetentionDays);
|
|
530
535
|
this.cryptoProfile = material.cryptoProfile;
|
|
531
536
|
this.signKeys = material.signKeys;
|
|
532
537
|
this.idKeys = material.idKeys;
|
|
@@ -770,6 +775,14 @@ export class Client {
|
|
|
770
775
|
if (this.mailInterval) {
|
|
771
776
|
clearInterval(this.mailInterval);
|
|
772
777
|
}
|
|
778
|
+
if (this.localRetentionPurgeTimer) {
|
|
779
|
+
clearInterval(this.localRetentionPurgeTimer);
|
|
780
|
+
this.localRetentionPurgeTimer = null;
|
|
781
|
+
}
|
|
782
|
+
if (this.retentionPurgeDebounce) {
|
|
783
|
+
clearTimeout(this.retentionPurgeDebounce);
|
|
784
|
+
this.retentionPurgeDebounce = null;
|
|
785
|
+
}
|
|
773
786
|
delete this.xKeyRing;
|
|
774
787
|
if (!muteEvent) {
|
|
775
788
|
this.emitter.emit("closed");
|
|
@@ -830,6 +843,10 @@ export class Client {
|
|
|
830
843
|
public: XUtils.encodeHex(this.signKeys.publicKey),
|
|
831
844
|
};
|
|
832
845
|
}
|
|
846
|
+
/** Current local retention cap in days (always 1–30). */
|
|
847
|
+
getLocalMessageRetentionDays() {
|
|
848
|
+
return this.localMessageRetentionDays;
|
|
849
|
+
}
|
|
833
850
|
/**
|
|
834
851
|
* Authenticates with username/password and stores the Bearer auth token.
|
|
835
852
|
*
|
|
@@ -1085,6 +1102,14 @@ export class Client {
|
|
|
1085
1102
|
this.emitter.removeAllListeners(event);
|
|
1086
1103
|
return this;
|
|
1087
1104
|
}
|
|
1105
|
+
/**
|
|
1106
|
+
* Updates the local retention cap (1–30 days) and prunes immediately.
|
|
1107
|
+
* Does not affect server-side storage.
|
|
1108
|
+
*/
|
|
1109
|
+
setLocalMessageRetentionDays(days) {
|
|
1110
|
+
this.localMessageRetentionDays = clampLocalMessageRetentionDays(days);
|
|
1111
|
+
void this.runLocalRetentionPurge();
|
|
1112
|
+
}
|
|
1088
1113
|
/**
|
|
1089
1114
|
* Triggers an immediate inbox sync by fetching `/mail` once.
|
|
1090
1115
|
* Useful on mobile foreground resume where background work may pause.
|
|
@@ -1117,6 +1142,10 @@ export class Client {
|
|
|
1117
1142
|
const whoami = decodeAxios(WhoamiCodec, res.data);
|
|
1118
1143
|
return whoami;
|
|
1119
1144
|
}
|
|
1145
|
+
acknowledgeInboundMail(mail) {
|
|
1146
|
+
this.seenMailIDs.add(mail.mailID);
|
|
1147
|
+
this.sendReceipt(new Uint8Array(mail.nonce));
|
|
1148
|
+
}
|
|
1120
1149
|
async approveDeviceRequest(requestID) {
|
|
1121
1150
|
const req = await this.getDeviceRegistrationRequest(requestID);
|
|
1122
1151
|
if (!req) {
|
|
@@ -1843,6 +1872,7 @@ export class Client {
|
|
|
1843
1872
|
break;
|
|
1844
1873
|
}
|
|
1845
1874
|
}
|
|
1875
|
+
// ── Passkeys ────────────────────────────────────────────────────────
|
|
1846
1876
|
/**
|
|
1847
1877
|
* Initializes the keyring. This must be called before anything else.
|
|
1848
1878
|
*/
|
|
@@ -1859,8 +1889,11 @@ export class Client {
|
|
|
1859
1889
|
}
|
|
1860
1890
|
await this.populateKeyRing();
|
|
1861
1891
|
this.emitter.on("message", this.onInternalMessage);
|
|
1892
|
+
void this.runLocalRetentionPurge();
|
|
1893
|
+
this.localRetentionPurgeTimer = setInterval(() => void this.runLocalRetentionPurge(), 6 * 60 * 60 * 1000);
|
|
1862
1894
|
this.emitter.emit("ready");
|
|
1863
1895
|
}
|
|
1896
|
+
// ── Passkeys ────────────────────────────────────────────────────────
|
|
1864
1897
|
initSocket() {
|
|
1865
1898
|
try {
|
|
1866
1899
|
if (!this.token) {
|
|
@@ -1950,7 +1983,6 @@ export class Client {
|
|
|
1950
1983
|
throw new Error("Error initiating websocket connection " + String(err));
|
|
1951
1984
|
}
|
|
1952
1985
|
}
|
|
1953
|
-
// ── Passkeys ────────────────────────────────────────────────────────
|
|
1954
1986
|
/**
|
|
1955
1987
|
* Fresh read of the `manuallyClosing` flag for async loops — direct property checks
|
|
1956
1988
|
* after `await` are flagged as always-false by control-flow analysis even though
|
|
@@ -2038,6 +2070,7 @@ export class Client {
|
|
|
2038
2070
|
return;
|
|
2039
2071
|
}
|
|
2040
2072
|
void this.database.saveMessage(message);
|
|
2073
|
+
this.scheduleRetentionPurge();
|
|
2041
2074
|
};
|
|
2042
2075
|
async passkeyApproveDeviceRequest(requestID) {
|
|
2043
2076
|
const userID = this.getUser().userID;
|
|
@@ -2216,7 +2249,6 @@ export class Client {
|
|
|
2216
2249
|
}
|
|
2217
2250
|
return;
|
|
2218
2251
|
}
|
|
2219
|
-
this.seenMailIDs.add(mail.mailID);
|
|
2220
2252
|
if (this.manuallyClosing) {
|
|
2221
2253
|
if (libvexDebugDmEnabled()) {
|
|
2222
2254
|
debugLibvexDm("readMail: skip (manually closing)", {
|
|
@@ -2225,7 +2257,6 @@ export class Client {
|
|
|
2225
2257
|
}
|
|
2226
2258
|
return;
|
|
2227
2259
|
}
|
|
2228
|
-
this.sendReceipt(new Uint8Array(mail.nonce));
|
|
2229
2260
|
let timeout = 1;
|
|
2230
2261
|
while (this.reading) {
|
|
2231
2262
|
await sleep(timeout);
|
|
@@ -2358,12 +2389,33 @@ export class Client {
|
|
|
2358
2389
|
if (!mail.forward) {
|
|
2359
2390
|
plaintext = XUtils.encodeUTF8(unsealed);
|
|
2360
2391
|
}
|
|
2392
|
+
let incomingPlain = plaintext;
|
|
2393
|
+
let hintFromEnvelope;
|
|
2394
|
+
if (!mail.forward && plaintext.length > 0) {
|
|
2395
|
+
const stripped = stripVexRetentionEnvelope(plaintext);
|
|
2396
|
+
incomingPlain = stripped.body;
|
|
2397
|
+
hintFromEnvelope = stripped.retentionHintDays;
|
|
2398
|
+
}
|
|
2361
2399
|
// emit the message
|
|
2362
2400
|
const fwdMsg1 = mail.forward
|
|
2363
2401
|
? messageSchema.parse(msgpack.decode(unsealed))
|
|
2364
2402
|
: null;
|
|
2365
2403
|
const message = fwdMsg1
|
|
2366
|
-
?
|
|
2404
|
+
? (() => {
|
|
2405
|
+
const stripped = stripVexRetentionEnvelope(fwdMsg1.message);
|
|
2406
|
+
const base = {
|
|
2407
|
+
...fwdMsg1,
|
|
2408
|
+
forward: true,
|
|
2409
|
+
message: stripped.body,
|
|
2410
|
+
};
|
|
2411
|
+
return stripped.retentionHintDays !==
|
|
2412
|
+
undefined
|
|
2413
|
+
? {
|
|
2414
|
+
...base,
|
|
2415
|
+
retentionHintDays: stripped.retentionHintDays,
|
|
2416
|
+
}
|
|
2417
|
+
: base;
|
|
2418
|
+
})()
|
|
2367
2419
|
: {
|
|
2368
2420
|
authorID: mail.authorID,
|
|
2369
2421
|
decrypted: true,
|
|
@@ -2373,10 +2425,15 @@ export class Client {
|
|
|
2373
2425
|
? uuid.stringify(mail.group)
|
|
2374
2426
|
: null,
|
|
2375
2427
|
mailID: mail.mailID,
|
|
2376
|
-
message:
|
|
2428
|
+
message: incomingPlain,
|
|
2377
2429
|
nonce: XUtils.encodeHex(new Uint8Array(mail.nonce)),
|
|
2378
2430
|
readerID: mail.readerID,
|
|
2379
2431
|
recipient: mail.recipient,
|
|
2432
|
+
...(hintFromEnvelope !== undefined
|
|
2433
|
+
? {
|
|
2434
|
+
retentionHintDays: hintFromEnvelope,
|
|
2435
|
+
}
|
|
2436
|
+
: {}),
|
|
2380
2437
|
sender: mail.sender,
|
|
2381
2438
|
timestamp: timestamp,
|
|
2382
2439
|
};
|
|
@@ -2436,6 +2493,7 @@ export class Client {
|
|
|
2436
2493
|
}
|
|
2437
2494
|
else {
|
|
2438
2495
|
}
|
|
2496
|
+
this.acknowledgeInboundMail(mail);
|
|
2439
2497
|
}
|
|
2440
2498
|
else {
|
|
2441
2499
|
if (libvexDebugDmEnabled()) {
|
|
@@ -2487,11 +2545,30 @@ export class Client {
|
|
|
2487
2545
|
const fwdMsg2 = mail.forward
|
|
2488
2546
|
? messageSchema.parse(msgpack.decode(decrypted))
|
|
2489
2547
|
: null;
|
|
2548
|
+
const rawIncoming = XUtils.encodeUTF8(decrypted);
|
|
2549
|
+
let bodyIncoming = rawIncoming;
|
|
2550
|
+
let hintIncoming;
|
|
2551
|
+
if (!mail.forward) {
|
|
2552
|
+
const stripped = stripVexRetentionEnvelope(rawIncoming);
|
|
2553
|
+
bodyIncoming = stripped.body;
|
|
2554
|
+
hintIncoming = stripped.retentionHintDays;
|
|
2555
|
+
}
|
|
2490
2556
|
const message = fwdMsg2
|
|
2491
|
-
? {
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2557
|
+
? (() => {
|
|
2558
|
+
const stripped = stripVexRetentionEnvelope(fwdMsg2.message);
|
|
2559
|
+
const base = {
|
|
2560
|
+
...fwdMsg2,
|
|
2561
|
+
forward: true,
|
|
2562
|
+
message: stripped.body,
|
|
2563
|
+
};
|
|
2564
|
+
return stripped.retentionHintDays !==
|
|
2565
|
+
undefined
|
|
2566
|
+
? {
|
|
2567
|
+
...base,
|
|
2568
|
+
retentionHintDays: stripped.retentionHintDays,
|
|
2569
|
+
}
|
|
2570
|
+
: base;
|
|
2571
|
+
})()
|
|
2495
2572
|
: {
|
|
2496
2573
|
authorID: mail.authorID,
|
|
2497
2574
|
decrypted: true,
|
|
@@ -2501,10 +2578,13 @@ export class Client {
|
|
|
2501
2578
|
? uuid.stringify(mail.group)
|
|
2502
2579
|
: null,
|
|
2503
2580
|
mailID: mail.mailID,
|
|
2504
|
-
message:
|
|
2581
|
+
message: bodyIncoming,
|
|
2505
2582
|
nonce: XUtils.encodeHex(new Uint8Array(mail.nonce)),
|
|
2506
2583
|
readerID: mail.readerID,
|
|
2507
2584
|
recipient: mail.recipient,
|
|
2585
|
+
...(hintIncoming !== undefined
|
|
2586
|
+
? { retentionHintDays: hintIncoming }
|
|
2587
|
+
: {}),
|
|
2508
2588
|
sender: mail.sender,
|
|
2509
2589
|
timestamp: timestamp,
|
|
2510
2590
|
};
|
|
@@ -2533,6 +2613,7 @@ export class Client {
|
|
|
2533
2613
|
};
|
|
2534
2614
|
await this.database.saveSession(persisted);
|
|
2535
2615
|
this.sessionRecords[XUtils.encodeHex(session.publicKey)] = session;
|
|
2616
|
+
this.acknowledgeInboundMail(mail);
|
|
2536
2617
|
}
|
|
2537
2618
|
else {
|
|
2538
2619
|
void healSession();
|
|
@@ -2691,6 +2772,17 @@ export class Client {
|
|
|
2691
2772
|
}
|
|
2692
2773
|
return device;
|
|
2693
2774
|
}
|
|
2775
|
+
async runLocalRetentionPurge() {
|
|
2776
|
+
if (this.isManualCloseInFlight()) {
|
|
2777
|
+
return;
|
|
2778
|
+
}
|
|
2779
|
+
try {
|
|
2780
|
+
await this.database.pruneExpiredLocalMessages(this.localMessageRetentionDays);
|
|
2781
|
+
}
|
|
2782
|
+
catch {
|
|
2783
|
+
/* best-effort */
|
|
2784
|
+
}
|
|
2785
|
+
}
|
|
2694
2786
|
/**
|
|
2695
2787
|
* `xDHAsync` and other helpers in `@vex-chat/crypto` use the process-wide
|
|
2696
2788
|
* active profile. When several {@link Client} instances use different
|
|
@@ -2710,6 +2802,15 @@ export class Client {
|
|
|
2710
2802
|
setCryptoProfile(prev);
|
|
2711
2803
|
}
|
|
2712
2804
|
}
|
|
2805
|
+
scheduleRetentionPurge() {
|
|
2806
|
+
if (this.retentionPurgeDebounce) {
|
|
2807
|
+
clearTimeout(this.retentionPurgeDebounce);
|
|
2808
|
+
}
|
|
2809
|
+
this.retentionPurgeDebounce = setTimeout(() => {
|
|
2810
|
+
this.retentionPurgeDebounce = null;
|
|
2811
|
+
void this.runLocalRetentionPurge();
|
|
2812
|
+
}, 3000);
|
|
2813
|
+
}
|
|
2713
2814
|
/* header is 32 bytes and is either empty
|
|
2714
2815
|
or contains an HMAC of the message with
|
|
2715
2816
|
a derived SK */
|
|
@@ -2738,26 +2839,73 @@ export class Client {
|
|
|
2738
2839
|
// can choose to retry on the next reconnect.
|
|
2739
2840
|
this.socket.send(XUtils.packMessage(msg, header));
|
|
2740
2841
|
}
|
|
2741
|
-
async sendGroupMessage(channelID, message) {
|
|
2842
|
+
async sendGroupMessage(channelID, message, opts) {
|
|
2742
2843
|
const userList = await this.getUserList(channelID);
|
|
2743
2844
|
for (const user of userList) {
|
|
2744
2845
|
this.userRecords[user.userID] = user;
|
|
2745
2846
|
}
|
|
2746
2847
|
const mailID = uuid.v4();
|
|
2747
|
-
const
|
|
2748
|
-
const
|
|
2749
|
-
|
|
2848
|
+
const payload = formatVexRetentionEnvelope(message, opts?.retentionHintDays);
|
|
2849
|
+
const msgBytes = XUtils.decodeUTF8(payload);
|
|
2850
|
+
const myUserID = this.getUser().userID;
|
|
2851
|
+
// Fan-out only to *other* server members. The current account's other
|
|
2852
|
+
// devices receive the same group mail via `forward()` on the outgoing
|
|
2853
|
+
// `message` event (see `onInternalMessage`). Including our own devices
|
|
2854
|
+
// here races X3DH/ephemeral state and often fails silently — which
|
|
2855
|
+
// matched reports of flaky early group messages and missing delivery
|
|
2856
|
+
// while DMs (which never self-target) behaved better.
|
|
2857
|
+
const peerUserIDs = [...new Set(userList.map((u) => u.userID))].filter((id) => id !== myUserID);
|
|
2858
|
+
if (peerUserIDs.length === 0) {
|
|
2859
|
+
const dev = this.getDevice();
|
|
2860
|
+
const nonce = xMakeNonce();
|
|
2861
|
+
this.emitter.emit("message", {
|
|
2862
|
+
authorID: myUserID,
|
|
2863
|
+
decrypted: true,
|
|
2864
|
+
direction: "outgoing",
|
|
2865
|
+
forward: false,
|
|
2866
|
+
group: channelID,
|
|
2867
|
+
mailID,
|
|
2868
|
+
message,
|
|
2869
|
+
nonce: XUtils.encodeHex(nonce),
|
|
2870
|
+
readerID: myUserID,
|
|
2871
|
+
recipient: dev.deviceID,
|
|
2872
|
+
sender: dev.deviceID,
|
|
2873
|
+
timestamp: new Date().toISOString(),
|
|
2874
|
+
});
|
|
2875
|
+
return;
|
|
2876
|
+
}
|
|
2877
|
+
const devices = await this.getMultiUserDeviceList(peerUserIDs);
|
|
2878
|
+
if (devices.length === 0) {
|
|
2879
|
+
throw new Error("No devices registered for other channel members — cannot send group message.");
|
|
2880
|
+
}
|
|
2881
|
+
const stableDevices = [...devices].sort((a, b) => a.deviceID.localeCompare(b.deviceID, "en"));
|
|
2882
|
+
let failCount = 0;
|
|
2883
|
+
let lastErr;
|
|
2884
|
+
for (const device of stableDevices) {
|
|
2750
2885
|
const ownerRecord = this.userRecords[device.owner];
|
|
2751
2886
|
if (!ownerRecord) {
|
|
2887
|
+
failCount += 1;
|
|
2752
2888
|
continue;
|
|
2753
2889
|
}
|
|
2754
2890
|
try {
|
|
2755
|
-
await this.sendMail(device, ownerRecord,
|
|
2891
|
+
await this.sendMail(device, ownerRecord, msgBytes, uuidToUint8(channelID), mailID, false);
|
|
2756
2892
|
}
|
|
2757
|
-
catch {
|
|
2758
|
-
|
|
2893
|
+
catch (e) {
|
|
2894
|
+
lastErr = e;
|
|
2895
|
+
failCount += 1;
|
|
2759
2896
|
}
|
|
2760
2897
|
}
|
|
2898
|
+
if (failCount === stableDevices.length) {
|
|
2899
|
+
throw lastErr instanceof Error
|
|
2900
|
+
? lastErr
|
|
2901
|
+
: new Error(String(lastErr));
|
|
2902
|
+
}
|
|
2903
|
+
if (failCount > 0) {
|
|
2904
|
+
const partial = new Error(`Group message failed to reach ${String(failCount)} of ` +
|
|
2905
|
+
`${String(stableDevices.length)} peer device(s).`);
|
|
2906
|
+
partial.cause = lastErr;
|
|
2907
|
+
throw partial;
|
|
2908
|
+
}
|
|
2761
2909
|
}
|
|
2762
2910
|
/* Sends encrypted mail to a user. */
|
|
2763
2911
|
async sendMail(device, user, msg, group, mailID, forward, retry = false) {
|
|
@@ -2825,8 +2973,23 @@ export class Client {
|
|
|
2825
2973
|
const fwdOut = forward
|
|
2826
2974
|
? messageSchema.parse(msgpack.decode(msg))
|
|
2827
2975
|
: null;
|
|
2976
|
+
const rawUtf8 = XUtils.encodeUTF8(msg);
|
|
2977
|
+
const strippedOut = stripVexRetentionEnvelope(rawUtf8);
|
|
2828
2978
|
const outMsg = fwdOut
|
|
2829
|
-
?
|
|
2979
|
+
? (() => {
|
|
2980
|
+
const stripped = stripVexRetentionEnvelope(fwdOut.message);
|
|
2981
|
+
const base = {
|
|
2982
|
+
...fwdOut,
|
|
2983
|
+
forward: true,
|
|
2984
|
+
message: stripped.body,
|
|
2985
|
+
};
|
|
2986
|
+
return stripped.retentionHintDays !== undefined
|
|
2987
|
+
? {
|
|
2988
|
+
...base,
|
|
2989
|
+
retentionHintDays: stripped.retentionHintDays,
|
|
2990
|
+
}
|
|
2991
|
+
: base;
|
|
2992
|
+
})()
|
|
2830
2993
|
: {
|
|
2831
2994
|
authorID: mail.authorID,
|
|
2832
2995
|
decrypted: true,
|
|
@@ -2834,10 +2997,15 @@ export class Client {
|
|
|
2834
2997
|
forward: mail.forward,
|
|
2835
2998
|
group: mail.group ? uuid.stringify(mail.group) : null,
|
|
2836
2999
|
mailID: mail.mailID,
|
|
2837
|
-
message:
|
|
3000
|
+
message: strippedOut.body,
|
|
2838
3001
|
nonce: XUtils.encodeHex(new Uint8Array(mail.nonce)),
|
|
2839
3002
|
readerID: mail.readerID,
|
|
2840
3003
|
recipient: mail.recipient,
|
|
3004
|
+
...(strippedOut.retentionHintDays !== undefined
|
|
3005
|
+
? {
|
|
3006
|
+
retentionHintDays: strippedOut.retentionHintDays,
|
|
3007
|
+
}
|
|
3008
|
+
: {}),
|
|
2841
3009
|
sender: mail.sender,
|
|
2842
3010
|
timestamp: new Date().toISOString(),
|
|
2843
3011
|
};
|
|
@@ -2896,7 +3064,8 @@ export class Client {
|
|
|
2896
3064
|
this.sending.delete(device.deviceID);
|
|
2897
3065
|
}
|
|
2898
3066
|
}
|
|
2899
|
-
async sendMessage(userID, message) {
|
|
3067
|
+
async sendMessage(userID, message, opts) {
|
|
3068
|
+
const payload = formatVexRetentionEnvelope(message, opts?.retentionHintDays);
|
|
2900
3069
|
try {
|
|
2901
3070
|
const [userEntry, err] = await this.fetchUser(userID);
|
|
2902
3071
|
if (err) {
|
|
@@ -2956,7 +3125,7 @@ export class Client {
|
|
|
2956
3125
|
recipientDevice: device.deviceID,
|
|
2957
3126
|
});
|
|
2958
3127
|
}
|
|
2959
|
-
await this.sendMail(device, userEntry, XUtils.decodeUTF8(
|
|
3128
|
+
await this.sendMail(device, userEntry, XUtils.decodeUTF8(payload), null, messageMailID, false);
|
|
2960
3129
|
if (libvexDebugDmEnabled()) {
|
|
2961
3130
|
debugLibvexDm("sendMessage: sendMail ok", {
|
|
2962
3131
|
recipientDevice: device.deviceID,
|