UNPKG

@binance/fingerprint

Version:

binance web fingerprint

91 lines (90 loc) 2.93 kB
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;