@rxferrix/client 0.1.0 → 0.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/auth.d.ts CHANGED
@@ -5,10 +5,14 @@
5
5
  * ```ts
6
6
  * const client = new RxFerrixClient("http://localhost:8090");
7
7
  * const auth = getAuth(client); // restores a stored session, if any
8
- * await auth.signIn({ email, password });
8
+ * const r = await auth.signIn({ email, password });
9
+ * if (r.mfaRequired) await auth.verifyMfa(r.mfaToken, codeFromAuthenticatorApp);
9
10
  * auth.subscribe(() => console.log(auth.state())); // { isLoading, isAuthenticated, userId, isAdmin }
10
11
  * ```
11
12
  *
13
+ * Two-factor authentication (an authenticator app, with recovery codes) is per account: `setupTotp()` +
14
+ * `confirmTotp(code)` turn it on, `getMfaStatus()`, `disableMfa(code)` and `regenerateRecoveryCodes(code)` manage it.
15
+ *
12
16
  * Tokens are kept in `localStorage` (or the `storage` you pass; an in-memory store when neither exists, e.g. SSR).
13
17
  * The access token is short-lived (15 minutes by default) and refreshed with the refresh token shortly before it
14
18
  * expires and whenever the server rejects it. Refresh tokens rotate on every use; refreshes are serialized across
@@ -67,9 +71,45 @@ export type CodeProof = {
67
71
  email: string;
68
72
  code: string;
69
73
  };
74
+ /**
75
+ * How a sign-in ended. With two-factor authentication enabled on the account, the first step (password, magic link,
76
+ * OAuth, password reset) returns `mfaRequired` with a short-lived `mfaToken` instead of signing in; finish with
77
+ * {@link RxFerrixAuth.verifyMfa}`(mfaToken, code)`, where `code` is from the authenticator app or a recovery code.
78
+ */
79
+ export type SignInResult = {
80
+ mfaRequired: false;
81
+ } | {
82
+ mfaRequired: true;
83
+ mfaToken: string;
84
+ methods: string[];
85
+ };
86
+ /** The account's two-factor authentication (`GET /api/auth/mfa`). */
87
+ export interface MfaStatus {
88
+ /** Sign-ins need a code. */
89
+ enabled: boolean;
90
+ /** A setup was started but not confirmed with a first code yet. */
91
+ pending: boolean;
92
+ recoveryCodesLeft: number;
93
+ /** The enabled factors (`"totp"`). */
94
+ methods: string[];
95
+ }
96
+ /** A started authenticator (TOTP) setup: show the QR code (or the secret) and ask for the first code. */
97
+ export interface MfaSetup {
98
+ /** The secret in base32, for entering by hand. */
99
+ secret: string;
100
+ /** The `otpauth://totp/...` URI the QR code encodes. */
101
+ uri: string;
102
+ /** The QR code as an `<svg>` element (inline it; it scales to its container). */
103
+ qrSvg: string;
104
+ }
70
105
  /** What {@link RxFerrixAuth.handleRedirectCallback} found in the URL. */
71
106
  export type RedirectResult = {
72
107
  type: "signedIn";
108
+ }
109
+ /** The account has two-factor authentication: ask for a code, then `verifyMfa(mfaToken, code)`. */
110
+ | {
111
+ type: "mfaRequired";
112
+ mfaToken: string;
73
113
  } | {
74
114
  type: "emailVerified";
75
115
  }
@@ -173,16 +213,58 @@ export declare class RxFerrixAuth {
173
213
  }): Promise<{
174
214
  verificationRequired: boolean;
175
215
  }>;
