UNPKG

simonflex-framework

Version:

A library implements Meter Flex interface

50 lines 4.08 kB
"use strict"; 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=