Added whitelist support to getDefaultProvider.

This commit is contained in:
Richard Moore 2023-07-27 20:21:55 -04:00
parent 23704a9c44
commit 82bb936542

@ -28,6 +28,17 @@ const Testnets = "goerli kovan sepolia classicKotti optimism-goerli arbitrum-goe
export function getDefaultProvider(network: string | Networkish | WebSocketLike, options?: any): AbstractProvider { export function getDefaultProvider(network: string | Networkish | WebSocketLike, options?: any): AbstractProvider {
if (options == null) { options = { }; } if (options == null) { options = { }; }
const allowService = (name: string) => {
if (options[name] === "-") { return false; }
if (typeof(options.exclusive) === "string") {
return (name === options.exclusive);
}
if (Array.isArray(options.exclusive)) {
return (options.exclusive.indexOf(name) !== -1);
}
return true;
};
if (typeof(network) === "string" && network.match(/^https?:/)) { if (typeof(network) === "string" && network.match(/^https?:/)) {
return new JsonRpcProvider(network); return new JsonRpcProvider(network);
} }
@ -45,39 +56,37 @@ export function getDefaultProvider(network: string | Networkish | WebSocketLike,
const providers: Array<AbstractProvider> = [ ]; const providers: Array<AbstractProvider> = [ ];
if (options.publicPolygon !== "-" && staticNetwork) { if (allowService("publicPolygon") && staticNetwork) {
if (staticNetwork.name === "matic") { if (staticNetwork.name === "matic") {
providers.push(new JsonRpcProvider("https:/\/polygon-rpc.com/", staticNetwork, { staticNetwork })); providers.push(new JsonRpcProvider("https:/\/polygon-rpc.com/", staticNetwork, { staticNetwork }));
} else if (staticNetwork.name === "matic-mumbai") {
providers.push(new JsonRpcProvider("https:/\/rpc-mumbai.matic.today/", staticNetwork, { staticNetwork }));
} }
} }
if (options.alchemy !== "-") { if (allowService("alchemy")) {
try { try {
providers.push(new AlchemyProvider(network, options.alchemy)); providers.push(new AlchemyProvider(network, options.alchemy));
} catch (error) { } } catch (error) { }
} }
if (options.ankr !== "-" && options.ankr != null) { if (allowService("ankr") && options.ankr != null) {
try { try {
providers.push(new AnkrProvider(network, options.ankr)); providers.push(new AnkrProvider(network, options.ankr));
} catch (error) { } } catch (error) { }
} }
if (options.cloudflare !== "-") { if (allowService("cloudflare")) {
try { try {
providers.push(new CloudflareProvider(network)); providers.push(new CloudflareProvider(network));
} catch (error) { } } catch (error) { }
} }
if (options.etherscan !== "-") { if (allowService("etherscan")) {
try { try {
providers.push(new EtherscanProvider(network, options.etherscan)); providers.push(new EtherscanProvider(network, options.etherscan));
} catch (error) { } } catch (error) { }
} }
if (options.infura !== "-") { if (allowService("infura")) {
try { try {
let projectId = options.infura; let projectId = options.infura;
let projectSecret: undefined | string = undefined; let projectSecret: undefined | string = undefined;
@ -103,7 +112,7 @@ export function getDefaultProvider(network: string | Networkish | WebSocketLike,
} catch (error) { console.log(error); } } catch (error) { console.log(error); }
} }
*/ */
if (options.quicknode !== "-") { if (allowService("quicknode")) {
try { try {
let token = options.quicknode; let token = options.quicknode;
providers.push(new QuickNodeProvider(network, token)); providers.push(new QuickNodeProvider(network, token));