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