@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.
Files changed (126) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/package.json +2 -2
  3. package/src/Cache.d.ts +78 -0
  4. package/src/Cache.js +300 -0
  5. package/src/Cache.js.map +1 -0
  6. package/src/Fetcher.d.ts +31 -0
  7. package/src/Fetcher.js +81 -0
  8. package/src/Fetcher.js.map +1 -0
  9. package/src/Job.d.ts +6 -0
  10. package/src/Job.js +3 -0
  11. package/src/Job.js.map +1 -0
  12. package/src/index.d.ts +5 -3
  13. package/src/index.js +4 -0
  14. package/src/index.js.map +1 -1
  15. package/src/memoryDriver.d.ts +5 -0
  16. package/src/memoryDriver.js +55 -0
  17. package/src/memoryDriver.js.map +1 -0
  18. package/src/overlayDriver.d.ts +6 -0
  19. package/src/overlayDriver.js +96 -0
  20. package/src/overlayDriver.js.map +1 -0
  21. package/src/platforms.d.ts +1 -0
  22. package/src/platforms.js +6 -1
  23. package/src/platforms.js.map +1 -1
  24. package/src/plugins/drift/constants.d.ts +4 -0
  25. package/src/plugins/drift/constants.js +8 -0
  26. package/src/plugins/drift/constants.js.map +1 -0
  27. package/src/plugins/drift/filters.d.ts +3 -0
  28. package/src/plugins/drift/filters.js +23 -0
  29. package/src/plugins/drift/filters.js.map +1 -0
  30. package/src/plugins/drift/helpers.d.ts +20 -0
  31. package/src/plugins/drift/helpers.js +116 -0
  32. package/src/plugins/drift/helpers.js.map +1 -0
  33. package/src/plugins/drift/index.d.ts +4 -0
  34. package/src/plugins/drift/index.js +11 -0
  35. package/src/plugins/drift/index.js.map +1 -0
  36. package/src/plugins/drift/spotMarketsJob.d.ts +3 -0
  37. package/src/plugins/drift/spotMarketsJob.js +37 -0
  38. package/src/plugins/drift/spotMarketsJob.js.map +1 -0
  39. package/src/plugins/drift/spotPositionsFetcher.d.ts +3 -0
  40. package/src/plugins/drift/spotPositionsFetcher.js +142 -0
  41. package/src/plugins/drift/spotPositionsFetcher.js.map +1 -0
  42. package/src/plugins/drift/struct.d.ts +244 -0
  43. package/src/plugins/drift/struct.js +248 -0
  44. package/src/plugins/drift/struct.js.map +1 -0
  45. package/src/plugins/drift/types.d.ts +5 -0
  46. package/src/plugins/drift/types.js +3 -0
  47. package/src/plugins/drift/types.js.map +1 -0
  48. package/src/plugins/foo/index.d.ts +2 -1
  49. package/src/plugins/foo/index.js.map +1 -1
  50. package/src/plugins/foo/marketsJob.d.ts +1 -1
  51. package/src/plugins/foo/marketsJob.js.map +1 -1
  52. package/src/plugins/foo/positionFetcher.d.ts +1 -1
  53. package/src/plugins/foo/positionFetcher.js.map +1 -1
  54. package/src/plugins/marginfi/fetcherExecutor.d.ts +1 -1
  55. package/src/plugins/marginfi/fetcherExecutor.js +59 -37
  56. package/src/plugins/marginfi/fetcherExecutor.js.map +1 -1
  57. package/src/plugins/marginfi/index.d.ts +2 -1
  58. package/src/plugins/marginfi/index.js.map +1 -1
  59. package/src/plugins/marginfi/jobExecutor.d.ts +1 -1
  60. package/src/plugins/marginfi/jobExecutor.js.map +1 -1
  61. package/src/plugins/marinade/index.d.ts +1 -1
  62. package/src/plugins/marinade/ticketsFetcher.d.ts +1 -1
  63. package/src/plugins/marinade/ticketsFetcher.js.map +1 -1
  64. package/src/plugins/meteora/index.d.ts +2 -1
  65. package/src/plugins/meteora/index.js.map +1 -1
  66. package/src/plugins/meteora/poolsJob.d.ts +1 -1
  67. package/src/plugins/meteora/poolsJob.js.map +1 -1
  68. package/src/plugins/meteora/vaultsJob.d.ts +1 -1
  69. package/src/plugins/meteora/vaultsJob.js.map +1 -1
  70. package/src/plugins/orca/clmmPositionsFetcher.d.ts +1 -1
  71. package/src/plugins/orca/clmmPositionsFetcher.js.map +1 -1
  72. package/src/plugins/orca/index.d.ts +2 -1
  73. package/src/plugins/orca/index.js +0 -1
  74. package/src/plugins/orca/index.js.map +1 -1
  75. package/src/plugins/orca/lpTokensJob.d.ts +1 -1
  76. package/src/plugins/orca/lpTokensJob.js.map +1 -1
  77. package/src/plugins/orca/whirlpoolsJob.d.ts +1 -1
  78. package/src/plugins/orca/whirlpoolsJob.js.map +1 -1
  79. package/src/plugins/raydium/clmmPositionsFetcher.d.ts +1 -1
  80. package/src/plugins/raydium/clmmPositionsFetcher.js.map +1 -1
  81. package/src/plugins/raydium/index.d.ts +2 -1
  82. package/src/plugins/raydium/index.js.map +1 -1
  83. package/src/plugins/raydium/lpTokensJob.d.ts +1 -1
  84. package/src/plugins/raydium/lpTokensJob.js.map +1 -1
  85. package/src/plugins/solend/index.d.ts +2 -1
  86. package/src/plugins/solend/index.js.map +1 -1
  87. package/src/plugins/solend/marketsJob.d.ts +1 -1
  88. package/src/plugins/solend/marketsJob.js.map +1 -1
  89. package/src/plugins/solend/obligationsFetcher.d.ts +1 -1
  90. package/src/plugins/solend/obligationsFetcher.js +47 -9
  91. package/src/plugins/solend/obligationsFetcher.js.map +1 -1
  92. package/src/plugins/solend/reservesJob.d.ts +1 -1
  93. package/src/plugins/solend/reservesJob.js +1 -1
  94. package/src/plugins/solend/reservesJob.js.map +1 -1
  95. package/src/plugins/solend/types.d.ts +3 -0
  96. package/src/plugins/tensor/index.d.ts +1 -1
  97. package/src/plugins/tensor/index.js +1 -1
  98. package/src/plugins/tensor/index.js.map +1 -1
  99. package/src/plugins/tensor/tensorFetcher.d.ts +1 -1
  100. package/src/plugins/tensor/tensorFetcher.js.map +1 -1
  101. package/src/plugins/thala/index.d.ts +2 -1
  102. package/src/plugins/thala/index.js.map +1 -1
  103. package/src/plugins/thala/lpTokensJob.d.ts +1 -1
  104. package/src/plugins/thala/lpTokensJob.js.map +1 -1
  105. package/src/plugins/thala/stabilityPoolFetcher.d.ts +1 -1
  106. package/src/plugins/thala/stabilityPoolFetcher.js.map +1 -1
  107. package/src/plugins/thala/stakingAprJob.d.ts +1 -1
  108. package/src/plugins/thala/stakingAprJob.js.map +1 -1
  109. package/src/plugins/thala/vaultsFetcher.d.ts +1 -1
  110. package/src/plugins/thala/vaultsFetcher.js.map +1 -1
  111. package/src/plugins/thala/vaultsRatesJob.d.ts +1 -1
  112. package/src/plugins/thala/vaultsRatesJob.js.map +1 -1
  113. package/src/plugins/tokens/fetchers/aptos.d.ts +1 -1
  114. package/src/plugins/tokens/fetchers/aptos.js.map +1 -1
  115. package/src/plugins/tokens/fetchers/solana-native.d.ts +1 -1
  116. package/src/plugins/tokens/fetchers/solana-native.js.map +1 -1
  117. package/src/plugins/tokens/fetchers/solana.d.ts +1 -1
  118. package/src/plugins/tokens/fetchers/solana.js.map +1 -1
  119. package/src/plugins/tokens/index.d.ts +2 -1
  120. package/src/plugins/tokens/index.js.map +1 -1
  121. package/src/plugins/tokens/jobExecutorGenerator.d.ts +2 -1
  122. package/src/plugins/tokens/jobExecutorGenerator.js.map +1 -1
  123. package/src/utils/misc/getFetchersByAddressSystem.d.ts +2 -1
  124. package/src/utils/misc/getFetchersByAddressSystem.js.map +1 -1
  125. package/src/utils/misc/getImagefromUri.d.ts +2 -1
  126. 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
