UNPKG

@mutopad/connex-framework

Version:
139 lines 10.6 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 * as R from './rules'; import * as V from 'validator-ts'; import { abi } from 'thor-devkit'; import BigNumber from 'bignumber.js'; export function newVendor(driver) { return { sign: (kind, msg) => { if (kind === 'tx') { R.test(msg, [clauseScheme], 'arg1'); return newTxSigningService(Promise.resolve(driver), msg); } else if (kind === 'cert') { R.test(msg, { purpose: v => (v === 'agreement' || v === 'identification') ? '' : `expected 'agreement' or 'identification'`, payload: { type: v => v === 'text' ? '' : `expected 'text'`, content: R.string } }, 'arg1'); return newCertSigningService(Promise.resolve(driver), msg); } else { throw new R.BadParameter(`arg0: expected 'tx' or 'cert'`); } } }; } export function newTxSigningService(readyDriver, msg) { const opts = {}; return { signer(addr) { opts.signer = R.test(addr, R.address, 'arg0').toLowerCase(); return this; }, gas(gas) { opts.gas = R.test(gas, R.uint64, 'arg0'); return this; }, dependsOn(txid) { opts.dependsOn = R.test(txid, R.bytes32, 'arg0').toLowerCase(); return this; }, link(url) { opts.link = R.test(url, R.string, 'arg0'); return this; }, comment(text) { opts.comment = R.test(text, R.string, 'arg0'); return this; }, delegate(url, signer) { R.ensure(typeof url === 'string', `arg0: expected url string`); R.test(signer, V.optional(R.address), 'arg1'); opts.delegator = { url, signer: signer && signer.toLowerCase() }; return this; }, accepted(cb) { R.ensure(typeof cb === 'function', 'arg0: expected function'); opts.onAccepted = cb; return this; }, request() { const transformedMsg = msg.map(c => (Object.assign(Object.assign({}, c), { value: new BigNumber(c.value).toString(10) }))); return (() => __awaiter(this, void 0, void 0, function* () { try { const driver = yield readyDriver; return yield driver.signTx(transformedMsg, opts); } catch (err) { throw new Rejected(err.message); } }))(); } }; } function newCertSigningService(readyDriver, msg) { const opts = {}; return { signer(addr) { opts.signer = R.test(addr, R.address, 'arg0').toLowerCase(); return this; }, link(url) { opts.link = R.test(url, R.string, 'arg0'); return this; }, accepted(cb) { R.ensure(typeof cb === 'function', 'arg0: expected function'); opts.onAccepted = cb; return this; }, request() { return (() => __awaiter(this, void 0, void 0, function* () { try { const driver = yield readyDriver; return yield driver.signCert(msg, opts); } catch (err) { throw new Rejected(err.message); } }))(); } }; } class Rejected extends Error { constructor(msg) { super(msg); } } Rejected.prototype.name = 'Rejected'; const clauseScheme = { to: V.nullable(R.address), value: R.bigInt, data: V.optional(R.bytes), comment: V.optional(R.string), abi: V.optional(v => { if (!(v instanceof Object)) { return 'expected object'; } try { new abi.Function(v).signature; return ''; } catch (err) { return `expected valid ABI (${err.message})`; } }) }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZlbmRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQTtBQUM1QixPQUFPLEtBQUssQ0FBQyxNQUFNLGNBQWMsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2pDLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQTtBQUVwQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQXFCO0lBQzNDLE9BQU87UUFDSCxJQUFJLEVBQUUsQ0FBMEIsSUFBTyxFQUFFLEdBQXlFLEVBQU8sRUFBRTtZQUN2SCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUE4QixFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQzlELE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUE4QixDQUFDLENBQUE7YUFDdEY7aUJBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQWdDLEVBQUU7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsSUFBSSxDQUFDLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3dCQUN6RCxFQUFFLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztvQkFDbkQsT0FBTyxFQUFFO3dCQUNMLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO3dCQUNoRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07cUJBQ3BCO2lCQUNKLEVBQUUsTUFBTSxDQUFDLENBQUE7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