UNPKG

@joingo/sdk-security

Version:

SDK for JavaScript: Security Application Block!

55 lines (51 loc) 2.81 kB
/* ************************************************************************************************************************ *\ * 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>()); }); }); }