diff --git a/pages/api/chains.ts b/pages/api/chains.ts index c6f4a720d..f50193dd2 100644 --- a/pages/api/chains.ts +++ b/pages/api/chains.ts @@ -28,16 +28,40 @@ export default async function ( }); }); - const jsonDirectory = path.join(process.cwd(), "cosmos"); - - const fetchChains = (await fs.readdir(jsonDirectory)).map((fileName) => - fs.readFile(`${jsonDirectory}/${fileName}`, "utf8"), + const cosmosChainsDirectory = path.join(process.cwd(), "cosmos"); + const cosmosChains = (await fs.readdir(cosmosChainsDirectory)).map( + (fileName) => fs.readFile(`${cosmosChainsDirectory}/${fileName}`, "utf8"), ); - - const chainInfos: ChainInfo[] = (await Promise.all(fetchChains)).map( + const cosmosChainInfos: ChainInfo[] = (await Promise.all(cosmosChains)).map( (chainInfo) => JSON.parse(chainInfo), ); - //Return the content of the data file in json format - res.status(200).json({ chains: chainInfos }); + const evmChainsDirectory = path.join(process.cwd(), "evm"); + const evmChains = await Promise.all( + ( + await fs.readdir(evmChainsDirectory) + ).map((fileName) => + fs.readFile(`${evmChainsDirectory}/${fileName}`, "utf8"), + ), + ); + const evmChainInfos: ChainInfo[] = (await Promise.all(evmChains)).map( + (chainInfo) => { + const evmChainInfo = JSON.parse(chainInfo); + const evmChainId = parseInt(evmChainInfo.chainId.replace("eip155:", "")); + const { websocket, features, ...restEVMChainInfo } = evmChainInfo; + return { + ...restEVMChainInfo, + rest: evmChainInfo.rpc, + evm: { + chainId: evmChainId, + rpc: evmChainInfo.rpc, + websocket, + }, + features: ["eth-address-gen", "eth-key-sign"].concat(features ?? []), + }; + }, + ); + + // Return the content of the data file in json format + res.status(200).json({ chains: cosmosChainInfos.concat(evmChainInfos) }); }