@q-dev/gdk-sdk
Version:
Typescript Library to interact with GDK Contracts
29 lines • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast = void 0;
const ethers_1 = require("ethers");
function cast(object) {
if (isSolidityStructArray(object)) {
return object.map((element) => cast(element));
}
if (!isSolidityStruct(object)) {
return object;
}
return Object.keys(object).reduce((prevKeys, currentKey) => {
if (Number.isInteger(+currentKey)) {
return prevKeys;
}
return { ...prevKeys, [currentKey]: cast(object[currentKey]) };
}, {});
}
exports.cast = cast;
function isSolidityStruct(object) {
return hasNonNumericProperty(object) && !(object instanceof ethers_1.BigNumber);
}
function isSolidityStructArray(object) {
return Array.isArray(object) && object.length > 0 && !hasNonNumericProperty(object) && isSolidityStruct(object[0]);
}
function hasNonNumericProperty(object) {
return Object.keys(object).some((key) => !Number.isInteger(+key));
}
//# sourceMappingURL=caster.js.map