@broxus/js-core
Version:
MobX-based JavaScript Core library
39 lines (38 loc) • 1.52 kB
JavaScript
/* eslint-disable @stylistic/max-len */
import { ProviderRpcClient } from 'everscale-inpage-provider';
import { StandaloneClientAdapter } from '../adapters';
const connections = new Map();
function makeConnection(network) {
return new ProviderRpcClient({
provider: new StandaloneClientAdapter({
connection: network.connectionProperties || {
data: { endpoint: network.rpcUrl },
id: Number(network.chainId),
type: process.env.NODE_ENV === 'production' ? 'proto' : 'jrpc',
},
}),
});
}
export function getTvmConnection(networks, chainId, network) {
if (Array.isArray(networks) && chainId) {
let connection = connections.get(chainId);
if (!connection) {
const _network = networks.find(value => value.chainId.toString() === chainId.toString());
if (_network) {
connection = makeConnection(_network);
}
}
if (!connection) {
throw new Error(`The ${network?.shortName} connection was not established`);
}
connections.set(chainId, connection);
return connection;
}
const _network = 'rpcUrl' in networks && 'chainId' in networks ? networks : network;
if (_network?.rpcUrl) {
const connection = makeConnection(_network);
connections.set(_network.chainId, connection);
return connection;
}
throw new Error(`The ${_network?.shortName} connection was not established`);
}