@joingo/sdk-security
Version:
SDK for JavaScript: Security Application Block!
55 lines (51 loc) • 2.81 kB
text/typescript
/* ************************************************************************************************************************ *\
* SDK for JavaScript! *
* *
* COPYRIGHT © 2021 BEIJING JOINGO INFORMATION TECHNOLOGY CO., LTD. ALL RIGHTS RESERVED. *
* LICENSED UNDER THE MIT LICENSE. SEE LICENSE FILE IN THE PROJECT ROOT FOR FULL LICENSE INFORMATION. *
* *
* AUTHOR : WANG YUCAI *
* E-MAIL ADDRESS: WANGYUCAI@JOINGO.VIP *
* DATE TIME : 2021-12-31 11:01 *
\* ************************************************************************************************************************ */
// CODEFILE: fingerprint.ts
// FEATURE: 提供了基于 @fingerprintjs/fingerprintjs 计算指纹信息相关的方法。
// FILE-VERSION: v2021.12.31-build.1101
import FingerprintJS from "@fingerprintjs/fingerprintjs";
import { Nullable } from "@joingo/sdk-core";
/**
* 定义了指纹信息结果类型。
*/
export type FingerprintConstructor = {
/**
* 获取一个字符串,用于表示指纹信息值。
*
* @type {string}
* @readonly
*/
readonly value: string;
};
/**
* (异步的方法) 获取指纹信息。
*
* @export
* @returns Promise<Nullable<FingerprintConstructor>>}
* @async
*/
export function getFingerprintAsync(): Promise<Nullable<FingerprintConstructor>> {
return new Promise<Nullable<FingerprintConstructor>>((resolve) => {
FingerprintJS.load({ debug: true, monitoring: true }).then(agent => {
agent.get().then(value => {
const { visitorId } = value;
console.debug(`[DEBUG]: 获取指纹信息成功。详情参见:%o`, { raw: value });
resolve(new Nullable<FingerprintConstructor>({ value: visitorId }));
}).catch(error => {
console.error(`[ERROR]: 获取指纹失败。详情参见:%o`, error);
resolve(new Nullable<FingerprintConstructor>());
});
}).catch(error => {
console.error(`[ERROR]: 装载指纹组件失败。详情参见:%o`, error);
resolve(new Nullable<FingerprintConstructor>());
});
});
}