@keverdjs/fraud-sdk-react 2.0.0 → 3.0.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/README.md +24 -38
- package/dist/index.d.mts +132 -12
- package/dist/index.d.ts +132 -12
- package/dist/index.js +484 -37
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +482 -39
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -18,20 +18,14 @@ yarn add @keverdjs/fraud-sdk-react
|
|
|
18
18
|
|
|
19
19
|
## Quick Start
|
|
20
20
|
|
|
21
|
-
### 1. Wrap your application with KeverdProvider
|
|
22
|
-
|
|
23
|
-
In your `_app.tsx` (Next.js) or root component:
|
|
21
|
+
### 1. Wrap your application with `KeverdProvider`
|
|
24
22
|
|
|
25
23
|
```tsx
|
|
26
24
|
import { KeverdProvider } from '@keverdjs/fraud-sdk-react';
|
|
27
25
|
|
|
28
26
|
function MyApp({ Component, pageProps }) {
|
|
29
27
|
return (
|
|
30
|
-
<KeverdProvider
|
|
31
|
-
loadOptions={{
|
|
32
|
-
apiKey: 'your-api-key-here',
|
|
33
|
-
}}
|
|
34
|
-
>
|
|
28
|
+
<KeverdProvider apiKey="pk_live_your_api_key_here">
|
|
35
29
|
<Component {...pageProps} />
|
|
36
30
|
</KeverdProvider>
|
|
37
31
|
);
|
|
@@ -40,26 +34,19 @@ function MyApp({ Component, pageProps }) {
|
|
|
40
34
|
export default MyApp;
|
|
41
35
|
```
|
|
42
36
|
|
|
43
|
-
### 2. Use
|
|
37
|
+
### 2. Use `useKeverd` in your components
|
|
44
38
|
|
|
45
39
|
```tsx
|
|
46
|
-
import {
|
|
40
|
+
import { useKeverd } from '@keverdjs/fraud-sdk-react';
|
|
47
41
|
|
|
48
42
|
export default function Home() {
|
|
49
|
-
const {
|
|
50
|
-
immediate: true, // Automatically fetch on mount
|
|
51
|
-
extendedResult: true,
|
|
52
|
-
});
|
|
53
|
-
|
|
43
|
+
const { deviceId, riskScore, isLoading } = useKeverd();
|
|
54
44
|
if (isLoading) return <div>Loading...</div>;
|
|
55
|
-
if (error) return <div>Error: {error.message}</div>;
|
|
56
45
|
|
|
57
46
|
return (
|
|
58
47
|
<div>
|
|
59
|
-
<h1>
|
|
60
|
-
<p>
|
|
61
|
-
<p>Reasons: {data?.reasons.join(', ')}</p>
|
|
62
|
-
<button onClick={() => getData()}>Refresh Data</button>
|
|
48
|
+
<h1>Device ID: {deviceId}</h1>
|
|
49
|
+
<p>Risk Score: {riskScore}</p>
|
|
63
50
|
</div>
|
|
64
51
|
);
|
|
65
52
|
}
|
|
@@ -75,7 +62,10 @@ The provider component that initializes the SDK and makes it available to child
|
|
|
75
62
|
|
|
76
63
|
```typescript
|
|
77
64
|
interface KeverdProviderProps {
|
|
78
|
-
|
|
65
|
+
apiKey?: string;
|
|
66
|
+
endpoint?: string;
|
|
67
|
+
debug?: boolean;
|
|
68
|
+
loadOptions?: KeverdLoadOptions; // legacy compatibility
|
|
79
69
|
children: React.ReactNode;
|
|
80
70
|
}
|
|
81
71
|
```
|
|
@@ -89,11 +79,17 @@ interface KeverdLoadOptions {
|
|
|
89
79
|
}
|
|
90
80
|
```
|
|
91
81
|
|
|
92
|
-
###
|
|
82
|
+
### useKeverd
|
|
83
|
+
|
|
84
|
+
High-level hook for quick integrations.
|
|
93
85
|
|
|
94
|
-
|
|
86
|
+
```tsx
|
|
87
|
+
const { deviceId, riskScore, isLoading, error, refresh } = useKeverd();
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### useKeverdVisitorData
|
|
95
91
|
|
|
96
|
-
|
|
92
|
+
Advanced hook to access full visitor and risk payloads.
|
|
97
93
|
|
|
98
94
|
```tsx
|
|
99
95
|
const {
|
|
@@ -156,10 +152,8 @@ Enable debug logging for development:
|
|
|
156
152
|
|
|
157
153
|
```tsx
|
|
158
154
|
<KeverdProvider
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
debug: true,
|
|
162
|
-
}}
|
|
155
|
+
apiKey="your-api-key"
|
|
156
|
+
debug
|
|
163
157
|
>
|
|
164
158
|
{children}
|
|
165
159
|
</KeverdProvider>
|
|
@@ -229,11 +223,7 @@ import { KeverdProvider } from '@keverdjs/fraud-sdk-react';
|
|
|
229
223
|
|
|
230
224
|
function MyApp({ Component, pageProps }: AppProps) {
|
|
231
225
|
return (
|
|
232
|
-
<KeverdProvider
|
|
233
|
-
loadOptions={{
|
|
234
|
-
apiKey: process.env.NEXT_PUBLIC_KEVERD_API_KEY!,
|
|
235
|
-
}}
|
|
236
|
-
>
|
|
226
|
+
<KeverdProvider apiKey={process.env.NEXT_PUBLIC_KEVERD_API_KEY!}>
|
|
237
227
|
<Component {...pageProps} />
|
|
238
228
|
</KeverdProvider>
|
|
239
229
|
);
|
|
@@ -256,11 +246,7 @@ export default function RootLayout({
|
|
|
256
246
|
return (
|
|
257
247
|
<html>
|
|
258
248
|
<body>
|
|
259
|
-
<KeverdProvider
|
|
260
|
-
loadOptions={{
|
|
261
|
-
apiKey: process.env.NEXT_PUBLIC_KEVERD_API_KEY!,
|
|
262
|
-
}}
|
|
263
|
-
>
|
|
249
|
+
<KeverdProvider apiKey={process.env.NEXT_PUBLIC_KEVERD_API_KEY!}>
|
|
264
250
|
{children}
|
|
265
251
|
</KeverdProvider>
|
|
266
252
|
</body>
|
package/dist/index.d.mts
CHANGED
|
@@ -61,13 +61,34 @@ interface KeverdSimSwapEngine {
|
|
|
61
61
|
updatedProfile?: Record<string, unknown>;
|
|
62
62
|
}
|
|
63
63
|
interface KeverdFingerprintResponse {
|
|
64
|
-
risk_score
|
|
65
|
-
score
|
|
66
|
-
action
|
|
67
|
-
reason
|
|
68
|
-
session_id
|
|
69
|
-
requestId
|
|
64
|
+
risk_score?: number;
|
|
65
|
+
score?: number;
|
|
66
|
+
action?: 'allow' | 'soft_challenge' | 'hard_challenge' | 'block';
|
|
67
|
+
reason?: string[];
|
|
68
|
+
session_id?: string;
|
|
69
|
+
requestId?: string;
|
|
70
|
+
fingerprint?: string;
|
|
71
|
+
event_id?: string;
|
|
72
|
+
device_id?: string;
|
|
73
|
+
similarity?: number;
|
|
74
|
+
is_new?: boolean;
|
|
75
|
+
is_drifted?: boolean;
|
|
76
|
+
history_count?: number;
|
|
77
|
+
times_seen?: number;
|
|
78
|
+
first_seen?: string;
|
|
79
|
+
last_seen?: string;
|
|
70
80
|
sim_swap_engine?: KeverdSimSwapEngine;
|
|
81
|
+
confidence?: number;
|
|
82
|
+
device_match?: boolean;
|
|
83
|
+
fraud_probability?: number;
|
|
84
|
+
recommended_action?: string;
|
|
85
|
+
adaptive_response?: {
|
|
86
|
+
recommended_action?: string;
|
|
87
|
+
challenges?: string[];
|
|
88
|
+
reason?: string;
|
|
89
|
+
confidence?: number;
|
|
90
|
+
[key: string]: unknown;
|
|
91
|
+
};
|
|
71
92
|
}
|
|
72
93
|
interface KeverdVisitorData {
|
|
73
94
|
visitorId: string;
|
|
@@ -79,16 +100,29 @@ interface KeverdVisitorData {
|
|
|
79
100
|
requestId: string;
|
|
80
101
|
simSwapEngine?: KeverdSimSwapEngine;
|
|
81
102
|
confidence?: number;
|
|
103
|
+
deviceMatch?: boolean;
|
|
104
|
+
fraudProbability?: number;
|
|
105
|
+
recommendedAction?: string;
|
|
106
|
+
adaptiveResponse?: {
|
|
107
|
+
recommendedAction?: string;
|
|
108
|
+
challenges?: string[];
|
|
109
|
+
reason?: string;
|
|
110
|
+
confidence?: number;
|
|
111
|
+
[key: string]: unknown;
|
|
112
|
+
};
|
|
113
|
+
extendedResult?: Record<string, unknown>;
|
|
82
114
|
}
|
|
83
115
|
interface KeverdConfig {
|
|
84
|
-
apiKey
|
|
116
|
+
apiKey?: string;
|
|
85
117
|
userId?: string;
|
|
118
|
+
endpoint?: string;
|
|
86
119
|
debug?: boolean;
|
|
87
120
|
extendedResult?: boolean;
|
|
88
121
|
ignoreCache?: boolean;
|
|
89
122
|
}
|
|
90
123
|
interface KeverdLoadOptions {
|
|
91
|
-
apiKey
|
|
124
|
+
apiKey?: string;
|
|
125
|
+
endpoint?: string;
|
|
92
126
|
debug?: boolean;
|
|
93
127
|
}
|
|
94
128
|
interface KeverdVisitorDataOptions {
|
|
@@ -112,6 +146,21 @@ interface KeverdVisitorDataResult$1 {
|
|
|
112
146
|
data: KeverdVisitorData | null;
|
|
113
147
|
getData: (options?: KeverdVisitorDataOptions) => Promise<KeverdVisitorData>;
|
|
114
148
|
}
|
|
149
|
+
type LoginResult = 'success' | 'failure';
|
|
150
|
+
type AuthMethod = 'password' | 'password_otp' | 'password_totp' | 'sso' | 'magic_link' | 'passkey' | 'unknown';
|
|
151
|
+
interface LoginContext {
|
|
152
|
+
identifierHash?: string;
|
|
153
|
+
result?: LoginResult;
|
|
154
|
+
failureReason?: string;
|
|
155
|
+
authMethod?: AuthMethod;
|
|
156
|
+
mfaUsed?: boolean;
|
|
157
|
+
attemptId?: string;
|
|
158
|
+
}
|
|
159
|
+
interface VerifyLoginOptions {
|
|
160
|
+
userId?: string;
|
|
161
|
+
login?: LoginContext;
|
|
162
|
+
metadata?: Record<string, unknown>;
|
|
163
|
+
}
|
|
115
164
|
|
|
116
165
|
/**
|
|
117
166
|
* Keverd Fraud SDK Core
|
|
@@ -133,6 +182,17 @@ declare class KeverdSDK {
|
|
|
133
182
|
* Get visitor data (fingerprint and risk assessment)
|
|
134
183
|
*/
|
|
135
184
|
getVisitorData(options?: KeverdVisitorDataOptions): Promise<KeverdVisitorData>;
|
|
185
|
+
/**
|
|
186
|
+
* Verify user identity during login attempts.
|
|
187
|
+
*
|
|
188
|
+
* This is a thin wrapper around the core web SDK `verifyLogin`, so it sends
|
|
189
|
+
* the same enhanced signals and structured login context as the vanilla SDK.
|
|
190
|
+
*/
|
|
191
|
+
verifyLogin(options?: VerifyLoginOptions): Promise<KeverdFingerprintResponse>;
|
|
192
|
+
/**
|
|
193
|
+
* Extract origin and referrer from browser
|
|
194
|
+
*/
|
|
195
|
+
private getOriginHeaders;
|
|
136
196
|
/**
|
|
137
197
|
* Send fingerprint request to backend
|
|
138
198
|
*/
|
|
@@ -141,10 +201,25 @@ declare class KeverdSDK {
|
|
|
141
201
|
* Transform API response to visitor data format
|
|
142
202
|
*/
|
|
143
203
|
private transformResponse;
|
|
204
|
+
private buildV2SignalsPayload;
|
|
205
|
+
private getWebGLInfo;
|
|
206
|
+
private parseBrowserInfo;
|
|
207
|
+
private parseOsInfo;
|
|
208
|
+
private detectBasicFonts;
|
|
209
|
+
private calculatePersistenceScore;
|
|
210
|
+
private getStorageFlags;
|
|
211
|
+
private isApiAvailable;
|
|
212
|
+
private getAudioCodecs;
|
|
213
|
+
private collectPrivacySignals;
|
|
214
|
+
private isStorageUnavailable;
|
|
215
|
+
private detectAdBlocker;
|
|
216
|
+
private computeSimpleHash;
|
|
217
|
+
private actionFromRisk;
|
|
144
218
|
/**
|
|
145
|
-
*
|
|
219
|
+
* Resolve endpoint: config > env > production default.
|
|
146
220
|
*/
|
|
147
221
|
private getDefaultEndpoint;
|
|
222
|
+
private normalizeEndpoint;
|
|
148
223
|
/**
|
|
149
224
|
* Generate a session ID
|
|
150
225
|
*/
|
|
@@ -202,13 +277,16 @@ interface KeverdContextValue {
|
|
|
202
277
|
isReady: boolean;
|
|
203
278
|
}
|
|
204
279
|
interface KeverdProviderProps {
|
|
205
|
-
|
|
280
|
+
apiKey?: string;
|
|
281
|
+
endpoint?: string;
|
|
282
|
+
debug?: boolean;
|
|
283
|
+
loadOptions?: KeverdLoadOptions;
|
|
206
284
|
children: ReactNode;
|
|
207
285
|
}
|
|
208
286
|
/**
|
|
209
287
|
* KeverdProvider - Wrap your app with this component to enable Keverd SDK
|
|
210
288
|
*/
|
|
211
|
-
declare function KeverdProvider({ loadOptions, children }: KeverdProviderProps): react_jsx_runtime.JSX.Element;
|
|
289
|
+
declare function KeverdProvider({ apiKey, endpoint, debug, loadOptions, children }: KeverdProviderProps): react_jsx_runtime.JSX.Element;
|
|
212
290
|
/**
|
|
213
291
|
* Hook to access Keverd SDK from context
|
|
214
292
|
*/
|
|
@@ -256,6 +334,48 @@ interface KeverdVisitorDataResult {
|
|
|
256
334
|
*/
|
|
257
335
|
declare function useKeverdVisitorData(options?: KeverdVisitorDataHookOptions): KeverdVisitorDataResult;
|
|
258
336
|
|
|
337
|
+
interface UseKeverdResult {
|
|
338
|
+
deviceId: string | null;
|
|
339
|
+
riskScore: number | null;
|
|
340
|
+
isLoading: boolean;
|
|
341
|
+
error: {
|
|
342
|
+
message: string;
|
|
343
|
+
code?: string;
|
|
344
|
+
statusCode?: number;
|
|
345
|
+
} | null;
|
|
346
|
+
refresh: () => Promise<void>;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* High-level hook used by the React quickstart.
|
|
350
|
+
*/
|
|
351
|
+
declare function useKeverd(): UseKeverdResult;
|
|
352
|
+
|
|
353
|
+
interface HashLoginIdentifierOptions {
|
|
354
|
+
salt?: string;
|
|
355
|
+
prefix?: string;
|
|
356
|
+
}
|
|
357
|
+
interface BuildLoginContextOptions {
|
|
358
|
+
identifier: string;
|
|
359
|
+
result?: LoginResult;
|
|
360
|
+
failureReason?: string;
|
|
361
|
+
authMethod?: AuthMethod;
|
|
362
|
+
mfaUsed?: boolean;
|
|
363
|
+
attemptId?: string;
|
|
364
|
+
salt?: string;
|
|
365
|
+
}
|
|
366
|
+
declare function hashLoginIdentifier(identifier: string, options?: HashLoginIdentifierOptions): Promise<string>;
|
|
367
|
+
declare function buildLoginContextFromIdentifier(options: BuildLoginContextOptions): Promise<LoginContext>;
|
|
368
|
+
|
|
369
|
+
interface AdaptiveActionHandlers {
|
|
370
|
+
onAllow?: (response: KeverdFingerprintResponse) => void;
|
|
371
|
+
onSoftChallenge?: (response: KeverdFingerprintResponse) => void;
|
|
372
|
+
onHardChallenge?: (response: KeverdFingerprintResponse) => void;
|
|
373
|
+
onBlock?: (response: KeverdFingerprintResponse) => void;
|
|
374
|
+
onChallenges?: (response: KeverdFingerprintResponse, challenges: string[]) => void;
|
|
375
|
+
onUnknown?: (response: KeverdFingerprintResponse) => void;
|
|
376
|
+
}
|
|
377
|
+
declare function handleAdaptiveResponse(response: KeverdFingerprintResponse, handlers: AdaptiveActionHandlers): void;
|
|
378
|
+
|
|
259
379
|
/**
|
|
260
380
|
* Keverd Device Fingerprint Collector
|
|
261
381
|
* Collects device information, canvas fingerprint, WebGL fingerprint, and generates a stable device ID
|
|
@@ -349,4 +469,4 @@ declare class KeverdBehavioralCollector {
|
|
|
349
469
|
private calculateSessionEntropy;
|
|
350
470
|
}
|
|
351
471
|
|
|
352
|
-
export { KeverdBehavioralCollector, type KeverdBehavioralData, type KeverdConfig, KeverdDeviceCollector, type KeverdDeviceInfo, type KeverdError, type KeverdFingerprintRequest, type KeverdFingerprintResponse, type KeverdLoadOptions, KeverdProvider, KeverdSDK, type KeverdSessionInfo, type KeverdSimSwapEngine, type KeverdVisitorData, type KeverdVisitorDataHookOptions, type KeverdVisitorDataOptions, type KeverdVisitorDataResult$1 as KeverdVisitorDataResult, useKeverdContext, useKeverdVisitorData };
|
|
472
|
+
export { KeverdBehavioralCollector, type KeverdBehavioralData, type KeverdConfig, KeverdDeviceCollector, type KeverdDeviceInfo, type KeverdError, type KeverdFingerprintRequest, type KeverdFingerprintResponse, type KeverdLoadOptions, KeverdProvider, KeverdSDK, type KeverdSessionInfo, type KeverdSimSwapEngine, type KeverdVisitorData, type KeverdVisitorDataHookOptions, type KeverdVisitorDataOptions, type KeverdVisitorDataResult$1 as KeverdVisitorDataResult, type UseKeverdResult, buildLoginContextFromIdentifier, handleAdaptiveResponse, hashLoginIdentifier, useKeverd, useKeverdContext, useKeverdVisitorData };
|
package/dist/index.d.ts
CHANGED
|
@@ -61,13 +61,34 @@ interface KeverdSimSwapEngine {
|
|
|
61
61
|
updatedProfile?: Record<string, unknown>;
|
|
62
62
|
}
|
|
63
63
|
interface KeverdFingerprintResponse {
|
|
64
|
-
risk_score
|
|
65
|
-
score
|
|
66
|
-
action
|
|
67
|
-
reason
|
|
68
|
-
session_id
|
|
69
|
-
requestId
|
|
64
|
+
risk_score?: number;
|
|
65
|
+
score?: number;
|
|
66
|
+
action?: 'allow' | 'soft_challenge' | 'hard_challenge' | 'block';
|
|
67
|
+
reason?: string[];
|
|
68
|
+
session_id?: string;
|
|
69
|
+
requestId?: string;
|
|
70
|
+
fingerprint?: string;
|
|
71
|
+
event_id?: string;
|
|
72
|
+
device_id?: string;
|
|
73
|
+
similarity?: number;
|
|
74
|
+
is_new?: boolean;
|
|
75
|
+
is_drifted?: boolean;
|
|
76
|
+
history_count?: number;
|
|
77
|
+
times_seen?: number;
|
|
78
|
+
first_seen?: string;
|
|
79
|
+
last_seen?: string;
|
|
70
80
|
sim_swap_engine?: KeverdSimSwapEngine;
|
|
81
|
+
confidence?: number;
|
|
82
|
+
device_match?: boolean;
|
|
83
|
+
fraud_probability?: number;
|
|
84
|
+
recommended_action?: string;
|
|
85
|
+
adaptive_response?: {
|
|
86
|
+
recommended_action?: string;
|
|
87
|
+
challenges?: string[];
|
|
88
|
+
reason?: string;
|
|
89
|
+
confidence?: number;
|
|
90
|
+
[key: string]: unknown;
|
|
91
|
+
};
|
|
71
92
|
}
|
|
72
93
|
interface KeverdVisitorData {
|
|
73
94
|
visitorId: string;
|
|
@@ -79,16 +100,29 @@ interface KeverdVisitorData {
|
|
|
79
100
|
requestId: string;
|
|
80
101
|
simSwapEngine?: KeverdSimSwapEngine;
|
|
81
102
|
confidence?: number;
|
|
103
|
+
deviceMatch?: boolean;
|
|
104
|
+
fraudProbability?: number;
|
|
105
|
+
recommendedAction?: string;
|
|
106
|
+
adaptiveResponse?: {
|
|
107
|
+
recommendedAction?: string;
|
|
108
|
+
challenges?: string[];
|
|
109
|
+
reason?: string;
|
|
110
|
+
confidence?: number;
|
|
111
|
+
[key: string]: unknown;
|
|
112
|
+
};
|
|
113
|
+
extendedResult?: Record<string, unknown>;
|
|
82
114
|
}
|
|
83
115
|
interface KeverdConfig {
|
|
84
|
-
apiKey
|
|
116
|
+
apiKey?: string;
|
|
85
117
|
userId?: string;
|
|
118
|
+
endpoint?: string;
|
|
86
119
|
debug?: boolean;
|
|
87
120
|
extendedResult?: boolean;
|
|
88
121
|
ignoreCache?: boolean;
|
|
89
122
|
}
|
|
90
123
|
interface KeverdLoadOptions {
|
|
91
|
-
apiKey
|
|
124
|
+
apiKey?: string;
|
|
125
|
+
endpoint?: string;
|
|
92
126
|
debug?: boolean;
|
|
93
127
|
}
|
|
94
128
|
interface KeverdVisitorDataOptions {
|
|
@@ -112,6 +146,21 @@ interface KeverdVisitorDataResult$1 {
|
|
|
112
146
|
data: KeverdVisitorData | null;
|
|
113
147
|
getData: (options?: KeverdVisitorDataOptions) => Promise<KeverdVisitorData>;
|
|
114
148
|
}
|
|
149
|
+
type LoginResult = 'success' | 'failure';
|
|
150
|
+
type AuthMethod = 'password' | 'password_otp' | 'password_totp' | 'sso' | 'magic_link' | 'passkey' | 'unknown';
|
|
151
|
+
interface LoginContext {
|
|
152
|
+
identifierHash?: string;
|
|
153
|
+
result?: LoginResult;
|
|
154
|
+
failureReason?: string;
|
|
155
|
+
authMethod?: AuthMethod;
|
|
156
|
+
mfaUsed?: boolean;
|
|
157
|
+
attemptId?: string;
|
|
158
|
+
}
|
|
159
|
+
interface VerifyLoginOptions {
|
|
160
|
+
userId?: string;
|
|
161
|
+
login?: LoginContext;
|
|
162
|
+
metadata?: Record<string, unknown>;
|
|
163
|
+
}
|
|
115
164
|
|
|
116
165
|
/**
|
|
117
166
|
* Keverd Fraud SDK Core
|
|
@@ -133,6 +182,17 @@ declare class KeverdSDK {
|
|
|
133
182
|
* Get visitor data (fingerprint and risk assessment)
|
|
134
183
|
*/
|
|
135
184
|
getVisitorData(options?: KeverdVisitorDataOptions): Promise<KeverdVisitorData>;
|
|
185
|
+
/**
|
|
186
|
+
* Verify user identity during login attempts.
|
|
187
|
+
*
|
|
188
|
+
* This is a thin wrapper around the core web SDK `verifyLogin`, so it sends
|
|
189
|
+
* the same enhanced signals and structured login context as the vanilla SDK.
|
|
190
|
+
*/
|
|
191
|
+
verifyLogin(options?: VerifyLoginOptions): Promise<KeverdFingerprintResponse>;
|
|
192
|
+
/**
|
|
193
|
+
* Extract origin and referrer from browser
|
|
194
|
+
*/
|
|
195
|
+
private getOriginHeaders;
|
|
136
196
|
/**
|
|
137
197
|
* Send fingerprint request to backend
|
|
138
198
|
*/
|
|
@@ -141,10 +201,25 @@ declare class KeverdSDK {
|
|
|
141
201
|
* Transform API response to visitor data format
|
|
142
202
|
*/
|
|
143
203
|
private transformResponse;
|
|
204
|
+
private buildV2SignalsPayload;
|
|
205
|
+
private getWebGLInfo;
|
|
206
|
+
private parseBrowserInfo;
|
|
207
|
+
private parseOsInfo;
|
|
208
|
+
private detectBasicFonts;
|
|
209
|
+
private calculatePersistenceScore;
|
|
210
|
+
private getStorageFlags;
|
|
211
|
+
private isApiAvailable;
|
|
212
|
+
private getAudioCodecs;
|
|
213
|
+
private collectPrivacySignals;
|
|
214
|
+
private isStorageUnavailable;
|
|
215
|
+
private detectAdBlocker;
|
|
216
|
+
private computeSimpleHash;
|
|
217
|
+
private actionFromRisk;
|
|
144
218
|
/**
|
|
145
|
-
*
|
|
219
|
+
* Resolve endpoint: config > env > production default.
|
|
146
220
|
*/
|
|
147
221
|
private getDefaultEndpoint;
|
|
222
|
+
private normalizeEndpoint;
|
|
148
223
|
/**
|
|
149
224
|
* Generate a session ID
|
|
150
225
|
*/
|
|
@@ -202,13 +277,16 @@ interface KeverdContextValue {
|
|
|
202
277
|
isReady: boolean;
|
|
203
278
|
}
|
|
204
279
|
interface KeverdProviderProps {
|
|
205
|
-
|
|
280
|
+
apiKey?: string;
|
|
281
|
+
endpoint?: string;
|
|
282
|
+
debug?: boolean;
|
|
283
|
+
loadOptions?: KeverdLoadOptions;
|
|
206
284
|
children: ReactNode;
|
|
207
285
|
}
|
|
208
286
|
/**
|
|
209
287
|
* KeverdProvider - Wrap your app with this component to enable Keverd SDK
|
|
210
288
|
*/
|
|
211
|
-
declare function KeverdProvider({ loadOptions, children }: KeverdProviderProps): react_jsx_runtime.JSX.Element;
|
|
289
|
+
declare function KeverdProvider({ apiKey, endpoint, debug, loadOptions, children }: KeverdProviderProps): react_jsx_runtime.JSX.Element;
|
|
212
290
|
/**
|
|
213
291
|
* Hook to access Keverd SDK from context
|
|
214
292
|
*/
|
|
@@ -256,6 +334,48 @@ interface KeverdVisitorDataResult {
|
|
|
256
334
|
*/
|
|
257
335
|
declare function useKeverdVisitorData(options?: KeverdVisitorDataHookOptions): KeverdVisitorDataResult;
|
|
258
336
|
|
|
337
|
+
interface UseKeverdResult {
|
|
338
|
+
deviceId: string | null;
|
|
339
|
+
riskScore: number | null;
|
|
340
|
+
isLoading: boolean;
|
|
341
|
+
error: {
|
|
342
|
+
message: string;
|
|
343
|
+
code?: string;
|
|
344
|
+
statusCode?: number;
|
|
345
|
+
} | null;
|
|
346
|
+
refresh: () => Promise<void>;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* High-level hook used by the React quickstart.
|
|
350
|
+
*/
|
|
351
|
+
declare function useKeverd(): UseKeverdResult;
|
|
352
|
+
|
|
353
|
+
interface HashLoginIdentifierOptions {
|
|
354
|
+
salt?: string;
|
|
355
|
+
prefix?: string;
|
|
356
|
+
}
|
|
357
|
+
interface BuildLoginContextOptions {
|
|
358
|
+
identifier: string;
|
|
359
|
+
result?: LoginResult;
|
|
360
|
+
failureReason?: string;
|
|
361
|
+
authMethod?: AuthMethod;
|
|
362
|
+
mfaUsed?: boolean;
|
|
363
|
+
attemptId?: string;
|
|
364
|
+
salt?: string;
|
|
365
|
+
}
|
|
366
|
+
declare function hashLoginIdentifier(identifier: string, options?: HashLoginIdentifierOptions): Promise<string>;
|
|
367
|
+
declare function buildLoginContextFromIdentifier(options: BuildLoginContextOptions): Promise<LoginContext>;
|
|
368
|
+
|
|
369
|
+
interface AdaptiveActionHandlers {
|
|
370
|
+
onAllow?: (response: KeverdFingerprintResponse) => void;
|
|
371
|
+
onSoftChallenge?: (response: KeverdFingerprintResponse) => void;
|
|
372
|
+
onHardChallenge?: (response: KeverdFingerprintResponse) => void;
|
|
373
|
+
onBlock?: (response: KeverdFingerprintResponse) => void;
|
|
374
|
+
onChallenges?: (response: KeverdFingerprintResponse, challenges: string[]) => void;
|
|
375
|
+
onUnknown?: (response: KeverdFingerprintResponse) => void;
|
|
376
|
+
}
|
|
377
|
+
declare function handleAdaptiveResponse(response: KeverdFingerprintResponse, handlers: AdaptiveActionHandlers): void;
|
|
378
|
+
|
|
259
379
|
/**
|
|
260
380
|
* Keverd Device Fingerprint Collector
|
|
261
381
|
* Collects device information, canvas fingerprint, WebGL fingerprint, and generates a stable device ID
|
|
@@ -349,4 +469,4 @@ declare class KeverdBehavioralCollector {
|
|
|
349
469
|
private calculateSessionEntropy;
|
|
350
470
|
}
|
|
351
471
|
|
|
352
|
-
export { KeverdBehavioralCollector, type KeverdBehavioralData, type KeverdConfig, KeverdDeviceCollector, type KeverdDeviceInfo, type KeverdError, type KeverdFingerprintRequest, type KeverdFingerprintResponse, type KeverdLoadOptions, KeverdProvider, KeverdSDK, type KeverdSessionInfo, type KeverdSimSwapEngine, type KeverdVisitorData, type KeverdVisitorDataHookOptions, type KeverdVisitorDataOptions, type KeverdVisitorDataResult$1 as KeverdVisitorDataResult, useKeverdContext, useKeverdVisitorData };
|
|
472
|
+
export { KeverdBehavioralCollector, type KeverdBehavioralData, type KeverdConfig, KeverdDeviceCollector, type KeverdDeviceInfo, type KeverdError, type KeverdFingerprintRequest, type KeverdFingerprintResponse, type KeverdLoadOptions, KeverdProvider, KeverdSDK, type KeverdSessionInfo, type KeverdSimSwapEngine, type KeverdVisitorData, type KeverdVisitorDataHookOptions, type KeverdVisitorDataOptions, type KeverdVisitorDataResult$1 as KeverdVisitorDataResult, type UseKeverdResult, buildLoginContextFromIdentifier, handleAdaptiveResponse, hashLoginIdentifier, useKeverd, useKeverdContext, useKeverdVisitorData };
|