176
- /** Sign in with email and password. Rejects with code `"invalid_credentials"` on a wrong email or password. */
216
+ /** Tokens: signed in. A second-factor token: the caller finishes with {@link verifyMfa}. */
217
+ private signedInOrMfa;
218
+ /**
219
+ * Sign in with email and password. Rejects with code `"invalid_credentials"` on a wrong email or password. With
220
+ * two-factor authentication on the account, resolves `{ mfaRequired: true, mfaToken }` without signing in: finish
221
+ * with {@link verifyMfa}.
222
+ */
177
223
  signIn(args: {
178
224
  email: string;
179
225
  password: string;
180
- }): Promise<void>;
181
- /** Sign in to an admin account (dashboard). Functions then see `ctx.auth.is_admin()`. */
226
+ }): Promise<SignInResult>;
227
+ /**
228
+ * Sign in to an admin account (dashboard). Functions then see `ctx.auth.is_admin()`. Resolves `mfaRequired` like
229
+ * {@link signIn} when the administrator has two-factor authentication.
230
+ */
182
231
  signInAsAdmin(args: {
183
232
  email: string;
184
233
  password: string;
185
- }): Promise<void>;
234
+ }): Promise<SignInResult>;
235
+ /**
236
+ * The second step of a sign-in: the `mfaToken` of a `mfaRequired` result plus a code from the authenticator app
237
+ * (or a recovery code) sign in. Rejects with `invalid_mfa_code` (wrong or already used), `mfa_locked` (too many
238
+ * wrong codes; wait) or `invalid_mfa_token` (the sign-in expired after 5 minutes: start again).
239
+ */
240
+ verifyMfa(mfaToken: string, code: string): Promise<void>;
241
+ private bearer;
242
+ /** Whether the signed-in account has two-factor authentication, and how many recovery codes are left. */
243
+ getMfaStatus(): Promise<MfaStatus>;
244
+ /**
245
+ * Start setting up an authenticator app (TOTP) for the signed-in account: returns the QR code and secret to
246
+ * enroll with; nothing changes until {@link confirmTotp} gets the app's first code. Accounts with a password
247
+ * must give it (`password_required`, `invalid_current_password`); `mfa_already_enabled` when it is on already.
248
+ */
249
+ setupTotp(args?: {
250
+ password?: string;
251
+ }): Promise<MfaSetup>;
252
+ /**
253
+ * Confirm the setup with the authenticator's first code. From then on, sign-ins need a code. Resolves the recovery
254
+ * codes: show them once and tell the user to keep them; each works once in place of a code. `invalid_mfa_code`.
255
+ */
256
+ confirmTotp(code: string): Promise<{
257
+ recoveryCodes: string[];
258
+ }>;
259
+ /**
260
+ * Turn two-factor authentication off for the signed-in account. Needs a current code (or a recovery code) once the
261
+ * factor is confirmed; a pending setup is dropped without one. `invalid_mfa_code`, `mfa_not_enabled`.
262
+ */
263
+ disableMfa(code?: string): Promise<void>;
264
+ /** Replace the recovery codes (a current code or recovery code proves it's the user); the old ones stop working. */
265
+ regenerateRecoveryCodes(code: string): Promise<{
266
+ recoveryCodes: string[];
267
+ }>;
186
268
  /** Whether the server has no administrator yet (`GET /api/auth/admin/setup`). */
187
269
  needsAdminSetup(): Promise<boolean>;
188
270
  /**
@@ -208,20 +290,31 @@ export declare class RxFerrixAuth {
208
290
  email: string;
209
291
  redirectTo?: string;
210
292
  }): Promise<void>;
211
- /** Set a new password with the reset link token or code; ends other sessions and signs in. */
212
- resetPassword(proof: CodeProof, password: string): Promise<void>;
293
+ /**
294
+ * Change the signed-in user's password; `currentPassword` proves it's them. Their other sessions end, this one stays
295
+ * signed in. Fails with an `RxFerrixError` code such as `invalid_current_password` or `weak_password`.
296
+ */
297
+ changePassword(currentPassword: string, newPassword: string): Promise<void>;
298
+ /**
299
+ * Set a new password with the reset link token or code; ends other sessions and signs in (or resolves
300
+ * `mfaRequired` like {@link signIn}: a reset email doesn't bypass the second factor).
301
+ */
302
+ resetPassword(proof: CodeProof, password: string): Promise<SignInResult>;
213
303
  /** Email a magic sign-in link and a one-time code. Succeeds whether or not the account exists. */
214
304
  requestMagicLink(args: {
215
305
  email: string;
216
306
  redirectTo?: string;
217
307
  }): Promise<void>;
218
- /** Sign in with the one-time code from a magic link email. */
308
+ /** Sign in with the one-time code from a magic link email (or resolve `mfaRequired`, as {@link signIn}). */
219
309
  verifyCode(args: {
220
310
  email: string;
221
311
  code: string;
222
- }): Promise<void>;
223
- /** Sign in with the token of a magic link (usually done by {@link handleRedirectCallback}). */
224
- verifyMagicLink(token: string): Promise<void>;
312
+ }): Promise<SignInResult>;
313
+ /**
314
+ * Sign in with the token of a magic link (usually done by {@link handleRedirectCallback}); resolves `mfaRequired`
315
+ * as {@link signIn} does.
316
+ */
317
+ verifyMagicLink(token: string): Promise<SignInResult>;
225
318
  /** The URL that starts an OAuth sign-in with `provider`, returning to `redirectTo` (default: this page). */
