@mutopad/connex-framework
Version:
A library implements VeChain Connex interface
169 lines • 13.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.newAccountVisitor = void 0;
const thor_devkit_1 = require("thor-devkit");
const revert_reason_1 = require("./revert-reason");
const filter_1 = require("./filter");
const vendor_1 = require("./vendor");
const R = require("./rules");
function newAccountVisitor(readyDriver, addr) {
return {
get address() { return addr; },
get: () => {
return readyDriver.then(d => d.getAccount(addr, d.head.id));
},
getCode: () => {
return readyDriver.then(d => d.getCode(addr, d.head.id));
},
getStorage: key => {
key = R.test(key, R.bytes32, 'arg0').toLowerCase();
return readyDriver.then(d => d.getStorage(addr, key, d.head.id));
},
method: jsonABI => {
let coder;
try {
coder = new thor_devkit_1.abi.Function(JSON.parse(JSON.stringify(jsonABI)));
}
catch (err) {
throw new R.BadParameter(`arg0: expected valid ABI (${err.message})`);
}
return newMethod(readyDriver, addr, coder);
},
event: jsonABI => {
let coder;
try {
coder = new thor_devkit_1.abi.Event(JSON.parse(JSON.stringify(jsonABI)));
}
catch (err) {
throw new R.BadParameter(`arg0: expected valid ABI (${err.message})`);
}
return newEvent(readyDriver, addr, coder);
}
};
}
exports.newAccountVisitor = newAccountVisitor;
function newMethod(readyDriver, addr, coder) {
let value = 0;
const opts = {};
let cacheHints;
return {
value(val) {
value = R.test(val, R.bigInt, 'arg0');
return this;
},
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;
},
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 readyDriver.then(d => d.explain(Object.assign({ clauses: [clause] }, opts), d.head.id, cacheHints))
.then(outputs => outputs[0])
.then(output => {
if (output.reverted) {
const revertReason = (0, revert_reason_1.decodeRevertReason)(output.data);
return Object.assign(Object.assign({}, output), { revertReason, decoded: {} });
}
else {
const decoded = coder.decode(output.data);
return Object.assign(Object.assign({}, output), { decoded });
}
});
},
transact(...args) {
const clause = this.asClause(...args);
return (0, vendor_1.newTxSigningService)(readyDriver, [Object.assign(Object.assign({}, clause), { abi: coder.definition })]);
}
};
}
function newEvent(readyDriver, addr, coder) {
const encode = (indexed) => {
const topics = coder.encode(indexed);
return {
address: addr,
topic0: topics[0] || undefined,
topic1: topics[1] || undefined,
topic2: topics[2] || undefined,
topic3: topics[3] || undefined,
topic4: topics[4] || undefined
};
};
return {
asCriteria: indexed => {
try {
return encode(indexed);
}
catch (err) {
throw new R.BadParameter(`arg0: can not be encoded (${err.message})`);
}
},
filter: (indexed) => {
R.test(indexed, [{}], 'arg0');
if (indexed.length === 0) {
indexed = [{}];
}
const criteria = indexed.map((o, i) => {
try {
return encode(o);
}
catch (err) {
throw new R.BadParameter(`arg0.#${i}: can not be encoded (${err.message})`);
}
});
const filter = (0, filter_1.newFilter)(readyDriver, 'event', criteria);
return {
range(range) {
filter.range(range);
return this;
},
order(order) {
filter.order(order);
return this;
},
cache(hints) {
filter.cache(hints);
return this;
},
apply(offset, limit) {
return filter.apply(offset, limit)
.then(events => events.map(event => {
const decoded = coder.decode(event.data, event.topics);
return Object.assign(Object.assign({}, event), { decoded });
}));
}
};
}
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC12aXNpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FjY291bnQtdmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBaUM7QUFDakMsbURBQW9EO0FBQ3BELHFDQUFvQztBQUNwQyxxQ0FBOEM7QUFDOUMsNkJBQTRCO0FBRTVCLFNBQWdCLGlCQUFpQixDQUM3QixXQUFtQyxFQUNuQyxJQUFZO0lBRVosT0FBTztRQUNILElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFBLENBQUMsQ0FBQztRQUM3QixHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ04sT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ1YsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzVELENBQUM7UUFDRCxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDZCxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNsRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDZCxJ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