oak-frontend-base/lib/utils/env/env.web.js

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,
};
}