226
319
  oauthUrl(provider: string, options?: {
227
320
  redirectTo?: string;
@@ -236,9 +329,10 @@ export declare class RxFerrixAuth {
236
329
  }): void;
237
330
  /**
238
331
  * Handle the `#rxferrix_…` fragment that OAuth redirects and email links put on the URL: stores tokens (OAuth),
239
- * signs in (magic link), confirms the email (verification link) or returns the reset token (password reset). The
240
- * `rxferrix_` parameters are removed from the address bar first, so a reload can't replay them. Returns null when
241
- * the URL has none.
332
+ * signs in (magic link), confirms the email (verification link) or returns the reset token (password reset). With
333
+ * two-factor authentication on the account, OAuth and magic links end in `{ type: "mfaRequired", mfaToken }`:
334
+ * ask for a code and call {@link verifyMfa}. The `rxferrix_` parameters are removed from the address bar first,
335
+ * so a reload can't replay them. Returns null when the URL has none.
242
336
  */
243
337
  handleRedirectCallback(url?: string): Promise<RedirectResult | null>;
244
338
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/auth.js CHANGED
@@ -5,10 +5,14 @@
5
5
  * ```ts
6
6
  * const client = new RxFerrixClient("http://localhost:8090");
7
7
  * const auth = getAuth(client); // restores a stored session, if any
8
- * await auth.signIn({ email, password });
8
+ * const r = await auth.signIn({ email, password });
9
+ * if (r.mfaRequired) await auth.verifyMfa(r.mfaToken, codeFromAuthenticatorApp);
9
10
  * auth.subscribe(() => console.log(auth.state())); // { isLoading, isAuthenticated, userId, isAdmin }
10
11
  * ```
11
12
  *
13
+ * Two-factor authentication (an authenticator app, with recovery codes) is per account: `setupTotp()` +
14
+ * `confirmTotp(code)` turn it on, `getMfaStatus()`, `disableMfa(code)` and `regenerateRecoveryCodes(code)` manage it.
15
+ *
12
16
  * Tokens are kept in `localStorage` (or the `storage` you pass; an in-memory store when neither exists, e.g. SSR).
13
17
  * The access token is short-lived (15 minutes by default) and refreshed with the refresh token shortly before it
14
18
  * expires and whenever the server rejects it. Refresh tokens rotate on every use; refreshes are serialized across
@@ -369,13 +373,85 @@ export class RxFerrixAuth {
369
373
  }
370
374
  return { verificationRequired: true };
371
375
  }
372
- /** Sign in with email and password. Rejects with code `"invalid_credentials"` on a wrong email or password. */
376
+ /** Tokens: signed in. A second-factor token: the caller finishes with {@link verifyMfa}. */
377
+ async signedInOrMfa(res) {
378
+ if ("mfaRequired" in res && res.mfaRequired) {
379
+ return { mfaRequired: true, mfaToken: res.mfaToken, methods: res.methods ?? ["totp"] };
380
+ }
381
+ await this.signedIn(res);
382
+ return { mfaRequired: false };
383
+ }
384
+ /**
385
+ * Sign in with email and password. Rejects with code `"invalid_credentials"` on a wrong email or password. With
386
+ * two-factor authentication on the account, resolves `{ mfaRequired: true, mfaToken }` without signing in: finish
387
+ * with {@link verifyMfa}.
388
+ */
373
389
  async signIn(args) {
374
- await this.signedIn(await this.post("signin", args));
390
+ return this.signedInOrMfa(await this.post("signin", args));
375
391
  }
