simonzgconnexframework
Version:
A library implements VeChain Connex interface
146 lines • 10.9 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("thor-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(),
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,
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay92ZW5kb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLDZCQUE0QjtBQUM1QixrQ0FBaUM7QUFDakMsOENBQTBDO0FBRTFDLFNBQWdCLFNBQVMsQ0FBQyxNQUFxQjtJQUMzQyxPQUFPO1FBQ0gsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2YsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLENBQVEsQ0FBQTthQUM1QztpQkFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3hCLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFRLENBQUE7YUFDOUM7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQTthQUM1RDtRQUNMLENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ3BELE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN0QyxDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFoQkQsOEJBZ0JDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxNQUFxQjtJQUM5QyxNQUFNLElBQUksR0FBK0IsRUFBRSxDQUFBO0lBRTNDLE9BQU87UUFDSCxNQUFNLENBQUMsSUFBSTtZQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUMzRCxPQUFPLElBQUksQ0FBQTtR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