Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion chain-registry
Submodule chain-registry updated 1067 files
2 changes: 1 addition & 1 deletion initia-registry
Submodule initia-registry updated 335 files
213 changes: 189 additions & 24 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@
"@radix-ui/react-collapsible": "^1.0.3",
"@radix-ui/react-dialog": "^1.0.5",
"@radix-ui/react-scroll-area": "^1.0.5",
"@radix-ui/react-switch": "^1.2.5",
"@radix-ui/react-tooltip": "^1.0.7",
"@solana/web3.js": "^1.95.8",
"@tailwindcss/forms": "^0.5.7",
"@tanstack/query-sync-storage-persister": "^5.18.1",
"@tanstack/react-query": "^5.18.1",
"@tanstack/react-query-persist-client": "^5.18.1",
"@types/lodash": "^4.17.18",
"@types/node": "^20.11.16",
"@types/react": "^18.2.53",
"@types/react-dom": "^18.2.18",
Expand All @@ -48,6 +50,7 @@
"date-fns": "^3.3.1",
"dotenv": "^16.4.5",
"download": "^8.0.0",
"lodash": "^4.17.21",
"match-sorter": "^6.3.3",
"next": "^14.1.0",
"next-seo": "^6.4.0",
Expand Down
4 changes: 4 additions & 0 deletions src/ast/parse-asset-list-json.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,15 @@ interface Args {
export async function parseAssetListJson({ registryPath, chainPath }: Args) {
const jsonPath = path.resolve(registryPath, chainPath, "assetlist.json");

// TODO: Revisit initia assetlist config parsing - improve validation and error handling
// for initia-specific asset structures and ensure all asset types (CW20, ERC20) are properly included

let data: AssetList;
try {
const content = await fs.readFile(jsonPath, "utf-8");
data = await assetListSchema.parseAsync(JSON.parse(content));
} catch (error) {
console.warn(`Skipping asset list for ${chainPath}:`, error instanceof Error ? error.message : error);
data = {
chain_name: chainPath,
assets: [],
Expand Down
43 changes: 24 additions & 19 deletions src/ast/parse-chain-paths.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,30 +35,35 @@ export async function parseChainPaths({
const chainInfosRecord: Record<string, ChainInfo> = {};

async function loadChainPath(_registryPath: string, chainPath: string) {
const [assetlist, chain] = await Promise.all([
parseAssetListJson({ registryPath: _registryPath, chainPath }),
parseChainJson({ registryPath: _registryPath, chainPath }),
]);
try {
const [assetlist, chain] = await Promise.all([
parseAssetListJson({ registryPath: _registryPath, chainPath }),
parseChainJson({ registryPath: _registryPath, chainPath }),
]);

chains.push(chain);
assetlists.push(assetlist);
chains.push(chain);
assetlists.push(assetlist);

chainIds.push(chain.chain_id);
chainNames.push(chain.chain_name);
chainIds.push(chain.chain_id);
chainNames.push(chain.chain_name);

chainIdToName[chain.chain_id] = chain.chain_name;
chainIdToPrettyName[chain.chain_id] = chain.pretty_name;
chainIdToName[chain.chain_id] = chain.chain_name;
chainIdToPrettyName[chain.chain_id] = chain.pretty_name;

chainNameToId[chain.chain_name] = chain.chain_id;
chainNameToId[chain.chain_name] = chain.chain_id;

chainRecord[chain.chain_id] = chain;
assetsRecord[chain.chain_id] = assetlist.assets;
explorersRecord[chain.chain_id] = chain.explorers || [];
if (assetlist.assets.length > 0)
chainInfosRecord[chain.chain_id] = chainToChainInfo({
chain,
assetlist,
});
chainRecord[chain.chain_id] = chain;
assetsRecord[chain.chain_id] = assetlist.assets;
explorersRecord[chain.chain_id] = chain.explorers || [];
if (assetlist.assets.length > 0)
chainInfosRecord[chain.chain_id] = chainToChainInfo({
chain,
assetlist,
});
} catch (error) {
// TODO: Revisit chain parsing validation - improve error handling for chains with invalid schemas
console.warn(`Skipping chain ${chainPath} due to parsing error:`, error instanceof Error ? error.message : error);
}
}

await pMap(chainPaths, (i) => loadChainPath(registryPath, i), { concurrency });
Expand Down
Loading