@mutopad/connex-framework
Version:
A library implements VeChain Connex interface
144 lines • 10.8 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.newTxSigningService = exports.newVendor = void 0;
const R = require("./rules");
const V = require("validator-ts");
const thor_devkit_1 = require("thor-devkit");
const bignumber_js_1 = require("bignumber.js");
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'`);
}
}
};
}
exports.newVendor = newVendor;
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_js_1.default(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);
}
}))();
}
};
}
exports.newTxSigningService = newTxSigningService;
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 thor_devkit_1.abi.Function(v).signature;
return '';
}
catch (err) {
return `expected valid ABI (${err.message})`;
}
})
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZlbmRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2QkFBNEI7QUFDNUIsa0NBQWlDO0FBQ2pDLDZDQUFpQztBQUNqQywrQ0FBb0M7QUFFcEMsU0FBZ0IsU0FBUyxDQUFDLE1BQXFCO0lBQzNDLE9BQU87UUFDSCxJQUFJLEVBQUUsQ0FBMEIsSUFBTyxFQUFFLEdBQXlFLEVBQU8sRUFBRTtZQUN2SCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUE4QixFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQzlELE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUE4QixDQUFDLENBQUE7YUFDdEY7aUJBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQWdDLEVBQUU7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsSUFBSSxDQUFDLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3dCQUN6RCxFQUFFLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztvQkFDbkQsT0FBTyxFQUFFO3dCQUNMLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO3dCQUNoRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07cUJBQ3BCO2lCQUNKLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQ1YsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQWdDLENBQUMsQ0FBQTthQUMxRjtpQkFBTTtnQkFDSCxN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