@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.
- package/CHANGELOG.md +12 -0
- package/dist/account-hints.d.ts +53 -0
- package/dist/account-hints.js +114 -0
- package/dist/account-hints.js.map +1 -0
- package/dist/attempt.d.ts +3 -1
- package/dist/attempt.js.map +1 -1
- package/dist/captcha-controller.d.ts +21 -0
- package/dist/captcha-controller.js +35 -0
- package/dist/captcha-controller.js.map +1 -1
- package/dist/environment.d.ts +48 -0
- package/dist/environment.js +54 -1
- package/dist/environment.js.map +1 -1
- package/dist/fapi.d.ts +29 -0
- package/dist/fapi.js +90 -7
- package/dist/fapi.js.map +1 -1
- package/dist/impersonation.d.ts +44 -0
- package/dist/impersonation.js +47 -0
- package/dist/impersonation.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/instance-settings.d.ts +7 -1
- package/dist/instance-settings.js +15 -1
- package/dist/instance-settings.js.map +1 -1
- package/dist/mfa-enrollment.d.ts +154 -0
- package/dist/mfa-enrollment.js +288 -0
- package/dist/mfa-enrollment.js.map +1 -0
- package/dist/organization-audit-log.d.ts +63 -0
- package/dist/organization-audit-log.js +96 -0
- package/dist/organization-audit-log.js.map +1 -0
- package/dist/organizations.d.ts +330 -0
- package/dist/organizations.js +375 -0
- package/dist/organizations.js.map +1 -0
- package/dist/passkey-sign-in.d.ts +40 -0
- package/dist/passkey-sign-in.js +41 -0
- package/dist/passkey-sign-in.js.map +1 -0
- package/dist/passkey-sign-up.d.ts +46 -0
- package/dist/passkey-sign-up.js +98 -0
- package/dist/passkey-sign-up.js.map +1 -0
- package/dist/password-reset.d.ts +12 -0
- package/dist/password-reset.js +15 -0
- package/dist/password-reset.js.map +1 -1
- package/dist/phone-numbers.d.ts +43 -0
- package/dist/phone-numbers.js +65 -0
- package/dist/phone-numbers.js.map +1 -0
- package/dist/profile.d.ts +24 -0
- package/dist/profile.js +24 -0
- package/dist/profile.js.map +1 -0
- package/dist/referral-detect.js +1 -1
- package/dist/referral.d.ts +1 -1
- package/dist/referral.js +3 -2
- package/dist/referral.js.map +1 -1
- package/dist/sign-out-guard.d.ts +8 -0
- package/dist/sign-out-guard.js +15 -0
- package/dist/sign-out-guard.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- 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
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":";;
|
|
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;
|