UNPKG

solana-token-list

Version:

Homebrew Solana Token Registry with Coingecko data

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