simonflex-framework
Version:
A library implements Meter Flex interface
149 lines • 11.1 kB
JavaScript
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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
;