From 8e1fbc89bb24c4f4a85dbb487be67b220dbb345f Mon Sep 17 00:00:00 2001 From: guanbinrui <52657989+guanbinrui@users.noreply.github.com> Date: Thu, 6 Jun 2024 17:58:57 +0800 Subject: [PATCH] fix: ci (#121) * fix: ci * feat: add sei chain * refator: remove json --------- Co-authored-by: Wukong Sun --- README.md | 3 +++ src/constants/error.ts | 5 +++++ src/helpers/fetchJSON.ts | 2 ++ src/providers/mask/TokenList.ts | 17 +++++++++++++---- 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/constants/error.ts diff --git a/README.md b/README.md index dcc32705..7b70cee6 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ The token lists for Mask Network. | Polygon | 137 | [latest][link-polygon] | [token-list][viewer-polygon] | | X Layer Testnet | 195 | [latest][link-xlayertestnet] | [token-list][viewer-xlayertestnet] | | X Layer | 196 | [latest][link-xlayer] | [token-list][viewer-xlayer] | +| Sei | 1329 | [latest][link-sei] | [token-list][viewer-sei] | | Mumbai | 80001 | [latest][link-mumbai] | [token-list][viewer-mumbai] | | Stardust | 588 | [latest][link-stardust] | [token-list][viewer-stardust] | | Astar | 592 | [latest][link-astar] | [token-list][viewer-astar] | @@ -68,6 +69,7 @@ The token lists for Mask Network. [link-polygon]: https://tokens.r2d2.to/latest/137/tokens.json [link-xlayertestnet]: https://tokens.r2d2.to/latest/195/tokens.json [link-xlayer]: https://tokens.r2d2.to/latest/196/tokens.json +[link-sei]: https://tokens.r2d2.to/latest/1329/tokens.json [link-mumbai]: https://tokens.r2d2.to/latest/80001/tokens.json [link-stardust]: https://tokens.r2d2.to/latest/588/tokens.json [link-astar]: https://tokens.r2d2.to/latest/592/tokens.json @@ -104,6 +106,7 @@ The token lists for Mask Network. [viewer-polygon]: https://tokenlists.org/token-list?url=https://tokens.r2d2.to/latest/137/tokens.json [viewer-xlayertestnet]: https://tokenlists.org/token-list?url=https://tokens.r2d2.to/latest/195/tokens.json [viewer-xlayer]: https://tokenlists.org/token-list?url=https://tokens.r2d2.to/latest/196/tokens.json +[viewer-sei]: https://tokenlists.org/token-list?url=https://tokens.r2d2.to/latest/1329/tokens.json [viewer-mumbai]: https://tokenlists.org/token-list?url=https://tokens.r2d2.to/latest/80001/tokens.json [viewer-stardust]: https://tokenlists.org/token-list?url=https://tokens.r2d2.to/latest/588/tokens.json [viewer-astar]: https://tokenlists.org/token-list?url=https://tokens.r2d2.to/latest/592/tokens.json diff --git a/src/constants/error.ts b/src/constants/error.ts new file mode 100644 index 00000000..bcd23885 --- /dev/null +++ b/src/constants/error.ts @@ -0,0 +1,5 @@ +export class NotFoundError extends Error { + constructor() { + super('Not found'); + } +} diff --git a/src/helpers/fetchJSON.ts b/src/helpers/fetchJSON.ts index d72e40d1..0b539993 100644 --- a/src/helpers/fetchJSON.ts +++ b/src/helpers/fetchJSON.ts @@ -2,6 +2,7 @@ import { HttpsProxyAgent } from 'https-proxy-agent'; import { fetch } from '@/helpers/fetch'; import { RequestInfo as NodeFetchRequestInfo, RequestInit as NodeFetchRequestInit } from 'node-fetch'; +import { NotFoundError } from '@/constants/error'; export async function fetchJSON(request: RequestInfo, init?: RequestInit) { const proxy = process.env.http_proxy ?? process.env.https_proxy; @@ -13,6 +14,7 @@ export async function fetchJSON(request: RequestInfo, init?: Reques agent: proxy ? new HttpsProxyAgent(proxy) : undefined, } as NodeFetchRequestInit, ); + if (response.status === 404) throw new NotFoundError(); if (!response.ok) throw new Error(`Failed to fetch JSON: ${response.status} ${response.statusText}`); const json = await response.json(); diff --git a/src/providers/mask/TokenList.ts b/src/providers/mask/TokenList.ts index b3104037..f52d4289 100644 --- a/src/providers/mask/TokenList.ts +++ b/src/providers/mask/TokenList.ts @@ -5,6 +5,8 @@ import { MASK_TOKEN_LIST_ROOT_URL } from '@/constants'; import { fetchJSON } from '@/helpers/fetchJSON'; import { Provider } from '@/providers/types/TokenList'; import { Chain, FungibleToken, NonFungibleToken, TokenList as ChainTokenList } from '@/types'; +import { NotFoundError } from '@/constants/error'; +import { createTokenList } from '@/helpers/createTokenList'; class TokenList implements Provider { async getFungibleTokenList(chain: Chain, signal?: AbortSignal) { @@ -19,10 +21,17 @@ class TokenList implements Provider { } async getNonFungibleTokenList(chain: Chain, signal?: AbortSignal): Promise> { - const url = urlcat(MASK_TOKEN_LIST_ROOT_URL, '/latest/:chainId/non-fungible-tokens.json', { - chainId: chain.chainId, - }); - return fetchJSON>(url, { signal }); + try { + const url = urlcat(MASK_TOKEN_LIST_ROOT_URL, '/latest/:chainId/non-fungible-tokens.json', { + chainId: chain.chainId, + }); + return await fetchJSON>(url, { signal }); + } catch (error) { + if (error instanceof NotFoundError) { + return createTokenList([]); + } + throw error; + } } }