@vex-chat/libvex 6.1.9 → 6.2.1
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 +111 -10
- package/dist/Client.d.ts.map +1 -1
- package/dist/Client.js +165 -8
- package/dist/Client.js.map +1 -1
- package/dist/codecs.d.ts +60 -0
- package/dist/codecs.d.ts.map +1 -1
- package/dist/codecs.js +22 -1
- package/dist/codecs.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/transport/websocket.d.ts +31 -0
- package/dist/transport/websocket.d.ts.map +1 -1
- package/dist/transport/websocket.js +56 -1
- package/dist/transport/websocket.js.map +1 -1
- package/package.json +3 -3
- package/src/Client.ts +322 -19
- package/src/codecs.ts +30 -0
- package/src/index.ts +2 -1
- package/src/transport/websocket.ts +59 -1
package/dist/Client.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Commercial licenses available at vex.wtf
|
|
5
5
|
*/
|
|
6
6
|
import type { Storage } from "./Storage.js";
|
|
7
|
-
import type { Channel, Device, Emoji, FileResponse, FileSQL, Invite, Permission, Server, SessionSQL } from "@vex-chat/types";
|
|
7
|
+
import type { Channel, Device, Emoji, FileResponse, FileSQL, Invite, Passkey, Permission, Server, SessionSQL } from "@vex-chat/types";
|
|
8
8
|
import { type AxiosError } from "axios";
|
|
9
9
|
/**
|
|
10
10
|
* Thrown by {@link Client.register} when the server determined the supplied
|
|
@@ -72,6 +72,13 @@ export interface Channels {
|
|
|
72
72
|
* - `deleted`: soft-delete flag
|
|
73
73
|
*/
|
|
74
74
|
export type { Device } from "@vex-chat/types";
|
|
75
|
+
/**
|
|
76
|
+
* Public passkey record returned by `client.passkeys.list()` and
|
|
77
|
+
* `client.passkeys.finishRegistration()`. Server-private fields
|
|
78
|
+
* (credential ID, public key, COSE algorithm, signature counter) are
|
|
79
|
+
* never exposed.
|
|
80
|
+
*/
|
|
81
|
+
export type { Passkey } from "@vex-chat/types";
|
|
75
82
|
/**
|
|
76
83
|
* ClientOptions are the options you can pass into the client.
|
|
77
84
|
*/
|
|
@@ -112,6 +119,8 @@ export interface Devices {
|
|
|
112
119
|
delete: (deviceID: string) => Promise<void>;
|
|
113
120
|
/** Fetches one pending registration request by ID for the current user. */
|
|
114
121
|
getRequest: (requestID: string) => Promise<null | PendingDeviceRequest>;
|
|
122
|
+
/** Lists every device belonging to the current account. */
|
|
123
|
+
list: () => Promise<Device[]>;
|
|
115
124
|
/** Lists pending/processed registration requests for the current user. */
|
|
116
125
|
listRequests: () => Promise<PendingDeviceRequest[]>;
|
|
117
126
|
/**
|
|
@@ -184,6 +193,15 @@ export interface FileProgress {
|
|
|
184
193
|
* ```
|
|
185
194
|
*/
|
|
186
195
|
export type FileRes = FileResponse;
|
|
196
|
+
/**
|
|
197
|
+
* @ignore
|
|
198
|
+
*/
|
|
199
|
+
export interface Files {
|
|
200
|
+
/** Uploads and encrypts a file. */
|
|
201
|
+
create: (file: Uint8Array) => Promise<[FileSQL, string]>;
|
|
202
|
+
/** Downloads and decrypts a file using a file ID and key. */
|
|
203
|
+
retrieve: (fileID: string, key: string) => Promise<FileResponse | null>;
|
|
204
|
+
}
|
|
187
205
|
/**
|
|
188
206
|
* Channel is a chat channel on a server.
|
|
189
207
|
*
|
|
@@ -202,15 +220,6 @@ export type { Channel } from "@vex-chat/types";
|
|
|
202
220
|
* - `icon` (optional URL/data)
|
|
203
221
|
*/
|
|
204
222
|
export type { Server } from "@vex-chat/types";
|
|
205
|
-
/**
|
|
206
|
-
* @ignore
|
|
207
|
-
*/
|
|
208
|
-
export interface Files {
|
|
209
|
-
/** Uploads and encrypts a file. */
|
|
210
|
-
create: (file: Uint8Array) => Promise<[FileSQL, string]>;
|
|
211
|
-
/** Downloads and decrypts a file using a file ID and key. */
|
|
212
|
-
retrieve: (fileID: string, key: string) => Promise<FileResponse | null>;
|
|
213
|
-
}
|
|
214
223
|
/**
|
|
215
224
|
* @ignore
|
|
216
225
|
*/
|
|
@@ -272,6 +281,62 @@ export interface Message {
|
|
|
272
281
|
/** Time the message was created/received. */
|
|
273
282
|
timestamp: string;
|
|
274
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Begin/finish handshakes for a passkey (WebAuthn) ceremony plus the
|
|
286
|
+
* passkey-only admin/recovery surface. The host application (a
|
|
287
|
+
* browser, Tauri webview, etc.) is responsible for invoking
|
|
288
|
+
* `navigator.credentials.create()` / `.get()` itself (e.g. via
|
|
289
|
+
* `@simplewebauthn/browser`) using the `options` returned from
|
|
290
|
+
* `begin*`, and then handing the resulting `RegistrationResponseJSON`
|
|
291
|
+
* / `AuthenticationResponseJSON` to `finish*`.
|
|
292
|
+
*
|
|
293
|
+
* @public
|
|
294
|
+
*/
|
|
295
|
+
export interface Passkeys {
|
|
296
|
+
/** Approves a pending device-enrollment request using the passkey session. */
|
|
297
|
+
approveDeviceRequest: (requestID: string) => Promise<Device>;
|
|
298
|
+
/** Begin a public passkey authentication ceremony for `username`. */
|
|
299
|
+
beginAuthentication: (username: string) => Promise<{
|
|
300
|
+
options: any;
|
|
301
|
+
requestID: string;
|
|
302
|
+
}>;
|
|
303
|
+
/** Begin adding a new passkey to the currently authenticated account. */
|
|
304
|
+
beginRegistration: (name: string) => Promise<{
|
|
305
|
+
options: any;
|
|
306
|
+
requestID: string;
|
|
307
|
+
}>;
|
|
308
|
+
/** Remove a passkey from the account. */
|
|
309
|
+
delete: (passkeyID: string) => Promise<void>;
|
|
310
|
+
/** Delete one of the account's devices using the passkey session. */
|
|
311
|
+
deleteDevice: (deviceID: string) => Promise<void>;
|
|
312
|
+
/**
|
|
313
|
+
* Finish the public passkey authentication ceremony with the
|
|
314
|
+
* assertion produced by the host. On success the client is
|
|
315
|
+
* placed in passkey-only mode: the bearer is the passkey JWT,
|
|
316
|
+
* device-only flows (mail, etc.) will not work, and the
|
|
317
|
+
* `client.passkeys.*` admin methods become available.
|
|
318
|
+
*/
|
|
319
|
+
finishAuthentication: (args: {
|
|
320
|
+
requestID: string;
|
|
321
|
+
response: Record<string, unknown>;
|
|
322
|
+
}) => Promise<{
|
|
323
|
+
passkeyID: string;
|
|
324
|
+
token: string;
|
|
325
|
+
user: User;
|
|
326
|
+
}>;
|
|
327
|
+
/** Finish adding a passkey to the currently authenticated account. */
|
|
328
|
+
finishRegistration: (args: {
|
|
329
|
+
name: string;
|
|
330
|
+
requestID: string;
|
|
331
|
+
response: Record<string, unknown>;
|
|
332
|
+
}) => Promise<Passkey>;
|
|
333
|
+
/** List the account's passkeys (public shape only — no key material). */
|
|
334
|
+
list: () => Promise<Passkey[]>;
|
|
335
|
+
/** List all of the account's devices using the passkey session. */
|
|
336
|
+
listDevices: () => Promise<Device[]>;
|
|
337
|
+
/** Reject a pending device-enrollment request using the passkey session. */
|
|
338
|
+
rejectDeviceRequest: (requestID: string) => Promise<void>;
|
|
339
|
+
}
|
|
275
340
|
export type PendingDeviceApprovalStatus = "approved" | "expired" | "pending" | "rejected";
|
|
276
341
|
export interface PendingDeviceRegistration {
|
|
277
342
|
challenge: string;
|
|
@@ -582,6 +647,19 @@ export declare class Client {
|
|
|
582
647
|
* Server moderation helper methods.
|
|
583
648
|
*/
|
|
584
649
|
moderation: Moderation;
|
|
650
|
+
/**
|
|
651
|
+
* Passkey ("recovery credential") methods.
|
|
652
|
+
*
|
|
653
|
+
* Passkeys are an account-bound second-class credential that can
|
|
654
|
+
* authenticate the owning user, list devices, delete devices, and
|
|
655
|
+
* approve/reject pending device-enrollment requests — i.e.
|
|
656
|
+
* provisioning + recovery. They cannot send/decrypt mail.
|
|
657
|
+
*
|
|
658
|
+
* The host app drives the WebAuthn ceremony (e.g. via
|
|
659
|
+
* `@simplewebauthn/browser`) and hands the JSON response to
|
|
660
|
+
* `finish*`.
|
|
661
|
+
*/
|
|
662
|
+
passkeys: Passkeys;
|
|
585
663
|
/**
|
|
586
664
|
* Permission-management methods for the current user.
|
|
587
665
|
*/
|
|
@@ -814,6 +892,8 @@ export declare class Client {
|
|
|
814
892
|
user: User;
|
|
815
893
|
}>;
|
|
816
894
|
private approveDeviceRequest;
|
|
895
|
+
private beginPasskeyAuthentication;
|
|
896
|
+
private beginPasskeyRegistration;
|
|
817
897
|
private censorPreKey;
|
|
818
898
|
private createChannel;
|
|
819
899
|
private createFile;
|
|
@@ -824,6 +904,7 @@ export declare class Client {
|
|
|
824
904
|
private deleteChannel;
|
|
825
905
|
private deleteDevice;
|
|
826
906
|
private deleteHistory;
|
|
907
|
+
private deletePasskey;
|
|
827
908
|
private deletePermission;
|
|
828
909
|
private deleteServer;
|
|
829
910
|
private deviceListFailureDetail;
|
|
@@ -840,6 +921,14 @@ export declare class Client {
|
|
|
840
921
|
* retries with exponential backoff (same shape as session pubkey hydration).
|
|
841
922
|
*/
|
|
842
923
|
private fetchUserDeviceListWithBackoff;
|
|
924
|
+
/**
|
|
925
|
+
* Finish a passkey login and adopt the resulting JWT as the
|
|
926
|
+
* client's bearer token. After this call, `client.passkeys.*`
|
|
927
|
+
* admin methods are usable; messaging routes will continue to
|
|
928
|
+
* require a real device token.
|
|
929
|
+
*/
|
|
930
|
+
private finishPasskeyAuthentication;
|
|
931
|
+
private finishPasskeyRegistration;
|
|
843
932
|
private forward;
|
|
844
933
|
private getChannelByID;
|
|
845
934
|
private getChannelList;
|
|
@@ -887,6 +976,14 @@ export declare class Client {
|
|
|
887
976
|
private kickUser;
|
|
888
977
|
private leaveServer;
|
|
889
978
|
private listDeviceRegistrationRequests;
|
|
979
|
+
/**
|
|
980
|
+
* Lists every device the current account owns.
|
|
981
|
+
*
|
|
982
|
+
* Uses the device-authenticated `/user/:id/devices` route. For
|
|
983
|
+
* the passkey-recovery equivalent see `client.passkeys.listDevices`.
|
|
984
|
+
*/
|
|
985
|
+
private listDevices;
|
|
986
|
+
private listPasskeys;
|
|
890
987
|
private markSessionVerified;
|
|
891
988
|
private negotiateOTK;
|
|
892
989
|
private newEphemeralKeys;
|
|
@@ -896,6 +993,10 @@ export declare class Client {
|
|
|
896
993
|
* race HTTP teardown (we avoid `off()` here — it can interact badly with emit).
|
|
897
994
|
*/
|
|
898
995
|
private readonly onInternalMessage;
|
|
996
|
+
private passkeyApproveDeviceRequest;
|
|
997
|
+
private passkeyDeleteDevice;
|
|
998
|
+
private passkeyListDevices;
|
|
999
|
+
private passkeyRejectDeviceRequest;
|
|
899
1000
|
private ping;
|
|
900
1001
|
/**
|
|
901
1002
|
* Polls the public unauthenticated request status endpoint as the
|
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,7 +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 { WebSocketAdapter } from "./transport/websocket.js";
|
|
12
|
+
import { WebSocketAdapter, WebSocketNotOpenError, } from "./transport/websocket.js";
|
|
13
13
|
import { decodeFipsInitialExtraV1, encodeFipsInitialExtraV1, fipsP256AdFromIdentityPubs, fipsP256PreKeySignPayload, isFipsInitialExtraV1, } from "./utils/fipsMailExtra.js";
|
|
14
14
|
import { decodeRatchetHeader, deriveBootstrapSendChain, encodeRatchetHeader, hasRemoteDhChanged, initRatchetSession, ratchetStepReceive, ratchetStepSend, sessionToSqlPatch, takeReceiveMessageKey, takeSendMessageKey, } from "./utils/ratchet.js";
|
|
15
15
|
/**
|
|
@@ -51,6 +51,13 @@ function debugLibvexDm(msg, data) {
|
|
|
51
51
|
// eslint-disable-next-line no-console -- gated by LIBVEX_DEBUG_DM; remove when debugging is done
|
|
52
52
|
console.error(`[libvex:debug-dm] ${payload}`);
|
|
53
53
|
}
|
|
54
|
+
function ignoreSocketTeardown(err) {
|
|
55
|
+
if (err instanceof WebSocketNotOpenError)
|
|
56
|
+
return;
|
|
57
|
+
// Re-throw anything else as a real unhandled rejection so it
|
|
58
|
+
// shows up in dev tools and Sentry-style reporters.
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
54
61
|
function isRecord(x) {
|
|
55
62
|
return typeof x === "object" && x !== null;
|
|
56
63
|
}
|
|
@@ -139,7 +146,7 @@ function spireErrorBodyMessage(data, max = 8_000) {
|
|
|
139
146
|
return t.length > max ? t.slice(0, max) + "…" : t;
|
|
140
147
|
}
|
|
141
148
|
import { msgpack } from "./codec.js";
|
|
142
|
-
import { ActionTokenCodec, AuthResponseCodec, ChannelArrayCodec, ChannelCodec, ConnectResponseCodec, decodeAxios, DeviceArrayCodec, DeviceChallengeCodec, DeviceCodec, DeviceRegistrationResultCodec, EmojiArrayCodec, EmojiCodec, FileSQLCodec, InviteArrayCodec, InviteCodec, KeyBundleCodec, OtkCountCodec, PendingDeviceRequestArrayCodec, PendingDeviceRequestCodec, PermissionArrayCodec, PermissionCodec, RegisterPendingApprovalCodec, RegisterResponseCodec, ServerArrayCodec, ServerCodec, UserArrayCodec, UserCodec, WhoamiCodec, } from "./codecs.js";
|
|
149
|
+
import { ActionTokenCodec, AuthResponseCodec, ChannelArrayCodec, ChannelCodec, ConnectResponseCodec, decodeAxios, DeviceArrayCodec, DeviceChallengeCodec, DeviceCodec, DeviceRegistrationResultCodec, EmojiArrayCodec, EmojiCodec, FileSQLCodec, InviteArrayCodec, InviteCodec, KeyBundleCodec, OtkCountCodec, PasskeyArrayCodec, PasskeyAuthFinishResponseCodec, PasskeyCodec, PasskeyOptionsCodec, PendingDeviceRequestArrayCodec, PendingDeviceRequestCodec, PermissionArrayCodec, PermissionCodec, RegisterPendingApprovalCodec, RegisterResponseCodec, ServerArrayCodec, ServerCodec, UserArrayCodec, UserCodec, WhoamiCodec, } from "./codecs.js";
|
|
143
150
|
import { sqlSessionToCrypto } from "./utils/sqlSessionToCrypto.js";
|
|
144
151
|
import { uuidToUint8 } from "./utils/uint8uuid.js";
|
|
145
152
|
const _protocolMsgRegex = /��\w+:\w+��/g;
|
|
@@ -241,6 +248,7 @@ export class Client {
|
|
|
241
248
|
approveRequest: this.approveDeviceRequest.bind(this),
|
|
242
249
|
delete: this.deleteDevice.bind(this),
|
|
243
250
|
getRequest: this.getDeviceRegistrationRequest.bind(this),
|
|
251
|
+
list: this.listDevices.bind(this),
|
|
244
252
|
listRequests: this.listDeviceRegistrationRequests.bind(this),
|
|
245
253
|
pollPendingRegistration: this.pollPendingDeviceRegistration.bind(this),
|
|
246
254
|
register: this.registerDevice.bind(this),
|
|
@@ -355,6 +363,30 @@ export class Client {
|
|
|
355
363
|
fetchPermissionList: this.fetchPermissionList.bind(this),
|
|
356
364
|
kick: this.kickUser.bind(this),
|
|
357
365
|
};
|
|
366
|
+
/**
|
|
367
|
+
* Passkey ("recovery credential") methods.
|
|
368
|
+
*
|
|
369
|
+
* Passkeys are an account-bound second-class credential that can
|
|
370
|
+
* authenticate the owning user, list devices, delete devices, and
|
|
371
|
+
* approve/reject pending device-enrollment requests — i.e.
|
|
372
|
+
* provisioning + recovery. They cannot send/decrypt mail.
|
|
373
|
+
*
|
|
374
|
+
* The host app drives the WebAuthn ceremony (e.g. via
|
|
375
|
+
* `@simplewebauthn/browser`) and hands the JSON response to
|
|
376
|
+
* `finish*`.
|
|
377
|
+
*/
|
|
378
|
+
passkeys = {
|
|
379
|
+
approveDeviceRequest: this.passkeyApproveDeviceRequest.bind(this),
|
|
380
|
+
beginAuthentication: this.beginPasskeyAuthentication.bind(this),
|
|
381
|
+
beginRegistration: this.beginPasskeyRegistration.bind(this),
|
|
382
|
+
delete: this.deletePasskey.bind(this),
|
|
383
|
+
deleteDevice: this.passkeyDeleteDevice.bind(this),
|
|
384
|
+
finishAuthentication: this.finishPasskeyAuthentication.bind(this),
|
|
385
|
+
finishRegistration: this.finishPasskeyRegistration.bind(this),
|
|
386
|
+
list: this.listPasskeys.bind(this),
|
|
387
|
+
listDevices: this.passkeyListDevices.bind(this),
|
|
388
|
+
rejectDeviceRequest: this.passkeyRejectDeviceRequest.bind(this),
|
|
389
|
+
};
|
|
358
390
|
/**
|
|
359
391
|
* Permission-management methods for the current user.
|
|
360
392
|
*/
|
|
@@ -1104,6 +1136,15 @@ export class Client {
|
|
|
1104
1136
|
"/approve", msgpack.encode({ signed }), { headers: { "Content-Type": "application/msgpack" } });
|
|
1105
1137
|
return decodeAxios(DeviceCodec, response.data);
|
|
1106
1138
|
}
|
|
1139
|
+
async beginPasskeyAuthentication(username) {
|
|
1140
|
+
const response = await this.http.post(this.getHost() + "/auth/passkey/begin", msgpack.encode({ username }), { headers: { "Content-Type": "application/msgpack" } });
|
|
1141
|
+
return decodeAxios(PasskeyOptionsCodec, response.data);
|
|
1142
|
+
}
|
|
1143
|
+
async beginPasskeyRegistration(name) {
|
|
1144
|
+
const userID = this.getUser().userID;
|
|
1145
|
+
const response = await this.http.post(this.getHost() + "/user/" + userID + "/passkeys/register/begin", msgpack.encode({ name }), { headers: { "Content-Type": "application/msgpack" } });
|
|
1146
|
+
return decodeAxios(PasskeyOptionsCodec, response.data);
|
|
1147
|
+
}
|
|
1107
1148
|
censorPreKey(preKey) {
|
|
1108
1149
|
if (!preKey.index) {
|
|
1109
1150
|
throw new Error("Key index is required.");
|
|
@@ -1337,7 +1378,15 @@ export class Client {
|
|
|
1337
1378
|
}
|
|
1338
1379
|
};
|
|
1339
1380
|
this.socket.on("message", callback);
|
|
1340
|
-
|
|
1381
|
+
// Forward send failures to the outer promise instead
|
|
1382
|
+
// of leaking them as an unhandled rejection: the
|
|
1383
|
+
// listener above can never resolve if the send didn't
|
|
1384
|
+
// make it onto the wire, so without this the caller
|
|
1385
|
+
// would hang for the full 30s send-loop timeout.
|
|
1386
|
+
this.send(msg, hmac).catch((err) => {
|
|
1387
|
+
this.socket.off("message", callback);
|
|
1388
|
+
rej(err instanceof Error ? err : new Error(String(err)));
|
|
1389
|
+
});
|
|
1341
1390
|
});
|
|
1342
1391
|
});
|
|
1343
1392
|
}
|
|
@@ -1358,6 +1407,10 @@ export class Client {
|
|
|
1358
1407
|
async deleteHistory(channelOrUserID) {
|
|
1359
1408
|
await this.database.deleteHistory(channelOrUserID);
|
|
1360
1409
|
}
|
|
1410
|
+
async deletePasskey(passkeyID) {
|
|
1411
|
+
const userID = this.getUser().userID;
|
|
1412
|
+
await this.http.delete(this.getHost() + "/user/" + userID + "/passkeys/" + passkeyID);
|
|
1413
|
+
}
|
|
1361
1414
|
async deletePermission(permissionID) {
|
|
1362
1415
|
await this.http.delete(this.getHost() + "/permission/" + permissionID);
|
|
1363
1416
|
}
|
|
@@ -1471,6 +1524,25 @@ export class Client {
|
|
|
1471
1524
|
}
|
|
1472
1525
|
throw new Error(`${base}${this.deviceListFailureDetail(lastErr)}`);
|
|
1473
1526
|
}
|
|
1527
|
+
/**
|
|
1528
|
+
* Finish a passkey login and adopt the resulting JWT as the
|
|
1529
|
+
* client's bearer token. After this call, `client.passkeys.*`
|
|
1530
|
+
* admin methods are usable; messaging routes will continue to
|
|
1531
|
+
* require a real device token.
|
|
1532
|
+
*/
|
|
1533
|
+
async finishPasskeyAuthentication(args) {
|
|
1534
|
+
const response = await this.http.post(this.getHost() + "/auth/passkey/finish", msgpack.encode(args), { headers: { "Content-Type": "application/msgpack" } });
|
|
1535
|
+
const decoded = decodeAxios(PasskeyAuthFinishResponseCodec, response.data);
|
|
1536
|
+
this.setUser(decoded.user);
|
|
1537
|
+
this.token = decoded.token;
|
|
1538
|
+
this.http.defaults.headers.common.Authorization = `Bearer ${decoded.token}`;
|
|
1539
|
+
return decoded;
|
|
1540
|
+
}
|
|
1541
|
+
async finishPasskeyRegistration(args) {
|
|
1542
|
+
const userID = this.getUser().userID;
|
|
1543
|
+
const response = await this.http.post(this.getHost() + "/user/" + userID + "/passkeys/register/finish", msgpack.encode(args), { headers: { "Content-Type": "application/msgpack" } });
|
|
1544
|
+
return decodeAxios(PasskeyCodec, response.data);
|
|
1545
|
+
}
|
|
1474
1546
|
async forward(message) {
|
|
1475
1547
|
if (this.isManualCloseInFlight()) {
|
|
1476
1548
|
return;
|
|
@@ -1862,6 +1934,7 @@ export class Client {
|
|
|
1862
1934
|
throw new Error("Error initiating websocket connection " + String(err));
|
|
1863
1935
|
}
|
|
1864
1936
|
}
|
|
1937
|
+
// ── Passkeys ────────────────────────────────────────────────────────
|
|
1865
1938
|
/**
|
|
1866
1939
|
* Fresh read of the `manuallyClosing` flag for async loops — direct property checks
|
|
1867
1940
|
* after `await` are flagged as always-false by control-flow analysis even though
|
|
@@ -1896,6 +1969,22 @@ export class Client {
|
|
|
1896
1969
|
"/devices/requests");
|
|
1897
1970
|
return decodeAxios(PendingDeviceRequestArrayCodec, response.data);
|
|
1898
1971
|
}
|
|
1972
|
+
/**
|
|
1973
|
+
* Lists every device the current account owns.
|
|
1974
|
+
*
|
|
1975
|
+
* Uses the device-authenticated `/user/:id/devices` route. For
|
|
1976
|
+
* the passkey-recovery equivalent see `client.passkeys.listDevices`.
|
|
1977
|
+
*/
|
|
1978
|
+
async listDevices() {
|
|
1979
|
+
const userID = this.getUser().userID;
|
|
1980
|
+
const res = await this.http.get(this.getHost() + "/user/" + userID + "/devices");
|
|
1981
|
+
return decodeAxios(DeviceArrayCodec, res.data);
|
|
1982
|
+
}
|
|
1983
|
+
async listPasskeys() {
|
|
1984
|
+
const userID = this.getUser().userID;
|
|
1985
|
+
const response = await this.http.get(this.getHost() + "/user/" + userID + "/passkeys");
|
|
1986
|
+
return decodeAxios(PasskeyArrayCodec, response.data);
|
|
1987
|
+
}
|
|
1899
1988
|
async markSessionVerified(sessionID) {
|
|
1900
1989
|
return this.database.markSessionVerified(sessionID);
|
|
1901
1990
|
}
|
|
@@ -1934,6 +2023,34 @@ export class Client {
|
|
|
1934
2023
|
}
|
|
1935
2024
|
void this.database.saveMessage(message);
|
|
1936
2025
|
};
|
|
2026
|
+
async passkeyApproveDeviceRequest(requestID) {
|
|
2027
|
+
const userID = this.getUser().userID;
|
|
2028
|
+
const response = await this.http.post(this.getHost() +
|
|
2029
|
+
"/user/" +
|
|
2030
|
+
userID +
|
|
2031
|
+
"/passkey/devices/requests/" +
|
|
2032
|
+
requestID +
|
|
2033
|
+
"/approve");
|
|
2034
|
+
return decodeAxios(DeviceCodec, response.data);
|
|
2035
|
+
}
|
|
2036
|
+
async passkeyDeleteDevice(deviceID) {
|
|
2037
|
+
const userID = this.getUser().userID;
|
|
2038
|
+
await this.http.delete(this.getHost() + "/user/" + userID + "/passkey/devices/" + deviceID);
|
|
2039
|
+
}
|
|
2040
|
+
async passkeyListDevices() {
|
|
2041
|
+
const userID = this.getUser().userID;
|
|
2042
|
+
const response = await this.http.get(this.getHost() + "/user/" + userID + "/passkey/devices");
|
|
2043
|
+
return decodeAxios(DeviceArrayCodec, response.data);
|
|
2044
|
+
}
|
|
2045
|
+
async passkeyRejectDeviceRequest(requestID) {
|
|
2046
|
+
const userID = this.getUser().userID;
|
|
2047
|
+
await this.http.post(this.getHost() +
|
|
2048
|
+
"/user/" +
|
|
2049
|
+
userID +
|
|
2050
|
+
"/passkey/devices/requests/" +
|
|
2051
|
+
requestID +
|
|
2052
|
+
"/reject");
|
|
2053
|
+
}
|
|
1937
2054
|
ping() {
|
|
1938
2055
|
if (!this.isAlive) {
|
|
1939
2056
|
// Previous ping went unanswered — the WebSocket is half-open
|
|
@@ -1957,7 +2074,12 @@ export class Client {
|
|
|
1957
2074
|
return;
|
|
1958
2075
|
}
|
|
1959
2076
|
this.setAlive(false);
|
|
1960
|
-
|
|
2077
|
+
// Swallow a teardown-race rejection: if the socket transitions
|
|
2078
|
+
// to CLOSING between our readyState check and the platform
|
|
2079
|
+
// `send`, the next ping interval will see `isAlive=false` and
|
|
2080
|
+
// close cleanly above. Real failures still bubble up because
|
|
2081
|
+
// we re-throw anything that isn't `WebSocketNotOpenError`.
|
|
2082
|
+
this.send({ transmissionID: uuid.v4(), type: "ping" }).catch(ignoreSocketTeardown);
|
|
1961
2083
|
}
|
|
1962
2084
|
/**
|
|
1963
2085
|
* Polls the public unauthenticated request status endpoint as the
|
|
@@ -1982,7 +2104,15 @@ export class Client {
|
|
|
1982
2104
|
}
|
|
1983
2105
|
}
|
|
1984
2106
|
pong(transmissionID) {
|
|
1985
|
-
|
|
2107
|
+
// Drop the pong if the socket is already tearing down — the
|
|
2108
|
+
// server will simply mark us absent and our own ping watchdog
|
|
2109
|
+
// will trigger a reconnect on the next interval. The
|
|
2110
|
+
// alternative (an unhandled rejection from `void this.send`)
|
|
2111
|
+
// shows up as a red INVALID_STATE_ERR every time native
|
|
2112
|
+
// delivers a `message` and a `close` in the same JS turn,
|
|
2113
|
+
// which is the exact race that fires during the Android
|
|
2114
|
+
// biometric prompt and any background → foreground swap.
|
|
2115
|
+
this.send({ transmissionID, type: "pong" }).catch(ignoreSocketTeardown);
|
|
1986
2116
|
}
|
|
1987
2117
|
async populateKeyRing() {
|
|
1988
2118
|
// we've checked in the constructor that these exist
|
|
@@ -2459,7 +2589,13 @@ export class Client {
|
|
|
2459
2589
|
transmissionID: msg.transmissionID,
|
|
2460
2590
|
type: "response",
|
|
2461
2591
|
};
|
|
2462
|
-
|
|
2592
|
+
// If the socket tore down between receiving the challenge
|
|
2593
|
+
// and signing the response, dropping the response is safe:
|
|
2594
|
+
// the server will time out the auth handshake and close,
|
|
2595
|
+
// our reconnect loop will redo the challenge on the next
|
|
2596
|
+
// socket. Logging it as an unhandled rejection only adds
|
|
2597
|
+
// noise during foreground/background swaps.
|
|
2598
|
+
this.send(response).catch(ignoreSocketTeardown);
|
|
2463
2599
|
}
|
|
2464
2600
|
async retrieveEmojiByID(emojiID) {
|
|
2465
2601
|
const res = await this.http.get(this.getHost() + "/emoji/" + emojiID + "/details");
|
|
@@ -2573,6 +2709,17 @@ export class Client {
|
|
|
2573
2709
|
elapsed += backoff;
|
|
2574
2710
|
backoff = Math.min(backoff * 2, 4_000);
|
|
2575
2711
|
}
|
|
2712
|
+
// The adapter re-checks `readyState` and converts the
|
|
2713
|
+
// platform's opaque `DOMException("INVALID_STATE_ERR")` into a
|
|
2714
|
+
// typed `WebSocketNotOpenError`. That handles the TOCTOU
|
|
2715
|
+
// window between the loop above exiting on readyState=1 and
|
|
2716
|
+
// the synchronous `send` below: React Native's bridge can
|
|
2717
|
+
// dispatch a `websocketClosed` between the two, in which case
|
|
2718
|
+
// the socket has transitioned native-side even though our JS
|
|
2719
|
+
// close handler hasn't run yet. With the typed error,
|
|
2720
|
+
// discarded callers (`pong`, `ping`) can `.catch(ignore)` the
|
|
2721
|
+
// teardown without an unhandled rejection, and real callers
|
|
2722
|
+
// can choose to retry on the next reconnect.
|
|
2576
2723
|
this.socket.send(XUtils.packMessage(msg, header));
|
|
2577
2724
|
}
|
|
2578
2725
|
async sendGroupMessage(channelID, message) {
|
|
@@ -2719,7 +2866,14 @@ export class Client {
|
|
|
2719
2866
|
}
|
|
2720
2867
|
};
|
|
2721
2868
|
this.socket.on("message", callback);
|
|
2722
|
-
|
|
2869
|
+
// See the matching block above (sendMail handshake):
|
|
2870
|
+
// forward send failures to the outer promise so the
|
|
2871
|
+
// caller doesn't hang waiting for a response we never
|
|
2872
|
+
// sent.
|
|
2873
|
+
this.send(msgb, hmac).catch((err) => {
|
|
2874
|
+
this.socket.off("message", callback);
|
|
2875
|
+
rej(err instanceof Error ? err : new Error(String(err)));
|
|
2876
|
+
});
|
|
2723
2877
|
});
|
|
2724
2878
|
}
|
|
2725
2879
|
finally {
|
|
@@ -2827,7 +2981,10 @@ export class Client {
|
|
|
2827
2981
|
transmissionID: uuid.v4(),
|
|
2828
2982
|
type: "receipt",
|
|
2829
2983
|
};
|
|
2830
|
-
|
|
2984
|
+
// Receipts are best-effort acknowledgements; a missed one
|
|
2985
|
+
// just means the server resends the mail on the next sync.
|
|
2986
|
+
// Don't surface a teardown race as an unhandled rejection.
|
|
2987
|
+
this.send(receipt).catch(ignoreSocketTeardown);
|
|
2831
2988
|
}
|
|
2832
2989
|
setAlive(status) {
|
|
2833
2990
|
this.isAlive = status;
|