simonflex-framework
Version:
A library implements Meter Flex interface
50 lines • 4.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const revert_reason_1 = require("./revert-reason");
const R = require("./rules");
const V = require("validator-ts");
function newExplainer(ctx) {
const opts = {};
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;
},
execute(clauses) {
R.test(clauses, [clauseScheme], 'arg0');
const transformedClauses = clauses.map(c => {
return {
to: c.to ? c.to.toLowerCase() : null,
value: c.value.toString().toLowerCase(),
data: (c.data || '0x').toLowerCase()
};
});
return ctx.driver.explain(Object.assign({ clauses: transformedClauses }, opts), ctx.trackedHead.id)
.then(outputs => {
return outputs.map(o => {
if (o.reverted) {
const revertReason = revert_reason_1.decodeRevertReason(o.data);
return Object.assign({}, o, { decoded: { revertReason } });
}
return o;
});
});
}
};
}
exports.newExplainer = newExplainer;
const clauseScheme = {
to: V.nullable(R.address),
token: R.uint32,
value: R.bigInt,
data: V.optional(R.bytes)
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay9leHBsYWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFBb0Q7QUFDcEQsNkJBQTRCO0FBQzVCLGtDQUFpQztBQUVqQyxTQUFnQixZQUFZLENBQUMsR0FBWTtJQUNyQyxNQUFNLElBQUksR0FJTixFQUFFLENBQUE7SUFFTixPQUFPO1FBQ0gsTUFBTSxDQUFDLElBQUk7WUFDUCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDM0QsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsR0FBRyxDQUFDLEdBQUc7WUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDeEMsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsUUFBUSxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDckUsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsT0FBTyxDQUFDLE9BQU87WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBRXZDLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkMsT0FBTztvQkFDSCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDcEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFO29CQUN2QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtpQkFDdkMsQ0FBQTtZQUNMLENBQUMsQ0FBQyxDQUFBO1lBRUYsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8saUJBRWpCLE9BQU8sRUFBRSxrQkFBa0IsSUFDeEIsSUFBSSxHQUVYLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2lCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1osT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNuQixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7d0JBQ1osTUFBTSxZQUFZLEdBQUcsa0NBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUMvQyx5QkFBWSxDQUFDLElBQUUsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUU7cUJBQzdDO29CQUNELE9BQU8sQ0FBQyxDQUFBO2dCQUNaLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQyxDQUFDLENBQUE7UUFDVixDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFoREQsb0NBZ0RDO0FBRUQsTUFBTSxZQUFZLEdBQWdDO0lBQzlDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2YsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2YsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztDQUM1QixDQUFBIn0=
;