@xspswap/smart-order-router
Version:
XSwap Protocol V3 Smart Order Router
30 lines • 2.13 kB
JavaScript
/**
* Provider for getting V2 pools, with functionality for caching the results.
*
* @export
* @class CachingV2SubgraphProvider
*/
export class CachingV2SubgraphProvider {
/**
* Creates an instance of CachingV2SubgraphProvider.
* @param chainId The chain id to use.
* @param subgraphProvider The provider to use to get the subgraph pools when not in the cache.
* @param cache Cache instance to hold cached pools.
*/
constructor(chainId, subgraphProvider, cache) {
this.chainId = chainId;
this.subgraphProvider = subgraphProvider;
this.cache = cache;
this.SUBGRAPH_KEY = (chainId) => `subgraph-pools-v2-${chainId}`;
}
async getPools() {
const cachedPools = await this.cache.get(this.SUBGRAPH_KEY(this.chainId));
if (cachedPools) {
return cachedPools;
}
const pools = await this.subgraphProvider.getPools();
await this.cache.set(this.SUBGRAPH_KEY(this.chainId), pools);
return pools;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1zdWJncmFwaC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvdjIvY2FjaGluZy1zdWJncmFwaC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFHcEM7Ozs7O09BS0c7SUFDSCxZQUNVLE9BQWdCLEVBQ2QsZ0JBQXFDLEVBQ3ZDLEtBQStCO1FBRi9CLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQTBCO1FBWGpDLGlCQUFZLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsT0FBTyxFQUFFLENBQUM7SUFZekUsQ0FBQztJQUVHLEtBQUssQ0FBQyxRQUFRO1FBQ25CLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUUxRSxJQUFJLFdBQVcsRUFBRTtZQUNmLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFckQsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU3RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiJ9