@atlasauth/js 0.15.0 → 0.17.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 +25 -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 +36 -1
- package/dist/captcha-controller.js.map +1 -1
- package/dist/captcha-widget.d.ts +20 -2
- package/dist/captcha-widget.js +79 -4
- package/dist/captcha-widget.js.map +1 -1
- package/dist/captcha.d.ts +5 -0
- package/dist/captcha.js +30 -0
- package/dist/captcha.js.map +1 -1
- package/dist/compat.d.ts +149 -0
- package/dist/compat.js +363 -0
- package/dist/compat.js.map +1 -0
- package/dist/device-authorization.d.ts +70 -0
- package/dist/device-authorization.js +97 -0
- package/dist/device-authorization.js.map +1 -0
- package/dist/email-code-check.d.ts +60 -0
- package/dist/email-code-check.js +51 -0
- package/dist/email-code-check.js.map +1 -0
- 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/frontchannel-logout.d.ts +36 -0
- package/dist/frontchannel-logout.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 +12 -0
- package/dist/index.js +21 -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 +104 -0
- package/dist/passkey-sign-up.js.map +1 -0
- package/dist/passkey.d.ts +58 -2
- package/dist/passkey.js +61 -0
- package/dist/passkey.js.map +1 -1
- 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 +15 -0
- package/dist/sign-out-guard.js +53 -4
- package/dist/sign-out-guard.js.map +1 -1
- package/dist/sign-out.d.ts +23 -0
- package/dist/sign-out.js +37 -2
- package/dist/sign-out.js.map +1 -1
- package/dist/upstream-logout.d.ts +26 -0
- package/dist/upstream-logout.js +60 -0
- package/dist/upstream-logout.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +13 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @atlasauth/js changelog
|
|
2
2
|
|
|
3
|
+
## 0.17.0 — 2026-10-24
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `@atlasauth/js/compat`: `createAuth0CompatClient` / `Auth0CompatClient`, a drop-in for `@auth0/auth0-spa-js` on Atlas for framework-free browser apps (`loginWithRedirect`, `handleRedirectCallback`, `loginWithPopup`, `isAuthenticated`, `getUser`, `getIdTokenClaims`, `getTokenSilently` incl. templates and `detailedResponse`, `getTokenWithPopup`, `checkSession`, `logout`), with `Auth0CompatError` codes. What `atlas migrate code --from auth0` rewrites auth0-spa-js onto.
|
|
8
|
+
- Device sign-in approval on your own page (RFC 8628): `lookupDeviceAuthorization(client, userCode)`, `approveDeviceAuthorization(client, authorization)` and `denyDeviceAuthorization(...)` over `/v1/client/me/device_authorizations`, with `formatUserCode`, `userCodeFromUrl` and `DeviceAuthorizationError` (`needsReverification` when the app requires a recent re-authentication to approve, `isInvalidCode`).
|
|
9
|
+
- SAML Single Logout on sign-out: when the server returns `saml_logout_url`, `signOut()` sends the browser there after the local sign-out, so the identity provider's session ends too. It does not when another account was promoted. `signOut({ samlLogout: false })` keeps the page, `signOut({ samlLogoutRedirectUrl })` picks where the IdP returns the browser, and `SignOutResult.samlLogoutUrl` reports the URL. Also `safeSamlLogoutUrl`.
|
|
10
|
+
- Upstream (RP-initiated) logout on sign-out: when the session came from a custom OAuth/OIDC provider or an enterprise OIDC connection with RP-initiated logout on, the server returns `upstream_logout_url` and `signOut()` follows it after the local sign-out. `signOut({ upstreamLogout: false })` keeps the page, `signOut({ returnUrl })` picks where the user lands, and `SignOutResult.upstreamLogoutUrl` reports the URL. `SignOutGuard` takes a `navigate` opener (native hosts), used for SAML Single Logout too.
|
|
11
|
+
- A browser follows one logout redirect: if a sign-out returns both `upstream_logout_url` and `saml_logout_url`, the upstream URL is followed and the SAML identity provider is told server-to-server (SOAP back-channel logout, when configured); both URLs are reported. `samlLogoutRedirectUrl` defaults to `returnUrl`.
|
|
12
|
+
- WebAuthn PRF: `getPasskeyAssertion` and passkey registration take `prf` (`PasskeyPrfRequest`: `eval`, `evalByCredential`) and `onExtensionResults` (`PasskeyExtensionResults`); the outputs go to your code only and the `finish` body is unchanged. `passkeyExtensionsInput`, `readExtensionResults`.
|
|
13
|
+
- Check an emailed one-time code without using it up: `checkEmailCode(client, target, code)` (`EmailCodeCheck` with `expires_at` and `attempts_remaining`) for sign-in first and second factor, sign-up verification, step-up and email-address verification; `emailCodeCheckRequest`, `emailCodeTargetForAttempt`.
|
|
14
|
+
- Captcha providers CaptchaFox and Vercel BotID (`attestation_url` / `attestationUrl`, `fetchBotIdAttestation`); `isRenderableCaptcha(provider, flow)` takes the flow.
|
|
15
|
+
|
|
16
|
+
## 0.16.0 — 2026-10-23
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- `createOrganizationAuditLog(client, { pageSize, action })`: the framework-agnostic pager behind every SDK's `<OrganizationAuditLog/>`, with `organizationAuditLogPath`, `describeAuditAction` and the `OrganizationAuditLogEntry` type.
|
|
21
|
+
- Sign-up starts, and every start that can create an account (social, enterprise SSO and SAML, DiscourseConnect, native id_token, external JWT, LDAP, Telegram and wallet sign-ins), send the stable device id, so an instance's accounts-per-device limit counts devices rather than networks, across email and social sign-ups alike. `DEVICE_ID_ROUTES` lists them.
|
|
22
|
+
- The recovery codes an MFA enrolment completes the sign-in with: `advance` moves `backup_codes` off the attempt into `FlowState.recoveryCodes` (memory only), and the components show them before exchanging the ticket with `pendingRecoveryCodes`, `acknowledgeRecoveryCodes`, `copyRecoveryCodes`, `downloadRecoveryCodes` / `canDownloadRecoveryCodes` (a `recovery-codes.txt` file), `recoveryCodesText` and `recoveryCodesFrom`.
|
|
23
|
+
- The sign-in's MFA steps, shared by every framework SDK: `createMfaEnrollment` (the enrolment step's state and requests: authenticator app with `qrCode`, or a texted code), `prepareMfaEnrollment`, `enrollmentSubmitKey`, `groupSetupKey`, `prepareSecondFactorCode` (`sms` or `email_code`) and `mfaChoicesFrom`.
|
|
24
|
+
- `requestForStep` posts a texted enrolment as `{ factor_id, code }` (values with `enrollStrategy: 'phone_code'`).
|
|
25
|
+
- `AccountUx.mfa` (`{ totp, sms, totpCodes }`), read from `account.mfa` when the server sends it.
|
|
26
|
+
- `beginPasskeySignIn(client, { captcha })`: the passkey sign-in start (`sign_ins/passkey/begin`) with the sign-in captcha folded in. It sends `captcha_token` when the token source has one, and after a `CAPTCHA_REQUIRED` / `CAPTCHA_FAILED` refusal asks once for a fresh token and retries once.
|
|
27
|
+
|
|
3
28
|
## 0.15.0
|
|
4
29
|
|
|
5
30
|
### Added
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { FapiClient } from './fapi';
|
|
2
|
+
import type { UsernameRule } from './environment';
|
|
3
|
+
/**
|
|
4
|
+
* Sign-up / sign-in form hints: whether a username is free (a live hint beside
|
|
5
|
+
* the field) and which method this browser last signed in with (the "Last used"
|
|
6
|
+
* badge). Both are hints only — the server enforces everything on submit.
|
|
7
|
+
*/
|
|
8
|
+
/** `POST /v1/client/usernames/availability`. */
|
|
9
|
+
export interface UsernameAvailability {
|
|
10
|
+
username: string;
|
|
11
|
+
/** Meets the instance's username rule. */
|
|
12
|
+
valid: boolean;
|
|
13
|
+
/** Valid and nobody holds it. */
|
|
14
|
+
available: boolean;
|
|
15
|
+
/** The rule it breaks, when not valid. */
|
|
16
|
+
message?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Ask whether a username is free. Null when the server cannot say (usernames
|
|
20
|
+
* off, rate-limited, unreachable) — a form then simply shows no hint.
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkUsernameAvailability(client: FapiClient, username: string): Promise<UsernameAvailability | null>;
|
|
23
|
+
/** Check a username against the rule locally (before asking the server). */
|
|
24
|
+
export declare function usernameMeetsRule(username: string, rule: UsernameRule): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The method this browser last signed in with, as the server recorded it
|
|
27
|
+
* (`password`, `email_code`, `email_link`, `passkey`, `phone_code`,
|
|
28
|
+
* `oauth_google`, …). Null when none is remembered, the instance turned the
|
|
29
|
+
* hint off, or the server cannot be reached.
|
|
30
|
+
*/
|
|
31
|
+
export declare function fetchLastSignInMethod(client: FapiClient): Promise<string | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Whether a sign-in option is the one last used. `option` is a first factor
|
|
34
|
+
* (`password`, `email_code`, `passkey`, …) or a social provider id (`google`).
|
|
35
|
+
* Email code and email link count as one ("email"), as do the OAuth and the
|
|
36
|
+
* native flow of a provider.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isLastUsed(lastMethod: string | null | undefined, option: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* The label a sign-in form shows for a first-party "Last used" method
|
|
41
|
+
* (`Last used: Password`), or null for social / enterprise methods (badged on
|
|
42
|
+
* their own buttons) and anything unrecognised. `t` is the form's translator.
|
|
43
|
+
*/
|
|
44
|
+
export declare function lastUsedMethodLabel(lastMethod: string | null | undefined, t: (key: string) => string): string | null;
|
|
45
|
+
/**
|
|
46
|
+
* Email OTP second factor: mail a code to the user's verified address for this
|
|
47
|
+
* sign-in attempt (on its `needs_second_factor` step). Resolves the masked
|
|
48
|
+
* address it went to; the code is then submitted like any second-factor code.
|
|
49
|
+
* Throws with the server's message when the factor is not offered.
|
|
50
|
+
*/
|
|
51
|
+
export declare function prepareEmailSecondFactor(client: FapiClient, attemptId: string): Promise<{
|
|
52
|
+
sentTo: string;
|
|
53
|
+
}>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkUsernameAvailability = checkUsernameAvailability;
|
|
4
|
+
exports.usernameMeetsRule = usernameMeetsRule;
|
|
5
|
+
exports.fetchLastSignInMethod = fetchLastSignInMethod;
|
|
6
|
+
exports.isLastUsed = isLastUsed;
|
|
7
|
+
exports.lastUsedMethodLabel = lastUsedMethodLabel;
|
|
8
|
+
exports.prepareEmailSecondFactor = prepareEmailSecondFactor;
|
|
9
|
+
/**
|
|
10
|
+
* Ask whether a username is free. Null when the server cannot say (usernames
|
|
11
|
+
* off, rate-limited, unreachable) — a form then simply shows no hint.
|
|
12
|
+
*/
|
|
13
|
+
async function checkUsernameAvailability(client, username) {
|
|
14
|
+
try {
|
|
15
|
+
const response = await client.post('/v1/client/usernames/availability', { username });
|
|
16
|
+
const d = response.data;
|
|
17
|
+
if (!response.ok || !d)
|
|
18
|
+
return null;
|
|
19
|
+
return {
|
|
20
|
+
username: typeof d.username === 'string' ? d.username : username.trim(),
|
|
21
|
+
valid: d.valid === true,
|
|
22
|
+
available: d.available === true,
|
|
23
|
+
...(typeof d.message === 'string' ? { message: d.message } : {}),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const CHARSET_RE = {
|
|
31
|
+
default: /^[A-Za-z0-9._-]+$/,
|
|
32
|
+
alphanumeric: /^[A-Za-z0-9]+$/,
|
|
33
|
+
alphanumeric_underscore: /^[A-Za-z0-9_]+$/,
|
|
34
|
+
};
|
|
35
|
+
/** Check a username against the rule locally (before asking the server). */
|
|
36
|
+
function usernameMeetsRule(username, rule) {
|
|
37
|
+
const v = username.trim();
|
|
38
|
+
return v.length >= rule.minLength && v.length <= rule.maxLength && CHARSET_RE[rule.charset].test(v);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The method this browser last signed in with, as the server recorded it
|
|
42
|
+
* (`password`, `email_code`, `email_link`, `passkey`, `phone_code`,
|
|
43
|
+
* `oauth_google`, …). Null when none is remembered, the instance turned the
|
|
44
|
+
* hint off, or the server cannot be reached.
|
|
45
|
+
*/
|
|
46
|
+
async function fetchLastSignInMethod(client) {
|
|
47
|
+
try {
|
|
48
|
+
const response = await client.get('/v1/client/last_sign_in_method');
|
|
49
|
+
const m = response.ok ? response.data?.method : null;
|
|
50
|
+
return typeof m === 'string' && m ? m : null;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Whether a sign-in option is the one last used. `option` is a first factor
|
|
58
|
+
* (`password`, `email_code`, `passkey`, …) or a social provider id (`google`).
|
|
59
|
+
* Email code and email link count as one ("email"), as do the OAuth and the
|
|
60
|
+
* native flow of a provider.
|
|
61
|
+
*/
|
|
62
|
+
function isLastUsed(lastMethod, option) {
|
|
63
|
+
if (!lastMethod)
|
|
64
|
+
return false;
|
|
65
|
+
const norm = (m) => {
|
|
66
|
+
if (m.startsWith('oauth_'))
|
|
67
|
+
return `oauth:${m.slice(6)}`;
|
|
68
|
+
if (m.startsWith('id_token_'))
|
|
69
|
+
return `oauth:${m.slice(9)}`;
|
|
70
|
+
if (m === 'email_code' || m === 'email_link')
|
|
71
|
+
return 'email';
|
|
72
|
+
return m;
|
|
73
|
+
};
|
|
74
|
+
const last = norm(lastMethod);
|
|
75
|
+
return last === norm(option) || last === `oauth:${option}`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The label a sign-in form shows for a first-party "Last used" method
|
|
79
|
+
* (`Last used: Password`), or null for social / enterprise methods (badged on
|
|
80
|
+
* their own buttons) and anything unrecognised. `t` is the form's translator.
|
|
81
|
+
*/
|
|
82
|
+
function lastUsedMethodLabel(lastMethod, t) {
|
|
83
|
+
switch (lastMethod) {
|
|
84
|
+
case 'password':
|
|
85
|
+
return t('signIn.passwordLabel');
|
|
86
|
+
case 'email_code':
|
|
87
|
+
case 'email_link':
|
|
88
|
+
return t('signIn.identifierLabel');
|
|
89
|
+
case 'passkey':
|
|
90
|
+
return 'Passkey';
|
|
91
|
+
case 'phone_code':
|
|
92
|
+
return 'Phone';
|
|
93
|
+
default:
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Email OTP second factor: mail a code to the user's verified address for this
|
|
99
|
+
* sign-in attempt (on its `needs_second_factor` step). Resolves the masked
|
|
100
|
+
* address it went to; the code is then submitted like any second-factor code.
|
|
101
|
+
* Throws with the server's message when the factor is not offered.
|
|
102
|
+
*/
|
|
103
|
+
async function prepareEmailSecondFactor(client, attemptId) {
|
|
104
|
+
const response = await client.post(`/v1/client/sign_ins/${encodeURIComponent(attemptId)}/prepare_second_factor`, { strategy: 'email_code' });
|
|
105
|
+
if (!response.ok) {
|
|
106
|
+
const first = response.errors[0];
|
|
107
|
+
const error = new Error(first?.message ?? 'Could not send the code.');
|
|
108
|
+
if (first?.code)
|
|
109
|
+
error.code = first.code;
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
return { sentTo: typeof response.data?.sent_to === 'string' ? response.data.sent_to : '' };
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=account-hints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-hints.js","sourceRoot":"","sources":["../src/account-hints.ts"],"names":[],"mappings":";;AAwBA,8DAsBC;AASD,8CAGC;AAQD,sDAQC;AAQD,gCAUC;AAOD,kDAiBC;AAQD,4DAeC;AAvHD;;;GAGG;AACI,KAAK,UAAU,yBAAyB,CAC7C,MAAkB,EAClB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAK/B,mCAAmC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO;YACL,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;YACvE,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI;YACvB,SAAS,EAAE,CAAC,CAAC,SAAS,KAAK,IAAI;YAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAA4C;IAC1D,OAAO,EAAE,mBAAmB;IAC5B,YAAY,EAAE,gBAAgB;IAC9B,uBAAuB,EAAE,iBAAiB;CAC3C,CAAC;AAEF,4EAA4E;AAC5E,SAAgB,iBAAiB,CAAC,QAAgB,EAAE,IAAkB;IACpE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtG,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,qBAAqB,CAAC,MAAkB;IAC5D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAuB,gCAAgC,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,UAAqC,EAAE,MAAc;IAC9E,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;QACzB,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,YAAY;YAAE,OAAO,OAAO,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,OAAO,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,SAAS,MAAM,EAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,UAAqC,EACrC,CAA0B;IAE1B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,wBAAwB,CAC5C,MAAkB,EAClB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,wBAAwB,EAC5E,EAAE,QAAQ,EAAE,YAAY,EAAE,CAC3B,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,0BAA0B,CAA8B,CAAC;QACnG,IAAI,KAAK,EAAE,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACzC,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7F,CAAC"}
|
package/dist/attempt.d.ts
CHANGED
|
@@ -54,11 +54,13 @@ export interface AttemptView {
|
|
|
54
54
|
*/
|
|
55
55
|
id: string | null;
|
|
56
56
|
/** The resource type the server stamps on every attempt view. */
|
|
57
|
-
object?: 'sign_in_attempt';
|
|
57
|
+
object?: 'sign_in_attempt' | 'sign_up_attempt';
|
|
58
58
|
status: string;
|
|
59
59
|
/** The identifier the attempt was started with; `null` before one is collected. */
|
|
60
60
|
identifier?: string | null;
|
|
61
61
|
supported_first_factors?: string[];
|
|
62
|
+
/** `passkey` on a passkey-only sign-up (see `awaitingPasskey`). */
|
|
63
|
+
strategy?: string;
|
|
62
64
|
created_session_id?: string | null;
|
|
63
65
|
/** Attempt expiry (epoch ms); `null` on the pre-attempt challenge marker. */
|
|
64
66
|
expires_at?: number | null;
|
package/dist/attempt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt.js","sourceRoot":"","sources":["../src/attempt.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;
|
|
1
|
+
{"version":3,"file":"attempt.js","sourceRoot":"","sources":["../src/attempt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type FieldError } from './attempt';
|
|
2
2
|
import { type FapiClient, type FlowState } from './fapi';
|
|
3
|
+
import type { WebAuthnHost } from './passkey';
|
|
3
4
|
import type { AtlasCaptchaLabels } from './atlas-captcha';
|
|
4
5
|
import { type FlowCaptcha } from './captcha-widget';
|
|
5
6
|
/**
|
|
@@ -103,3 +104,23 @@ export declare function createSignUp(client: FapiClient, values: Record<string,
|
|
|
103
104
|
captcha?: CaptchaController | null;
|
|
104
105
|
t: (key: string) => string;
|
|
105
106
|
}): Promise<FlowState>;
|
|
107
|
+
/**
|
|
108
|
+
* {@link createSignUp} for a passkey-only sign-up (`account.passkeySignUp`):
|
|
109
|
+
* POSTs `/v1/client/sign_ups/passkey` with the email (when the form collected
|
|
110
|
+
* one) and the configured sign-up fields — never a password. No account exists
|
|
111
|
+
* until {@link finishPasskeySignUp} registers the passkey.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createPasskeySignUp(client: FapiClient, values: Record<string, string>, opts: {
|
|
114
|
+
consent: boolean;
|
|
115
|
+
captcha?: CaptchaController | null;
|
|
116
|
+
t: (key: string) => string;
|
|
117
|
+
}): Promise<FlowState>;
|
|
118
|
+
/**
|
|
119
|
+
* The passkey-only sign-up's last step, for a prebuilt form: run the browser
|
|
120
|
+
* ceremony, and the server creates the account when it verifies. A cancelled
|
|
121
|
+
* prompt reads `signUp.passkeyCancelled` from the form's catalog.
|
|
122
|
+
*/
|
|
123
|
+
export declare function finishPasskeySignUp(client: FapiClient, state: FlowState, opts: {
|
|
124
|
+
t: (key: string) => string;
|
|
125
|
+
host?: WebAuthnHost;
|
|
126
|
+
}): Promise<FlowState>;
|
|
@@ -5,9 +5,12 @@ exports.localizeCaptchaErrors = localizeCaptchaErrors;
|
|
|
5
5
|
exports.signInCaptchaOptions = signInCaptchaOptions;
|
|
6
6
|
exports.advanceWithCaptcha = advanceWithCaptcha;
|
|
7
7
|
exports.createSignUp = createSignUp;
|
|
8
|
+
exports.createPasskeySignUp = createPasskeySignUp;
|
|
9
|
+
exports.finishPasskeySignUp = finishPasskeySignUp;
|
|
8
10
|
const attempt_1 = require("./attempt");
|
|
9
11
|
const fapi_1 = require("./fapi");
|
|
10
12
|
const instance_settings_1 = require("./instance-settings");
|
|
13
|
+
const passkey_sign_up_1 = require("./passkey-sign-up");
|
|
11
14
|
const captcha_widget_1 = require("./captcha-widget");
|
|
12
15
|
function createCaptchaController(initial, settings = {}) {
|
|
13
16
|
let options = initial ?? { flow: undefined, active: false };
|
|
@@ -19,7 +22,7 @@ function createCaptchaController(initial, settings = {}) {
|
|
|
19
22
|
// The settings the current widget was drawn with, so a redraw happens only
|
|
20
23
|
// when they actually change.
|
|
21
24
|
let drawnKey = null;
|
|
22
|
-
const needed = () => options.active && !!options.flow && (0, captcha_widget_1.isRenderableCaptcha)(options.flow.provider);
|
|
25
|
+
const needed = () => options.active && !!options.flow && (0, captcha_widget_1.isRenderableCaptcha)(options.flow.provider, options.flow);
|
|
23
26
|
const eager = () => options.eager ?? options.flow?.widget !== 'invisible';
|
|
24
27
|
const key = () => {
|
|
25
28
|
const f = options.flow;
|
|
@@ -204,4 +207,36 @@ async function createSignUp(client, values, opts) {
|
|
|
204
207
|
opts.captcha.reset();
|
|
205
208
|
return next;
|
|
206
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* {@link createSignUp} for a passkey-only sign-up (`account.passkeySignUp`):
|
|
212
|
+
* POSTs `/v1/client/sign_ups/passkey` with the email (when the form collected
|
|
213
|
+
* one) and the configured sign-up fields — never a password. No account exists
|
|
214
|
+
* until {@link finishPasskeySignUp} registers the passkey.
|
|
215
|
+
*/
|
|
216
|
+
async function createPasskeySignUp(client, values, opts) {
|
|
217
|
+
const token = opts.captcha ? await opts.captcha.getToken() : null;
|
|
218
|
+
const { email, fields, consent } = (0, instance_settings_1.toSignUpInput)(values, opts.consent, token);
|
|
219
|
+
let next = await (0, passkey_sign_up_1.startPasskeySignUp)(client, {
|
|
220
|
+
...(email ? { email } : {}),
|
|
221
|
+
fields,
|
|
222
|
+
consent,
|
|
223
|
+
...(token ? { captchaToken: token } : {}),
|
|
224
|
+
});
|
|
225
|
+
next = { ...next, errors: localizeCaptchaErrors(next.errors, opts.t).errors };
|
|
226
|
+
if (next.errors.length > 0 && opts.captcha?.needed)
|
|
227
|
+
opts.captcha.reset();
|
|
228
|
+
return next;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The passkey-only sign-up's last step, for a prebuilt form: run the browser
|
|
232
|
+
* ceremony, and the server creates the account when it verifies. A cancelled
|
|
233
|
+
* prompt reads `signUp.passkeyCancelled` from the form's catalog.
|
|
234
|
+
*/
|
|
235
|
+
async function finishPasskeySignUp(client, state, opts) {
|
|
236
|
+
const next = await (0, passkey_sign_up_1.registerSignUpPasskey)(client, state, opts.host ? { host: opts.host } : {});
|
|
237
|
+
return {
|
|
238
|
+
...next,
|
|
239
|
+
errors: next.errors.map((e) => (e.code === 'PASSKEY_CANCELLED' ? { ...e, message: opts.t('signUp.passkeyCancelled') } : e)),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
207
242
|
//# sourceMappingURL=captcha-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha-controller.js","sourceRoot":"","sources":["../src/captcha-controller.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"captcha-controller.js","sourceRoot":"","sources":["../src/captcha-controller.ts"],"names":[],"mappings":"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"}
|
package/dist/captcha-widget.d.ts
CHANGED
|
@@ -44,9 +44,21 @@ export interface FlowCaptcha {
|
|
|
44
44
|
* each fresh challenge. Set by `/v1/appearance`.
|
|
45
45
|
*/
|
|
46
46
|
challengeUrl?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Provider `vercel_botid`: the route on the app's own Vercel deployment that
|
|
49
|
+
* runs `checkBotId()` and answers `{ token }` (a signed BotID verdict). The
|
|
50
|
+
* widget POSTs to it — BotID's client (`initBotId`) must protect this path —
|
|
51
|
+
* and sends the token as `captcha_token`.
|
|
52
|
+
*/
|
|
53
|
+
attestationUrl?: string;
|
|
47
54
|
}
|
|
48
|
-
/**
|
|
49
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Whether the prebuilt UIs can draw this provider's widget. Vercel BotID draws
|
|
57
|
+
* nothing — the "widget" fetches a signed verdict from the app's own route — so
|
|
58
|
+
* it is only obtainable when the flow names that route (`attestationUrl`); pass
|
|
59
|
+
* the flow to account for it.
|
|
60
|
+
*/
|
|
61
|
+
export declare function isRenderableCaptcha(provider?: string | null, flow?: Pick<FlowCaptcha, 'attestationUrl'> | null): boolean;
|
|
50
62
|
/** True when this flow always needs a rendered token before its request can proceed. */
|
|
51
63
|
export declare function flowNeedsCaptcha(flow: FlowCaptcha | null | undefined): flow is FlowCaptcha;
|
|
52
64
|
/** The two captcha error codes the Frontend API answers a gated request with. */
|
|
@@ -67,6 +79,12 @@ export interface RenderCaptchaOptions {
|
|
|
67
79
|
/** Atlas captcha: a custom challenge fetcher (e.g. through your FAPI proxy) and localised labels. */
|
|
68
80
|
atlas?: Pick<AtlasCaptchaOptions, 'fetchChallenge' | 'labels' | 'workers'>;
|
|
69
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Vercel BotID: no widget. POST the app's own attestation route (same-origin
|
|
84
|
+
* credentials, so the BotID client that protects it can attach its headers)
|
|
85
|
+
* and read the signed verdict `{ token }` it answers with.
|
|
86
|
+
*/
|
|
87
|
+
export declare function fetchBotIdAttestation(attestationUrl: string, fetchImpl?: typeof fetch): Promise<string>;
|
|
70
88
|
/** A widget rendered into a container: its eventual token, and a way to take it down. */
|
|
71
89
|
export interface CaptchaWidgetHandle {
|
|
72
90
|
/** Resolves with the solved token; rejects on provider error/timeout or removal. */
|
package/dist/captcha-widget.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.isRenderableCaptcha = isRenderableCaptcha;
|
|
|
5
5
|
exports.flowNeedsCaptcha = flowNeedsCaptcha;
|
|
6
6
|
exports.isCaptchaError = isCaptchaError;
|
|
7
7
|
exports.loadCaptchaProvider = loadCaptchaProvider;
|
|
8
|
+
exports.fetchBotIdAttestation = fetchBotIdAttestation;
|
|
8
9
|
exports.renderCaptchaWidget = renderCaptchaWidget;
|
|
9
10
|
exports.getCaptchaToken = getCaptchaToken;
|
|
10
11
|
/**
|
|
@@ -40,14 +41,25 @@ const RENDERABLE = new Set([
|
|
|
40
41
|
'recaptcha',
|
|
41
42
|
'recaptcha_v3',
|
|
42
43
|
'recaptcha_enterprise',
|
|
44
|
+
'captchafox',
|
|
45
|
+
'vercel_botid',
|
|
43
46
|
]);
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Whether the prebuilt UIs can draw this provider's widget. Vercel BotID draws
|
|
49
|
+
* nothing — the "widget" fetches a signed verdict from the app's own route — so
|
|
50
|
+
* it is only obtainable when the flow names that route (`attestationUrl`); pass
|
|
51
|
+
* the flow to account for it.
|
|
52
|
+
*/
|
|
53
|
+
function isRenderableCaptcha(provider, flow) {
|
|
54
|
+
if (!provider || !RENDERABLE.has(provider))
|
|
55
|
+
return false;
|
|
56
|
+
if (provider === 'vercel_botid')
|
|
57
|
+
return !!flow?.attestationUrl;
|
|
58
|
+
return true;
|
|
47
59
|
}
|
|
48
60
|
/** True when this flow always needs a rendered token before its request can proceed. */
|
|
49
61
|
function flowNeedsCaptcha(flow) {
|
|
50
|
-
return !!flow && flow.enabled === true && isRenderableCaptcha(flow.provider);
|
|
62
|
+
return !!flow && flow.enabled === true && isRenderableCaptcha(flow.provider, flow);
|
|
51
63
|
}
|
|
52
64
|
/** The two captcha error codes the Frontend API answers a gated request with. */
|
|
53
65
|
exports.CAPTCHA_ERROR_CODES = ['CAPTCHA_REQUIRED', 'CAPTCHA_FAILED'];
|
|
@@ -76,6 +88,10 @@ const SCRIPTS = {
|
|
|
76
88
|
src: (siteKey) => `https://www.google.com/recaptcha/enterprise.js?render=${encodeURIComponent(siteKey)}`,
|
|
77
89
|
global: 'grecaptcha',
|
|
78
90
|
},
|
|
91
|
+
captchafox: {
|
|
92
|
+
src: () => 'https://cdn.captchafox.com/api.js?render=explicit',
|
|
93
|
+
global: 'captchafox',
|
|
94
|
+
},
|
|
79
95
|
};
|
|
80
96
|
/**
|
|
81
97
|
* Load a provider's script and resolve its global. Idempotent: a second call for
|
|
@@ -184,6 +200,45 @@ function recaptchaV2Token(api, el, siteKey, mode, onTeardown) {
|
|
|
184
200
|
}
|
|
185
201
|
});
|
|
186
202
|
}
|
|
203
|
+
/** CaptchaFox: `render` resolves the widget id; hidden mode runs on `execute`. */
|
|
204
|
+
function captchafoxToken(api, el, siteKey, mode, onTeardown) {
|
|
205
|
+
return new Promise((resolve, reject) => {
|
|
206
|
+
const fail = () => reject(new Error('captcha: captchafox error'));
|
|
207
|
+
Promise.resolve(api.render(el, {
|
|
208
|
+
sitekey: siteKey,
|
|
209
|
+
mode: mode === 'invisible' ? 'hidden' : 'inline',
|
|
210
|
+
onVerify: (token) => resolve(token),
|
|
211
|
+
onError: fail,
|
|
212
|
+
onFail: fail,
|
|
213
|
+
})).then((id) => {
|
|
214
|
+
onTeardown(() => api.remove?.(id));
|
|
215
|
+
if (mode === 'invisible' && api.execute) {
|
|
216
|
+
Promise.resolve(api.execute(id)).then((token) => {
|
|
217
|
+
if (typeof token === 'string' && token)
|
|
218
|
+
resolve(token);
|
|
219
|
+
}, fail);
|
|
220
|
+
}
|
|
221
|
+
}, fail);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Vercel BotID: no widget. POST the app's own attestation route (same-origin
|
|
226
|
+
* credentials, so the BotID client that protects it can attach its headers)
|
|
227
|
+
* and read the signed verdict `{ token }` it answers with.
|
|
228
|
+
*/
|
|
229
|
+
async function fetchBotIdAttestation(attestationUrl, fetchImpl = globalThis.fetch) {
|
|
230
|
+
const response = await fetchImpl(attestationUrl, {
|
|
231
|
+
method: 'POST',
|
|
232
|
+
credentials: 'same-origin',
|
|
233
|
+
headers: { accept: 'application/json' },
|
|
234
|
+
});
|
|
235
|
+
if (!response.ok)
|
|
236
|
+
throw new Error(`captcha: BotID attestation route answered ${response.status}`);
|
|
237
|
+
const body = (await response.json());
|
|
238
|
+
if (typeof body.token !== 'string' || !body.token)
|
|
239
|
+
throw new Error('captcha: BotID attestation missing');
|
|
240
|
+
return body.token;
|
|
241
|
+
}
|
|
187
242
|
/** reCAPTCHA v3 / Enterprise (score): execute programmatically, no visible widget. */
|
|
188
243
|
function recaptchaV3Token(api, siteKey) {
|
|
189
244
|
const run = () => {
|
|
@@ -214,6 +269,24 @@ function renderCaptchaWidget(flow, container, options = {}) {
|
|
|
214
269
|
...options.atlas,
|
|
215
270
|
});
|
|
216
271
|
}
|
|
272
|
+
if (provider === 'vercel_botid') {
|
|
273
|
+
let removed = false;
|
|
274
|
+
const win = (container.ownerDocument?.defaultView ?? globalThis);
|
|
275
|
+
const token = flow.attestationUrl
|
|
276
|
+
? fetchBotIdAttestation(flow.attestationUrl, win.fetch?.bind(win)).then((t) => {
|
|
277
|
+
if (removed)
|
|
278
|
+
throw new Error('captcha: widget removed');
|
|
279
|
+
return t;
|
|
280
|
+
})
|
|
281
|
+
: Promise.reject(new Error('captcha: vercel_botid needs an attestationUrl'));
|
|
282
|
+
token.catch(() => { });
|
|
283
|
+
return {
|
|
284
|
+
token,
|
|
285
|
+
remove() {
|
|
286
|
+
removed = true;
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
}
|
|
217
290
|
const siteKey = flow.siteKey ?? '';
|
|
218
291
|
const mode = flow.widget ?? 'managed';
|
|
219
292
|
const win = (container.ownerDocument?.defaultView ?? globalThis);
|
|
@@ -239,6 +312,8 @@ function renderCaptchaWidget(flow, container, options = {}) {
|
|
|
239
312
|
case 'recaptcha_v3':
|
|
240
313
|
case 'recaptcha_enterprise':
|
|
241
314
|
return recaptchaV3Token(api, siteKey);
|
|
315
|
+
case 'captchafox':
|
|
316
|
+
return captchafoxToken(api, container, siteKey, mode, onTeardown);
|
|
242
317
|
default:
|
|
243
318
|
throw new Error(`captcha: ${provider} is not renderable`);
|
|
244
319
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha-widget.js","sourceRoot":"","sources":["../src/captcha-widget.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"captcha-widget.js","sourceRoot":"","sources":["../src/captcha-widget.ts"],"names":[],"mappings":"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"}
|
package/dist/captcha.d.ts
CHANGED
|
@@ -26,6 +26,11 @@ export interface CaptchaWidgetConfig {
|
|
|
26
26
|
site_key: string | null;
|
|
27
27
|
/** How a widget-drawing provider should render. */
|
|
28
28
|
widget_mode: 'invisible' | 'managed' | 'visible';
|
|
29
|
+
/**
|
|
30
|
+
* Vercel BotID only: the route on your own Vercel deployment that answers
|
|
31
|
+
* `{ token }` (a signed BotID verdict). Null for every other provider.
|
|
32
|
+
*/
|
|
33
|
+
attestation_url?: string | null;
|
|
29
34
|
/** Whether this action ALWAYS requires a passing captcha. */
|
|
30
35
|
enabled: boolean;
|
|
31
36
|
}
|