@meterio/flex-framework
Version:
A library implements Meter Flex interface
151 lines • 11.2 kB
JavaScript
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.newVendor = void 0;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay92ZW5kb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLGtDQUFrQztBQUNsQyxrREFBK0M7QUFFL0MsU0FBZ0IsU0FBUyxDQUFDLE1BQW1CO0lBQzNDLE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxDQUFRLENBQUM7YUFDM0M7aUJBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUMxQixPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBUSxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7YUFDM0Q7UUFDSCxDQUFDO1FBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1osSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckQsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQWhCRCw4QkFnQkM7QUFFRCxTQUFTLG1CQUFtQixDQUMxQixNQUFtQjtJQUVuQixNQUFNLElBQUksR0FBNkIsRUFBRSxDQUFDO0lBRTFDLE9BQU87UUFDTCxNQUFNLENBQUMsSUFBSTtZQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksQ0FBQztRQUNkLENB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
;