UNPKG

simonflex-framework

Version:

A library implements Meter Flex interface

149 lines 11.1 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const R = require("./rules"); const V = require("validator-ts"); const abi_1 = require("@meterio/devkit/dist/abi"); function newVendor(driver) { return { sign: kind => { if (kind === "tx") { return newTxSigningService(driver); } else if (kind === "cert") { return newCertSigningService(driver); } else { throw new R.BadParameter(`arg0: expected 'tx' or 'cert'`); } }, owned: addr => { addr = R.test(addr, R.address, "arg0").toLowerCase(); return driver.isAddressOwned(addr); } }; } exports.newVendor = newVendor; function newTxSigningService(driver) { 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(handler) { R.ensure(typeof handler === "function", `arg0: expected function`); opts.delegationHandler = (unsigned) => __awaiter(this, void 0, void 0, function* () { const obj = yield handler(unsigned); R.test(obj, { signature: v => (R.isHexBytes(v, 65) ? "" : "expected 65 bytes") }, "delegation-result"); return { signature: obj.signature.toLowerCase() }; }); return this; }, request(msg) { R.test(msg, [clauseScheme], "arg0"); const transformedMsg = msg.map(c => ({ to: c.to ? c.to.toLowerCase() : null, value: c.value.toString().toLowerCase(), data: (c.data || "0x").toLowerCase(), token: c.token, comment: c.comment, abi: c.abi ? JSON.parse(JSON.stringify(c.abi)) : c.abi })); return (() => __awaiter(this, void 0, void 0, function* () { try { return yield driver.signTx(transformedMsg, opts); } catch (err) { throw new Rejected(err.message); } }))(); } }; } function newCertSigningService(driver) { 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; }, request(msg) { R.test(msg, { purpose: v => v === "agreement" || v === "identification" ? "" : `expected 'agreement' or 'identification'`, payload: { type: v => (v === "text" ? "" : `expected 'text'`), content: R.string } }, "arg0"); return (() => __awaiter(this, void 0, void 0, function* () { try { 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, token: R.uint32, data: V.optional(R.bytes), comment: V.optional(R.string), abi: V.optional(v => { if (!(v instanceof Object)) { return "expected object"; } try { // tslint:disable-next-line: no-unused-expression new abi_1.abi.Function(v); return ""; } catch (err) { return `expected valid ABI (${err.message})`; } }) }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay92ZW5kb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLDZCQUE2QjtBQUM3QixrQ0FBa0M7QUFDbEMsa0RBQStDO0FBRS9DLFNBQWdCLFNBQVMsQ0FBQyxNQUFtQjtJQUMzQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNqQixPQUFPLG1CQUFtQixDQUFDLE1BQU0sQ0FBUSxDQUFDO2FBQzNDO2lCQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDMUIsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQVEsQ0FBQzthQUM3QztpQkFBTTtnQkFDTCxNQUFNLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2FBQzNEO1FBQ0gsQ0FBQztRQUNELEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNaLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JELE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFoQkQsOEJBZ0JDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsTUFBbUI7SUFFbkIsTUFBTSxJQUFJLEdBQTZCLEVBQUUsQ0FBQztJQUUxQyxPQUFPO1FBQ0wsTUFBTSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFD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