UNPKG

locklift

Version:

Node JS framework for working with Ever contracts. Inspired by Truffle and Hardhat. Helps you to build, test, run and maintain your smart contracts.

51 lines (50 loc) 2.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapParams = exports.extractFeeAndSentValueFromMessage = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const lodash_1 = __importDefault(require("lodash")); const everscale_inpage_provider_1 = require("everscale-inpage-provider"); const utils_1 = require("../utils"); const extractFeeAndSentValueFromMessage = (traceTree) => { const value = new bignumber_js_1.default(traceTree.msg.value || 0); const totalFees = new bignumber_js_1.default(traceTree.msg.dstTransaction?.totalFees || 0) .plus(traceTree.msg.dstTransaction?.action?.totalFwdFees || 0) .minus(traceTree.msg.dstTransaction?.action?.totalActionFees || 0); const sentValue = traceTree.outTraces.reduce((acc, next) => acc.plus(next.msg.value || 0), new bignumber_js_1.default(0)); return { value, totalFees, sentValue, balanceChange: value.minus(totalFees).minus(sentValue), }; }; exports.extractFeeAndSentValueFromMessage = extractFeeAndSentValueFromMessage; const mapParams = (obj, contracts, isFullPrint) => { if (Array.isArray(obj)) { return obj.map(mapRules(contracts, isFullPrint)); } return (0, lodash_1.default)(obj).mapValues(mapRules(contracts, isFullPrint)).value(); }; exports.mapParams = mapParams; const mapRules = (contracts, isFullPrint) => (value) => { if (value instanceof everscale_inpage_provider_1.Address) { const contractName = contracts?.filter(utils_1.isT).find(contract => contract.contract.address.equals(value))?.name; const contractAddress = isFullPrint ? value.toString() : value.toString().slice(0, 5) + "..." + value.toString().slice(-5); return contractName ? `${contractName}(${contractAddress})` : contractAddress; } if (typeof value === "string" && value.length >= 20 && !isFullPrint) { return value.slice(0, 4) + "..." + value.slice(-4); } if (Array.isArray(value)) { return (0, exports.mapParams)(value, contracts); } if (typeof value === "object") { return (0, exports.mapParams)(value, contracts); } return value; };