A JavaScript SDK providing Device Info, Behavioural Biometrics, and Combined Fingerprinting capabilities.
npm install @dwield/device-biometrics-sdkbash
npm install @dwield/device-biometrics-sdk
`
or
`bash
yarn add @dwield/device-biometrics-sdk
`
---
π Quick Start
Dwield provides three product tiers, each accessible via a different initializer.
---
1οΈβ£ Device Intelligence SDK
$3
`js
import { initDeviceInfo } from "@dwield/device-biometrics-sdk";
const client = await initDeviceInfo({
apiKey: "YOUR_API_KEY",
verbose: true,
});
`
$3
`js
const device = await client.getDeviceData();
console.log("Device Fingerprint:", device);
`
---
2οΈβ£ Behavioural Biometrics SDK
$3
`js
import { initBiometrics } from "@dwield/device-biometrics-sdk";
const client = await initBiometrics({ apiKey: "YOUR_API_KEY" });
client.initKeyStrokeDynamics();
client.initMouseDynamics();
`
$3
`js
const keystrokes = client.fetchKeyStrockDynamicsData();
const mouse = client.fetchMouseDynamicsData();
`
$3
`js
client.stopKeyStrokeDynamics();
client.stopMouseDynamics();
`
---
3οΈβ£ Combined Fingerprinting SDK
$3
`js
import { initDeviceInfoWithBiometrics } from "@dwield/device-biometrics-sdk";
const client = await initDeviceInfoWithBiometrics({
apiKey: "YOUR_API_KEY"
});
`
Start tracking:
`js
client.initKeyStrokeDynamics();
client.initMouseDynamics();
`
Fetch full fingerprint:
`js
const fingerprint = await client.getDeviceInfoWithBiometrics();
console.log("Full Fingerprint:", fingerprint);
`
$3
`js
const result = await client.generateFingerPrint({
userId: "user@example.com",
firstName: "John", // optional, defaults to "System"
lastName: "Doe" // optional, defaults to "System"
});
console.log("Risk Score Result:", result);
`
Stop:
`js
client.stopKeyStrokeDynamics();
client.stopMouseDynamics();
`
---
βοΈ React Integration (Recommended)
`jsx
import { useEffect, useRef, useState } from "react";
import { initDeviceInfoWithBiometrics } from "@dwield/device-biometrics-sdk";
export default function FingerprintForm() {
const sdkRef = useRef(null);
const [result, setResult] = useState(null);
useEffect(() => {
const init = async () => {
const client = await initDeviceInfoWithBiometrics({
apiKey: "YOUR_API_KEY",
verbose: true
});
client.initKeyStrokeDynamics();
client.initMouseDynamics();
sdkRef.current = client;
};
init();
return () => {
if (sdkRef.current) {
sdkRef.current.stopKeyStrokeDynamics();
sdkRef.current.stopMouseDynamics();
}
};
}, []);
const handleSubmit = async () => {
// Generate device fingerprint & risk score
const result = await sdkRef.current.generateFingerPrint({
userId: "user@example.com",
firstName: "John",
lastName: "Doe"
});
setResult(result);
};
return (
<>
{result && {JSON.stringify(result, null, 2)}}
>
);
}
`
---
π Vanilla JavaScript Example
`html
`
---
π Sample Combined Fingerprint
`json
{
"behavioural": {
"keystroke": { ... },
"mouse": { ... }
},
"device": {
"browserInfo": { ... },
"webglInfo": { ... },
"fonts_available": [ ... ],
"batteryInfo": { ... }
},
"timestamp": "2025-01-01T10:05:32.911Z"
}
`
---
π API Reference
$3
`ts
interface DeviceInfoSDK {
product: "device_id";
getDeviceData(): Promise;
generateFingerPrint(userInfo: { userId: string; firstName?: string; lastName?: string }): Promise;
}
`
---
### initBiometrics(config) β BiometricsSDK
`ts
interface BiometricsSDK {
initKeyStrokeDynamics(): void;
stopKeyStrokeDynamics(): void;
initMouseDynamics(): void;
stopMouseDynamics(): void;
fetchKeyStrockDynamicsData(): any;
fetchMouseDynamicsData(): any;
generateFingerPrint(userInfo: { userId: string; firstName?: string; lastName?: string }): Promise;
}
`
---
### initDeviceInfoWithBiometrics(config) β CombinedSDK
`ts
interface CombinedSDK {
initKeyStrokeDynamics(): void;
stopKeyStrokeDynamics(): void;
initMouseDynamics(): void;
stopMouseDynamics(): void;
fetchKeyStrockDynamicsData(): any;
fetchMouseDynamicsData(): any;
getDeviceData(): Promise;
getDeviceInfoWithBiometrics(): Promise;
generateFingerPrint(userInfo: { userId: string; firstName?: string; lastName?: string }): Promise;
}
`
---
π Security & Privacy
Dwield SDK is built with privacy in mind:
- No raw keystrokes recorded
- No PII captured
- Behavioural signals are anonymized
- Fully compliant with GDPR when used with proper consent
---
π‘οΈ Error Handling
The SDK performs an asynchronous validation of the API Key during initialization. If validation fails, it throws an error.
It is recommended to wrap the initialization in a try...catch block to handle unauthorized access gracefully:
`js
try {
const client = await initDeviceInfoWithBiometrics({ apiKey: "YOUR_KEY" });
// ... use client
} catch (error) {
console.error("SDK Initialization Failed:", error.message);
// Handle error (e.g., disable features, fallback)
}
`
---
π§ TypeScript Support
Rich TypeScript definitions included:
- Strong typing
- IntelliSense
- Autocomplete for all SDK clients
Enable using:
`json
"types": "./types/index.d.ts"
``