@binance/fingerprint
Version:
binance web fingerprint
91 lines (90 loc) • 2.93 kB
JavaScript
import _async_to_generator from "@swc/helpers/src/_async_to_generator.mjs";
import regeneratorRuntime from "regenerator-runtime";
import { withDeviceInfo, saveCurrentDeviceId } from "./device";
import getFpInfo from "./fingerprint";
import { isClient } from "./utils/is";
export { saveCurrentDeviceId } from "./device";
export { default as getFpInfo } from "./fingerprint";
var _fpInfo = {};
/**
* For compatibility
* @deprecated
* @param id Identify users
*/ export var getInfo = function(id) {
return withDeviceInfo(id, _fpInfo);
};
/**
* Get device info
* @param id Identify users
*/ export var getInfoPromise = function() {
var _ref = _async_to_generator(regeneratorRuntime.mark(function _callee(id) {
var infoIsEmpty;
return regeneratorRuntime.wrap(function _callee$(_ctx) {
while(1)switch(_ctx.prev = _ctx.next){
case 0:
infoIsEmpty = !Object.keys(_fpInfo).length;
if (!(isClient && infoIsEmpty)) {
_ctx.next = 5;
break;
}
_ctx.next = 4;
return getFpInfo();
case 4:
_fpInfo = _ctx.sent;
case 5:
return _ctx.abrupt("return", withDeviceInfo(id, _fpInfo));
case 6:
case "end":
return _ctx.stop();
}
}, _callee);
}));
return function getInfoPromise(id) {
return _ref.apply(this, arguments);
};
}();
// Preload fingerprint info
if (typeof window !== "undefined") {
if ("requestIdleCallback" in window) {
// @ts-ignore requestIdleCallback not defined
window.requestIdleCallback(function() {
/**
* @note
* Please preload when idle, as it can help
* avoid performance issues related to TBT.
*/ getInfoPromise();
});
}
}
var userEmail = "";
export var setUserEmail = function(data) {
userEmail = data;
};
export var getUserEmail = function() {
return userEmail;
};
export var saveCurrentDeviceIdNew = function(email) {
var deviceId = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
setUserEmail(email);
saveCurrentDeviceId(email, deviceId);
};
export var getInfoNew = function(email) {
var rawEmail = email || userEmail;
return getInfo(rawEmail.trim().toLowerCase());
};
export var getFpInfoPromise = function(email) {
var rawEmail = email || userEmail;
return getInfoPromise(rawEmail.trim().toLowerCase());
};
export var getFPInfo = function() {
if (typeof window === "undefined") return {};
var info = {};
try {
info = JSON.parse(atob(getInfo()));
} catch (e) {
// eslint-disable-next-line no-console
console.error("getFPInfo error", e);
}
return info;
};
export default getInfo;