@sonarwatch/portfolio-plugins 0.4.46 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -1
- package/package.json +2 -2
- package/src/Cache.d.ts +78 -0
- package/src/Cache.js +300 -0
- package/src/Cache.js.map +1 -0
- package/src/Fetcher.d.ts +31 -0
- package/src/Fetcher.js +81 -0
- package/src/Fetcher.js.map +1 -0
- package/src/Job.d.ts +6 -0
- package/src/Job.js +3 -0
- package/src/Job.js.map +1 -0
- package/src/index.d.ts +5 -3
- package/src/index.js +4 -0
- package/src/index.js.map +1 -1
- package/src/memoryDriver.d.ts +5 -0
- package/src/memoryDriver.js +55 -0
- package/src/memoryDriver.js.map +1 -0
- package/src/overlayDriver.d.ts +6 -0
- package/src/overlayDriver.js +96 -0
- package/src/overlayDriver.js.map +1 -0
- package/src/platforms.d.ts +1 -0
- package/src/platforms.js +6 -1
- package/src/platforms.js.map +1 -1
- package/src/plugins/drift/constants.d.ts +4 -0
- package/src/plugins/drift/constants.js +8 -0
- package/src/plugins/drift/constants.js.map +1 -0
- package/src/plugins/drift/filters.d.ts +3 -0
- package/src/plugins/drift/filters.js +23 -0
- package/src/plugins/drift/filters.js.map +1 -0
- package/src/plugins/drift/helpers.d.ts +20 -0
- package/src/plugins/drift/helpers.js +116 -0
- package/src/plugins/drift/helpers.js.map +1 -0
- package/src/plugins/drift/index.d.ts +4 -0
- package/src/plugins/drift/index.js +11 -0
- package/src/plugins/drift/index.js.map +1 -0
- package/src/plugins/drift/spotMarketsJob.d.ts +3 -0
- package/src/plugins/drift/spotMarketsJob.js +37 -0
- package/src/plugins/drift/spotMarketsJob.js.map +1 -0
- package/src/plugins/drift/spotPositionsFetcher.d.ts +3 -0
- package/src/plugins/drift/spotPositionsFetcher.js +142 -0
- package/src/plugins/drift/spotPositionsFetcher.js.map +1 -0
- package/src/plugins/drift/struct.d.ts +244 -0
- package/src/plugins/drift/struct.js +248 -0
- package/src/plugins/drift/struct.js.map +1 -0
- package/src/plugins/drift/types.d.ts +5 -0
- package/src/plugins/drift/types.js +3 -0
- package/src/plugins/drift/types.js.map +1 -0
- package/src/plugins/foo/index.d.ts +2 -1
- package/src/plugins/foo/index.js.map +1 -1
- package/src/plugins/foo/marketsJob.d.ts +1 -1
- package/src/plugins/foo/marketsJob.js.map +1 -1
- package/src/plugins/foo/positionFetcher.d.ts +1 -1
- package/src/plugins/foo/positionFetcher.js.map +1 -1
- package/src/plugins/marginfi/fetcherExecutor.d.ts +1 -1
- package/src/plugins/marginfi/fetcherExecutor.js +59 -37
- package/src/plugins/marginfi/fetcherExecutor.js.map +1 -1
- package/src/plugins/marginfi/index.d.ts +2 -1
- package/src/plugins/marginfi/index.js.map +1 -1
- package/src/plugins/marginfi/jobExecutor.d.ts +1 -1
- package/src/plugins/marginfi/jobExecutor.js.map +1 -1
- package/src/plugins/marinade/index.d.ts +1 -1
- package/src/plugins/marinade/ticketsFetcher.d.ts +1 -1
- package/src/plugins/marinade/ticketsFetcher.js.map +1 -1
- package/src/plugins/meteora/index.d.ts +2 -1
- package/src/plugins/meteora/index.js.map +1 -1
- package/src/plugins/meteora/poolsJob.d.ts +1 -1
- package/src/plugins/meteora/poolsJob.js.map +1 -1
- package/src/plugins/meteora/vaultsJob.d.ts +1 -1
- package/src/plugins/meteora/vaultsJob.js.map +1 -1
- package/src/plugins/orca/clmmPositionsFetcher.d.ts +1 -1
- package/src/plugins/orca/clmmPositionsFetcher.js.map +1 -1
- package/src/plugins/orca/index.d.ts +2 -1
- package/src/plugins/orca/index.js +0 -1
- package/src/plugins/orca/index.js.map +1 -1
- package/src/plugins/orca/lpTokensJob.d.ts +1 -1
- package/src/plugins/orca/lpTokensJob.js.map +1 -1
- package/src/plugins/orca/whirlpoolsJob.d.ts +1 -1
- package/src/plugins/orca/whirlpoolsJob.js.map +1 -1
- package/src/plugins/raydium/clmmPositionsFetcher.d.ts +1 -1
- package/src/plugins/raydium/clmmPositionsFetcher.js.map +1 -1
- package/src/plugins/raydium/index.d.ts +2 -1
- package/src/plugins/raydium/index.js.map +1 -1
- package/src/plugins/raydium/lpTokensJob.d.ts +1 -1
- package/src/plugins/raydium/lpTokensJob.js.map +1 -1
- package/src/plugins/solend/index.d.ts +2 -1
- package/src/plugins/solend/index.js.map +1 -1
- package/src/plugins/solend/marketsJob.d.ts +1 -1
- package/src/plugins/solend/marketsJob.js.map +1 -1
- package/src/plugins/solend/obligationsFetcher.d.ts +1 -1
- package/src/plugins/solend/obligationsFetcher.js +47 -9
- package/src/plugins/solend/obligationsFetcher.js.map +1 -1
- package/src/plugins/solend/reservesJob.d.ts +1 -1
- package/src/plugins/solend/reservesJob.js +1 -1
- package/src/plugins/solend/reservesJob.js.map +1 -1
- package/src/plugins/solend/types.d.ts +3 -0
- package/src/plugins/tensor/index.d.ts +1 -1
- package/src/plugins/tensor/index.js +1 -1
- package/src/plugins/tensor/index.js.map +1 -1
- package/src/plugins/tensor/tensorFetcher.d.ts +1 -1
- package/src/plugins/tensor/tensorFetcher.js.map +1 -1
- package/src/plugins/thala/index.d.ts +2 -1
- package/src/plugins/thala/index.js.map +1 -1
- package/src/plugins/thala/lpTokensJob.d.ts +1 -1
- package/src/plugins/thala/lpTokensJob.js.map +1 -1
- package/src/plugins/thala/stabilityPoolFetcher.d.ts +1 -1
- package/src/plugins/thala/stabilityPoolFetcher.js.map +1 -1
- package/src/plugins/thala/stakingAprJob.d.ts +1 -1
- package/src/plugins/thala/stakingAprJob.js.map +1 -1
- package/src/plugins/thala/vaultsFetcher.d.ts +1 -1
- package/src/plugins/thala/vaultsFetcher.js.map +1 -1
- package/src/plugins/thala/vaultsRatesJob.d.ts +1 -1
- package/src/plugins/thala/vaultsRatesJob.js.map +1 -1
- package/src/plugins/tokens/fetchers/aptos.d.ts +1 -1
- package/src/plugins/tokens/fetchers/aptos.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana-native.d.ts +1 -1
- package/src/plugins/tokens/fetchers/solana-native.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana.d.ts +1 -1
- package/src/plugins/tokens/fetchers/solana.js.map +1 -1
- package/src/plugins/tokens/index.d.ts +2 -1
- package/src/plugins/tokens/index.js.map +1 -1
- package/src/plugins/tokens/jobExecutorGenerator.d.ts +2 -1
- package/src/plugins/tokens/jobExecutorGenerator.js.map +1 -1
- package/src/utils/misc/getFetchersByAddressSystem.d.ts +2 -1
- package/src/utils/misc/getFetchersByAddressSystem.js.map +1 -1
- package/src/utils/misc/getImagefromUri.d.ts +2 -1
- package/src/utils/misc/getImagefromUri.js.map +1 -1
package/CHANGELOG.md
CHANGED
@@ -2,10 +2,18 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
-
|
5
|
+
# [0.5.0](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.47...plugins-0.5.0) (2023-07-20)
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
## [0.4.47](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.46...plugins-0.4.47) (2023-07-19)
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
## [0.4.46](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.45...plugins-0.4.46) (2023-07-18)
|
14
|
+
|
15
|
+
|
16
|
+
|
9
17
|
## [0.4.45](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.44...plugins-0.4.45) (2023-07-17)
|
10
18
|
|
11
19
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sonarwatch/portfolio-plugins",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.5.0",
|
4
4
|
"type": "commonjs",
|
5
5
|
"generators": "./generators.json",
|
6
6
|
"dependencies": {
|
@@ -22,7 +22,7 @@
|
|
22
22
|
"viem": "^1.2.9"
|
23
23
|
},
|
24
24
|
"peerDependencies": {
|
25
|
-
"@sonarwatch/portfolio-core": "0.
|
25
|
+
"@sonarwatch/portfolio-core": "0.5.0"
|
26
26
|
},
|
27
27
|
"main": "./src/index.js",
|
28
28
|
"types": "./src/index.d.ts"
|
package/src/Cache.d.ts
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
import { Storage, StorageValue } from 'unstorage';
|
2
|
+
import { NetworkIdType, TokenPrice, TokenPriceSource } from '@sonarwatch/portfolio-core';
|
3
|
+
export type TransactionOptions = {
|
4
|
+
prefix: string;
|
5
|
+
networkId?: NetworkIdType;
|
6
|
+
};
|
7
|
+
export type CacheConfig = CacheConfigOverlayHttp | CacheConfigMemory | CacheConfigRedis | CacheConfigFilesystem | CacheConfigHttp;
|
8
|
+
export type CacheConfigOverlayHttp = {
|
9
|
+
type: 'overlayHttp';
|
10
|
+
params: CacheConfigOverlayHttpParams;
|
11
|
+
};
|
12
|
+
export type CacheConfigOverlayHttpParams = {
|
13
|
+
bases: string[];
|
14
|
+
};
|
15
|
+
export type CacheConfigMemory = {
|
16
|
+
type: 'memory';
|
17
|
+
params: CacheConfigMemoryParams;
|
18
|
+
};
|
19
|
+
export type CacheConfigMemoryParams = {
|
20
|
+
ttl?: number;
|
21
|
+
};
|
22
|
+
export type CacheConfigHttp = {
|
23
|
+
type: 'http';
|
24
|
+
params: CacheConfigHttpParams;
|
25
|
+
};
|
26
|
+
export type CacheConfigHttpParams = {
|
27
|
+
base: string;
|
28
|
+
headers?: Record<string, string>;
|
29
|
+
};
|
30
|
+
export type CacheConfigRedis = {
|
31
|
+
type: 'redis';
|
32
|
+
params: CacheConfigRedisParams;
|
33
|
+
};
|
34
|
+
export type CacheConfigRedisParams = {
|
35
|
+
url: string;
|
36
|
+
tls: boolean;
|
37
|
+
db: number;
|
38
|
+
};
|
39
|
+
export type CacheConfigFilesystem = {
|
40
|
+
type: 'filesystem';
|
41
|
+
params: CacheConfigFilesystemParams;
|
42
|
+
};
|
43
|
+
export type CacheConfigFilesystemParams = {
|
44
|
+
base: string;
|
45
|
+
};
|
46
|
+
export type CacheConfigParams = {
|
47
|
+
filesystem: {
|
48
|
+
endpoint: string;
|
49
|
+
};
|
50
|
+
redis: {
|
51
|
+
url: string;
|
52
|
+
tls: boolean;
|
53
|
+
db: number;
|
54
|
+
};
|
55
|
+
};
|
56
|
+
export declare class Cache {
|
57
|
+
readonly storage: Storage;
|
58
|
+
private tokenPricesCache;
|
59
|
+
constructor(cacheConfig: CacheConfig);
|
60
|
+
hasItem(key: string, opts: TransactionOptions): Promise<boolean>;
|
61
|
+
hasTokenPrice(address: string, networkId: NetworkIdType): Promise<boolean>;
|
62
|
+
getItem<K extends StorageValue>(key: string, opts: TransactionOptions): Promise<K | undefined>;
|
63
|
+
private getCachedTokenPrice;
|
64
|
+
getTokenPrice(address: string, networkId: NetworkIdType): Promise<TokenPrice | undefined>;
|
65
|
+
private getTokenPriceSources;
|
66
|
+
getItems<K extends StorageValue>(keys: string[], opts: TransactionOptions): Promise<(K | undefined)[]>;
|
67
|
+
getAllItems<K extends StorageValue>(opts: TransactionOptions): Promise<K[]>;
|
68
|
+
getAllItemsAsMap<K extends StorageValue>(opts: TransactionOptions): Promise<Map<string, K>>;
|
69
|
+
getTokenPrices(networkId: NetworkIdType): Promise<Map<string, TokenPrice>>;
|
70
|
+
setItem<K extends StorageValue>(key: string, value: K, opts: TransactionOptions): Promise<void>;
|
71
|
+
setTokenPriceSource(source: TokenPriceSource): Promise<void>;
|
72
|
+
removeItem(key: string, opts: TransactionOptions): Promise<void>;
|
73
|
+
getKeys(opts: TransactionOptions): Promise<string[]>;
|
74
|
+
getTokenPriceAddresses(networkId: NetworkIdType): Promise<string[]>;
|
75
|
+
dispose(): Promise<void>;
|
76
|
+
}
|
77
|
+
export declare function getCacheConfig(): CacheConfig;
|
78
|
+
export declare function getCache(): Cache;
|
package/src/Cache.js
ADDED
@@ -0,0 +1,300 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.getCache = exports.getCacheConfig = exports.Cache = void 0;
|
16
|
+
const unstorage_1 = require("unstorage");
|
17
|
+
const fs_1 = __importDefault(require("unstorage/drivers/fs"));
|
18
|
+
const redis_1 = __importDefault(require("unstorage/drivers/redis"));
|
19
|
+
const http_1 = __importDefault(require("unstorage/drivers/http"));
|
20
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
21
|
+
const overlayDriver_1 = __importDefault(require("./overlayDriver"));
|
22
|
+
const memoryDriver_1 = __importDefault(require("./memoryDriver"));
|
23
|
+
const runInBatch_1 = __importDefault(require("./utils/misc/runInBatch"));
|
24
|
+
const tokenPriceSourcePrefix = 'tokenpricesource';
|
25
|
+
const tokenPricesCacheTtl = 30 * 1000; // 30 sec
|
26
|
+
class Cache {
|
27
|
+
constructor(cacheConfig) {
|
28
|
+
this.tokenPricesCache = new Map();
|
29
|
+
const driver = getDriverFromCacheConfig(cacheConfig);
|
30
|
+
this.storage = (0, unstorage_1.createStorage)({
|
31
|
+
driver,
|
32
|
+
});
|
33
|
+
}
|
34
|
+
hasItem(key, opts) {
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
36
|
+
const item = yield this.getItem(key, opts);
|
37
|
+
return item !== undefined;
|
38
|
+
});
|
39
|
+
}
|
40
|
+
hasTokenPrice(address, networkId) {
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
42
|
+
const fAddress = (0, portfolio_core_1.formatTokenAddress)(address, networkId);
|
43
|
+
const tokenPrice = yield this.getTokenPrice(fAddress, networkId);
|
44
|
+
return tokenPrice !== undefined;
|
45
|
+
});
|
46
|
+
}
|
47
|
+
getItem(key, opts) {
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
49
|
+
const fullKey = getFullKey(key, opts);
|
50
|
+
const item = yield this.storage.getItem(fullKey).catch(() => null);
|
51
|
+
return item === null ? undefined : item;
|
52
|
+
});
|
53
|
+
}
|
54
|
+
getCachedTokenPrice(address, networkId) {
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
56
|
+
const cachedTokenPrice = this.tokenPricesCache.get(getTokenPriceCacheKey(address, networkId));
|
57
|
+
if (!cachedTokenPrice) {
|
58
|
+
this.tokenPricesCache.delete(getTokenPriceCacheKey(address, networkId));
|
59
|
+
return undefined;
|
60
|
+
}
|
61
|
+
if (Date.now() > cachedTokenPrice.ts + tokenPricesCacheTtl) {
|
62
|
+
this.tokenPricesCache.delete(getTokenPriceCacheKey(address, networkId));
|
63
|
+
return undefined;
|
64
|
+
}
|
65
|
+
return cachedTokenPrice.tp;
|
66
|
+
});
|
67
|
+
}
|
68
|
+
getTokenPrice(address, networkId) {
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
70
|
+
const fAddress = (0, portfolio_core_1.formatTokenAddress)(address, networkId);
|
71
|
+
// Check if in cache
|
72
|
+
const cTokenPrice = yield this.getCachedTokenPrice(fAddress, networkId);
|
73
|
+
if (cTokenPrice)
|
74
|
+
return cTokenPrice;
|
75
|
+
const sources = yield this.getTokenPriceSources(fAddress, networkId);
|
76
|
+
if (!sources)
|
77
|
+
return undefined;
|
78
|
+
const tokenPrice = (0, portfolio_core_1.tokenPriceFromSources)(sources);
|
79
|
+
// Set in cache if tokenPrice is valide
|
80
|
+
if (tokenPrice) {
|
81
|
+
this.tokenPricesCache.set(getTokenPriceCacheKey(fAddress, networkId), {
|
82
|
+
tp: tokenPrice,
|
83
|
+
ts: Date.now(),
|
84
|
+
});
|
85
|
+
}
|
86
|
+
return tokenPrice;
|
87
|
+
});
|
88
|
+
}
|
89
|
+
getTokenPriceSources(address, networkId) {
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
91
|
+
return this.getItem(address, {
|
92
|
+
prefix: tokenPriceSourcePrefix,
|
93
|
+
networkId,
|
94
|
+
});
|
95
|
+
});
|
96
|
+
}
|
97
|
+
getItems(keys, opts) {
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
99
|
+
const res = yield (0, runInBatch_1.default)(keys.map((k) => () => this.getItem(k, opts)), 20);
|
100
|
+
return res.map((r) => {
|
101
|
+
if (r.status === 'rejected')
|
102
|
+
return undefined;
|
103
|
+
return r.value;
|
104
|
+
});
|
105
|
+
});
|
106
|
+
}
|
107
|
+
getAllItems(opts) {
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
109
|
+
const itemsMap = yield this.getAllItemsAsMap(opts);
|
110
|
+
return Array.from(itemsMap.values());
|
111
|
+
});
|
112
|
+
}
|
113
|
+
getAllItemsAsMap(opts) {
|
114
|
+
return __awaiter(this, void 0, void 0, function* () {
|
115
|
+
const keys = yield this.getKeys(opts);
|
116
|
+
const itemsMap = new Map();
|
117
|
+
for (let i = 0; i < keys.length; i += 1) {
|
118
|
+
const key = keys[i];
|
119
|
+
const item = yield this.getItem(key, opts);
|
120
|
+
if (item !== undefined)
|
121
|
+
itemsMap.set(key, item);
|
122
|
+
}
|
123
|
+
return itemsMap;
|
124
|
+
});
|
125
|
+
}
|
126
|
+
getTokenPrices(networkId) {
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
128
|
+
const addresses = yield this.getTokenPriceAddresses(networkId);
|
129
|
+
const tokenPrices = new Map();
|
130
|
+
for (let i = 0; i < addresses.length; i += 1) {
|
131
|
+
const address = addresses[i];
|
132
|
+
const item = yield this.getTokenPrice(address, networkId);
|
133
|
+
if (item !== undefined)
|
134
|
+
tokenPrices.set(address, item);
|
135
|
+
}
|
136
|
+
return tokenPrices;
|
137
|
+
});
|
138
|
+
}
|
139
|
+
setItem(key, value, opts) {
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
141
|
+
const fullKey = getFullKey(key, opts);
|
142
|
+
return this.storage.setItem(fullKey, value);
|
143
|
+
});
|
144
|
+
}
|
145
|
+
setTokenPriceSource(source) {
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
147
|
+
const fSource = (0, portfolio_core_1.formatTokenPriceSource)(source);
|
148
|
+
let cSources = yield this.getItem(fSource.address, {
|
149
|
+
prefix: tokenPriceSourcePrefix,
|
150
|
+
networkId: fSource.networkId,
|
151
|
+
});
|
152
|
+
if (!cSources)
|
153
|
+
cSources = [];
|
154
|
+
const newSources = (0, portfolio_core_1.pushTokenPriceSource)(cSources, fSource);
|
155
|
+
if (!newSources) {
|
156
|
+
yield this.removeItem(fSource.address, {
|
157
|
+
prefix: tokenPriceSourcePrefix,
|
158
|
+
networkId: fSource.networkId,
|
159
|
+
});
|
160
|
+
return;
|
161
|
+
}
|
162
|
+
yield this.setItem(fSource.address, newSources, {
|
163
|
+
prefix: tokenPriceSourcePrefix,
|
164
|
+
networkId: fSource.networkId,
|
165
|
+
});
|
166
|
+
});
|
167
|
+
}
|
168
|
+
removeItem(key, opts) {
|
169
|
+
return __awaiter(this, void 0, void 0, function* () {
|
170
|
+
const fullKey = getFullKey(key, opts);
|
171
|
+
return this.storage.removeItem(fullKey);
|
172
|
+
});
|
173
|
+
}
|
174
|
+
getKeys(opts) {
|
175
|
+
return __awaiter(this, void 0, void 0, function* () {
|
176
|
+
const fullBase = getFullBase(opts);
|
177
|
+
const keys = (yield this.storage.getKeys(fullBase)).map((s) => s.substring(fullBase.length));
|
178
|
+
// Verifying that key is still alive
|
179
|
+
for (let i = 0; i < keys.length; i += 1) {
|
180
|
+
const key = keys[i];
|
181
|
+
yield this.hasItem(key, opts);
|
182
|
+
}
|
183
|
+
return (yield this.storage.getKeys(fullBase)).map((s) => s.substring(fullBase.length));
|
184
|
+
});
|
185
|
+
}
|
186
|
+
getTokenPriceAddresses(networkId) {
|
187
|
+
return __awaiter(this, void 0, void 0, function* () {
|
188
|
+
return this.getKeys({
|
189
|
+
prefix: tokenPriceSourcePrefix,
|
190
|
+
networkId,
|
191
|
+
});
|
192
|
+
});
|
193
|
+
}
|
194
|
+
dispose() {
|
195
|
+
return this.storage.dispose();
|
196
|
+
}
|
197
|
+
}
|
198
|
+
exports.Cache = Cache;
|
199
|
+
function getTokenPriceCacheKey(address, networkId) {
|
200
|
+
return `${address}-${networkId}`;
|
201
|
+
}
|
202
|
+
function getFullKey(key, opts) {
|
203
|
+
const { networkId, prefix } = opts;
|
204
|
+
const networkIdKeyPrefix = networkId ? `/${networkId.toString()}` : '';
|
205
|
+
return `/${prefix}${networkIdKeyPrefix}/${key}`;
|
206
|
+
}
|
207
|
+
function getFullBase(opts) {
|
208
|
+
const { networkId, prefix } = opts;
|
209
|
+
const networkIdBasePrefix = networkId ? `${networkId.toString()}:` : '';
|
210
|
+
const fullBase = `${prefix}:${networkIdBasePrefix}`;
|
211
|
+
return fullBase;
|
212
|
+
}
|
213
|
+
function getDriverFromCacheConfig(cacheConfig) {
|
214
|
+
switch (cacheConfig.type) {
|
215
|
+
case 'overlayHttp':
|
216
|
+
return (0, overlayDriver_1.default)({
|
217
|
+
layers: cacheConfig.params.bases.map((base) => (0, http_1.default)({ base })),
|
218
|
+
});
|
219
|
+
case 'memory':
|
220
|
+
return (0, memoryDriver_1.default)({
|
221
|
+
ttl: cacheConfig.params.ttl || 60 * 60 * 1000,
|
222
|
+
});
|
223
|
+
case 'filesystem':
|
224
|
+
return (0, fs_1.default)({
|
225
|
+
base: cacheConfig.params.base,
|
226
|
+
});
|
227
|
+
case 'redis':
|
228
|
+
return (0, redis_1.default)({
|
229
|
+
url: cacheConfig.params.url,
|
230
|
+
tls: cacheConfig.params.tls ? {} : undefined,
|
231
|
+
db: cacheConfig.params.db,
|
232
|
+
});
|
233
|
+
case 'http':
|
234
|
+
return (0, http_1.default)({
|
235
|
+
base: cacheConfig.params.base,
|
236
|
+
headers: cacheConfig.params.headers,
|
237
|
+
});
|
238
|
+
default:
|
239
|
+
throw new Error('CacheConfig type is not valid');
|
240
|
+
}
|
241
|
+
}
|
242
|
+
function getCacheConfig() {
|
243
|
+
switch (process.env['CACHE_CONFIG_TYPE']) {
|
244
|
+
case 'overlayHttp':
|
245
|
+
return {
|
246
|
+
type: 'overlayHttp',
|
247
|
+
params: {
|
248
|
+
bases: (process.env['CACHE_CONFIG_OVERLAY_HTTP_BASES'] ||
|
249
|
+
'http://localhost:3000/,https://portfolio-cache.sonar.watch/').split(','),
|
250
|
+
},
|
251
|
+
};
|
252
|
+
case 'memory':
|
253
|
+
return {
|
254
|
+
type: 'memory',
|
255
|
+
params: {},
|
256
|
+
};
|
257
|
+
case 'filesystem':
|
258
|
+
return {
|
259
|
+
type: 'filesystem',
|
260
|
+
params: {
|
261
|
+
base: process.env['CACHE_CONFIG_FILESYSTEM_BASE'] || './cache',
|
262
|
+
},
|
263
|
+
};
|
264
|
+
case 'redis':
|
265
|
+
return {
|
266
|
+
type: 'redis',
|
267
|
+
params: {
|
268
|
+
url: process.env['CACHE_CONFIG_REDIS_URL'] || '127.0.0.1:6379',
|
269
|
+
tls: process.env['CACHE_CONFIG_REDIS_TLS'] === 'true',
|
270
|
+
db: parseInt(process.env['CACHE_CONFIG_REDIS_DB'] || '0', 10),
|
271
|
+
},
|
272
|
+
};
|
273
|
+
case 'http':
|
274
|
+
return {
|
275
|
+
type: 'http',
|
276
|
+
params: {
|
277
|
+
base: process.env['CACHE_CONFIG_HTTP_BASE'] || 'http://localhost:3000/',
|
278
|
+
headers: process.env['CACHE_CONFIG_HTTP_BEARER']
|
279
|
+
? {
|
280
|
+
Authorization: `Bearer ${process.env['CACHE_CONFIG_HTTP_BEARER']}`,
|
281
|
+
}
|
282
|
+
: undefined,
|
283
|
+
},
|
284
|
+
};
|
285
|
+
default:
|
286
|
+
return {
|
287
|
+
type: 'filesystem',
|
288
|
+
params: {
|
289
|
+
base: process.env['CACHE_CONFIG_FILESYSTEM_BASE'] || './cache',
|
290
|
+
},
|
291
|
+
};
|
292
|
+
}
|
293
|
+
}
|
294
|
+
exports.getCacheConfig = getCacheConfig;
|
295
|
+
function getCache() {
|
296
|
+
const cacheConfig = getCacheConfig();
|
297
|
+
return new Cache(cacheConfig);
|
298
|
+
}
|
299
|
+
exports.getCache = getCache;
|
300
|
+
//# sourceMappingURL=Cache.js.map
|
package/src/Cache.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../../packages/plugins/src/Cache.ts"],"names":[],"mappings":"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"}
|
package/src/Fetcher.d.ts
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
import { AddressSystemType, NetworkIdType, PortfolioElement } from '@sonarwatch/portfolio-core';
|
2
|
+
import { Cache } from './Cache';
|
3
|
+
export type FetcherExecutor = (owner: string, cache: Cache) => Promise<PortfolioElement[]>;
|
4
|
+
export type Fetcher = {
|
5
|
+
id: string;
|
6
|
+
networkId: NetworkIdType;
|
7
|
+
executor: FetcherExecutor;
|
8
|
+
};
|
9
|
+
export type FetcherResult = {
|
10
|
+
owner: string;
|
11
|
+
fetcherId: string;
|
12
|
+
networdkId: NetworkIdType;
|
13
|
+
duration: number;
|
14
|
+
elements: PortfolioElement[];
|
15
|
+
};
|
16
|
+
export type FetcherReport = {
|
17
|
+
id: string;
|
18
|
+
status: 'succeeded' | 'failed';
|
19
|
+
duration?: number;
|
20
|
+
error?: string;
|
21
|
+
};
|
22
|
+
export type FetchersResult = {
|
23
|
+
date: number;
|
24
|
+
owner: string;
|
25
|
+
addressSystem: AddressSystemType;
|
26
|
+
fetcherReports: FetcherReport[];
|
27
|
+
elements: PortfolioElement[];
|
28
|
+
};
|
29
|
+
export declare function runFetchers(owner: string, addressSystem: AddressSystemType, fetchers: Fetcher[], cache: Cache): Promise<FetchersResult>;
|
30
|
+
export declare function runFetchersByNetworkId(owner: string, networkId: NetworkIdType, fetchers: Fetcher[], cache: Cache): Promise<FetchersResult>;
|
31
|
+
export declare function runFetcher(owner: string, fetcher: Fetcher, cache: Cache): Promise<FetcherResult>;
|
package/src/Fetcher.js
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.runFetcher = exports.runFetchersByNetworkId = exports.runFetchers = void 0;
|
13
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
14
|
+
function runFetchers(owner, addressSystem, fetchers, cache) {
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
16
|
+
const fOwner = (0, portfolio_core_1.formatAddress)(owner, addressSystem);
|
17
|
+
const isFetchersValids = fetchers.every((f) => portfolio_core_1.networks[f.networkId].addressSystem === addressSystem);
|
18
|
+
if (!isFetchersValids)
|
19
|
+
throw new Error(`Not all fetchers have the right address system: ${addressSystem}`);
|
20
|
+
const promises = fetchers.map((f) => runFetcher(fOwner, f, cache));
|
21
|
+
const result = yield Promise.allSettled(promises);
|
22
|
+
const fReports = [];
|
23
|
+
const elements = result.flatMap((r, index) => {
|
24
|
+
let fReport;
|
25
|
+
if (r.status === 'fulfilled') {
|
26
|
+
fReport = {
|
27
|
+
id: fetchers[index].id,
|
28
|
+
status: 'succeeded',
|
29
|
+
duration: r.value.duration,
|
30
|
+
error: undefined,
|
31
|
+
};
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
fReport = {
|
35
|
+
id: fetchers[index].id,
|
36
|
+
status: 'failed',
|
37
|
+
duration: undefined,
|
38
|
+
error: r.reason.message || 'Unknown error',
|
39
|
+
};
|
40
|
+
}
|
41
|
+
fReports.push(fReport);
|
42
|
+
if (r.status === 'rejected')
|
43
|
+
return [];
|
44
|
+
return r.value.elements;
|
45
|
+
});
|
46
|
+
return {
|
47
|
+
date: Date.now(),
|
48
|
+
owner: fOwner,
|
49
|
+
addressSystem,
|
50
|
+
fetcherReports: fReports,
|
51
|
+
elements,
|
52
|
+
};
|
53
|
+
});
|
54
|
+
}
|
55
|
+
exports.runFetchers = runFetchers;
|
56
|
+
function runFetchersByNetworkId(owner, networkId, fetchers, cache) {
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
58
|
+
const isFetchersValids = fetchers.every((f) => f.networkId === networkId);
|
59
|
+
if (!isFetchersValids)
|
60
|
+
throw new Error(`Not all fetchers have the right network id: ${networkId}`);
|
61
|
+
const { addressSystem } = portfolio_core_1.networks[networkId];
|
62
|
+
return runFetchers(owner, addressSystem, fetchers, cache);
|
63
|
+
});
|
64
|
+
}
|
65
|
+
exports.runFetchersByNetworkId = runFetchersByNetworkId;
|
66
|
+
function runFetcher(owner, fetcher, cache) {
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
68
|
+
const startDate = Date.now();
|
69
|
+
const fOwner = (0, portfolio_core_1.formatAddressByNetworkId)(owner, fetcher.networkId);
|
70
|
+
const elements = yield fetcher.executor(fOwner, cache);
|
71
|
+
return {
|
72
|
+
owner: fOwner,
|
73
|
+
fetcherId: fetcher.id,
|
74
|
+
networdkId: fetcher.networkId,
|
75
|
+
duration: Date.now() - startDate,
|
76
|
+
elements,
|
77
|
+
};
|
78
|
+
});
|
79
|
+
}
|
80
|
+
exports.runFetcher = runFetcher;
|
81
|
+
//# sourceMappingURL=Fetcher.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Fetcher.js","sourceRoot":"","sources":["../../../../packages/plugins/src/Fetcher.ts"],"names":[],"mappings":"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"}
|
package/src/Job.d.ts
ADDED
package/src/Job.js
ADDED
package/src/Job.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../../packages/plugins/src/Job.ts"],"names":[],"mappings":""}
|
package/src/index.d.ts
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
import { Fetcher
|
1
|
+
import { Fetcher } from './Fetcher';
|
2
|
+
import { Job } from './Job';
|
3
|
+
export * from './Cache';
|
2
4
|
export * from './platforms';
|
3
|
-
export declare const platforms: import("
|
5
|
+
export declare const platforms: import("../../../dist/packages/core/src").Platform[];
|
4
6
|
export declare const jobs: Job[];
|
5
7
|
export declare const fetchers: Fetcher[];
|
6
|
-
export declare const fetchersByAddressSystem: Record<import("
|
8
|
+
export declare const fetchersByAddressSystem: Record<import("../../../dist/packages/core/src").AddressSystemType, Fetcher[]>;
|
package/src/index.js
CHANGED
@@ -38,7 +38,9 @@ const meteora_1 = require("./plugins/meteora");
|
|
38
38
|
const thala_1 = require("./plugins/thala");
|
39
39
|
const tensor_1 = require("./plugins/tensor");
|
40
40
|
const foo_1 = require("./plugins/foo");
|
41
|
+
const drift_1 = require("./plugins/drift");
|
41
42
|
const getFetchersByAddressSystem_1 = require("./utils/misc/getFetchersByAddressSystem");
|
43
|
+
__exportStar(require("./Cache"), exports);
|
42
44
|
__exportStar(require("./platforms"), exports);
|
43
45
|
exports.platforms = Object.values(platformsObj);
|
44
46
|
exports.jobs = [
|
@@ -50,6 +52,7 @@ exports.jobs = [
|
|
50
52
|
...solend_1.jobs,
|
51
53
|
...meteora_1.jobs,
|
52
54
|
...orca_1.jobs,
|
55
|
+
...drift_1.jobs,
|
53
56
|
];
|
54
57
|
exports.fetchers = [
|
55
58
|
...tokens_1.fetchers,
|
@@ -61,6 +64,7 @@ exports.fetchers = [
|
|
61
64
|
...thala_1.fetchers,
|
62
65
|
...raydium_1.fetchers,
|
63
66
|
...orca_1.fetchers,
|
67
|
+
...drift_1.fetchers,
|
64
68
|
];
|
65
69
|
exports.fetchersByAddressSystem = (0, getFetchersByAddressSystem_1.getFetchersByAddressSystem)(exports.fetchers);
|
66
70
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,0DAA4C;AAC5C,6CAG0B;AAC1B,iDAAkE;AAClE,iDAG4B;AAC5B,6CAG0B;AAC1B,+CAG2B;AAC3B,yCAA4E;AAC5E,+CAAwD;AACxD,2CAA+E;AAC/E,6CAA8D;AAC9D,uCAAyE;AACzE,2CAA+E;AAC/E,wFAAqF;AAErF,0CAAwB;AAExB,8CAA4B;AACf,QAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAExC,QAAA,IAAI,GAAU;IACzB,GAAG,aAAU;IACb,GAAG,YAAS;IACZ,GAAG,UAAO;IACV,GAAG,eAAY;IACf,GAAG,cAAW;IACd,GAAG,aAAU;IACb,GAAG,cAAW;IACd,GAAG,WAAQ;IACX,GAAG,YAAS;CACb,CAAC;AAEW,QAAA,QAAQ,GAAc;IACjC,GAAG,iBAAc;IACjB,GAAG,cAAW;IACd,GAAG,iBAAc;IACjB,GAAG,mBAAgB;IACnB,GAAG,mBAAgB;IACnB,GAAG,iBAAc;IACjB,GAAG,gBAAa;IAChB,GAAG,kBAAe;IAClB,GAAG,eAAY;IACf,GAAG,gBAAa;CACjB,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,uDAA0B,EAAC,gBAAQ,CAAC,CAAC"}
|