@atlasauth/js 0.16.0 → 0.18.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 +19 -0
- package/dist/better-auth-bridge.d.ts +62 -0
- package/dist/better-auth-bridge.js +83 -0
- package/dist/better-auth-bridge.js.map +1 -0
- package/dist/captcha-controller.js +1 -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/frontchannel-logout.d.ts +36 -0
- package/dist/frontchannel-logout.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/passkey-sign-up.d.ts +2 -2
- package/dist/passkey-sign-up.js +7 -1
- package/dist/passkey-sign-up.js.map +1 -1
- package/dist/passkey.d.ts +58 -2
- package/dist/passkey.js +61 -0
- package/dist/passkey.js.map +1 -1
- package/dist/sign-out-guard.d.ts +7 -0
- package/dist/sign-out-guard.js +38 -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 +12 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @atlasauth/js changelog
|
|
2
2
|
|
|
3
|
+
## 0.18.0 — 2026-10-24
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Better Auth session bridge for apps whose Better Auth cookie is readable by script: exchanges it once for an Atlas session.
|
|
8
|
+
|
|
9
|
+
## 0.17.0 — 2026-10-24
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `@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.
|
|
14
|
+
- 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`).
|
|
15
|
+
- 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`.
|
|
16
|
+
- 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.
|
|
17
|
+
- 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`.
|
|
18
|
+
- 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`.
|
|
19
|
+
- 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`.
|
|
20
|
+
- Captcha providers CaptchaFox and Vercel BotID (`attestation_url` / `attestationUrl`, `fetchBotIdAttestation`); `isRenderableCaptcha(provider, flow)` takes the flow.
|
|
21
|
+
|
|
3
22
|
## 0.16.0 — 2026-10-23
|
|
4
23
|
|
|
5
24
|
### Added
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Moving from Better Auth, browser side: exchange the visitor's Better Auth
|
|
3
|
+
* session for an Atlas session, once, so the switch signs nobody out.
|
|
4
|
+
*
|
|
5
|
+
* Only for apps whose Better Auth session cookie is readable by script (the old
|
|
6
|
+
* app turned `httpOnly` off). Better Auth's default cookie is HttpOnly — then the
|
|
7
|
+
* exchange belongs on your server: the Next.js middleware's `betterAuthBridge`,
|
|
8
|
+
* or the Express / Fastify / Hono adapters' option of the same name.
|
|
9
|
+
*
|
|
10
|
+
* The call goes to `POST /v1/client/migrations/better_auth/exchange` with cookie
|
|
11
|
+
* delivery: on success Atlas sets its session cookies exactly as a sign-in does,
|
|
12
|
+
* and the Better Auth cookies are cleared from this page. A user who still owes
|
|
13
|
+
* a second factor gets the sign-in attempt to continue
|
|
14
|
+
* (`attemptId` + `status`, the same continuation a redirect sign-in carries).
|
|
15
|
+
*/
|
|
16
|
+
import type { FapiClient } from './fapi';
|
|
17
|
+
export declare const BETTER_AUTH_EXCHANGE_PATH = "/v1/client/migrations/better_auth/exchange";
|
|
18
|
+
export interface BetterAuthExchangeInput {
|
|
19
|
+
/** The Better Auth session cookie value. Default: read from `document.cookie`. */
|
|
20
|
+
token?: string;
|
|
21
|
+
/** Better Auth's `advanced.cookiePrefix` (default `better-auth`). */
|
|
22
|
+
cookiePrefix?: string;
|
|
23
|
+
/** The session cookie's full name, when the old app overrode it. */
|
|
24
|
+
cookieName?: string;
|
|
25
|
+
/** false → the Atlas refresh cookie lasts only for this browser session. */
|
|
26
|
+
remember?: boolean;
|
|
27
|
+
/** Where to read/clear cookies. Default: `document`. */
|
|
28
|
+
document?: {
|
|
29
|
+
cookie: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export type BetterAuthExchangeOutcome =
|
|
33
|
+
/** No Better Auth session cookie here: nothing to do. */
|
|
34
|
+
{
|
|
35
|
+
status: 'none';
|
|
36
|
+
}
|
|
37
|
+
/** Signed in: Atlas set its session cookies. Reload your Atlas client (or the page). */
|
|
38
|
+
| {
|
|
39
|
+
status: 'complete';
|
|
40
|
+
sessionId: string;
|
|
41
|
+
userId: string;
|
|
42
|
+
jwt: string;
|
|
43
|
+
}
|
|
44
|
+
/** A second factor (or MFA enrolment) is owed: continue the attempt with your sign-in UI. */
|
|
45
|
+
| {
|
|
46
|
+
status: 'needs_second_factor' | 'needs_mfa_enrollment';
|
|
47
|
+
attemptId: string;
|
|
48
|
+
}
|
|
49
|
+
/** Refused. `outcome` is Atlas's `bridge_outcome` (`invalid`, `expired`, `reused`, `closed`, …) or `error`. */
|
|
50
|
+
| {
|
|
51
|
+
status: 'refused';
|
|
52
|
+
outcome: string;
|
|
53
|
+
};
|
|
54
|
+
/** The readable Better Auth session cookie value, or undefined. */
|
|
55
|
+
export declare function readBetterAuthCookie(input?: BetterAuthExchangeInput): string | undefined;
|
|
56
|
+
/** Expire the Better Auth cookies this page can reach. */
|
|
57
|
+
export declare function clearBetterAuthCookies(input?: BetterAuthExchangeInput): void;
|
|
58
|
+
/**
|
|
59
|
+
* Exchange the Better Auth session (read from the page, or `input.token`) for
|
|
60
|
+
* an Atlas session. Never throws.
|
|
61
|
+
*/
|
|
62
|
+
export declare function exchangeBetterAuthSession(client: FapiClient, input?: BetterAuthExchangeInput): Promise<BetterAuthExchangeOutcome>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BETTER_AUTH_EXCHANGE_PATH = void 0;
|
|
4
|
+
exports.readBetterAuthCookie = readBetterAuthCookie;
|
|
5
|
+
exports.clearBetterAuthCookies = clearBetterAuthCookies;
|
|
6
|
+
exports.exchangeBetterAuthSession = exchangeBetterAuthSession;
|
|
7
|
+
exports.BETTER_AUTH_EXCHANGE_PATH = '/v1/client/migrations/better_auth/exchange';
|
|
8
|
+
const DEFAULT_PREFIX = 'better-auth';
|
|
9
|
+
function cookieNames(input) {
|
|
10
|
+
const prefix = input.cookiePrefix ?? DEFAULT_PREFIX;
|
|
11
|
+
const session = input.cookieName ?? `${prefix}.session_token`;
|
|
12
|
+
const base = [session, `${prefix}.session_data`, `${prefix}.account_data`, `${prefix}.dont_remember`];
|
|
13
|
+
return { session: [`__Secure-${session}`, session], all: [...base.map((n) => `__Secure-${n}`), ...base] };
|
|
14
|
+
}
|
|
15
|
+
function readCookie(header, name) {
|
|
16
|
+
for (const part of header.split(';')) {
|
|
17
|
+
const [key, ...rest] = part.trim().split('=');
|
|
18
|
+
if (key === name)
|
|
19
|
+
return rest.join('=');
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
/** The readable Better Auth session cookie value, or undefined. */
|
|
24
|
+
function readBetterAuthCookie(input = {}) {
|
|
25
|
+
const doc = input.document ?? (typeof document !== 'undefined' ? document : undefined);
|
|
26
|
+
if (!doc)
|
|
27
|
+
return undefined;
|
|
28
|
+
for (const name of cookieNames(input).session) {
|
|
29
|
+
const value = readCookie(doc.cookie, name);
|
|
30
|
+
if (value)
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
/** Expire the Better Auth cookies this page can reach. */
|
|
36
|
+
function clearBetterAuthCookies(input = {}) {
|
|
37
|
+
const doc = input.document ?? (typeof document !== 'undefined' ? document : undefined);
|
|
38
|
+
if (!doc)
|
|
39
|
+
return;
|
|
40
|
+
for (const name of cookieNames(input).all) {
|
|
41
|
+
doc.cookie = `${name}=; Path=/; Max-Age=0${name.startsWith('__Secure-') ? '; Secure' : ''}`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Refusals after which the Better Auth session will never exchange: its cookies are cleared. */
|
|
45
|
+
const FINAL = new Set(['invalid', 'signature_invalid', 'expired', 'reused', 'user_unavailable']);
|
|
46
|
+
/**
|
|
47
|
+
* Exchange the Better Auth session (read from the page, or `input.token`) for
|
|
48
|
+
* an Atlas session. Never throws.
|
|
49
|
+
*/
|
|
50
|
+
async function exchangeBetterAuthSession(client, input = {}) {
|
|
51
|
+
const token = input.token ?? readBetterAuthCookie(input);
|
|
52
|
+
if (!token)
|
|
53
|
+
return { status: 'none' };
|
|
54
|
+
let response;
|
|
55
|
+
try {
|
|
56
|
+
response = await client.post(exports.BETTER_AUTH_EXCHANGE_PATH, {
|
|
57
|
+
token,
|
|
58
|
+
delivery: 'cookie',
|
|
59
|
+
...(input.remember === false ? { remember: false } : {}),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return { status: 'refused', outcome: 'error' };
|
|
64
|
+
}
|
|
65
|
+
const data = response.data;
|
|
66
|
+
if (response.ok && data?.object === 'session' && data.id && data.jwt) {
|
|
67
|
+
clearBetterAuthCookies(input);
|
|
68
|
+
return { status: 'complete', sessionId: data.id, userId: data.user_id ?? '', jwt: data.jwt };
|
|
69
|
+
}
|
|
70
|
+
if (response.ok &&
|
|
71
|
+
data?.object === 'sign_in_attempt' &&
|
|
72
|
+
data.id &&
|
|
73
|
+
(data.status === 'needs_second_factor' || data.status === 'needs_mfa_enrollment')) {
|
|
74
|
+
clearBetterAuthCookies(input);
|
|
75
|
+
return { status: data.status, attemptId: data.id };
|
|
76
|
+
}
|
|
77
|
+
const outcome = response.errors[0]?.meta?.bridge_outcome;
|
|
78
|
+
const reason = typeof outcome === 'string' ? outcome : 'error';
|
|
79
|
+
if (FINAL.has(reason))
|
|
80
|
+
clearBetterAuthCookies(input);
|
|
81
|
+
return { status: 'refused', outcome: reason };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=better-auth-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-auth-bridge.js","sourceRoot":"","sources":["../src/better-auth-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ function createCaptchaController(initial, settings = {}) {
|
|
|
22
22
|
// The settings the current widget was drawn with, so a redraw happens only
|
|
23
23
|
// when they actually change.
|
|
24
24
|
let drawnKey = null;
|
|
25
|
-
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);
|
|
26
26
|
const eager = () => options.eager ?? options.flow?.widget !== 'invisible';
|
|
27
27
|
const key = () => {
|
|
28
28
|
const f = options.flow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha-controller.js","sourceRoot":"","sources":["../src/captcha-controller.ts"],"names":[],"mappings":";;AAqEA,0DA0FC;AAQD,sDAcC;AAUD,oDAYC;AAaD,gDA8CC;AAQD,oCAUC;AAQD,kDAgBC;AAOD,kDAUC;AAjUD,uCAAsD;AACtD,iCAA+E;AAC/E,2DAAoD;AACpD,uDAA8E;AAG9E,qDAO0B;AAwD1B,SAAgB,uBAAuB,CACrC,OAAkC,EAClC,WAAsC,EAAE;IAExC,IAAI,OAAO,GAA6B,OAAO,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACtF,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,IAAI,MAAM,GAA+B,IAAI,CAAC;IAC9C,4EAA4E;IAC5E,wCAAwC;IACxC,IAAI,KAAK,GAA+B,IAAI,CAAC;IAC7C,2EAA2E;IAC3E,6BAA6B;IAC7B,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAA,oCAAmB,EAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"captcha-controller.js","sourceRoot":"","sources":["../src/captcha-controller.ts"],"names":[],"mappings":";;AAqEA,0DA0FC;AAQD,sDAcC;AAUD,oDAYC;AAaD,gDA8CC;AAQD,oCAUC;AAQD,kDAgBC;AAOD,kDAUC;AAjUD,uCAAsD;AACtD,iCAA+E;AAC/E,2DAAoD;AACpD,uDAA8E;AAG9E,qDAO0B;AAwD1B,SAAgB,uBAAuB,CACrC,OAAkC,EAClC,WAAsC,EAAE;IAExC,IAAI,OAAO,GAA6B,OAAO,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACtF,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,IAAI,MAAM,GAA+B,IAAI,CAAC;IAC9C,4EAA4E;IAC5E,wCAAwC;IACxC,IAAI,KAAK,GAA+B,IAAI,CAAC;IAC7C,2EAA2E;IAC3E,6BAA6B;IAC7B,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAA,oCAAmB,EAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC;IAC1E,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACvB,OAAO,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,IAAI,KAAK,EAAE,EAAE,CAAC;IAC9F,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC;QACd,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAA+B,EAAE;QAC7C,MAAM,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAClD,MAAM,CAAC,GAAG,IAAA,oCAAmB,EAAC,IAAI,EAAE,SAAS,EAAE;YAC7C,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;SAC7E,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,CAAC;QACX,QAAQ,GAAG,GAAG,EAAE,CAAC;QACjB,kEAAkE;QAClE,+DAA+D;QAC/D,CAAC,CAAC,KAAK,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC,EACD,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,EAAE,CAAC;QACT,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE;YAAE,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,MAAM;YACR,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;QACD,SAAS,CAAC,IAAI;YACZ,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,SAAS;gBAAE,OAAO;YACvB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;gBAAE,MAAM,EAAE,CAAC;iBAC/B,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAAE,KAAK,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,EAAE;YACP,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO;YAC7B,MAAM,EAAE,CAAC;YACT,SAAS,GAAG,EAAE,CAAC;YACf,IAAI,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE;gBAAE,KAAK,EAAE,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC3B,IAAI,CAAC,GAAG,MAAM,CAAC;YACf,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAAE,CAAC,GAAG,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;gBAC5B,KAAK,GAAG,CAAC,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;gBACpE,IAAI,MAAM,KAAK,CAAC;oBAAE,KAAK,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,KAAK;QACL,OAAO;YACL,MAAM,EAAE,CAAC;YACT,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CACnC,MAAoB,EACpB,CAA0B;IAE1B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC,IAAA,+BAAc,EAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,eAAe,GAAG,IAAI,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC;SACtF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,IAAoC,EACpC,KAAgB,EAChB,iBAA6B;IAE7B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,kBAAQ,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACjF,MAAM,UAAU,GAAG,IAAI,KAAK,iBAAiB,CAAC;IAC9C,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,UAAU,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC;QAC/E,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,kBAAkB,CACtC,MAAkB,EAClB,KAAgB,EAChB,MAA8B,EAC9B,IAA6F;IAE7F,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,kBAAQ,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACjF,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACvC,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAChE,IAAI,MAAM,CAAC,UAAU;YAAE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACtD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,GAAG;oBACN,GAAG,MAAM;oBACT,UAAU,EACR,UAAU,IAAI,CAAE,KAAK,CAAC,OAAiD,EAAE,UAAU,IAAI,EAAE,CAAC;oBAC5F,aAAa,EAAE,KAAK;iBACrB,CAAC;gBACF,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACtC,mDAAmD;gBACnD,OAAO;oBACL,KAAK,EAAE;wBACL,GAAG,KAAK;wBACR,IAAI,EAAE,KAAK;wBACX,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;qBACvE;oBACD,UAAU;iBACX,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,GAAG,MAAM,IAAA,cAAO,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC;IACzF,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;QAC9B,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzE,IAAI,SAAS,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAChC,MAAkB,EAClB,MAA8B,EAC9B,IAA0F;IAE1F,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,IAAI,IAAI,GAAG,MAAM,IAAA,kBAAW,EAAC,MAAM,EAAE,IAAA,iCAAa,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CACvC,MAAkB,EAClB,MAA8B,EAC9B,IAA0F;IAE1F,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,iCAAa,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9E,IAAI,IAAI,GAAG,MAAM,IAAA,oCAAkB,EAAC,MAAM,EAAE;QAC1C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM;QACN,OAAO;QACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CACvC,MAAkB,EAClB,KAAgB,EAChB,IAAyD;IAEzD,MAAM,IAAI,GAAG,MAAM,IAAA,uCAAqB,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5H,CAAC;AACJ,CAAC"}
|
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
|
}
|
package/dist/captcha.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.loadCaptchaScript = loadCaptchaScript;
|
|
|
4
4
|
exports.resetCaptchaScripts = resetCaptchaScripts;
|
|
5
5
|
exports.captcha = captcha;
|
|
6
6
|
const atlas_captcha_1 = require("./atlas-captcha");
|
|
7
|
+
const captcha_widget_1 = require("./captcha-widget");
|
|
7
8
|
/**
|
|
8
9
|
* The widget CDN script per provider. A string is a fixed URL (rendered
|
|
9
10
|
* explicitly); a function builds the URL from the site key (reCAPTCHA v3 embeds
|
|
@@ -14,6 +15,7 @@ const PROVIDER_SCRIPTS = {
|
|
|
14
15
|
turnstile: 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit',
|
|
15
16
|
recaptcha: 'https://www.google.com/recaptcha/api.js?render=explicit',
|
|
16
17
|
recaptcha_v3: (siteKey) => `https://www.google.com/recaptcha/api.js?render=${encodeURIComponent(siteKey)}`,
|
|
18
|
+
captchafox: 'https://cdn.captchafox.com/api.js?render=explicit',
|
|
17
19
|
};
|
|
18
20
|
/** One-shot loaders, keyed by script URL, so a provider script injects once. */
|
|
19
21
|
const scriptLoads = new Map();
|
|
@@ -99,6 +101,27 @@ function renderWidget(provider, siteKey, element, action, widgetMode) {
|
|
|
99
101
|
});
|
|
100
102
|
return;
|
|
101
103
|
}
|
|
104
|
+
case 'captchafox': {
|
|
105
|
+
const api = w.captchafox;
|
|
106
|
+
if (!api)
|
|
107
|
+
return reject(new Error('CaptchaFox did not load.'));
|
|
108
|
+
const fail = () => reject(new Error('CaptchaFox challenge failed.'));
|
|
109
|
+
Promise.resolve(api.render(element, {
|
|
110
|
+
sitekey: siteKey,
|
|
111
|
+
mode: invisible ? 'hidden' : 'inline',
|
|
112
|
+
onVerify: (token) => resolve(token),
|
|
113
|
+
onError: fail,
|
|
114
|
+
onFail: fail,
|
|
115
|
+
})).then((id) => {
|
|
116
|
+
if (invisible && api.execute) {
|
|
117
|
+
Promise.resolve(api.execute(id)).then((token) => {
|
|
118
|
+
if (typeof token === 'string' && token)
|
|
119
|
+
resolve(token);
|
|
120
|
+
}, fail);
|
|
121
|
+
}
|
|
122
|
+
}, fail);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
102
125
|
default:
|
|
103
126
|
reject(new Error(`Captcha provider "${provider}" has no browser widget.`));
|
|
104
127
|
}
|
|
@@ -141,6 +164,13 @@ function captcha(client) {
|
|
|
141
164
|
},
|
|
142
165
|
}).token;
|
|
143
166
|
}
|
|
167
|
+
if (cfg.provider === 'vercel_botid') {
|
|
168
|
+
// No widget: the app's own Vercel route signs a BotID verdict.
|
|
169
|
+
if (!cfg.attestation_url) {
|
|
170
|
+
throw new Error('Vercel BotID needs an attestation URL (captcha.attestationUrl) to fetch a verdict from.');
|
|
171
|
+
}
|
|
172
|
+
return (0, captcha_widget_1.fetchBotIdAttestation)(cfg.attestation_url);
|
|
173
|
+
}
|
|
144
174
|
if (cfg.provider === 'none' || !cfg.site_key) {
|
|
145
175
|
throw new Error(`No renderable captcha provider is configured${action ? ` for "${action}"` : ''}.`);
|
|
146
176
|
}
|
package/dist/captcha.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../src/captcha.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../src/captcha.ts"],"names":[],"mappings":"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"}
|