diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e1b4f4c9..85566ada7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [4.2.43] - 2024.10.11 + +### Fixed + +- Fixed Tatum Connector issue with process is undefined on the pure browser +- Fixed and refactored some tests + ## [4.2.42] - 2024.9.4 ### Fixed diff --git a/package.json b/package.json index 9ca8d22da..80de8c801 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tatumio/tatum", - "version": "4.2.42", + "version": "4.2.43", "description": "Tatum JS SDK", "author": "Tatum", "repository": "https://github.com/tatumio/tatum-js", diff --git a/src/connector/tatum.connector.ts b/src/connector/tatum.connector.ts index 53fa7ff1b..8410c0613 100644 --- a/src/connector/tatum.connector.ts +++ b/src/connector/tatum.connector.ts @@ -1,8 +1,7 @@ -import process from 'process' import { Container, Service } from 'typedi' import { JsonRpcCall } from '../dto' import { ApiVersion } from '../service' -import { CONFIG, Constant, Utils } from '../util' +import { CONFIG, Constant, EnvUtils, Utils } from '../util' import { DefaultBodyType, DefaultParamsType, FileUploadRequest, GetUrl, SdkRequest } from './connector.dto' @Service({ @@ -150,7 +149,7 @@ export class TatumConnector { private getBaseUrl() { const config = Container.of(this.id).get(CONFIG) - if (process.env.TATUM_URL) { + if (EnvUtils.isProcessAvailable() && process.env?.TATUM_URL) { return process.env.TATUM_URL } return config.version === ApiVersion.V3 ? Constant.TATUM_API_URL.V3 : Constant.TATUM_API_URL.V4 diff --git a/src/e2e/e2e.constant.ts b/src/e2e/e2e.constant.ts index 0a3187064..415f0cf66 100644 --- a/src/e2e/e2e.constant.ts +++ b/src/e2e/e2e.constant.ts @@ -1,5 +1,15 @@ import { Network } from '../dto' +export const ApiKey = { + mainnet: process.env.V4_API_KEY_MAINNET || '', + testnet: process.env.V4_API_KEY_TESTNET || '', +} + +export const ApiKeyV3 = { + mainnet: process.env.V3_API_KEY_MAINNET || '', + testnet: process.env.V3_API_KEY_TESTNET || '', +} + export const TestConst = { EXISTING_SUBSCRIPTION_ETH_ADDRESS: '0xbaf6dc2e647aeb6f510f9e318856a1bcd66c5e19', INVALID_ETH_ADDRESS: 'TLduuX5NWFucPPafLbj9eab6Znwrdm72Qv', diff --git a/src/e2e/ipfs.spec.ts b/src/e2e/ipfs.spec.ts index db15c3812..00fa6ad8d 100644 --- a/src/e2e/ipfs.spec.ts +++ b/src/e2e/ipfs.spec.ts @@ -1,10 +1,11 @@ import fs from 'fs' import { Network } from '../dto' +import { ApiKey } from './e2e.constant' import { EvmE2eUtils } from './rpc/evm/evm.e2e.utils' describe.skip('IPFS', () => { it('should upload file to IPFS', async () => { - const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, process.env.V4_API_KEY_MAINNET) + const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, ApiKey.mainnet) const fileData = fs.readFileSync('./test.txt') // Adjust the path to your file const response = await tatum.ipfs.uploadFile({ file: fileData }) expect(response.status).toBe('SUCCESS') diff --git a/src/e2e/rpc/evm/eth/tatum.rpc.beacon.spec.ts b/src/e2e/rpc/evm/eth/tatum.rpc.beacon.spec.ts index 5f54d23e5..26ce01aa6 100644 --- a/src/e2e/rpc/evm/eth/tatum.rpc.beacon.spec.ts +++ b/src/e2e/rpc/evm/eth/tatum.rpc.beacon.spec.ts @@ -1,70 +1,73 @@ import { Network } from '../../../../dto' import { Ethereum } from '../../../../service' +import { ApiKey } from '../../../e2e.constant' import { EvmE2eUtils } from '../evm.e2e.utils' describe('Beacon', () => { describe('v1', () => { - const networks = [Network.ETHEREUM_HOLESKY, Network.ETHEREUM_SEPOLIA, Network.ETHEREUM] + const networks = [Network.ETHEREUM_HOLESKY, Network.ETHEREUM] describe.each(networks)('%s', (network) => { - it('should get node version', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const apiKey = network === Network.ETHEREUM ? ApiKey.mainnet : ApiKey.testnet + + it.skip('should get node version', async () => { + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getNodeVersion() await tatum.destroy() expect(data).toBeDefined() }) it('should get genesis', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getGenesis() await tatum.destroy() expect(data).toBeDefined() }) it('should get state root', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getStateRoot({ stateId: 'head' }) await tatum.destroy() expect(data).toBeDefined() }) it('should get block headers', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getBlockHeaders({ slot: '1000' }) await tatum.destroy() expect(data).toBeDefined() }) it('should get block root', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getBlockRoot({ blockId: 'head' }) await tatum.destroy() expect(data).toBeDefined() }) it('should get state committees', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getStateCommittees({ stateId: 'head' }) await tatum.destroy() expect(data).toBeDefined() }) it('should get state finality checkpoints', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getStateFinalityCheckpoints({ stateId: 'head' }) await tatum.destroy() expect(data).toBeDefined() }) it('should get state fork', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getStateFork({ stateId: 'head' }) await tatum.destroy() expect(data).toBeDefined() }) it('should get state sync committees', async () => { - const tatum = await EvmE2eUtils.initTatum(network, process.env.V4_API_KEY_TESTNET) + const tatum = await EvmE2eUtils.initTatum(network, apiKey) const { data } = await tatum.rpc.beacon.v1.getStateSyncCommittees({ stateId: 'head' }) await tatum.destroy() expect(data).toBeDefined() diff --git a/src/e2e/rpc/evm/eth/tatum.rpc.ethereum.spec.ts b/src/e2e/rpc/evm/eth/tatum.rpc.ethereum.spec.ts index 38ab8a5a6..d22e53953 100644 --- a/src/e2e/rpc/evm/eth/tatum.rpc.ethereum.spec.ts +++ b/src/e2e/rpc/evm/eth/tatum.rpc.ethereum.spec.ts @@ -1,10 +1,10 @@ -import process from 'process' import { BaseEvm, Network, RpcNodeType, TatumSDK } from '../../../../service' +import { ApiKey } from '../../../e2e.constant' import { EvmE2eUtils } from '../evm.e2e.utils' describe('Ethereum', () => { it('should get token total supply', async () => { - const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, process.env.V4_API_KEY_MAINNET) + const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, ApiKey.mainnet) const { result } = await tatum.rpc.getTokenTotalSupply('0xdac17f958d2ee523a2206206994597c13d831ec7') await tatum.destroy() expect(result).toBeDefined() @@ -12,7 +12,7 @@ describe('Ethereum', () => { }) it('should get token cap', async () => { - const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, process.env.V4_API_KEY_MAINNET) + const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, ApiKey.mainnet) const { result } = await tatum.rpc.getTokenCap('0x43044f861ec040DB59A7e324c40507adDb673142') await tatum.destroy() expect(result).toBeDefined() @@ -20,7 +20,7 @@ describe('Ethereum', () => { }) it('should return true if contract is a multitoken', async () => { - const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, process.env.V4_API_KEY_MAINNET) + const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, ApiKey.mainnet) const { result } = await tatum.rpc.supportsInterfaceERC1155('0xF4Dd946D1406e215a87029db56C69e1Bcf3e1773') await tatum.destroy() expect(result).toBeDefined() @@ -39,7 +39,7 @@ describe('Ethereum', () => { ], }, apiKey: { - v4: process.env.V4_API_KEY_MAINNET, + v4: ApiKey.mainnet, }, }) const { result } = await tatum.rpc.chainId() @@ -48,7 +48,7 @@ describe('Ethereum', () => { }) it('debug storage range at', async () => { - const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, process.env.V4_API_KEY_MAINNET) + const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, ApiKey.mainnet) const { result } = await tatum.rpc.debugStorageRangeAt( '0xc20f6b582e0c7923341cdb1299a94ea00c8a23e1ccabc532955a2a07b27121dc', 0, @@ -61,7 +61,7 @@ describe('Ethereum', () => { }) it('get logs', async () => { - const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, process.env.V4_API_KEY_MAINNET) + const tatum = await EvmE2eUtils.initTatum(Network.ETHEREUM, ApiKey.mainnet) const result = await tatum.rpc.getLogs({ address: '0xdafea492d9c6733ae3d56b7ed1adb60692c98bc5', }) diff --git a/src/e2e/rpc/evm/evm.rpc.spec.ts b/src/e2e/rpc/evm/evm.rpc.spec.ts index 328898cb9..201c83421 100644 --- a/src/e2e/rpc/evm/evm.rpc.spec.ts +++ b/src/e2e/rpc/evm/evm.rpc.spec.ts @@ -1,14 +1,15 @@ import { Network } from '../../../dto' +import { ApiKey } from '../../e2e.constant' import { EvmE2eUtils } from './evm.e2e.utils' const testNetworks = [ { network: Network.CELO }, { network: Network.CELO_ALFAJORES }, // { network: Network.ARBITRUM_ONE }, - { network: Network.ARBITRUM_NOVA, apiKey: process.env.V3_API_KEY_MAINNET }, + { network: Network.ARBITRUM_NOVA, apiKey: ApiKey.mainnet }, { network: Network.ARBITRUM_NOVA_TESTNET, - apiKey: process.env.V3_API_KEY_TESTNET, + apiKey: ApiKey.testnet, }, { network: Network.HORIZEN_EON }, // { network: Network.HORIZEN_EON_GOBI }, @@ -16,7 +17,7 @@ const testNetworks = [ { network: Network.BINANCE_SMART_CHAIN }, { network: Network.BINANCE_SMART_CHAIN_TESTNET, - apiKey: process.env.V3_API_KEY_TESTNET, + apiKey: ApiKey.testnet, }, { network: Network.FLARE }, { network: Network.FLARE_SONGBIRD }, @@ -49,14 +50,14 @@ const testNetworks = [ { network: Network.TRON_SHASTA, skipEstimateGas: true, - apiKey: process.env.V3_API_KEY_TESTNET, + apiKey: ApiKey.testnet, }, { network: Network.KLAYTN, }, { network: Network.KLAYTN_BAOBAB, - apiKey: process.env.V4_API_KEY_TESTNET, + apiKey: ApiKey.testnet, }, { network: Network.AVALANCHE_C, @@ -69,7 +70,7 @@ const testNetworks = [ network: Network.XINFIN, }, // { network: Network.CRONOS }, - { network: Network.CRONOS_TESTNET, apiKey: process.env.V3_API_KEY_TESTNET }, + { network: Network.CRONOS_TESTNET, apiKey: ApiKey.testnet }, { network: Network.BASE }, { network: Network.ZK_SYNC, url: 'https://mainnet.era.zksync.io' }, { network: Network.ZK_SYNC_TESTNET, url: 'https://sepolia.era.zksync.dev' }, diff --git a/src/e2e/rpc/other/tatum.rpc.eos.spec.ts b/src/e2e/rpc/other/tatum.rpc.eos.spec.ts index 9a51f61ad..6a812240c 100644 --- a/src/e2e/rpc/other/tatum.rpc.eos.spec.ts +++ b/src/e2e/rpc/other/tatum.rpc.eos.spec.ts @@ -1,12 +1,12 @@ -import * as process from 'process' import { ApiVersion, Eos, Network, TatumSDK } from '../../../service' +import { ApiKey, ApiKeyV3 } from '../../e2e.constant' import { e2eUtil } from '../../e2e.util' const getEosRpc = async (testnet?: boolean) => await TatumSDK.init({ network: testnet ? Network.EOS_TESTNET : Network.EOS, apiKey: { - v4: testnet ? process.env.V3_API_KEY_TESTNET : process.env.V4_API_KEY_MAINNET, + v4: testnet ? ApiKeyV3.testnet : ApiKey.mainnet, }, version: ApiVersion.V3, retryCount: 1, diff --git a/src/e2e/rpc/other/tatum.rpc.solana.spec.ts b/src/e2e/rpc/other/tatum.rpc.solana.spec.ts index 798a5f063..b6a3a56dd 100644 --- a/src/e2e/rpc/other/tatum.rpc.solana.spec.ts +++ b/src/e2e/rpc/other/tatum.rpc.solana.spec.ts @@ -1,5 +1,6 @@ import { Commitment, Encoding } from '../../../dto' import { Network, Solana, TatumSDK } from '../../../service' +import { ApiKey } from '../../e2e.constant' import { e2eUtil } from '../../e2e.util' const getClient = async (testnet?: boolean): Promise => @@ -8,6 +9,7 @@ const getClient = async (testnet?: boolean): Promise => retryCount: 1, retryDelay: 2000, verbose: e2eUtil.isVerbose, + apiKey: testnet ? ApiKey.testnet : ApiKey.mainnet, }) const blockNumber = 203046000 @@ -159,7 +161,7 @@ describe('Solana', () => { }) describe('getFirstAvailableBlock', () => { - it('should return first available block', async () => { + it.skip('should return first available block', async () => { const tatum = await getClient() const { result } = await tatum.rpc.getFirstAvailableBlock() await tatum.destroy() diff --git a/src/e2e/rpc/other/tatum.rpc.stellar.spec.ts b/src/e2e/rpc/other/tatum.rpc.stellar.spec.ts index 8ba77d073..a76024e9a 100644 --- a/src/e2e/rpc/other/tatum.rpc.stellar.spec.ts +++ b/src/e2e/rpc/other/tatum.rpc.stellar.spec.ts @@ -1,13 +1,13 @@ -import process from 'process' import { ApiVersion, Network, Stellar, TatumSDK } from '../../../service' +import { ApiKey, ApiKeyV3 } from '../../e2e.constant' import { e2eUtil } from '../../e2e.util' const getStellarRpc = async (testnet?: boolean) => await TatumSDK.init({ network: testnet ? Network.STELLAR_TESTNET : Network.STELLAR, verbose: e2eUtil.isVerbose, - ...(testnet && { apiKey: { v3: process.env.V3_API_KEY_TESTNET } }), - ...(!testnet && { apiKey: process.env.V4_API_KEY_MAINNET }), + ...(testnet && { apiKey: { v3: ApiKeyV3.testnet } }), + ...(!testnet && { apiKey: ApiKey.mainnet }), version: testnet ? ApiVersion.V3 : ApiVersion.V4, }) diff --git a/src/e2e/rpc/other/tatum.rpc.ton.spec.ts b/src/e2e/rpc/other/tatum.rpc.ton.spec.ts index 435ef5ffb..26bea8ac9 100644 --- a/src/e2e/rpc/other/tatum.rpc.ton.spec.ts +++ b/src/e2e/rpc/other/tatum.rpc.ton.spec.ts @@ -1,25 +1,38 @@ import { Network, TatumSDK, Ton } from '../../../service' import { e2eUtil } from '../../e2e.util' -const getTonClient = async (testnet: boolean) => { +const getTonClient = async (testnet?: boolean) => { return await TatumSDK.init(e2eUtil.initConfig(testnet ? Network.TON_TESTNET : Network.TON)) } describe('Ton', () => { - [true, false].forEach(testnet => { - describe(testnet ? 'Testnet' : 'Mainnet', () => { - it('status', async () => { - const ton = await getTonClient(testnet) - const result = await ton.rpc.getBlockchainMasterchainHead() - await ton.destroy() - expect(result).toBeDefined() - }) - it('getMasterchainInfo', async () => { - const ton = await getTonClient(testnet) - const result = await ton.rpc.getMasterchainInfo() - await ton.destroy() - expect(result).toBeDefined() - }) + describe('Testnet', () => { + it('Ton V2 API - status', async () => { + const ton = await getTonClient(true) + const result = await ton.rpc.getBlockchainMasterchainHead() + await ton.destroy() + expect(result).toBeDefined() + }) + it('Ton Http API - getMasterchainInfo', async () => { + const ton = await getTonClient(true) + const result = await ton.rpc.getMasterchainInfo() + await ton.destroy() + expect(result).toBeDefined() + }) + }) + + describe('Mainnet', () => { + it.skip('Ton V2 API - status', async () => { + const ton = await getTonClient() + const result = await ton.rpc.getBlockchainMasterchainHead() + await ton.destroy() + expect(result).toBeDefined() + }) + it('Ton Http API - getMasterchainInfo', async () => { + const ton = await getTonClient() + const result = await ton.rpc.getMasterchainInfo() + await ton.destroy() + expect(result).toBeDefined() }) }) }) diff --git a/src/e2e/rpc/other/tatum.rpc.tron.spec.ts b/src/e2e/rpc/other/tatum.rpc.tron.spec.ts index 9af25dcab..1f171b77f 100644 --- a/src/e2e/rpc/other/tatum.rpc.tron.spec.ts +++ b/src/e2e/rpc/other/tatum.rpc.tron.spec.ts @@ -1,11 +1,16 @@ import BigNumber from 'bignumber.js' -import * as process from 'process' import { BlockIdentifier } from '../../../dto' import { Network, TatumSDK, Tron } from '../../../service' +import { ApiKey, ApiKeyV3 } from '../../e2e.constant' import { e2eUtil } from '../../e2e.util' const getTronRpc = async (testnet?: boolean) => - await TatumSDK.init(e2eUtil.initConfig(testnet ? Network.TRON_SHASTA : Network.TRON, testnet ? process.env.V3_API_KEY_TESTNET : process.env.V4_API_KEY_MAINNET)) + await TatumSDK.init( + e2eUtil.initConfig( + testnet ? Network.TRON_SHASTA : Network.TRON, + testnet ? ApiKeyV3.testnet : ApiKey.mainnet, + ), + ) describe.skip('RPCs', () => { describe('TRON', () => { diff --git a/src/e2e/rpc/utxo/utxo.rpc.spec.ts b/src/e2e/rpc/utxo/utxo.rpc.spec.ts index 25f6ce3c4..af6f2028a 100644 --- a/src/e2e/rpc/utxo/utxo.rpc.spec.ts +++ b/src/e2e/rpc/utxo/utxo.rpc.spec.ts @@ -1,4 +1,5 @@ import { Network } from '../../../service' +import { ApiKeyV3 } from '../../e2e.constant' import { UtxoE2eUtils, UtxoNetworkType } from './utxo.e2e.utils' const utxoTestNetworks = [ @@ -11,7 +12,7 @@ const utxoTestNetworks = [ { network: Network.ZCASH_TESTNET, type: UtxoNetworkType.TEST, - apiKey: process.env.V3_API_KEY_TESTNET, + apiKey: ApiKeyV3.testnet, skipEstimateSmartFee: true, }, // { network: Network.ZCASH, type: UtxoNetworkType.MAIN, skipEstimateSmartFee: true }, diff --git a/src/e2e/tatum.rates.spec.ts b/src/e2e/tatum.rates.spec.ts index bbd3dbb32..a34a5c817 100644 --- a/src/e2e/tatum.rates.spec.ts +++ b/src/e2e/tatum.rates.spec.ts @@ -1,4 +1,5 @@ import { ApiVersion, Ethereum, Network, TatumSDK } from '../service' +import { ApiKey } from './e2e.constant' describe('Rates', () => { let tatum: Ethereum @@ -9,7 +10,7 @@ describe('Rates', () => { retryDelay: 1000, retryCount: 2, version: ApiVersion.V4, - apiKey: process.env.V4_API_KEY_TESTNET, + apiKey: ApiKey.testnet, }) }) diff --git a/src/e2e/tatum.spec.ts b/src/e2e/tatum.spec.ts index ef6938dbf..d7991a9ef 100644 --- a/src/e2e/tatum.spec.ts +++ b/src/e2e/tatum.spec.ts @@ -1,44 +1,45 @@ import { Network } from '../dto' import { Bitcoin, TatumSDK } from '../service' +import { ApiKey } from './e2e.constant' describe('Tatum Init', () => { - describe('IP auth', () => { - it('Testnet', async () => { - const tatum = await TatumSDK.init({ - network: Network.BITCOIN_TESTNET, - }) - const { result } = await tatum.rpc.getBlockChainInfo() - expect(result.chain).toBe('test') - await tatum.destroy() + it('Testnet', async () => { + const tatum = await TatumSDK.init({ + network: Network.BITCOIN_TESTNET, + apiKey: ApiKey.testnet, }) + const { result } = await tatum.rpc.getBlockChainInfo() + expect(result.chain).toBe('test') + await tatum.destroy() + }) - it('Mainnet', async () => { - const tatum = await TatumSDK.init({ - network: Network.BITCOIN, - }) - const { result } = await tatum.rpc.getBlockChainInfo() - expect(result.chain).toBe('main') - await tatum.destroy() + it('Mainnet', async () => { + const tatum = await TatumSDK.init({ + network: Network.BITCOIN, + apiKey: ApiKey.mainnet, }) + const { result } = await tatum.rpc.getBlockChainInfo() + expect(result.chain).toBe('main') + await tatum.destroy() }) - describe('Multiple Instances', () => { - it('IP auth', async () => { - const mainnet = await TatumSDK.init({ - network: Network.BITCOIN, - }) - const testnet = await TatumSDK.init({ - network: Network.BITCOIN_TESTNET, - }) + it('Multiple Instances', async () => { + const mainnet = await TatumSDK.init({ + network: Network.BITCOIN, + apiKey: ApiKey.mainnet, + }) + const testnet = await TatumSDK.init({ + network: Network.BITCOIN_TESTNET, + apiKey: ApiKey.testnet, + }) - const { result: resultMainnet } = await mainnet.rpc.getBlockChainInfo() - expect(resultMainnet.chain).toBe('main') + const { result: resultMainnet } = await mainnet.rpc.getBlockChainInfo() + expect(resultMainnet.chain).toBe('main') - const { result: resultTestnet } = await testnet.rpc.getBlockChainInfo() - expect(resultTestnet.chain).toBe('test') + const { result: resultTestnet } = await testnet.rpc.getBlockChainInfo() + expect(resultTestnet.chain).toBe('test') - await testnet.destroy() - await mainnet.destroy() - }) + await testnet.destroy() + await mainnet.destroy() }) }) diff --git a/src/service/rpc/generic/LoadBalancer.ts b/src/service/rpc/generic/LoadBalancer.ts index 2d1010cb7..89c1b32fc 100644 --- a/src/service/rpc/generic/LoadBalancer.ts +++ b/src/service/rpc/generic/LoadBalancer.ts @@ -6,7 +6,7 @@ import { GetI } from '../../../dto/GetI' import { PostI } from '../../../dto/PostI' import { AbstractRpcInterface } from '../../../dto/rpc/AbstractJsonRpcInterface' import { Logger } from '../../../service/logger/logger.types' -import { CONFIG, Constant, LOGGER, Utils } from '../../../util' +import { CONFIG, Constant, EnvUtils, LOGGER, Utils } from '../../../util' import { RpcNode, RpcNodeType } from '../../tatum' interface RpcStatus { @@ -100,7 +100,7 @@ export class LoadBalancer implements AbstractRpcInterface { await this.initRemoteHostsUrls() } - if (typeof process !== 'undefined' && process.release && process.release.name === 'node') { + if (EnvUtils.isProcessAvailable() && process.release && process.release.name === 'node') { process.on('exit', () => this.destroy()) } diff --git a/src/util/network.utils.ts b/src/util/network.utils.ts index 53132fcbe..0036a28e1 100644 --- a/src/util/network.utils.ts +++ b/src/util/network.utils.ts @@ -1,5 +1,5 @@ import { Network, NETWORK_METADATA, NetworkMetadata } from '../dto' -import process from 'process' +import { EnvUtils } from './env' export const NetworkUtils = { getNetworkMetadata: (network: Network): NetworkMetadata => { @@ -19,5 +19,8 @@ export const NetworkUtils = { const metadata = NetworkUtils.getNetworkMetadata(network) return metadata.testnet && !metadata.defaultTestnet }, - getV4ApiKeyForNetwork: (network: Network) => NetworkUtils.isTestnet(network) ? process.env.V4_API_KEY_TESTNET : process.env.V4_API_KEY_MAINNET + getV4ApiKeyForNetwork: (network: Network) => { + if (!EnvUtils.isProcessAvailable()) return undefined + return NetworkUtils.isTestnet(network) ? process.env?.V4_API_KEY_TESTNET : process.env?.V4_API_KEY_MAINNET + }, }