PHP WebShell

Текущая директория: /opt/BitGoJS/modules/bitgo/test/v2/unit/coins/utxo/util

Просмотр файла: utxoCoins.ts

/**
 * @prettier
 */
import * as utxolib from '@bitgo/utxo-lib';
import * as coins from '../../../../../../src/v2/coins';
import { AbstractUtxoCoin } from '@bitgo/abstract-utxo';
import { TestBitGo } from '@bitgo/sdk-test';
import { BitGo } from '../../../../../../src/bitgo';

const AbstractUtxoCoinCtor = AbstractUtxoCoin as unknown as ObjectConstructor;

function getPrototypeChain(c: ObjectConstructor): ObjectConstructor[] {
  if (!c) {
    return [];
  }
  return [c, ...getPrototypeChain(Object.getPrototypeOf(c))];
}

function hasAbstractUtxoCoinPrototype(c: ObjectConstructor): boolean {
  return getPrototypeChain(c).includes(AbstractUtxoCoinCtor);
}

export const defaultBitGo = TestBitGo.decorate(BitGo, { env: 'mock' });

function getUtxoCoins(bitgo: BitGo = defaultBitGo): AbstractUtxoCoin[] {
  return Object.values(coins)
    .map((c) => c as unknown as ObjectConstructor)
    .filter((cls) => hasAbstractUtxoCoinPrototype(cls) && cls !== AbstractUtxoCoinCtor)
    .map((cls) => {
      try {
        return new cls(bitgo) as AbstractUtxoCoin;
      } catch (e) {
        throw new Error(`error creating ${cls.name}: ${e}`);
      }
    })
    .sort((a, b) => utxolib.getNetworkList().indexOf(a.network) - utxolib.getNetworkList().indexOf(b.network));
}

export const utxoCoins = getUtxoCoins();

export function getUtxoCoin(name: string): AbstractUtxoCoin {
  for (const c of utxoCoins) {
    if (c.getChain() === name) {
      return c;
    }
  }
  throw new Error(`no coin with name ${name}`);
}

export function getUtxoCoinForNetwork(n: utxolib.Network): AbstractUtxoCoin {
  for (const c of utxoCoins) {
    if (c.network === n) {
      return c;
    }
  }
  throw new Error(`no coin for network ${utxolib.getNetworkName(n)}`);
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!