- ## [0.4.46](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.45...plugins-0.4.46) (2023-07-18)
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.4.46",
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.4.48"
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../../packages/plugins/src/Cache.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -0,0 +1,6 @@
1
+ import { Cache } from './Cache';
2
+ export type JobExecutor = (cache: Cache) => Promise<void>;
3
+ export type Job = {
4
+ id: string;
5
+ executor: JobExecutor;
6
+ };
package/src/Job.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Job.js.map
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, Job } from '@sonarwatch/portfolio-core';
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("@sonarwatch/portfolio-core").Platform[];
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("@sonarwatch/portfolio-core").AddressSystemType, Fetcher[]>;
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0DAA4C;AAC5C,6CAG0B;AAC1B,iDAAkE;AAClE,iDAG4B;AAC5B,6CAG0B;AAC1B,+CAG2B;AAC3B,yCAA4E;AAC5E,+CAAwD;AACxD,2CAA+E;AAC/E,6CAA8D;AAC9D,uCAAyE;AACzE,wFAAqF;AAErF,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;CACZ,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;CAChB,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,uDAA0B,EAAC,gBAAQ,CAAC,CAAC"}
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"}
@@ -0,0 +1,5 @@
1
+ export interface MemoryStorageOptions {
2
+ ttl?: number;
3
+ }
4
+ declare const _default: (opts: MemoryStorageOptions) => import("unstorage/dist/types-de0cd07d").D;
5
+ export default _default;