UNPKG

@binance/fingerprint

Version:

binance web fingerprint

112 lines (111 loc) 3.6 kB
"use strict"; 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;