Skip to content

Commit 6790295

Browse files
authored
Expose mapping between chainIds and Networks (#983)
1 parent 07d4570 commit 6790295

File tree

6 files changed

+97
-2
lines changed

6 files changed

+97
-2
lines changed

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## [4.1.6] - 2023.10.15
2+
### Added
3+
- `TatumUtils` added with access to chainId <-> `Network` mapping
4+
15
## [4.1.5] - 2023.10.13
26
### Changed
37
- Loosen types for extension usage to better support optional configs.

β€Žpackage.jsonβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tatumio/tatum",
3-
"version": "4.1.5",
3+
"version": "4.1.6",
44
"description": "Tatum JS SDK",
55
"author": "Tatum",
66
"repository": "https://github.com/tatumio/tatum-js",

β€Žsrc/e2e/tatum.spec.tsβ€Ž

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { Network } from '../dto'
1+
import { EVM_BASED_NETWORKS, Network } from '../dto'
22
import { Bitcoin, TatumSDK } from '../service'
3+
import { TatumUtils } from '../util'
34

45
describe('Tatum Init', () => {
56
describe('IP auth', () => {
@@ -42,3 +43,15 @@ describe('Tatum Init', () => {
4243
})
4344
})
4445
})
46+
describe('Network to chainId mapping check', () => {
47+
const networks = Object.values(EVM_BASED_NETWORKS)
48+
49+
for (const network of networks) {
50+
it(`${network} should have chainId mapped`, async () => {
51+
const chainId = TatumUtils.getChainId(network)
52+
53+
expect(chainId).toBeGreaterThan(0)
54+
expect(TatumUtils.getNetwork(chainId as number)).toBe(network)
55+
})
56+
}
57+
})

β€Žsrc/util/constant.tsβ€Ž

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,57 @@ export const Constant = {
66
V4: 'https://api.tatum.io/v4/',
77
},
88
NETWORK: {
9+
ChainId: {
10+
[Network.ETHEREUM]: 1,
11+
[Network.ETHEREUM_SEPOLIA]: 11155111,
12+
[Network.ETHEREUM_CLASSIC]: 61,
13+
[Network.ETHEREUM_GOERLI]: 5,
14+
[Network.ETHEREUM_HOLESKY]: 17000,
15+
[Network.AVALANCHE_C]: 43114,
16+
[Network.AVALANCHE_C_TESTNET]: 43113,
17+
[Network.POLYGON]: 137,
18+
[Network.POLYGON_MUMBAI]: 80001,
19+
[Network.GNOSIS]: 100,
20+
[Network.FANTOM]: 250,
21+
[Network.FANTOM_TESTNET]: 4002,
22+
[Network.AURORA]: 1313161554,
23+
[Network.AURORA_TESTNET]: 1313161555,
24+
[Network.CELO]: 42220,
25+
[Network.CELO_ALFAJORES]: 44787,
26+
[Network.BINANCE_SMART_CHAIN_TESTNET]: 97,
27+
[Network.PALM]: 11297108109,
28+
[Network.PALM_TESTNET]: 11297108099,
29+
[Network.CRONOS]: 25,
30+
[Network.CRONOS_TESTNET]: 338,
31+
[Network.KUCOIN]: 321,
32+
[Network.KUCOIN_TESTNET]: 322,
33+
[Network.OASIS]: 42262,
34+
[Network.OASIS_TESTNET]: 42261,
35+
[Network.OPTIMISM]: 10,
36+
[Network.HARMONY_ONE_SHARD_0]: 1666600000,
37+
[Network.HARMONY_ONE_TESTNET_SHARD_0]: 1666700000,
38+
[Network.KLAYTN]: 8217,
39+
[Network.KLAYTN_BAOBAB]: 1001,
40+
[Network.FLARE_COSTON]: 16,
41+
[Network.FLARE_COSTON_2]: 114,
42+
[Network.FLARE]: 14,
43+
[Network.FLARE_SONGBIRD]: 19,
44+
[Network.HAQQ]: 11235,
45+
[Network.HAQQ_TESTNET]: 54211,
46+
[Network.ARBITRUM_NOVA]: 42170,
47+
[Network.ARBITRUM_NOVA_TESTNET]: 421613,
48+
[Network.ARBITRUM_ONE]: 42161,
49+
[Network.BINANCE_SMART_CHAIN]: 56,
50+
[Network.HORIZEN_EON]: 7332,
51+
[Network.HORIZEN_EON_GOBI]: 1663,
52+
[Network.CHILIZ]: 88888,
53+
[Network.GNOSIS_TESTNET]: 10200,
54+
[Network.VECHAIN]: 100009,
55+
[Network.VECHAIN_TESTNET]: 100010,
56+
[Network.XDC]: 50,
57+
[Network.XDC_TESTNET]: 51,
58+
[Network.OPTIMISM_TESTNET]: 420,
59+
},
960
ChainMapInverse: {
1061
[AddressEventNotificationChain.ETH]: Chain.Ethereum,
1162
[AddressEventNotificationChain.SOL]: Chain.Solana,

β€Žsrc/util/index.tsβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export * from './constant'
22
export * from './di.tokens'
33
export * from './error'
4+
export * from './tatum.utils'
45
export * from './util.shared'

β€Žsrc/util/tatum.utils.tsβ€Ž

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { Network } from '../dto'
2+
import { Constant } from './constant'
3+
4+
export const TatumUtils = {
5+
getChainId: (network: Network): number | undefined => {
6+
if (network in Constant.NETWORK.ChainId) {
7+
return Constant.NETWORK.ChainId[network as keyof typeof Constant.NETWORK.ChainId]
8+
}
9+
return undefined
10+
},
11+
getNetwork: (chainId: number): keyof typeof Constant.NETWORK.ChainId | undefined => {
12+
if (Object.keys(chainIdToNetworkCache).length === 0) {
13+
buildChainIdToNetworkCache()
14+
}
15+
return chainIdToNetworkCache[chainId] || undefined
16+
},
17+
}
18+
19+
const chainIdToNetworkCache: { [key: number]: keyof typeof Constant.NETWORK.ChainId } = {}
20+
21+
const buildChainIdToNetworkCache = () => {
22+
for (const network of Object.keys(Constant.NETWORK.ChainId)) {
23+
const netKey = network as keyof typeof Constant.NETWORK.ChainId
24+
chainIdToNetworkCache[Constant.NETWORK.ChainId[netKey]] = netKey
25+
}
26+
}

0 commit comments

Comments
Β (0)