36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getEnv = getEnv;
|
|
const tslib_1 = require("tslib");
|
|
const fingerprintjs_1 = tslib_1.__importDefault(require("@fingerprintjs/fingerprintjs"));
|
|
const lodash_1 = require("oak-domain/lib/utils/lodash");
|
|
/**
|
|
* fingerprintJs当中的一些敏感项
|
|
* @returns
|
|
*/
|
|
async function getEnv() {
|
|
const fp = await fingerprintjs_1.default.load();
|
|
// 有浏览器没有storage
|
|
const [result /* , localStorageEnabled */] = await Promise.all([
|
|
fp.get() /* , navigator.storage.persisted() */,
|
|
]);
|
|
const { components } = result;
|
|
const fields = ['platform', 'timezone', 'vendor', 'vendorFlavors'];
|
|
const extendedComponents = (0, lodash_1.pick)(components, fields.concat('osCpu'));
|
|
const visitorId = fingerprintjs_1.default.hashComponents(extendedComponents);
|
|
const fullEnv = Object.assign((0, lodash_1.pick)(components, fields), {
|
|
type: 'web',
|
|
visitorId,
|
|
// localStorageEnabled,
|
|
language: navigator.language,
|
|
});
|
|
const briefEnv = {
|
|
system: `${fullEnv.platform.value}`,
|
|
explorer: `${fullEnv.vendor.value}/${fullEnv.vendorFlavors.value[0]}`,
|
|
};
|
|
return {
|
|
fullEnv,
|
|
briefEnv,
|
|
};
|
|
}
|