@binance/fingerprint
Version:
binance web fingerprint
112 lines (111 loc) • 3.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.withDeviceInfo = exports.saveCurrentDeviceId = exports.getCurrentDeviceId = void 0;
var _blueimpMd5 = _interopRequireDefault(require("blueimp-md5"));
var _jsBase64 = require("js-base64");
var store = _interopRequireWildcard(require("./utils/store"));
var _is = require("./utils/is");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache() {
if (typeof WeakMap !== "function") return null;
var cache = new WeakMap();
_getRequireWildcardCache = function() {
return cache;
};
return cache;
}
function _interopRequireWildcard(obj) {
if (obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache();
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
var getDevices = function() {
return store.getCacheDevice();
};
var getCurrentDeviceId = function(id) {
if (!id) return "";
var devices = getDevices();
var emailEncode = (0, _blueimpMd5).default(id);
var device = devices[emailEncode];
return device && device.value || "";
};
exports.getCurrentDeviceId = getCurrentDeviceId;
var saveCurrentDeviceId = function(id, value) {
var devices = getDevices();
var emailEncode = (0, _blueimpMd5).default(id || "");
var device = devices[emailEncode];
if (!device) {
// delete first date.
var tmpList = Object.keys(devices).reduce(function(res, key) {
res.push({
key: key,
value: devices[key]
});
return res;
}, []);
if (tmpList.length >= 10) {
tmpList = tmpList.sort(function(prev, next) {
return prev.value.date - next.value.date;
});
var first = tmpList[0] || {};
delete devices[first.key];
}
}
devices[emailEncode] = {
date: new Date().getTime(),
value: value
};
store.setCacheDevice(devices);
};
exports.saveCurrentDeviceId = saveCurrentDeviceId;
var withDeviceInfo = function(id) {
var fpInfo = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var info = Object.assign({}, fpInfo);
if (_is.isClient) {
// get device_id
info.device_id = getCurrentDeviceId(id);
// get related_device_ids
var emailMd5 = (0, _blueimpMd5).default(id || "");
var devices = getDevices();
var keys = Object.keys(devices).filter(function(k) {
return k !== emailMd5;
});
info.related_device_ids = keys.map(function(k) {
return devices[k].value;
}).join(",");
}
return _jsBase64.Base64.encode(JSON.stringify(info));
};
exports.withDeviceInfo = withDeviceInfo;