UNPKG

solana-token-list

Version:

Homebrew Solana Token Registry with Coingecko data

107 lines 8.09 kB
import axios from 'axios'; import tokenlist from '../tokens/solana.tokenlist.json'; export var ENV; (function (ENV) { ENV[ENV["MainnetBeta"] = 101] = "MainnetBeta"; ENV[ENV["Testnet"] = 102] = "Testnet"; ENV[ENV["Devnet"] = 103] = "Devnet"; })(ENV || (ENV = {})); export const CLUSTER_SLUGS = { 'mainnet-beta': ENV.MainnetBeta, testnet: ENV.Testnet, devnet: ENV.Devnet, }; export class GitHubTokenListResolutionStrategy { repositories = [ 'https://raw.githubusercontent.com/JuanRdBO/solana-token-list/main/src/tokens/solana.tokenlist.json', ]; resolve = () => { return queryJsonFiles(this.repositories); }; } export class CDNTokenListResolutionStrategy { repositories = [ 'https://cdn.jsdelivr.net/gh/JuanRdBO/solana-token-list@latest/src/tokens/solana.tokenlist.json', ]; resolve = () => { return queryJsonFiles(this.repositories); }; } // export class SolanaTokenListResolutionStrategy { // repositories = ["https://token-list.solana.com/solana.tokenlist.json"]; // resolve = () => { // return queryJsonFiles(this.repositories); // }; // } const queryJsonFiles = async (files) => { const responses = (await Promise.all(files.map(async (repo) => { try { const config = { headers: { 'Accept-Encoding': '*', }, }; const response = (await axios.get(repo, config))?.data; return response; } catch { console.info(`@solana/token-registry: falling back to static repository.`); return tokenlist; } }))); return responses .map((tokenlist) => tokenlist.tokens || []) .reduce((acc, arr) => acc.concat(arr), []); }; export var Strategy; (function (Strategy) { Strategy["GitHub"] = "GitHub"; Strategy["Static"] = "Static"; // Solana = "Solana", Strategy["CDN"] = "CDN"; })(Strategy || (Strategy = {})); export class StaticTokenListResolutionStrategy { resolve = () => { // @ts-ignore return tokenlist.tokens || []; }; } export class TokenListProvider { static strategies = { [Strategy.GitHub]: new GitHubTokenListResolutionStrategy(), [Strategy.Static]: new StaticTokenListResolutionStrategy(), // [Strategy.Solana]: new SolanaTokenListResolutionStrategy(), [Strategy.CDN]: new CDNTokenListResolutionStrategy(), }; resolve = async (strategy = Strategy.CDN) => { return new TokenListContainer(await TokenListProvider.strategies[strategy].resolve()); }; } export class TokenListContainer { tokenList; constructor(tokenList) { this.tokenList = tokenList; } filterByTag = (tag) => { return new TokenListContainer(this.tokenList.filter((item) => (item.tags || []).includes(tag))); }; filterByChainId = (chainId) => { return new TokenListContainer(this.tokenList.filter((item) => item.chainId === chainId)); }; excludeByChainId = (chainId) => { return new TokenListContainer(this.tokenList.filter((item) => item.chainId !== chainId)); }; excludeByTag = (tag) => { return new TokenListContainer(this.tokenList.filter((item) => !(item.tags || []).includes(tag))); }; filterByClusterSlug = (slug) => { if (slug in CLUSTER_SLUGS) { return this.filterByChainId(CLUSTER_SLUGS[slug]); } throw new Error(`Unknown slug: ${slug}, please use one of ${Object.keys(CLUSTER_SLUGS)}`); }; getList = () => { return this.tokenList; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFNBQVMsTUFBTSxpQ0FBaUMsQ0FBQztBQUV4RCxNQUFNLENBQU4sSUFBWSxHQUlYO0FBSkQsV0FBWSxHQUFHO0lBQ2IsNkNBQWlCLENBQUE7SUFDakIscUNBQWEsQ0FBQTtJQUNiLG1DQUFZLENBQUE7QUFDZCxDQUFDLEVBSlcsR0FBRyxLQUFILEdBQUcsUUFJZDtBQStDRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxHQUFHLENBQUMsV0FBVztJQUMvQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87SUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO0NBQ25CLENBQUM7QUFFRixNQUFNLE9BQU8saUNBQWlDO0lBQzVDLFlBQVksR0FBRztRQUNiLG9HQUFvRztLQUNyRyxDQUFDO0lBRUYsT0FBTyxHQUFHLEdBQUcsRUFBRTtRQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7Q0FDSDtBQUVELE1BQU0sT0FBTyw4QkFBOEI7SUFDekMsWUFBWSxHQUFHO1FBQ2IsZ0dBQWdHO0tBQ2pHLENBQUM7SUFFRixPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ2IsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztDQUNIO0FBRUQsbURBQW1EO0FBQ25ELDRFQUE0RTtBQUU1RSxzQkFBc0I7QUFDdEIsZ0RBQWdEO0FBQ2hELE9BQU87QUFDUCxJQUFJO0FBRUosTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEtBQWUsRUFBRSxFQUFFO0lBQy9DLE1BQU0sU0FBUyxHQUFnQixDQUFDLE1BQU0sT0FBTyxDQUFDLEdB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