UNPKG

@opiumteam/opium-sdk-v2

Version:

one-stop-shop SDK to interact with the Opium-v2 protocol contracts, subgraphs and APIs

70 lines 2.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.structArray = exports.struct = exports.configByChain = exports.pickError = void 0; // eslint-disable-next-line import/no-extraneous-dependencies var bignumber_1 = require("@ethersproject/bignumber/lib/bignumber"); var lodash_1 = require("lodash"); var constants_1 = require("../constants"); var protocolErrors_1 = require("../constants/protocolErrors"); var pickError = function (semanticError) { var protocolError = (0, lodash_1.findKey)(protocolErrors_1.protocolErrors, function (error) { return error === semanticError; }); if (protocolError) { return protocolError; } throw new Error("Unrecognized protocol error: ".concat(semanticError)); }; exports.pickError = pickError; var configByChain = function (chainIds, chainId) { var network = (0, lodash_1.findKey)(chainIds, function (id) { return id === chainId; }); if (network) { return constants_1.networksConfig[network]; } return undefined; }; exports.configByChain = configByChain; // TODO (mine): polish yearn code with generics to improve type-safety /** * * * below: taken from yearn */ // convert tuples function struct(tuple) { if (typeof tuple !== 'object') return tuple; var keys = Object.keys(tuple); // check if tuple is actually an array // [1, 2, 3] => array vs [1, 2, 3, "a": 1, "b": 2, "c": 3] => object // NOTE: [] are not picked up as array (see *) var properties = keys.filter(function (key) { return Number.isNaN(Number(key)); }); // eslint-disable-next-line no-use-before-define if (properties.length === 0) return structArray(tuple); var copy = {}; properties.forEach(function (property) { var value = tuple[property]; if (typeof value === 'object' && !(0, bignumber_1.isBigNumberish)(value)) { // recursive! copy[property] = struct(value); } else if (Array.isArray(value)) { // (*) all empty arrays are picked up here copy[property] = value; } else if ((0, bignumber_1.isBigNumberish)(value)) { // all BigNumbers are converted to strings copy[property] = value.toString(); } else { copy[property] = value; } }); return copy; } exports.struct = struct; // convert arrays function structArray(tuples) { return tuples.map(function (tuple) { return struct(tuple); }); } exports.structArray = structArray; //# sourceMappingURL=misc.js.map