UNPKG

@mutopad/connex-framework

Version:
107 lines 10.3 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { newAccountVisitor } from './account-visitor'; import { newBlockVisitor } from './block-visitor'; import { newTxVisitor } from './tx-visitor'; import { newFilter } from './filter'; import { newHeadTracker } from './head-tracker'; import { newExplainer } from './explainer'; import * as R from './rules'; import * as V from 'validator-ts'; export function newThor(driver) { const headTracker = newHeadTracker(driver); const readyDriver = (() => __awaiter(this, void 0, void 0, function* () { if (headTracker.head.number > 0) { return driver; } yield headTracker.ticker().next(); return driver; }))(); const genesis = JSON.parse(JSON.stringify(driver.genesis)); return { get genesis() { return genesis; }, get status() { return { head: headTracker.head, progress: headTracker.progress, finalized: headTracker.finalized }; }, ticker: () => headTracker.ticker(), account: addr => { addr = R.test(addr, R.address, 'arg0').toLowerCase(); return newAccountVisitor(readyDriver, addr); }, block: revision => { if (typeof revision === 'undefined') { revision = driver.head.id; } else { R.ensure(typeof revision === 'string' ? R.isHexBytes(revision, 32) : R.isUInt(revision, 32), 'arg0: expected bytes32 or unsigned 32-bit integer'); } return newBlockVisitor(driver, typeof revision === 'string' ? revision.toLowerCase() : revision); }, transaction: id => { id = R.test(id, R.bytes32, 'arg0').toLowerCase(); return newTxVisitor(readyDriver, id); }, filter: (kind, criteria) => { R.ensure(kind === 'event' || kind === 'transfer', `arg0: expected 'event' or 'transfer'`); if (kind === 'event') { R.test(criteria, [eventCriteriaScheme], 'arg1'); return newFilter(readyDriver, 'event', criteria .map(c => { return { address: c.address ? c.address.toLowerCase() : undefined, topic0: c.topic0 ? c.topic0.toLowerCase() : undefined, topic1: c.topic1 ? c.topic1.toLowerCase() : undefined, topic2: c.topic2 ? c.topic2.toLowerCase() : undefined, topic3: c.topic3 ? c.topic3.toLowerCase() : undefined, topic4: c.topic4 ? c.topic4.toLowerCase() : undefined }; })); } else { R.test(criteria, [transferCriteriaScheme], 'arg1'); return newFilter(readyDriver, 'transfer', criteria .map(c => { return { txOrigin: c.txOrigin ? c.txOrigin.toLowerCase() : undefined, sender: c.sender ? c.sender.toLowerCase() : undefined, recipient: c.recipient ? c.recipient.toLowerCase() : undefined }; })); } }, explain: (clauses) => { R.test(clauses, [clauseScheme], 'arg0'); return newExplainer(readyDriver, clauses); } }; } const clauseScheme = { to: V.nullable(R.address), value: R.bigInt, data: V.optional(R.bytes) }; const eventCriteriaScheme = { address: V.optional(R.address), topic0: V.optional(R.bytes32), topic1: V.optional(R.bytes32), topic2: V.optional(R.bytes32), topic3: V.optional(R.bytes32), topic4: V.optional(R.bytes32) }; const transferCriteriaScheme = { sender: V.optional(R.address), recipient: V.optional(R.address), txOrigin: V.optional(R.address) }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxTQUFTLENBQUE7QUFDNUIsT0FBTyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUE7QUFFakMsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFxQjtJQUN6QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFMUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFTLEVBQUU7UUFDNUIsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxNQUFNLENBQUE7U0FDaEI7UUFDRCxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNqQyxPQUFPLE1BQU0sQ0FBQTtJQUNqQixDQUFDLENBQUEsQ0FBQyxFQUFFLENBQUE7SUFFSixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFzQixDQUFBO0lBQy9FLE9BQU87UUFDSCxJQUFJLE9BQU8sS0FBSyxPQUFPLE9BQU8sQ0FBQSxDQUFDLENBQUM7UUFDaEMsSUFBSSxNQUFNO1lBQ04sT0FBTztnQkFDSCxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7Z0JBQ3RCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTtnQkFDOUIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO2FBQ25DLENBQUE7UUFDTCxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7UUFDbEMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1osSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDcEQsT0FBTyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDL0MsQ0FBQztRQUNELEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNkLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxFQUFFO2dCQUNqQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUE7YUFDNUI7aUJBQU07Z0JBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFDdkYsbURBQW1ELENBQUMsQ0FBQTthQUMzRDtZQUNELE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDcEcsQ0FBQztRQUNELFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNkLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ2hELE9BQU8sWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN4QyxDQUFDO1FBQ0QsTUFBTSxFQUFFLENBQWlDLElBQU8sRUFBRSxRQUEwQyxFQUFPLEVBQUU7WUFDakcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLElBQUksS0FBSyxVQUFVLEVBQzVDLHNDQUFzQyxDQUFDLENBQUE7WUFDM0MsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQWtELEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO2dCQUN6RixPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFHLFFBQW1EO3FCQUN0RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ0wsT0FBTzt3QkFDSCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzt3QkFDeEQsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7d0JBQ3JELE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO3dCQUNyRCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzt3QkFDckQsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7d0JBQ3JELE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO3FCQUN4RCxDQUFBO2dCQUNMLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDVjtpQkFBTTtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQXFELEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO2dCQUMvRixPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFHLFFBQXNEO3FCQUM1RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ0wsT0FBTzt3QkFDSCxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzt3QkFDM0QsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7d0JBQ3JELFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO3FCQUNqRSxDQUFBO2dCQUNMLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDVjtRQUNMLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3ZDLE9BQU8sWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM3QyxDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFHRCxNQUFNLFlBQVksR0FBK0I7SUFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN6QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDZixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0NBQzVCLENBQUE7QUFFRCxNQUFNLG1CQUFtQixHQUFtRDtJQUN4RSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzlCLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDN0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDN0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztDQUNoQyxDQUFBO0FBQ0QsTUFBTSxzQkFBc0IsR0FBc0Q7SUFDOUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM3QixTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2hDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Q0FDbEMsQ0FBQSJ9