376
- /** Sign in to an admin account (dashboard). Functions then see `ctx.auth.is_admin()`. */
392
+ /**
393
+ * Sign in to an admin account (dashboard). Functions then see `ctx.auth.is_admin()`. Resolves `mfaRequired` like
394
+ * {@link signIn} when the administrator has two-factor authentication.
395
+ */
377
396
  async signInAsAdmin(args) {
378
- await this.signedIn(await this.post("admin/signin", args));
397
+ return this.signedInOrMfa(await this.post("admin/signin", args));
398
+ }
399
+ /**
400
+ * The second step of a sign-in: the `mfaToken` of a `mfaRequired` result plus a code from the authenticator app
401
+ * (or a recovery code) sign in. Rejects with `invalid_mfa_code` (wrong or already used), `mfa_locked` (too many
402
+ * wrong codes; wait) or `invalid_mfa_token` (the sign-in expired after 5 minutes: start again).
403
+ */
404
+ async verifyMfa(mfaToken, code) {
405
+ await this.signedIn(await this.post("mfa/verify", { mfaToken, code }));
406
+ }
407
+ // ---------------------------------------------------------------------------------------------------------------
408
+ // Two-factor authentication of the signed-in account
409
+ async bearer() {
410
+ const token = await this.getAccessToken();
411
+ if (!token)
412
+ throw new RxFerrixError("Sign in first", { code: "unauthenticated" });
413
+ return token;
414
+ }
415
+ /** Whether the signed-in account has two-factor authentication, and how many recovery codes are left. */
416
+ async getMfaStatus() {
417
+ const token = await this.bearer();
418
+ let res;
419
+ try {
420
+ res = await this.fetchImpl(`${this.baseUrl}/api/auth/mfa`, { headers: { Authorization: `Bearer ${token}` } });
421
+ }
422
+ catch (e) {
423
+ throw new RxFerrixError("Could not reach the server", { code: "network_error", cause: e });
424
+ }
425
+ const json = (await res.json().catch(() => null));
426
+ if (!res.ok)
427
+ throw errorFrom(res.status, json);
428
+ return json;
429
+ }
430
+ /**
431
+ * Start setting up an authenticator app (TOTP) for the signed-in account: returns the QR code and secret to
432
+ * enroll with; nothing changes until {@link confirmTotp} gets the app's first code. Accounts with a password
433
+ * must give it (`password_required`, `invalid_current_password`); `mfa_already_enabled` when it is on already.
434
+ */
435
+ async setupTotp(args = {}) {
436
+ return this.post("mfa/totp/setup", args, await this.bearer());
437
+ }
438
+ /**
439
+ * Confirm the setup with the authenticator's first code. From then on, sign-ins need a code. Resolves the recovery
440
+ * codes: show them once and tell the user to keep them; each works once in place of a code. `invalid_mfa_code`.
441
+ */
442
+ async confirmTotp(code) {
443
+ return this.post("mfa/totp/confirm", { code }, await this.bearer());
444
+ }
445
+ /**
446
+ * Turn two-factor authentication off for the signed-in account. Needs a current code (or a recovery code) once the
447
+ * factor is confirmed; a pending setup is dropped without one. `invalid_mfa_code`, `mfa_not_enabled`.
448
+ */
449
+ async disableMfa(code) {
450
+ await this.post("mfa/disable", code ? { code } : {}, await this.bearer());
451
+ }
452
+ /** Replace the recovery codes (a current code or recovery code proves it's the user); the old ones stop working. */
453
+ async regenerateRecoveryCodes(code) {
454
+ return this.post("mfa/recovery-codes", { code }, await this.bearer());
379
455
  }
380
456
  /** Whether the server has no administrator yet (`GET /api/auth/admin/setup`). */
