@cruxpay/js-sdk
Version:
CruxPay Javascript SDK
155 lines (154 loc) • 6.87 kB
JavaScript
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 };