simonzgconnexframework
Version:
A library implements VeChain Connex interface
63 lines • 5.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const revert_reason_1 = require("./revert-reason");
const R = require("./rules");
function newMethod(ctx, addr, coder) {
let value = 0;
const opts = {};
let cacheTies;
return {
value(val) {
value = R.test(val, R.bigInt, 'arg0');
return this;
},
caller(caller) {
opts.caller = R.test(caller, 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;
},
cache(ties) {
cacheTies = R.test(ties, [R.address], 'arg0').map(t => t.toLowerCase());
return this;
},
asClause: (...args) => {
const inputsLen = (coder.definition.inputs || []).length;
R.ensure(inputsLen === args.length, `args count expected ${inputsLen}`);
try {
const data = coder.encode(...args);
return {
to: addr,
value: value.toString().toLowerCase(),
data
};
}
catch (err) {
throw new R.BadParameter(`args can not be encoded (${err.message})`);
}
},
call(...args) {
const clause = this.asClause(...args);
return ctx.driver.explain(Object.assign({ clauses: [clause] }, opts), ctx.trackedHead.id, cacheTies)
.then(outputs => outputs[0])
.then(output => {
if (output.reverted) {
const revertReason = revert_reason_1.decodeRevertReason(output.data);
return Object.assign({}, output, { decoded: { revertReason } });
}
else {
const decoded = coder.decode(output.data);
return Object.assign({}, output, { decoded });
}
});
}
};
}
exports.newMethod = newMethod;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay9tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtREFBb0Q7QUFDcEQsNkJBQTRCO0FBRTVCLFNBQWdCLFNBQVMsQ0FDckIsR0FBWSxFQUNaLElBQVksRUFDWixLQUFtQjtJQUduQixJQUFJLEtBQUssR0FBb0IsQ0FBQyxDQUFBO0lBQzlCLE1BQU0sSUFBSSxHQUlOLEVBQUUsQ0FBQTtJQUVOLElBQUksU0FBK0IsQ0FBQTtJQUVuQyxPQUFPO1FBQ0gsS0FBSyxDQUFDLEdBQUc7WUFDTCxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNyQyxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTTtZQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUM3RCxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxHQUFHLENBQUMsR0FBRztZQUNILElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUN4QyxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxRQUFRLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNyRSxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBYztZQUNoQixTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7WUFDdkUsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUNsQixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtZQUN4RCxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLHVCQUF1QixTQUFTLEVBQUUsQ0FBQyxDQUFBO1lBQ3ZFLElBQUk7Z0JBQ0EsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO2dCQUNsQyxPQUFPO29CQUNILEVBQUUsRUFBRSxJQUFJO29CQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFO29CQUNyQyxJQUFJO2lCQUNQLENBQUE7YUFDSjtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNWLE1BQU0sSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLDRCQUE0QixHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQTthQUN2RTtRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxJQUFJO1lBQ1IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1lBQ3JDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLGlCQUVqQixPQUFPLEVBQUUsQ0FBQyxNQUFhLENBQUMsSUFDckIsSUFBSSxHQUVYLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUNsQixTQUFTLENBQ1o7aUJBQ0ksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNqQixNQUFNLFlBQVksR0FBRyxrQ0FBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3BELHlCQUFZLE1BQU0sSUFBRSxPQUFPLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBRTtpQkFDbEQ7cUJBQU07b0JBQ0gsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3pDLHlCQUFZLE1BQU0sSUFBRSxPQUFPLElBQUU7aUJBQ2hDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7UUFDVixDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUF4RUQsOEJBd0VDIn0=