UNPKG

@mutopad/connex-framework

Version:
169 lines 13.8 kB
"use strict"; 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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