@vechain/connex
Version:
Standard interface to connect DApp with VeChain and user
104 lines • 8.69 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); },
get fees() {
return {
get history() { return framework.thor.fees.history.bind(framework.thor.fees); },
get priorityFee() { return framework.thor.fees.priorityFee.bind(framework.thor.fees); },
};
},
};
}
}
/** 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsRSxPQUFPLEVBQVcsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVM1RCxtREFBbUQ7QUFDbkQsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFxQjtJQUMzQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQTtJQUNmLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEIsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN0QyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sQ0FBQyxDQUFBO0lBQ1osQ0FBQztBQUNMLENBQUM7QUFFRCx5Q0FBeUM7QUFDekMsU0FBUyxrQkFBa0IsQ0FBQyxFQUE2QjtJQUNyRCxFQUFFLEdBQUcsRUFBRSxJQUFJLE1BQU0sQ0FBQTtJQUNqQixJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUNELE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxFQUFxQixDQUFDLENBQUE7SUFDL0MsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQTtJQUNo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