@@ -82,15 +82,62 @@ function buildIconUrl(baseAsset: string): string {
8282 * @returns URL to the feed's data page
8383 */
8484function buildFeedUrl ( item : DataItem ) : string {
85+ // Special case for TRON network - redirect to docs.chain.link
86+ if ( item . network === "tron" ) {
87+ const searchParam = ( item . baseAsset || "" ) . toLowerCase ( )
88+ return `https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=tron&search=${ searchParam } `
89+ }
90+
91+ // For data streams
8592 if ( item . deliveryChannelCode === "DS" ) {
8693 const base = ( item . baseAsset || "BASE" ) . toLowerCase ( )
8794 const quote = ( item . quoteAsset || "QUOTE" ) . toLowerCase ( )
8895 return `https://data.chain.link/streams/${ base } -${ quote } `
8996 }
90- // otherwise, it's "https://data.chain.link/feeds/<network>/mainnet/<suffix>"
91- const feedSuffix = item . feedID . split ( "-" ) . slice ( 1 ) . join ( "-" )
97+
98+ // Network name mapping for URL paths
99+ const NETWORK_NAME_MAPPING : Record < string , string > = {
100+ "bnb-chain" : "bsc" ,
101+ "gnosis-chain" : "xdai" ,
102+ polygonzkevm : "polygon-zkevm" ,
103+ // Add more mappings as needed
104+ }
105+
106+ // Networks that use their own name instead of "mainnet" in URLs
107+ const NETWORK_PATH_EXCEPTIONS : Record < string , string > = {
108+ sonic : "sonic" ,
109+ base : "base" ,
110+ hedera : "hedera" ,
111+ mantle : "mantle" ,
112+ polygonzkevm : "polygon-zkevm" ,
113+ ronin : "ronin" ,
114+ soneium : "soneium" ,
115+ xlayer : "xlayer" ,
116+ zksync : "zksync" ,
117+ // Add more exceptions as they're discovered
118+ }
119+
120+ // Map the network name if needed
121+ const networkUrlPath = NETWORK_NAME_MAPPING [ item . network ] || item . network
122+
123+ // Process the feed suffix - handle special cases
124+ let feedSuffix = ""
125+ const feedParts = item . feedID . split ( "-" )
126+
127+ // For BNB Chain feeds, if the first part after network is "chain", remove it
128+ if ( item . network === "bnb-chain" && feedParts . length > 1 && feedParts [ 1 ] === "chain" ) {
129+ feedSuffix = feedParts . slice ( 2 ) . join ( "-" )
130+ } else {
131+ feedSuffix = feedParts . slice ( 1 ) . join ( "-" )
132+ }
133+
134+ // Remove any spaces for URL safety
92135 const safeSuffix = feedSuffix . replace ( / \s / g, "%20" )
93- return `https://data.chain.link/feeds/${ item . network } /mainnet/${ safeSuffix } `
136+
137+ // Use the network-specific path or fall back to 'mainnet'
138+ const networkPath = NETWORK_PATH_EXCEPTIONS [ item . network ] || "mainnet"
139+
140+ return `https://data.chain.link/feeds/${ networkUrlPath } /${ networkPath } /${ safeSuffix } `
94141}
95142
96143/**
0 commit comments