@atlasauth/js 0.15.0 → 0.16.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.
Files changed (58) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/account-hints.d.ts +53 -0
  3. package/dist/account-hints.js +114 -0
  4. package/dist/account-hints.js.map +1 -0
  5. package/dist/attempt.d.ts +3 -1
  6. package/dist/attempt.js.map +1 -1
  7. package/dist/captcha-controller.d.ts +21 -0
  8. package/dist/captcha-controller.js +35 -0
  9. package/dist/captcha-controller.js.map +1 -1
  10. package/dist/environment.d.ts +48 -0
  11. package/dist/environment.js +54 -1
  12. package/dist/environment.js.map +1 -1
  13. package/dist/fapi.d.ts +29 -0
  14. package/dist/fapi.js +90 -7
  15. package/dist/fapi.js.map +1 -1
  16. package/dist/impersonation.d.ts +44 -0
  17. package/dist/impersonation.js +47 -0
  18. package/dist/impersonation.js.map +1 -0
  19. package/dist/index.d.ts +9 -0
  20. package/dist/index.js +16 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/instance-settings.d.ts +7 -1
  23. package/dist/instance-settings.js +15 -1
  24. package/dist/instance-settings.js.map +1 -1
  25. package/dist/mfa-enrollment.d.ts +154 -0
  26. package/dist/mfa-enrollment.js +288 -0
  27. package/dist/mfa-enrollment.js.map +1 -0
  28. package/dist/organization-audit-log.d.ts +63 -0
  29. package/dist/organization-audit-log.js +96 -0
  30. package/dist/organization-audit-log.js.map +1 -0
  31. package/dist/organizations.d.ts +330 -0
  32. package/dist/organizations.js +375 -0
  33. package/dist/organizations.js.map +1 -0
  34. package/dist/passkey-sign-in.d.ts +40 -0
  35. package/dist/passkey-sign-in.js +41 -0
  36. package/dist/passkey-sign-in.js.map +1 -0
  37. package/dist/passkey-sign-up.d.ts +46 -0
  38. package/dist/passkey-sign-up.js +98 -0
  39. package/dist/passkey-sign-up.js.map +1 -0
  40. package/dist/password-reset.d.ts +12 -0
  41. package/dist/password-reset.js +15 -0
  42. package/dist/password-reset.js.map +1 -1
  43. package/dist/phone-numbers.d.ts +43 -0
  44. package/dist/phone-numbers.js +65 -0
  45. package/dist/phone-numbers.js.map +1 -0
  46. package/dist/profile.d.ts +24 -0
  47. package/dist/profile.js +24 -0
  48. package/dist/profile.js.map +1 -0
  49. package/dist/referral-detect.js +1 -1
  50. package/dist/referral.d.ts +1 -1
  51. package/dist/referral.js +3 -2
  52. package/dist/referral.js.map +1 -1
  53. package/dist/sign-out-guard.d.ts +8 -0
  54. package/dist/sign-out-guard.js +15 -0
  55. package/dist/sign-out-guard.js.map +1 -1
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/package.json +2 -2
package/dist/fapi.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialFlow = exports.FapiClient = void 0;
3
+ exports.initialFlow = exports.FapiClient = exports.DEVICE_ID_ROUTES = void 0;
4
4
  exports.acceptLanguageFor = acceptLanguageFor;
5
5
  exports.getProviderToken = getProviderToken;
6
6
  exports.getTemplateToken = getTemplateToken;
@@ -9,13 +9,17 @@ exports.requestForStep = requestForStep;
9
9
  exports.flowFromPending = flowFromPending;
10
10
  exports.advance = advance;
11
11
  exports.startSignUp = startSignUp;
12
+ exports.resendSignUpVerification = resendSignUpVerification;
13
+ exports.awaitingSignUpLink = awaitingSignUpLink;
12
14
  exports.prepareFactor = prepareFactor;
13
15
  exports.pollAttempt = pollAttempt;
14
16
  exports.shouldKeepPolling = shouldKeepPolling;
15
17
  const attempt_1 = require("./attempt");
16
18
  const sdk_advisory_1 = require("./sdk-advisory");
17
19
  const dev_browser_1 = require("./dev-browser");
20
+ const mfa_enrollment_1 = require("./mfa-enrollment");
18
21
  const referral_1 = require("./referral");
