PHP WebShell
Текущая директория: /opt/BitGoJS/modules/web-demo/src/components/Coins
Просмотр файла: coinFactory.ts
import { BitGoAPI } from '@bitgo/sdk-api';
import { BaseCoin } from '@bitgo/sdk-core';
class CoinFactory {
private coinCache: Map<string, BaseCoin>;
constructor() {
this.coinCache = new Map();
}
private cacheAndRegister(
name: string,
sdk: BitGoAPI,
register: (sdk: BitGoAPI) => void,
) {
register(sdk);
const coin = sdk.coin(name);
this.coinCache.set(name, coin);
return coin;
}
async getCoin(name: string, sdk: BitGoAPI): Promise<BaseCoin | undefined> {
const cachedCoin = this.coinCache.get(name);
if (cachedCoin) {
return cachedCoin;
}
switch (name) {
case 'ada':
case 'tada': {
const { register } = await import('@bitgo/sdk-coin-ada');
return this.cacheAndRegister(name, sdk, register);
}
case 'algo':
case 'talgo': {
const { register } = await import('@bitgo/sdk-coin-algo');
return this.cacheAndRegister(name, sdk, register);
}
case 'avaxc':
case 'tavaxc': {
const { register } = await import('@bitgo/sdk-coin-avaxc');
return this.cacheAndRegister(name, sdk, register);
}
case 'avaxp':
case 'tavaxp': {
const { register } = await import('@bitgo/sdk-coin-avaxp');
return this.cacheAndRegister(name, sdk, register);
}
case 'bch':
case 'tbch': {
const { register } = await import('@bitgo/sdk-coin-bch');
return this.cacheAndRegister(name, sdk, register);
}
case 'bcha':
case 'tbcha': {
const { register } = await import('@bitgo/sdk-coin-bcha');
return this.cacheAndRegister(name, sdk, register);
}
case 'bsc':
case 'tbsc': {
const { register } = await import('@bitgo/sdk-coin-bsc');
return this.cacheAndRegister(name, sdk, register);
}
case 'bsv':
case 'tbsv': {
const { register } = await import('@bitgo/sdk-coin-bsv');
return this.cacheAndRegister(name, sdk, register);
}
case 'btc':
case 'tbtc': {
const { register } = await import('@bitgo/sdk-coin-btc');
return this.cacheAndRegister(name, sdk, register);
}
case 'btg': {
const { register } = await import('@bitgo/sdk-coin-btg');
return this.cacheAndRegister(name, sdk, register);
}
case 'celo':
case 'tcelo': {
const { register } = await import('@bitgo/sdk-coin-celo');
return this.cacheAndRegister(name, sdk, register);
}
case 'cspr':
case 'tcspr': {
const { register } = await import('@bitgo/sdk-coin-cspr');
return this.cacheAndRegister(name, sdk, register);
}
case 'dash':
case 'tdash': {
const { register } = await import('@bitgo/sdk-coin-dash');
return this.cacheAndRegister(name, sdk, register);
}
case 'doge':
case 'tdoge': {
const { register } = await import('@bitgo/sdk-coin-doge');
return this.cacheAndRegister(name, sdk, register);
}
case 'dot':
case 'tdot': {
const { register } = await import('@bitgo/sdk-coin-dot');
return this.cacheAndRegister(name, sdk, register);
}
case 'eos':
case 'teos': {
const { register } = await import('@bitgo/sdk-coin-eos');
return this.cacheAndRegister(name, sdk, register);
}
case 'etc':
case 'tetc': {
const { register } = await import('@bitgo/sdk-coin-etc');
return this.cacheAndRegister(name, sdk, register);
}
case 'eth':
case 'teth':
case 'gteth':
case 'hteth': {
const { register } = await import('@bitgo/sdk-coin-eth');
return this.cacheAndRegister(name, sdk, register);
}
case 'ethw': {
const { register } = await import('@bitgo/sdk-coin-ethw');
return this.cacheAndRegister(name, sdk, register);
}
case 'hbar':
case 'thbar': {
const { register } = await import('@bitgo/sdk-coin-hbar');
return this.cacheAndRegister(name, sdk, register);
}
case 'ltc':
case 'tltc': {
const { register } = await import('@bitgo/sdk-coin-ltc');
return this.cacheAndRegister(name, sdk, register);
}
case 'near':
case 'tnear': {
const { register } = await import('@bitgo/sdk-coin-near');
return this.cacheAndRegister(name, sdk, register);
}
case 'polygon':
case 'tpolygon': {
const { register } = await import('@bitgo/sdk-coin-polygon');
return this.cacheAndRegister(name, sdk, register);
}
case 'rbtc':
case 'trbtc': {
const { register } = await import('@bitgo/sdk-coin-rbtc');
return this.cacheAndRegister(name, sdk, register);
}
case 'sol':
case 'tsol': {
const { register } = await import('@bitgo/sdk-coin-sol');
return this.cacheAndRegister(name, sdk, register);
}
case 'stx':
case 'tstx': {
const { register } = await import('@bitgo/sdk-coin-stx');
return this.cacheAndRegister(name, sdk, register);
}
case 'sui':
case 'tsui': {
const { register } = await import('@bitgo/sdk-coin-sui');
return this.cacheAndRegister(name, sdk, register);
}
case 'trx':
case 'ttrx': {
const { register } = await import('@bitgo/sdk-coin-trx');
return this.cacheAndRegister(name, sdk, register);
}
case 'txlm':
case 'xlm': {
const { register } = await import('@bitgo/sdk-coin-xlm');
return this.cacheAndRegister(name, sdk, register);
}
case 'xrp':
case 'txrp': {
const { register } = await import('@bitgo/sdk-coin-xrp');
return this.cacheAndRegister(name, sdk, register);
}
case 'xtz':
case 'txtz': {
const { register } = await import('@bitgo/sdk-coin-xtz');
return this.cacheAndRegister(name, sdk, register);
}
case 'zec':
case 'tzec': {
const { register } = await import('@bitgo/sdk-coin-zec');
return this.cacheAndRegister(name, sdk, register);
}
}
}
}
export default new CoinFactory();
Выполнить команду
Для локальной разработки. Не используйте в интернете!