solana-token-list
Version:
Homebrew Solana Token Registry with Coingecko data
107 lines • 8.09 kB
JavaScript
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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