UNPKG

@cruxpay/js-sdk

Version:

CruxPay Javascript SDK

155 lines (154 loc) 6.87 kB
var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; import { CruxSpec } from "../../core/entities/crux-spec"; import { ERROR_STRINGS, PackageErrorCode } from "../../packages/error"; import { getLogger } from "../../packages/logger"; var log = getLogger(__filename); var CruxAssetTranslator = /** @class */ (function () { function CruxAssetTranslator(assetMapping, assetList) { var _this = this; this.symbolAssetGroupToAssetIdAssetGroup = function (symbolAssetGroup) { return symbolAssetGroup.replace(new RegExp("(.+)_(.+)"), function (match, assetType, assetSymbol) { return assetType + "_" + _this.symbolToAssetId(assetSymbol); }); }; this.assetIdAssetGroupToSymbolAssetGroup = function (assetIdAssetGroup) { return assetIdAssetGroup.replace(new RegExp("(.+)_(.+)"), function (match, assetType, assetId) { return assetType + "_" + _this.assetIdToSymbol(assetId); }); }; this.setAssetMap = function (assetMapping) { CruxSpec.validations.validateAssetMapping(assetMapping, _this.assetList); _this.assetMap = _this.getLowerAssetMapping(assetMapping); }; this.setReverseAssetMap = function (assetMapping) { var e_1, _a; _this.reverseAssetMap = {}; try { for (var _b = __values(Object.keys(_this.assetMap)), _c = _b.next(); !_c.done; _c = _b.next()) { var walletCurrencySymbol = _c.value; _this.reverseAssetMap[_this.assetMap[walletCurrencySymbol]] = walletCurrencySymbol; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } }; this.setAssetList = function (assetList) { CruxSpec.validations.validateAssetList(assetList); _this.assetList = assetList; }; this.setAssetList(assetList); this.setAssetMap(assetMapping); this.setReverseAssetMap(assetMapping); log.debug("CruxAssetTranslator initialised"); } Object.defineProperty(CruxAssetTranslator.prototype, "assetMapping", { get: function () { return this.assetMap; }, enumerable: true, configurable: true }); CruxAssetTranslator.prototype.symbolToAssetId = function (currencySymbol) { currencySymbol = currencySymbol.toLowerCase(); return this.assetMap[currencySymbol]; }; CruxAssetTranslator.prototype.symbolToAsset = function (currencySymbol) { var _this = this; return this.assetList.find(function (asset) { return asset.assetId === _this.symbolToAssetId(currencySymbol); }); }; CruxAssetTranslator.prototype.assetIdToSymbol = function (assetId) { return this.reverseAssetMap[assetId]; }; CruxAssetTranslator.prototype.assetIdAssetListToSymbolAssetMap = function (assetIdAssetList) { var _this = this; var symbolAssetMap = {}; assetIdAssetList.forEach(function (asset) { symbolAssetMap[_this.assetIdToSymbol(asset.assetId)] = asset; }); return symbolAssetMap; }; // TODO: What should we be returning when calling below two methods? CruxAssetTranslator.prototype.assetIdAddressMapToSymbolAddressMap = function (userAssetIdToAddressMap) { var e_2, _a; var currencyAddressMap = {}; try { for (var _b = __values(Object.keys(userAssetIdToAddressMap)), _c = _b.next(); !_c.done; _c = _b.next()) { var assetId = _c.value; currencyAddressMap[this.assetIdToSymbol(assetId)] = userAssetIdToAddressMap[assetId]; } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } return currencyAddressMap; }; CruxAssetTranslator.prototype.symbolAddressMapToAssetIdAddressMap = function (currencyAddressMap) { var e_3, _a; var lowerCurrencyAddressMap = {}; var assetAddressMap = {}; var success = {}; var failures = {}; try { for (var _b = __values(Object.keys(currencyAddressMap)), _c = _b.next(); !_c.done; _c = _b.next()) { var walletCurrencySymbol = _c.value; lowerCurrencyAddressMap[walletCurrencySymbol.toLowerCase()] = currencyAddressMap[walletCurrencySymbol]; walletCurrencySymbol = walletCurrencySymbol.toLowerCase(); var assetId = this.symbolToAssetId(walletCurrencySymbol); if (assetId) { assetAddressMap[assetId] = lowerCurrencyAddressMap[walletCurrencySymbol]; success[walletCurrencySymbol] = lowerCurrencyAddressMap[walletCurrencySymbol]; } else { failures[walletCurrencySymbol] = PackageErrorCode.CurrencyDoesNotExistInClientMapping + ": " + ERROR_STRINGS[PackageErrorCode.CurrencyDoesNotExistInClientMapping]; } } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_3) throw e_3.error; } } return { assetAddressMap: assetAddressMap, failures: failures, success: success, }; }; CruxAssetTranslator.prototype.getLowerAssetMapping = function (assetMapping) { var e_4, _a; var lowerAssetMapping = {}; try { for (var _b = __values(Object.keys(assetMapping)), _c = _b.next(); !_c.done; _c = _b.next()) { var currencySymbol = _c.value; lowerAssetMapping[currencySymbol.toLowerCase()] = assetMapping[currencySymbol]; } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_4) throw e_4.error; } } return lowerAssetMapping; }; return CruxAssetTranslator; }()); export { CruxAssetTranslator };