22
+ const telemetry_1 = require("./telemetry");
19
23
  /**
20
24
  * A locale tag normalised for the `Accept-Language` header (`pt_BR` → `pt-BR`),
21
25
  * or null when it is not a plausible BCP-47 tag. Restricting it to letters,
@@ -28,6 +32,25 @@ function acceptLanguageFor(locale) {
28
32
  const tag = locale.trim().replace(/_/g, '-');
29
33
  return /^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$/.test(tag) ? tag : null;
30
34
  }
35
+ /**
36
+ * The starts that can create an account, and so carry the SDK's stable device
37
+ * id for the accounts-per-device abuse limit. Password and passwordless
38
+ * sign-ins never create one and do not send it.
39
+ */
40
+ exports.DEVICE_ID_ROUTES = new Set([
41
+ '/v1/client/sign_ups',
42
+ '/v1/client/sign_ins/oauth',
43
+ '/v1/client/sign_ins/sso',
44
+ '/v1/client/sign_ins/saml',
45
+ '/v1/client/sign_ins/discourse',
46
+ '/v1/client/sign_ins/id_token',
47
+ '/v1/client/sign_ins/external_jwt',
48
+ '/v1/client/sign_ins/ldap',
49
+ '/v1/oauth/telegram',
50
+ '/v1/oauth/siwe/verify',
51
+ '/v1/oauth/siws/verify',
52
+ '/v1/oauth/siwf/verify',
53
+ ]);
31
54
  class FapiClient {
32
55
  options;
33
56
  constructor(options) {
@@ -133,6 +156,20 @@ class FapiClient {
133
156
  if (referral)
134
157
  payload = { ...payload, referral };
135
158
  }
159
+ // The stable device id rides on every start that can create an account
160
+ // (email sign-up, social and enterprise SSO sign-ins) so the instance's
161
+ // accounts-per-device abuse limit can count devices, not networks.
162
+ const bare = path.split('?')[0];
163
+ if (bare !== undefined &&
164
+ exports.DEVICE_ID_ROUTES.has(bare) &&
165
+ payload !== null &&
166
+ typeof payload === 'object' &&
167
+ !Array.isArray(payload) &&
168
+ !('device_id' in payload)) {
169
+ const id = (0, telemetry_1.deviceId)();
170
+ if (id)
171
+ payload = { ...payload, device_id: id };
172
+ }
136
173
  return this.request(path, {
137
174
  method: 'POST',
138
175
  body: payload === undefined ? undefined : JSON.stringify(payload),
@@ -256,6 +293,14 @@ function requestForStep(attempt, values) {
256
293
  * because there is no factor to verify against yet.
257
294
  */
258
295
  case 'enroll_second_factor':
296
+ // A texted factor (`enrollStrategy: 'phone_code'`, see mfa-enrollment.ts)
297
+ // is proven by the one code sent to the phone.
298
+ if (values.enrollStrategy === 'phone_code') {
299
+ return {
300
+ path: `/v1/client/sign_ins/${id}/attempt_mfa_enrollment`,
301
+ body: { factor_id: values.factorId ?? '', code: values.code ?? '' },
302
+ };
303
+ }
259
304
  return {
260
305
  path: `/v1/client/sign_ins/${id}/attempt_mfa_enrollment`,
261
306
  body: {
@@ -333,15 +378,19 @@ async function advance(client, state, values) {
333
378
  */
334
379
  return { ...state, busy: false, errors: response.errors };
335
380
  }
336
- const sameAttempt = response.data.id === state.attempt?.id && response.data.status === state.attempt?.status;
381
+ // An enrolment's recovery codes are shown once and never kept on the attempt.
382
+ const { backup_codes: backupCodes, ...view } = response.data;
383
+ const recoveryCodes = (0, mfa_enrollment_1.recoveryCodesFrom)(backupCodes);
384
+ const sameAttempt = view.id === state.attempt?.id && view.status === state.attempt?.status;
337
385
  return {
338
- attempt: response.data,
386
+ attempt: view,
339
387
  errors: [],
340
388
  busy: false,
341
389
  pollSecret: state.pollSecret,
342
390
  // A completion response carries the ticket to exchange for cookies.
343
- ticket: response.data.ticket ?? null,
391
+ ticket: view.ticket ?? null,
344
392
  prepared: sameAttempt ? (state.prepared ?? null) : null,
393
+ ...(recoveryCodes ? { recoveryCodes } : {}),
345
394
  };
346
395
  }
347
396
  /**
@@ -362,6 +411,7 @@ async function startSignUp(client, input) {
362
411
  ...(input.consent ? { consent: true } : {}),
363
412
  // §5 the bot-defence token, when the sign-up flow's captcha is enabled.
364
413
  ...(input.captchaToken ? { captcha_token: input.captchaToken } : {}),
414
+ ...(input.username ? { username: input.username } : {}),
365
415
  });
366
416
  if (!response.ok || !response.data) {
367
417
  return { ...exports.initialFlow, busy: false, errors: response.errors };
@@ -370,10 +420,36 @@ async function startSignUp(client, input) {
370
420
  attempt: response.data,
371
421
  errors: [],
372
422
  busy: false,
373
- pollSecret: exports.initialFlow.pollSecret,
423
+ // Link mode: the sign-up's verification link may be opened anywhere; this
424
+ // tab collects the session by polling with the secret the create returned.
425
+ pollSecret: response.data.poll_secret ?? exports.initialFlow.pollSecret,
374
426
  ticket: response.data.ticket ?? null,
375
427
  };
376
428
  }
429
+ /**
430
+ * Resend a sign-up's emailed proof (a code, a link, or both — whatever the
431
+ * instance sends): `POST /v1/client/sign_ups/:id/prepare_verification`. The
432
+ * earlier code / link stops working. A refusal (a 429 with `retry_after`)
433
+ * comes back as `errors` with the attempt kept.
434
+ */
435
+ async function resendSignUpVerification(client, state) {
436
+ const id = state.attempt?.id;
437
+ if (!id)
438
+ return state;
439
+ const response = await client.post(`/v1/client/sign_ups/${id}/prepare_verification`, {});
440
+ return response.ok ? { ...state, busy: false, errors: [] } : { ...state, busy: false, errors: response.errors };
441
+ }
442
+ /**
443
+ * Whether a sign-up attempt is waiting on an emailed LINK only (no code to
444
+ * type): the form says "check your email" and the tab polls. `emailVerification`
445
+ * is the instance's `account.emailVerification`.
446
+ */
447
+ function awaitingSignUpLink(attempt, emailVerification) {
448
+ return (!!attempt &&
449
+ attempt.object === 'sign_up_attempt' &&
450
+ attempt.status === 'needs_email_verification' &&
451
+ emailVerification === 'link');
452
+ }
377
453
  /** §5.3: ask the server to send a code or a magic link. */
378
454
  async function prepareFactor(client, state, strategy) {
379
455
  const id = state.attempt?.id;
@@ -401,7 +477,9 @@ async function pollAttempt(client, state) {
401
477
  const id = state.attempt?.id;
402
478
  if (!id || !state.pollSecret)
403
479
  return { state, ticket: null };
404
- const response = await client.get(`/v1/client/sign_ins/${id}?poll_secret=${encodeURIComponent(state.pollSecret)}`);
480
+ // A sign-up waiting on its emailed verification link polls its own route.
481
+ const resource = state.attempt?.object === 'sign_up_attempt' ? 'sign_ups' : 'sign_ins';
482
+ const response = await client.get(`/v1/client/${resource}/${id}?poll_secret=${encodeURIComponent(state.pollSecret)}`);
405
483
  if (!response.ok || !response.data)
406
484
  return { state, ticket: null };
407
485
  return {
@@ -411,6 +489,11 @@ async function pollAttempt(client, state) {
411
489
  }
412
490
  /** Whether polling should continue, so a tab does not poll a dead attempt forever. */
413
491
  function shouldKeepPolling(state) {
414
- return Boolean(state.pollSecret) && Boolean(state.attempt) && !(0, attempt_1.isTerminal)(state.attempt);
492
+ if (!state.pollSecret || !state.attempt || (0, attempt_1.isTerminal)(state.attempt))
493
+ return false;
494
+ // A passkey-only sign-up waiting for its passkey: only this tab can move it on.
495
+ const a = state.attempt;
496
+ const waitingForPasskey = a.object === 'sign_up_attempt' && a.status === 'needs_first_factor' && (a.supported_first_factors ?? []).includes('passkey');
497
+ return !waitingForPasskey;
415
498
  }
416
499
  //# sourceMappingURL=fapi.js.map
package/dist/fapi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fapi.js","sourceRoot":"","sources":["../src/fapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fapi.js","sourceRoot":"","sources":["../src/fapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Impersonation: who is acting on a session, and "return to admin".
3
+ *
4
+ * A session started from an impersonation carries `act: { sub }` on its token
5
+ * (RFC 8693) and, on `GET /v1/client`, `actor` plus `actor_session_id` — the
6
+ * impersonator's own session on this browser, kept alongside while they act as
7
+ * the user. {@link endImpersonation} ends the impersonation and, when that
8
+ * session is still usable, makes it active again without a sign-in.
9
+ */
10
+ /** The party acting on an impersonated session (the token's `act` claim). */
11
+ export interface ImpersonationActor {
12
+ sub: string;
13
+ }
14
+ /** The impersonation fields on a `GET /v1/client` session (absent otherwise). */
15
+ export interface ImpersonationSessionFields {
16
+ actor?: ImpersonationActor | null;
17
+ /** The impersonator's own session that ending the impersonation resumes, or null. */
18
+ actor_session_id?: string | null;
19
+ }
20
+ /** What {@link endImpersonation} resolves with. */
21
+ export interface EndImpersonationResult {
22
+ /** The Frontend API confirmed the impersonation session is over. */
23
+ ended: boolean;
24
+ /** The impersonator's own session became active again (no sign-in needed). */
25
+ resumed: boolean;
26
+ /**
27
+ * The session now active on this browser, when any: the impersonator's own
28
+ * (`resumed: true`) or another account signed in here. Absent → signed out.
29
+ */
30
+ activeSessionId?: string;
31
+ /** The newly active session's JWT, when there is one. */
32
+ jwt?: string;
33
+ /** The HTTP status (`0` when the server never answered). */
34
+ status: number;
35
+ }
36
+ /** The actor on a session token's claims, or null for an ordinary session. */
37
+ export declare function actorFromClaims(claims: Record<string, unknown> | null | undefined): ImpersonationActor | null;
38
+ /**
39
+ * `POST /v1/client/sessions/:id/end_impersonation`. `request` is the caller's
40
+ * credentialed FAPI fetch (cookies included) — the server reads the active and
41
+ * parked session cookies and rewrites them. Not retried: ending twice is
42
+ * harmless, but a refusal (404/409) is final.
43
+ */
44
+ export declare function endImpersonation(request: (path: string, init?: RequestInit) => Promise<Response>, sessionId: string): Promise<EndImpersonationResult>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * Impersonation: who is acting on a session, and "return to admin".
4
+ *
5
+ * A session started from an impersonation carries `act: { sub }` on its token
6
+ * (RFC 8693) and, on `GET /v1/client`, `actor` plus `actor_session_id` — the
7
+ * impersonator's own session on this browser, kept alongside while they act as
8
+ * the user. {@link endImpersonation} ends the impersonation and, when that
9
+ * session is still usable, makes it active again without a sign-in.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.actorFromClaims = actorFromClaims;
13
+ exports.endImpersonation = endImpersonation;
14
+ /** The actor on a session token's claims, or null for an ordinary session. */
15
+ function actorFromClaims(claims) {
16
+ const act = claims?.act;
17
+ return act && typeof act === 'object' && typeof act.sub === 'string' && act.sub ? { sub: act.sub } : null;
18
+ }
19
+ /**
20
+ * `POST /v1/client/sessions/:id/end_impersonation`. `request` is the caller's
21
+ * credentialed FAPI fetch (cookies included) — the server reads the active and
22
+ * parked session cookies and rewrites them. Not retried: ending twice is
23
+ * harmless, but a refusal (404/409) is final.
24
+ */
25
+ async function endImpersonation(request, sessionId) {
26
+ let response;
27
+ try {
28
+ response = await request(`/v1/client/sessions/${encodeURIComponent(sessionId)}/end_impersonation`, {
29
+ method: 'POST',
30
+ });
31
+ }
32
+ catch {
33
+ return { ended: false, resumed: false, status: 0 };
34
+ }
35
+ if (!response.ok)
36
+ return { ended: false, resumed: false, status: response.status };
37
+ // A body we cannot read still means the impersonation ended.
38
+ const body = (await response.json().catch(() => null));
39
+ return {
40
+ ended: true,
41
+ resumed: body?.resumed === true,
42
+ status: response.status,
43
+ ...(typeof body?.active_session_id === 'string' ? { activeSessionId: body.active_session_id } : {}),
44
+ ...(typeof body?.jwt === 'string' ? { jwt: body.jwt } : {}),
45
+ };
46
+ }
47
+ //# sourceMappingURL=impersonation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impersonation.js","sourceRoot":"","sources":["../src/impersonation.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAgCH,0CAGC;AAQD,4CA0BC;AAtCD,8EAA8E;AAC9E,SAAgB,eAAe,CAAC,MAAkD;IAChF,MAAM,GAAG,GAAG,MAAM,EAAE,GAAoC,CAAC;IACzD,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5G,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CACpC,OAAgE,EAChE,SAAiB;IAEjB,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,oBAAoB,EAAE;YACjG,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACnF,6DAA6D;IAC7D,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAI7C,CAAC;IACT,OAAO;QACL,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;QAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,CAAC,OAAO,IAAI,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,GAAG,CAAC,OAAO,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './config';
2
2
  export * from './sign-out';
3
+ export * from './impersonation';
3
4
  export * from './sign-out-guard';
4
5
  export * from './token-cache';
5
6
  export * from './tab-election';
@@ -10,6 +11,7 @@ export * from './errors';
10
11
  export * from './redirect';
11
12
  export * from './popup-channel';
12
13
  export * from './fapi';
14
+ export * from './organization-audit-log';
13
15
  export * from './referral';
14
16
  export { devBrowserEnabled, devBrowserToken, forgetDevBrowserToken, withDevBrowser } from './dev-browser';
15
17
  export { CONSENT_PROVIDERS, REFERRAL_BROWSER_SOURCES, canonicalCategory, detectConsent, detectConsentProvider, detectReferralSource, type ConsentDecision, type ConsentProvider, type DetectedReferral, type ReferralBrowserSource, } from './referral-detect';
@@ -19,11 +21,18 @@ export * from './sign-out-events';
19
21
  export * from './native';
20
22
  export * from './native-session';
21
23
  export * from './passkey';
24
+ export * from './mfa-enrollment';
25
+ export * from './passkey-sign-in';
26
+ export * from './passkey-sign-up';
22
27
  export * from './telegram';
23
28
  export * from './siwe';
24
29
  export * from './telemetry';
25
30
  export * from './reauth';
26
31
  export * from './api-keys';
32
+ export * from './organizations';
33
+ export * from './phone-numbers';
34
+ export * from './account-hints';
35
+ export * from './profile';
27
36
  export * from './connect';
28
37
  export * from './password-reset';
29
38
  export * from './check-session';
package/dist/index.js CHANGED
@@ -18,6 +18,8 @@ exports.isPermissionKey = exports.isRoleKey = exports.PERMISSION_KEY_PATTERN = e
18
18
  // Provider configuration checks (frontendApi) shared by every framework SDK.
19
19
  __exportStar(require("./config"), exports);
20
20
  __exportStar(require("./sign-out"), exports);
21
+ // Impersonation: the acting party and "return to admin".
22
+ __exportStar(require("./impersonation"), exports);
21
23
  // The safer sign-out every framework provider drives (tombstones, background revoke).
22
24
  __exportStar(require("./sign-out-guard"), exports);
23
25
  __exportStar(require("./token-cache"), exports);
@@ -31,6 +33,8 @@ __exportStar(require("./redirect"), exports);
31
33
  // §oauth popup mode: the same-origin hand-back for a popup whose opener was severed.
32
34
  __exportStar(require("./popup-channel"), exports);
33
35
  __exportStar(require("./fapi"), exports);
36
+ // An organization's audit trail for its admins (`<OrganizationAuditLog/>` in every framework SDK).
37
+ __exportStar(require("./organization-audit-log"), exports);
34
38
  // Referral attribution: capture the visitor's referral and send it on sign-up.
35
39
  __exportStar(require("./referral"), exports);
36
40
  // Development instances: sign-in from localhost where the browser blocks the instance's cookie.
@@ -54,12 +58,24 @@ __exportStar(require("./sign-out-events"), exports);
54
58
  __exportStar(require("./native"), exports);
55
59
  __exportStar(require("./native-session"), exports);
56
60
  __exportStar(require("./passkey"), exports);
61
+ // The sign-in's MFA steps: second-factor setup (authenticator app / texts) and the texted / emailed code.
62
+ __exportStar(require("./mfa-enrollment"), exports);
63
+ // Passkey sign-in's ceremony start, carrying the sign-in captcha when one is required.
64
+ __exportStar(require("./passkey-sign-in"), exports);
65
+ // Passkey-only sign-up (the account is created when its passkey registers).
66
+ __exportStar(require("./passkey-sign-up"), exports);
57
67
  __exportStar(require("./telegram"), exports);
58
68
  __exportStar(require("./siwe"), exports);
59
69
  __exportStar(require("./telemetry"), exports);
60
70
  __exportStar(require("./reauth"), exports);
61
71
  // End-user API key self-service (`/v1/client/me/api_keys`).
62
72
  __exportStar(require("./api-keys"), exports);
73
+ __exportStar(require("./organizations"), exports);
74
+ __exportStar(require("./phone-numbers"), exports);
75
+ // Username availability + the "Last used" sign-in method hint.
76
+ __exportStar(require("./account-hints"), exports);
77
+ // Self-service profile update (incl. user-editable identity traits).
78
+ __exportStar(require("./profile"), exports);
63
79
  __exportStar(require("./connect"), exports);
64
80
  __exportStar(require("./password-reset"), exports);
65
81
  __exportStar(require("./check-session"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6EAA6E;AAC7E,2CAAyB;AACzB,6CAA2B;AAC3B,sFAAsF;AACtF,mDAAiC;AACjC,gDAA8B;AAC9B,iDAA+B;AAC/B,4CAA0B;AAC1B,iDAA+B;AAC/B,kDAAgC;AAChC,uEAAuE;AACvE,2CAAyB;AACzB,6CAA2B;AAC3B,qFAAqF;AACrF,kDAAgC;AAChC,yCAAuB;AACvB,+EAA+E;AAC/E,6CAA2B;AAC3B,gGAAgG;AAChG,6CAA0G;AAAjG,gHAAA,iBAAiB,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAAE,6GAAA,cAAc,OAAA;AAClF,qDAW2B;AAVzB,oHAAA,iBAAiB,OAAA;AACjB,2HAAA,wBAAwB,OAAA;AACxB,oHAAA,iBAAiB,OAAA;AACjB,gHAAA,aAAa,OAAA;AACb,wHAAA,qBAAqB,OAAA;AACrB,uHAAA,oBAAoB,OAAA;AAMtB,iEAAiE;AACjE,iDAA+B;AAC/B,4CAA0B;AAC1B,yFAAyF;AACzF,oDAAkC;AAClC,2CAAyB;AACzB,mDAAiC;AACjC,4CAA0B;AAC1B,6CAA2B;AAC3B,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA4D;AAC5D,6CAA2B;AAC3B,4CAA0B;AAC1B,mDAAiC;AACjC,kDAAgC;AAChC,sDAAsD;AACtD,wDAAsC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,4CAA0B;AAC1B,kFAAkF;AAClF,mDAAiC;AACjC,4FAA4F;AAC5F,kDAAgC;AAChC,kFAAkF;AAClF,yEAAyE;AACzE,oEAAoE;AACpE,uDAAqC;AACrC,sDAAoC;AACpC,uEAAuE;AACvE,gDAA8B;AAC9B,0EAA0E;AAC1E,4EAA4E;AAC5E,0CAa0B;AARxB,iGAAA,QAAQ,OAAA;AACR,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,+GAAA,sBAAsB,OAAA;AACtB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6EAA6E;AAC7E,2CAAyB;AACzB,6CAA2B;AAC3B,yDAAyD;AACzD,kDAAgC;AAChC,sFAAsF;AACtF,mDAAiC;AACjC,gDAA8B;AAC9B,iDAA+B;AAC/B,4CAA0B;AAC1B,iDAA+B;AAC/B,kDAAgC;AAChC,uEAAuE;AACvE,2CAAyB;AACzB,6CAA2B;AAC3B,qFAAqF;AACrF,kDAAgC;AAChC,yCAAuB;AACvB,mGAAmG;AACnG,2DAAyC;AACzC,+EAA+E;AAC/E,6CAA2B;AAC3B,gGAAgG;AAChG,6CAA0G;AAAjG,gHAAA,iBAAiB,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAAE,6GAAA,cAAc,OAAA;AAClF,qDAW2B;AAVzB,oHAAA,iBAAiB,OAAA;AACjB,2HAAA,wBAAwB,OAAA;AACxB,oHAAA,iBAAiB,OAAA;AACjB,gHAAA,aAAa,OAAA;AACb,wHAAA,qBAAqB,OAAA;AACrB,uHAAA,oBAAoB,OAAA;AAMtB,iEAAiE;AACjE,iDAA+B;AAC/B,4CAA0B;AAC1B,yFAAyF;AACzF,oDAAkC;AAClC,2CAAyB;AACzB,mDAAiC;AACjC,4CAA0B;AAC1B,0GAA0G;AAC1G,mDAAiC;AACjC,uFAAuF;AACvF,oDAAkC;AAClC,4EAA4E;AAC5E,oDAAkC;AAClC,6CAA2B;AAC3B,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA4D;AAC5D,6CAA2B;AAC3B,kDAAgC;AAChC,kDAAgC;AAChC,+DAA+D;AAC/D,kDAAgC;AAChC,qEAAqE;AACrE,4CAA0B;AAC1B,4CAA0B;AAC1B,mDAAiC;AACjC,kDAAgC;AAChC,sDAAsD;AACtD,wDAAsC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,4CAA0B;AAC1B,kFAAkF;AAClF,mDAAiC;AACjC,4FAA4F;AAC5F,kDAAgC;AAChC,kFAAkF;AAClF,yEAAyE;AACzE,oEAAoE;AACpE,uDAAqC;AACrC,sDAAoC;AACpC,uEAAuE;AACvE,gDAA8B;AAC9B,0EAA0E;AAC1E,4EAA4E;AAC5E,0CAa0B;AARxB,iGAAA,QAAQ,OAAA;AACR,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,+GAAA,sBAAsB,OAAA;AACtB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { CaptchaFlowKey, FlowCaptcha } from './captcha-widget';
2
- import { type EmailDelivery } from './environment';
2
+ import { type AccountUx, type EmailDelivery } from './environment';
3
3
  import type { FapiClient } from './fapi';
4
4
  /**
5
5
  * The instance's public sign-in / sign-up settings, read from
@@ -28,6 +28,12 @@ export interface InstanceSettings {
28
28
  * server that does not say.
29
29
  */
30
30
  emailDelivery: EmailDelivery;
31
+ /**
32
+ * The username rule (null while usernames are off), whether "Last used"
33
+ * badges are shown, and code-vs-link email proofs. When usernames are on, a
34
+ * `username` entry is already in {@link signUpFields}.
35
+ */
36
+ account: AccountUx;
31
37
  }
32
38
  /** One configurable sign-up field, exactly as `/v1/appearance` resolves it. */
33
39
  export interface PublicSignUpField {
@@ -48,7 +48,21 @@ function instanceSettingsFrom(body) {
48
48
  required: legalRaw.required === true,
49
49
  }
50
50
  : NO_LEGAL;
51
- return { captchaFlows, signUpFields, legal, emailDelivery: (0, environment_1.emailDeliveryFrom)(root) };
51
+ const account = (0, environment_1.accountUxFrom)(root);
52
+ // Usernames on: the create-account form collects one, drawn as the first
53
+ // extra field (keyed `username` — the server takes it as the username).
54
+ if (account.username && !signUpFields.some((f) => f.key === 'username')) {
55
+ signUpFields.unshift({
56
+ key: 'username',
57
+ label: 'Username',
58
+ type: 'text',
59
+ required: account.username.requiredAtSignUp,
60
+ placeholder: null,
61
+ options: [],
62
+ builtin: true,
63
+ });
64
+ }
65
+ return { captchaFlows, signUpFields, legal, emailDelivery: (0, environment_1.emailDeliveryFrom)(root), account };
52
66
  }
53
67
  /**
54
68
  * Fetch the instance's public settings (`GET /v1/appearance`). Null when the
@@ -1 +1 @@
1
- {"version":3,"file":"instance-settings.js","sourceRoot":"","sources":["../src/instance-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance-settings.js","sourceRoot":"","sources":["../src/instance-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * The sign-in's MFA steps, shared by the prebuilt components of every framework
3
+ * SDK: setting up a second factor mid-sign-in (`needs_mfa_enrollment`) and the
4
+ * texted / emailed alternatives at the second-factor step.
5
+ *
6
+ * Enrolment (§11.1 MFA policy `required`, for an account with no factor yet):
7
+ *
8
+ * - Authenticator app: `prepare_mfa_enrollment` (`strategy: "totp"`) returns
9
+ * the setup key, the otpauth URI and its QR image (`qr_code`, a data: URL);
10
+ * the user confirms with the code(s) the app shows.
11
+ * - Text message, where the app offers the SMS factor and can text: the user
12
+ * types a phone number, `prepare_mfa_enrollment` (`strategy: "phone_code"`)
13
+ * texts a code, and the user confirms with it.
14
+ *
15
+ * Either confirmation (`attempt_mfa_enrollment`, posted by `advance` with the
16
+ * values {@link MfaEnrollmentController.submit} returns) completes the sign-in
17
+ * and comes with the account's one-time recovery codes. `advance` moves them
18
+ * off the attempt into `FlowState.recoveryCodes`; the components show them
19
+ * ({@link pendingRecoveryCodes}: copy, download as .txt, "I've saved my codes")
20
+ * and only then exchange the ticket ({@link acknowledgeRecoveryCodes}).
21
+ *
22
+ * The component draws the state; {@link createMfaEnrollment} owns the requests,
23
+ * so every framework behaves the same.
24
+ */
25
+ import type { FieldError } from './attempt';
26
+ import type { AccountUx } from './environment';
27
+ import type { FapiClient, FlowState } from './fapi';
28
+ export type MfaEnrollmentStrategy = 'totp' | 'phone_code';
29
+ /** What the app lets a sign-in's MFA steps offer. */
30
+ export interface MfaChoices {
31
+ /** Set up an authenticator app. */
32
+ totp: boolean;
33
+ /** Set up texted codes, and "Text me a code instead" at the second factor. */
34
+ sms: boolean;
35
+ /** "Email me a code instead" at the second factor. */
36
+ emailCode: boolean;
37
+ /** How many authenticator codes enrolment asks for. */
38
+ totpCodes: 1 | 2;
39
+ }
40
+ /**
41
+ * The MFA choices from the instance's settings (`InstanceSettings.account`).
42
+ * A server that does not publish `account.mfa` gets the authenticator app only,
43
+ * with two code fields (an instance asking for one code uses the first). Texted
44
+ * codes are offered only where the server says the app can text, so nobody is
45
+ * shown an option that cannot work.
46
+ */
47
+ export declare function mfaChoicesFrom(account: Pick<AccountUx, 'emailSecondFactor' | 'mfa'> | null | undefined): MfaChoices;
48
+ /** A factor being set up: the authenticator's setup, or the number a code was texted to. */
49
+ export interface MfaEnrollment {
50
+ strategy: MfaEnrollmentStrategy;
51
+ factorId: string;
52
+ /** totp: the setup key (shown once). */
53
+ secret?: string;
54
+ /** totp: the otpauth:// URI. */
55
+ uri?: string;
56
+ /** totp: the URI as a QR image (a data: URL), when the server sends one. */
57
+ qrCode?: string;
58
+ /** phone_code: the number the code was texted to, masked. */
59
+ phone?: string;
60
+ }
61
+ /** `POST /v1/client/sign_ins/:id/prepare_mfa_enrollment`. */
62
+ export declare function prepareMfaEnrollment(client: FapiClient, attemptId: string, input: {
63
+ strategy: 'totp';
64
+ } | {
65
+ strategy: 'phone_code';
66
+ phone: string;
67
+ }): Promise<{
68
+ enrollment: MfaEnrollment | null;
69
+ errors: FieldError[];
70
+ status: number;
71
+ }>;
72
+ /** A setup key split into groups of four, for reading off the screen. */
73
+ export declare function groupSetupKey(secret: string): string;
74
+ export interface MfaEnrollmentState {
75
+ /** The methods on offer, in display order. */
76
+ options: MfaEnrollmentStrategy[];
77
+ /** The method being set up; null while the user chooses (both are offered). */
78
+ method: MfaEnrollmentStrategy | null;
79
+ /** The prepared factor; null before prepare (and, for texts, before the number is sent). */
80
+ enrollment: MfaEnrollment | null;
81
+ busy: boolean;
82
+ /** This step's own errors (prepare); the confirmation's come back on the flow. */
83
+ errors: FieldError[];
84
+ /** How many authenticator code fields to draw. */
85
+ totpCodes: 1 | 2;
86
+ }
87
+ export interface MfaEnrollmentController {
88
+ readonly state: MfaEnrollmentState;
89
+ /** Called after every state change; returns the unsubscribe. */
90
+ subscribe(listener: (state: MfaEnrollmentState) => void): () => void;
91
+ /**
92
+ * Begin (or keep) the step for this attempt. A new attempt starts over; with
93
+ * only the authenticator app on offer its setup is fetched straight away.
94
+ */
95
+ start(attemptId: string): void;
96
+ /** Pick a method: the authenticator app is prepared at once; texts ask for a number first. */
97
+ choose(method: MfaEnrollmentStrategy): Promise<void>;
98
+ /** Text a code to `phone` (E.164). */
99
+ sendPhone(phone: string): Promise<void>;
100
+ /** Text the code again (same number). */
101
+ resend(): Promise<void>;
102
+ /**
103
+ * The form's submit. Before a code was texted it sends the typed `phone` and
104
+ * resolves null; otherwise it resolves the values to `advance` with (the
105
+ * factor id and the code(s)), or null when there is nothing to submit yet.
106
+ */
107
+ submit(values: Record<string, string>): Promise<Record<string, string> | null>;
108
+ /** Forget the step (the flow left it). */
109
+ reset(): void;
110
+ }
111
+ /** The enrolment step's state and requests, independent of any framework. */
112
+ export declare function createMfaEnrollment(client: FapiClient, choices: MfaChoices | (() => MfaChoices)): MfaEnrollmentController;
113
+ /**
114
+ * The enrolment form's submit button: the catalog key of its label, or null
115
+ * when the step has nothing to submit yet (choosing a method, or fetching the
116
+ * authenticator's setup). `mfa.sendCode` before a code was texted.
117
+ */
118
+ export declare function enrollmentSubmitKey(state: MfaEnrollmentState): 'mfa.sendCode' | 'signIn.submit' | null;
119
+ /**
120
+ * "Text me a code instead" / "Email me a code instead" at the second-factor
121
+ * step: `prepare_second_factor` sends the code (to the account's enrolled phone,
122
+ * or its verified email), and it is then submitted like any second-factor code.
123
+ * Resolves the masked number / address; throws with the server's message (and
124
+ * `code`) when the channel is not offered for this sign-in.
125
+ */
126
+ export declare function prepareSecondFactorCode(client: FapiClient, attemptId: string, strategy: 'sms' | 'email_code'): Promise<{
127
+ sentTo: string;
128
+ }>;
129
+ /**
130
+ * The recovery codes in an `attempt_mfa_enrollment` response (`backup_codes`):
131
+ * the non-empty strings, or null when there are none.
132
+ */
133
+ export declare function recoveryCodesFrom(value: unknown): string[] | null;
134
+ /**
135
+ * The recovery codes to show before the sign-in finishes: set while an
136
+ * enrolment has completed the attempt and the user has not yet said they saved
137
+ * them. A component that gets codes here draws them (once) instead of the
138
+ * finished step, and holds the ticket exchange until
139
+ * {@link acknowledgeRecoveryCodes}.
140
+ */
141
+ export declare function pendingRecoveryCodes(state: Pick<FlowState, 'attempt' | 'recoveryCodes'>): string[] | null;
142
+ /** The flow once the user has saved the codes: forgotten, ready for the ticket exchange. */
143
+ export declare function acknowledgeRecoveryCodes(state: FlowState): FlowState;
144
+ /** The codes as a text file's contents: one per line. */
145
+ export declare function recoveryCodesText(codes: readonly string[]): string;
146
+ /** Copy the codes (one per line) to the clipboard. Resolves whether it worked. */
147
+ export declare function copyRecoveryCodes(codes: readonly string[]): Promise<boolean>;
148
+ /** Whether this page can offer the codes as a download. */
149
+ export declare function canDownloadRecoveryCodes(): boolean;
150
+ /**
151
+ * Save the codes as a .txt file (`recovery-codes.txt`) through a temporary
152
+ * object URL, revoked straight after. Returns whether the download started.
153
+ */
154
+ export declare function downloadRecoveryCodes(codes: readonly string[], filename?: string): boolean;