@mutopad/connex-framework
Version:
A library implements VeChain Connex interface
49 lines • 4.38 kB
JavaScript
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=