UNPKG

@mutopad/connex-framework

Version:
49 lines 4.38 kB
import { decodeRevertReason } from './revert-reason'; import * as R from './rules'; import BigNumber from 'bignumber.js'; export function newExplainer(readyDriver, clauses) { const opts = {}; let cacheHints; return { caller(addr) { opts.caller = R.test(addr, R.address, 'arg0').toLowerCase(); return this; }, gas(gas) { opts.gas = R.test(gas, R.uint64, 'arg0'); return this; }, gasPrice(gp) { opts.gasPrice = R.test(gp, R.bigInt, 'arg0').toString().toLowerCase(); return this; }, gasPayer(addr) { opts.gasPayer = R.test(addr, R.address, 'arg0').toLowerCase(); return this; }, cache(hints) { cacheHints = R.test(hints, [R.address], 'arg0').map(t => t.toLowerCase()); return this; }, execute() { const transformedClauses = clauses.map(c => { return { to: c.to ? c.to.toLowerCase() : null, value: new BigNumber(c.value).toString(10), data: (c.data || '0x').toLowerCase() }; }); return readyDriver.then(d => d.explain(Object.assign({ clauses: transformedClauses }, opts), d.head.id, cacheHints)) .then(outputs => { return outputs.map(o => { if (o.reverted) { const revertReason = decodeRevertReason(o.data); return Object.assign(Object.assign({}, o), { revertReason }); } return o; }); }); } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2V4cGxhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQTtBQUM1QixPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUE7QUFFcEMsTUFBTSxVQUFVLFlBQVksQ0FBQyxXQUFtQyxFQUFFLE9BQTJCO0lBQ3pGLE1BQU0sSUFBSSxHQUtOLEVBQUUsQ0FBQTtJQUNOLElBQUksVUFBZ0MsQ0FBQTtJQUVwQyxPQUFPO1FBQ0gsTUFBTSxDQUFDLElBQUk7WUFDUCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDM0QsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsR0FBRyxDQUFDLEdBQUc7WUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDeEMsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsUUFBUSxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDckUsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsUUFBUSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDN0QsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsS0FBSyxDQUFDLEtBQUs7WUFDUCxVQUFVLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7WUFDekUsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsT0FBTztZQUNILE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkMsT0FBTztvQkFDSCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDcEMsS0FBSyxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUMxQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtpQkFDdkMsQ0FBQTtZQUNMLENBQUMsQ0FBQyxDQUFBO1lBRUYsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8saUJBRTlCLE9BQU8sRUFBRSxrQkFBa0IsSUFDeEIsSUFBSSxHQUVYLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1osT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNuQixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7d0JBQ1osTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUMvQyx1Q0FBWSxDQUFDLEtBQUUsWUFBWSxJQUFFO3FCQUNoQztvQkFDRCxPQUFPLENBQUMsQ0FBQTtnQkFDWixDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUMsQ0FBQyxDQUFBO1FBQ1YsQ0FBQztLQUNKLENBQUE7QUFDTCxDQUFDIn0=