@uniswap/token-list-bridge-utils 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants/chainId.d.ts +2 -1
- package/dist/constants/tokens.d.ts +1 -0
- package/dist/constants/types.d.ts +3 -25
- package/dist/fixtures/index.d.ts +9 -0
- package/dist/providers/BnbMappingProvider.d.ts +5 -0
- package/dist/token-list-bridge-utils.cjs.development.js +918 -32
- package/dist/token-list-bridge-utils.cjs.development.js.map +1 -1
- package/dist/token-list-bridge-utils.cjs.production.min.js +1 -1
- package/dist/token-list-bridge-utils.cjs.production.min.js.map +1 -1
- package/dist/token-list-bridge-utils.esm.js +918 -32
- package/dist/token-list-bridge-utils.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/constants/chainId.ts +1 -0
- package/src/constants/tokens.ts +8 -0
- package/src/constants/types.ts +4 -26
- package/src/fixtures/index.ts +31 -0
- package/src/index.test.ts +28 -0
- package/src/index.ts +1 -0
- package/src/local_mappings/bnb.json +859 -0
- package/src/providers/BnbMappingProvider.ts +11 -0
- package/src/providers/PolygonMappingProvider.ts +9 -15
- package/src/providers/index.ts +5 -2
- package/src/utils.ts +2 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MappingProvider } from './MappingProvider'
|
|
2
|
+
import { GenericMappedTokenData } from '../constants/types'
|
|
3
|
+
import bnbmappings from '../local_mappings/bnb.json'
|
|
4
|
+
|
|
5
|
+
// barring a better external source, we use a local source of mappings for bnb
|
|
6
|
+
export class BnbMappingProvider implements MappingProvider {
|
|
7
|
+
async provide(): Promise<GenericMappedTokenData> {
|
|
8
|
+
const tokens = bnbmappings as GenericMappedTokenData
|
|
9
|
+
return tokens
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -2,8 +2,9 @@ import axios from 'axios'
|
|
|
2
2
|
import { MappingProvider } from './MappingProvider'
|
|
3
3
|
import { PolygonMappedTokenData } from '../constants/types'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
const
|
|
5
|
+
// called from https://mapper.polygon.technology
|
|
6
|
+
const url = 'https://open-api.polygon.technology/api/v1/info/all-mappings'
|
|
7
|
+
const access_token = '504afd90-3228-4df9-9d88-9b4d70646101'
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* The Polygon team manually maintains the mapping via user submissions at
|
|
@@ -13,22 +14,15 @@ const params = 'map_type=[%22POS%22]&chain_id=137&limit=200&offset='
|
|
|
13
14
|
*/
|
|
14
15
|
export class PolygonMappingProvider implements MappingProvider {
|
|
15
16
|
async provide(): Promise<PolygonMappedTokenData> {
|
|
16
|
-
|
|
17
|
+
const response = await axios.get(url, {
|
|
18
|
+
headers: { 'x-access-token': access_token },
|
|
19
|
+
})
|
|
17
20
|
const tokens: PolygonMappedTokenData = {}
|
|
18
|
-
while (true) {
|
|
19
|
-
const response = await axios.get(`${url}${params}${offset}`)
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (response.data.data.has_next_page === true) {
|
|
27
|
-
offset += 200
|
|
28
|
-
continue
|
|
29
|
-
}
|
|
22
|
+
for (const token of response.data) {
|
|
23
|
+
if (token.isPos) {
|
|
24
|
+
tokens[token.rootToken.toLowerCase()] = token
|
|
30
25
|
}
|
|
31
|
-
break
|
|
32
26
|
}
|
|
33
27
|
return tokens
|
|
34
28
|
}
|
package/src/providers/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Contract } from 'web3-eth-contract'
|
|
|
3
3
|
import { ArbitrumMappingProvider } from './ArbitrumMappingProvider'
|
|
4
4
|
import { OptimismMappingProvider } from './OptimismMappingProvider'
|
|
5
5
|
import { PolygonMappingProvider } from './PolygonMappingProvider'
|
|
6
|
+
import { BnbMappingProvider } from './BnbMappingProvider'
|
|
6
7
|
import { TokenInfo, TokenList } from '@uniswap/token-lists'
|
|
7
8
|
import { ethers } from 'ethers'
|
|
8
9
|
import {
|
|
@@ -25,6 +26,7 @@ const SUPPORTED_L2_CHAINS = [
|
|
|
25
26
|
ChainId.ARBITRUM_ONE,
|
|
26
27
|
ChainId.POLYGON,
|
|
27
28
|
ChainId.OPTIMISM,
|
|
29
|
+
ChainId.BNB,
|
|
28
30
|
]
|
|
29
31
|
|
|
30
32
|
export async function buildList(
|
|
@@ -136,6 +138,8 @@ function getMappingProvider(chainId: ChainId, l1TokenList: TokenList) {
|
|
|
136
138
|
return new OptimismMappingProvider()
|
|
137
139
|
case ChainId.POLYGON:
|
|
138
140
|
return new PolygonMappingProvider()
|
|
141
|
+
case ChainId.BNB:
|
|
142
|
+
return new BnbMappingProvider()
|
|
139
143
|
default:
|
|
140
144
|
throw new Error(`Chain ${chainId} not supported for fetching mappings.`)
|
|
141
145
|
}
|
|
@@ -182,12 +186,11 @@ async function getChildTokenDetails(
|
|
|
182
186
|
|
|
183
187
|
const childTokenAddress = childToken
|
|
184
188
|
? ethers.utils.getAddress(
|
|
185
|
-
typeof childToken === 'object' ? childToken.
|
|
189
|
+
typeof childToken === 'object' ? childToken.childToken : childToken
|
|
186
190
|
)
|
|
187
191
|
: undefined
|
|
188
192
|
const childTokenValid = Boolean(
|
|
189
193
|
childTokenAddress &&
|
|
190
|
-
(typeof childToken === 'object' ? !childToken.deleted : true) &&
|
|
191
194
|
(await hasExistingTokenContract(childTokenAddress, chainId))
|
|
192
195
|
)
|
|
193
196
|
return {
|
package/src/utils.ts
CHANGED
|
@@ -108,6 +108,8 @@ export function getRpcUrl(chainId: ChainId): string {
|
|
|
108
108
|
return 'https://polygon-rpc.com/'
|
|
109
109
|
case ChainId.POLYGON_MUMBAI:
|
|
110
110
|
return 'https://rpc-endpoints.superfluid.dev/mumbai'
|
|
111
|
+
case ChainId.BNB:
|
|
112
|
+
return 'https://bsc-dataseed1.binance.org'
|
|
111
113
|
default:
|
|
112
114
|
}
|
|
113
115
|
throw new Error('Unsupported ChainId')
|