0xweb
Version:
Contract package manager and other web3 tools
43 lines (35 loc) • 1.63 kB
text/typescript
import { TPlatform } from '@dequanto/models/TPlatform';
import { $config } from '@dequanto/utils/$config';
import { IBlockchainExplorer } from './IBlockchainExplorer';
import { Constructor } from '@dequanto/utils/types';
import { BlockchainExplorer, IBlockchainExplorerFactoryParams } from './BlockchainExplorer';
/** @obsolete Use BlockchainExplorerFactory instead */
export namespace BlockchainExplorerProvider {
const registry = {} as Record<TPlatform, IBlockchainExplorer | Constructor<IBlockchainExplorer>>;
export function get (platform: TPlatform): IBlockchainExplorer {
switch (platform) {
case 'hardhat':
return new BlockchainExplorer({ platform });
default:
let cfg = $config.get(`blockchainExplorer.${platform}`);
let Mix = registry[platform];
if (Mix != null) {
if (typeof Mix === 'function') {
return new Mix(cfg);
}
return Mix;
}
if (cfg != null) {
return new BlockchainExplorer({ platform });
}
throw new Error(`Unsupported platform ${platform} for block chain explorer`);
}
}
export function register (platform: TPlatform, explorer: IBlockchainExplorer | Constructor<IBlockchainExplorer>) {
registry[platform] = explorer;
}
/** @obsolete Use BlockchainExplorer class instead */
export function create(options: IBlockchainExplorerFactoryParams) {
return new BlockchainExplorer(options);
}
}