@binance/fingerprint
Version:
binance web fingerprint
141 lines (140 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "saveCurrentDeviceId", {
enumerable: true,
get: function() {
return _device.saveCurrentDeviceId;
}
});
Object.defineProperty(exports, "getFpInfo", {
enumerable: true,
get: function() {
return _fingerprint.default;
}
});
exports.default = exports.getFPInfo = exports.getFpInfoPromise = exports.getInfoNew = exports.saveCurrentDeviceIdNew = exports.getUserEmail = exports.setUserEmail = exports.getInfoPromise = exports.getInfo = void 0;
var _regeneratorRuntime = _interopRequireDefault(require("regenerator-runtime"));
var _device = require("./device");
var _fingerprint = _interopRequireDefault(require("./fingerprint"));
var _is = require("./utils/is");
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function() {
var self = this, args = arguments;
return new Promise(function(resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var _fpInfo = {};
var getInfo = function(id) {
return (0, _device).withDeviceInfo(id, _fpInfo);
};
exports.getInfo = getInfo;
var getInfoPromise = function() {
var _ref = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(id) {
var infoIsEmpty;
return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
while(1)switch(_ctx.prev = _ctx.next){
case 0:
infoIsEmpty = !Object.keys(_fpInfo).length;
if (!(_is.isClient && infoIsEmpty)) {
_ctx.next = 5;
break;
}
_ctx.next = 4;
return (0, _fingerprint).default();
case 4:
_fpInfo = _ctx.sent;
case 5:
return _ctx.abrupt("return", (0, _device).withDeviceInfo(id, _fpInfo));
case 6:
case "end":
return _ctx.stop();
}
}, _callee);
}));
return function getInfoPromise(id) {
return _ref.apply(this, arguments);
};
}();
exports.getInfoPromise = getInfoPromise;
// 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 = "";
var setUserEmail = function(data) {
userEmail = data;
};
exports.setUserEmail = setUserEmail;
var getUserEmail = function() {
return userEmail;
};
exports.getUserEmail = getUserEmail;
var saveCurrentDeviceIdNew = function(email) {
var deviceId = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
setUserEmail(email);
(0, _device).saveCurrentDeviceId(email, deviceId);
};
exports.saveCurrentDeviceIdNew = saveCurrentDeviceIdNew;
var getInfoNew = function(email) {
var rawEmail = email || userEmail;
return getInfo(rawEmail.trim().toLowerCase());
};
exports.getInfoNew = getInfoNew;
var getFpInfoPromise = function(email) {
var rawEmail = email || userEmail;
return getInfoPromise(rawEmail.trim().toLowerCase());
};
exports.getFpInfoPromise = getFpInfoPromise;
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;
};
exports.getFPInfo = getFPInfo;
var _default = getInfo;
exports.default = _default;