UNPKG

@broxus/js-core

Version:

MobX-based JavaScript Core library

39 lines (38 loc) 1.44 kB
/* 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) { networks.forEach(value => { if (!connections.has(value.chainId.toString())) { connections.set(value.chainId, makeConnection(value)); } }); if (connections.has(chainId)) { const connection = connections.get(chainId); if (!connection) { throw new Error('Cannot get TVM 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('Cannot get TVM connection'); }