@vechain/connex
Version:
Standard interface to connect DApp with VeChain and user
98 lines • 7.89 kB
JavaScript
import { Framework, newVendor } from '@vechain/connex-framework';
import { genesisBlocks } from './config';
import { createFull, createNoVendor, LazyDriver } from './driver';
import { createSync, createSync2 } from './signer';
/** convert options.network to Connex.Thor.Block */
function normalizeNetwork(n) {
n = n || 'main';
if (typeof n === 'string') {
const gb = genesisBlocks[n];
if (!gb) {
throw new Error('invalid network');
}
return gb;
}
else {
return n;
}
}
/** convert network name to genesis id */
function normalizeGenesisId(id) {
id = id || 'main';
if (/^0x[0-9a-f]{64}$/.test(id)) {
return id;
}
const gb = genesisBlocks[id];
if (gb) {
return gb.id;
}
throw new Error('invalid genesis id');
}
/** convert options.signer to a signer creation function */
function normalizeSigner(genesisId, signer) {
switch (signer.toLocaleLowerCase()) {
case 'sync':
if (!window.connex) {
throw new Error('Sync not found');
}
if (window.connex.thor.genesis.id !== genesisId) {
throw new Error('Network mismatch');
}
return createSync;
case 'sync2':
return createSync2;
default:
throw new Error('unsupported signer');
}
}
/** Thor class which can work stand alone to provide reading-services only */
class ThorClass {
constructor(opts) {
const genesis = normalizeNetwork(opts.network);
const driver = createNoVendor(opts.node, genesis);
const framework = new Framework(driver);
return {
get genesis() { return framework.thor.genesis; },
get status() { return framework.thor.status; },
get ticker() { return framework.thor.ticker.bind(framework.thor); },
get account() { return framework.thor.account.bind(framework.thor); },
get block() { return framework.thor.block.bind(framework.thor); },
get transaction() { return framework.thor.transaction.bind(framework.thor); },
get filter() { return framework.thor.filter.bind(framework.thor); },
get explain() { return framework.thor.explain.bind(framework.thor); }
};
}
}
/** Vendor class which can work standalone to provides signing-services only */
class VendorClass {
constructor(genesisId, signer = 'sync2') {
genesisId = normalizeGenesisId(genesisId);
const newSigner = normalizeSigner(genesisId, signer);
const driver = new LazyDriver(newSigner(genesisId));
const vendor = newVendor(driver);
return {
get sign() {
return vendor.sign.bind(vendor);
}
};
}
}
/** Connex class */
class ConnexClass {
constructor(opts) {
var _a;
const genesis = normalizeNetwork(opts.network);
const newSigner = normalizeSigner(genesis.id, (_a = opts.signer) !== null && _a !== void 0 ? _a : 'sync2');
const driver = createFull(opts.node, genesis, newSigner);
const framework = new Framework(driver);
return {
get thor() { return framework.thor; },
get vendor() { return framework.vendor; }
};
}
}
ConnexClass.Thor = ThorClass;
ConnexClass.Vendor = VendorClass;
export default ConnexClass;
export { ConnexClass as Connex };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRSxPQUFPLEVBQVcsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQVMzRCxtREFBbUQ7QUFDbkQsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFxQjtJQUMzQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQTtJQUNmLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO1FBQ3ZCLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3JDO1FBQ0QsT0FBTyxFQUFFLENBQUE7S0FDWjtTQUFNO1FBQ0gsT0FBTyxDQUFDLENBQUE7S0FDWDtBQUNMLENBQUM7QUFFRCx5Q0FBeUM7QUFDekMsU0FBUyxrQkFBa0IsQ0FBQyxFQUE2QjtJQUNyRCxFQUFFLEdBQUcsRUFBRSxJQUFJLE1BQU0sQ0FBQTtJQUNqQixJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUM3QixPQUFPLEVBQUUsQ0FBQTtLQUNaO0lBQ0QsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQXFCLENBQUMsQ0FBQTtJQUMvQyxJQUFJLEVBQUUsRUFBRTtRQUNKLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQTtLQUNmO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FB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