381
457
  async needsAdminSetup() {
@@ -420,21 +496,34 @@ export class RxFerrixAuth {
420
496
  async requestPasswordReset(args) {
421
497
  await this.post("reset/request", args);
422
498
  }
423
- /** Set a new password with the reset link token or code; ends other sessions and signs in. */
499
+ /**
500
+ * Change the signed-in user's password; `currentPassword` proves it's them. Their other sessions end, this one stays
501
+ * signed in. Fails with an `RxFerrixError` code such as `invalid_current_password` or `weak_password`.
502
+ */
503
+ async changePassword(currentPassword, newPassword) {
504
+ await this.post("password/change", { currentPassword, newPassword }, await this.bearer());
505
+ }
506
+ /**
507
+ * Set a new password with the reset link token or code; ends other sessions and signs in (or resolves
508
+ * `mfaRequired` like {@link signIn}: a reset email doesn't bypass the second factor).
509
+ */
424
510
  async resetPassword(proof, password) {
425
- await this.signedIn(await this.post("reset/confirm", { ...proof, password }));
511
+ return this.signedInOrMfa(await this.post("reset/confirm", { ...proof, password }));
426
512
  }
427
513
  /** Email a magic sign-in link and a one-time code. Succeeds whether or not the account exists. */
428
514
  async requestMagicLink(args) {
429
515
  await this.post("magic/request", args);
430
516
  }
431
- /** Sign in with the one-time code from a magic link email. */
517
+ /** Sign in with the one-time code from a magic link email (or resolve `mfaRequired`, as {@link signIn}). */
432
518
  async verifyCode(args) {
433
- await this.signedIn(await this.post("magic/verify", args));
519
+ return this.signedInOrMfa(await this.post("magic/verify", args));
434
520
  }
435
- /** Sign in with the token of a magic link (usually done by {@link handleRedirectCallback}). */
521
+ /**
522
+ * Sign in with the token of a magic link (usually done by {@link handleRedirectCallback}); resolves `mfaRequired`
523
+ * as {@link signIn} does.
524
+ */
436
525
  async verifyMagicLink(token) {
437
- await this.signedIn(await this.post("magic/verify", { token }));
526
+ return this.signedInOrMfa(await this.post("magic/verify", { token }));
438
527
  }
439
528
  /** The URL that starts an OAuth sign-in with `provider`, returning to `redirectTo` (default: this page). */
440
529
  oauthUrl(provider, options = {}) {
@@ -456,9 +545,10 @@ export class RxFerrixAuth {
456
545
  }
457
546
  /**
458
547
  * Handle the `#rxferrix_…` fragment that OAuth redirects and email links put on the URL: stores tokens (OAuth),
459
- * signs in (magic link), confirms the email (verification link) or returns the reset token (password reset). The
460
- * `rxferrix_` parameters are removed from the address bar first, so a reload can't replay them. Returns null when
461
- * the URL has none.
548
+ * signs in (magic link), confirms the email (verification link) or returns the reset token (password reset). With
549
+ * two-factor authentication on the account, OAuth and magic links end in `{ type: "mfaRequired", mfaToken }`:
550
+ * ask for a code and call {@link verifyMfa}. The `rxferrix_` parameters are removed from the address bar first,
551
+ * so a reload can't replay them. Returns null when the URL has none.
462
552
  */
463
553
  async handleRedirectCallback(url) {
464
554
  const g = globalThis;
@@ -494,10 +584,13 @@ export class RxFerrixAuth {
494
584
  await this.signedIn({ accessToken: access, refreshToken: refresh, expiresIn, ...(userId ? { userId } : {}) });
495
585
  return { type: "signedIn" };
496
586
  }
587
+ const mfaToken = ours.get("rxferrix_mfa_token");
588
+ if (mfaToken)
589
+ return { type: "mfaRequired", mfaToken };
497
590
  const magic = ours.get("rxferrix_magic_token");
498
591
  if (magic) {
499
- await this.verifyMagicLink(magic);
500
- return { type: "signedIn" };
592
+ const r = await this.verifyMagicLink(magic);
593
+ return r.mfaRequired ? { type: "mfaRequired", mfaToken: r.mfaToken } : { type: "signedIn" };
501
594
  }
502
595
  const verify = ours.get("rxferrix_verify_token");
503
596
  if (verify) {
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -48,6 +48,8 @@ export interface QueryWatch<T> {
48
48
  /** The current state. The returned object is referentially stable while the visible value does not change. */
49
49
  localQueryState(): QueryState<T>;
50
50
  }
51
+ /** The server's limit of live queries per socket; past it, a `ModifyQuerySet` is a fatal error (docs/PROTOCOL.md). */
52
+ export declare const MAX_LIVE_QUERIES = 1024;
51
53
  /**
52
54
  * The RxFerrix sync client: subscribes to queries over a WebSocket and runs mutations and actions.
53
55
  *
@@ -91,6 +93,11 @@ export declare class RxFerrixClient {
91
93
  private isAuthenticated;
92
94
  private authGeneration;
93
95
  private authRefreshTimer;
96
+ /** Token fetches in flight: the last one to finish lets held-back sends through again. */
97
+ private tokenFetchesInFlight;
98
+ private tokenFetchFailures;
99
+ /** Rejecters of `query()` calls still waiting for their first result (settled on `close()`). */
100
+ private readonly oneShotQueries;
94
101
  private readonly removeUnloadListener;
95
102
  constructor(url: string, options?: RxFerrixClientOptions);
96
103
  /**
@@ -133,6 +140,7 @@ export declare class RxFerrixClient {
133
140
  /** Removes the token: the server falls back to an anonymous identity. */
134
141
  clearAuth(): void;
135
142
  private fetchAndApplyToken;
143
+ private scheduleTokenFetch;
136
144
  /** Records the desired token and sends `Authenticate` when the server's token differs. */
137
145
  private applyToken;
138
146
  private sendAuthenticateIfNeeded;
@@ -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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"}