@iexec/web3mail
Version:
This product enables users to confidentially store data–such as mail address, documents, personal information ...
38 lines • 1.66 kB
JavaScript
import { JsonRpcProvider, BrowserProvider, AbstractProvider, AbstractSigner, } from 'ethers';
import { tryResolveChainIdFromProviderString } from '../config/config.js';
export async function getChainIdFromProvider(ethProvider) {
try {
if (typeof ethProvider === 'string') {
const resolved = tryResolveChainIdFromProviderString(ethProvider);
if (resolved !== undefined) {
return resolved;
}
const provider = new JsonRpcProvider(ethProvider);
const network = await provider.getNetwork();
return Number(network.chainId);
}
else if (ethProvider instanceof AbstractProvider) {
const network = await ethProvider.getNetwork();
return Number(network.chainId);
}
else if (ethProvider instanceof AbstractSigner) {
const { provider } = ethProvider;
if (!provider) {
throw Error('Signer is not connected to a provider');
}
const network = await provider.getNetwork();
return Number(network.chainId);
}
else if ('request' in ethProvider) {
const provider = new BrowserProvider(ethProvider);
const network = await provider.getNetwork();
return Number(network.chainId);
}
}
catch (e) {
console.warn('Failed to detect chainId:', e);
throw new Error(`Failed to detect chainId from ethProvider: ${e instanceof Error ? e.message : String(e)}`);
}
throw new Error('Unsupported ethProvider for chain ID detection');
}
//# sourceMappingURL=getChainId.js.map