@meterio/flex-framework
Version:
A library implements Meter Flex interface
53 lines • 4.25 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.newExplainer = void 0;
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(),
token: c.token,
};
});
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(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay9leHBsYWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXFEO0FBQ3JELDZCQUE2QjtBQUM3QixrQ0FBa0M7QUFFbEMsU0FBZ0IsWUFBWSxDQUFDLEdBQVk7SUFDdkMsTUFBTSxJQUFJLEdBSU4sRUFBRSxDQUFDO0lBRVAsT0FBTztRQUNMLE1BQU0sQ0FBQyxJQUFJO1lBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELEdBQUcsQ0FBQyxHQUFHO1lBQ0wsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELFFBQVEsQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sQ0FBQyxPQUFPO1lBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV4QyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDM0MsT0FBTztvQkFDTCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDcEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFO29CQUN2QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtvQkFDcEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2lCQUNmLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sR0FBRyxDQUFDLE1BQU07aUJBQ2QsT0FBTyxpQkFFSixPQUFPLEVBQUUsa0JBQWtCLElBQ3hCLElBQUksR0FFVCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FDbkI7aUJBQ0EsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN2QixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7d0JBQ2QsTUFBTSxZQUFZLEdBQUcsa0NBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCx1Q0FBWSxDQUFDLEtBQUUsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUc7cUJBQzVDO29CQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFuREQsb0NBbURDO0FBRUQsTUFBTSxZQUFZLEdBQWdDO0lBQ2hELEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2YsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2YsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztDQUMxQixDQUFDIn0=
;