@sonarwatch/portfolio-plugins 0.5.16 → 0.5.17
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 +4 -0
- package/package.json +2 -2
- package/src/index.js +2 -0
- package/src/index.js.map +1 -1
- package/src/plugins/tokens/constants.d.ts +0 -3
- package/src/plugins/tokens/constants.js +1 -5
- package/src/plugins/tokens/constants.js.map +1 -1
- package/src/plugins/tokens/helpers.js +2 -1
- package/src/plugins/tokens/helpers.js.map +1 -1
- package/src/plugins/tokens/tokenListsJob.js +7 -9
- package/src/plugins/tokens/tokenListsJob.js.map +1 -1
- package/src/plugins/top-tokens/constants.d.ts +2 -1
- package/src/plugins/top-tokens/constants.js +3 -2
- package/src/plugins/top-tokens/constants.js.map +1 -1
- package/src/plugins/top-tokens/forcedAddresses.d.ts +3 -0
- package/src/plugins/top-tokens/forcedAddresses.js +8 -0
- package/src/plugins/top-tokens/forcedAddresses.js.map +1 -0
- package/src/plugins/top-tokens/getTopAddresses.d.ts +3 -0
- package/src/plugins/top-tokens/getTopAddresses.js +69 -0
- package/src/plugins/top-tokens/getTopAddresses.js.map +1 -0
- package/src/plugins/top-tokens/index.d.ts +0 -2
- package/src/plugins/top-tokens/index.js +1 -2
- package/src/plugins/top-tokens/index.js.map +1 -1
- package/src/plugins/top-tokens/topTokensJob.js +24 -12
- package/src/plugins/top-tokens/topTokensJob.js.map +1 -1
- package/src/utils/coingecko/constants.d.ts +3 -0
- package/src/utils/coingecko/constants.js +7 -0
- package/src/utils/coingecko/constants.js.map +1 -0
- package/src/utils/coingecko/types.d.ts +18 -0
- package/src/utils/coingecko/types.js.map +1 -0
- package/src/plugins/top-tokens/types.d.ts +0 -28
- package/src/plugins/top-tokens/types.js.map +0 -1
- /package/src/{plugins/top-tokens → utils/coingecko}/types.js +0 -0
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
+
## [0.5.17](https://github.com/sonarwatch/portfolio/compare/plugins-0.5.16...plugins-0.5.17) (2023-08-03)
|
6
|
+
|
7
|
+
|
8
|
+
|
5
9
|
## [0.5.16](https://github.com/sonarwatch/portfolio/compare/plugins-0.5.15...plugins-0.5.16) (2023-08-02)
|
6
10
|
|
7
11
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sonarwatch/portfolio-plugins",
|
3
|
-
"version": "0.5.
|
3
|
+
"version": "0.5.17",
|
4
4
|
"type": "commonjs",
|
5
5
|
"generators": "./generators.json",
|
6
6
|
"dependencies": {
|
@@ -21,7 +21,7 @@
|
|
21
21
|
"viem": "^1.2.9"
|
22
22
|
},
|
23
23
|
"peerDependencies": {
|
24
|
-
"@sonarwatch/portfolio-core": "0.5.
|
24
|
+
"@sonarwatch/portfolio-core": "0.5.17"
|
25
25
|
},
|
26
26
|
"main": "./src/index.js",
|
27
27
|
"types": "./src/index.d.ts"
|
package/src/index.js
CHANGED
@@ -42,6 +42,7 @@ const tensor_1 = require("./plugins/tensor");
|
|
42
42
|
const foo_1 = require("./plugins/foo");
|
43
43
|
const drift_1 = require("./plugins/drift");
|
44
44
|
const mango_1 = require("./plugins/mango");
|
45
|
+
const top_tokens_1 = require("./plugins/top-tokens");
|
45
46
|
const getFetchersByAddressSystem_1 = require("./utils/misc/getFetchersByAddressSystem");
|
46
47
|
__exportStar(require("./Cache"), exports);
|
47
48
|
__exportStar(require("./Fetcher"), exports);
|
@@ -61,6 +62,7 @@ exports.jobs = [
|
|
61
62
|
...mango_1.jobs,
|
62
63
|
...cetus_1.jobs,
|
63
64
|
...turbos_1.jobs,
|
65
|
+
...top_tokens_1.jobs,
|
64
66
|
];
|
65
67
|
exports.fetchers = [
|
66
68
|
...tokens_1.fetchers,
|
package/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,0DAA4C;AAC5C,6CAG0B;AAC1B,iDAAkE;AAClE,iDAG4B;AAC5B,6CAG0B;AAC1B,+CAG2B;AAC3B,yCAA4E;AAC5E,+CAAwD;AACxD,2CAA+E;AAC/E,6CAG0B;AAC1B,2CAA+E;AAC/E,6CAA8D;AAC9D,uCAAyE;AACzE,2CAA+E;AAC/E,2CAA+E;AAC/E,wFAAqF;AAErF,0CAAwB;AACxB,4CAA0B;AAC1B,wCAAsB;AAEtB,8CAA4B;AACf,QAAA,SAAS,GAAe,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEpD,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;IACZ,GAAG,YAAS;IACZ,GAAG,YAAS;IACZ,GAAG,aAAU;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,0DAA4C;AAC5C,6CAG0B;AAC1B,iDAAkE;AAClE,iDAG4B;AAC5B,6CAG0B;AAC1B,+CAG2B;AAC3B,yCAA4E;AAC5E,+CAAwD;AACxD,2CAA+E;AAC/E,6CAG0B;AAC1B,2CAA+E;AAC/E,6CAA8D;AAC9D,uCAAyE;AACzE,2CAA+E;AAC/E,2CAA+E;AAC/E,qDAA6D;AAC7D,wFAAqF;AAErF,0CAAwB;AACxB,4CAA0B;AAC1B,wCAAsB;AAEtB,8CAA4B;AACf,QAAA,SAAS,GAAe,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEpD,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;IACZ,GAAG,YAAS;IACZ,GAAG,YAAS;IACZ,GAAG,aAAU;IACb,GAAG,iBAAa;CACjB,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;IAChB,GAAG,gBAAa;IAChB,GAAG,gBAAa;IAChB,GAAG,iBAAc;CAClB,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,uDAA0B,EAAC,gBAAQ,CAAC,CAAC"}
|
@@ -1,6 +1,3 @@
|
|
1
1
|
export declare const tokenListsPrefix = "tokenlists";
|
2
2
|
export declare const nIdsToFetch = 50;
|
3
3
|
export declare const platformId: string;
|
4
|
-
export declare const coingeckoCoinsListUrl = "https://api.coingecko.com/api/v3/coins/list";
|
5
|
-
export declare const coingeckoCoinsMarketsUrl = "https://api.coingecko.com/api/v3/coins/markets";
|
6
|
-
export declare const coingeckoCoinsPriceUrl = "https://api.coingecko.com/api/v3/simple/price";
|
@@ -1,12 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.platformId = exports.nIdsToFetch = exports.tokenListsPrefix = void 0;
|
4
4
|
const platforms_1 = require("../../platforms");
|
5
5
|
exports.tokenListsPrefix = 'tokenlists';
|
6
6
|
exports.nIdsToFetch = 50;
|
7
7
|
exports.platformId = platforms_1.walletTokensPlatform.id;
|
8
|
-
// Coingecko URLs
|
9
|
-
exports.coingeckoCoinsListUrl = 'https://api.coingecko.com/api/v3/coins/list';
|
10
|
-
exports.coingeckoCoinsMarketsUrl = 'https://api.coingecko.com/api/v3/coins/markets';
|
11
|
-
exports.coingeckoCoinsPriceUrl = 'https://api.coingecko.com/api/v3/simple/price';
|
12
8
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/constants.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AAE1C,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,WAAW,GAAG,EAAE,CAAC;AAEjB,QAAA,UAAU,GAAG,gCAAoB,CAAC,EAAE,CAAC
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/constants.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AAE1C,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,WAAW,GAAG,EAAE,CAAC;AAEjB,QAAA,UAAU,GAAG,gCAAoB,CAAC,EAAE,CAAC"}
|
@@ -17,6 +17,7 @@ const axios_1 = __importDefault(require("axios"));
|
|
17
17
|
const constants_1 = require("./constants");
|
18
18
|
const shuffleArray_1 = __importDefault(require("../../utils/misc/shuffleArray"));
|
19
19
|
const sleep_1 = __importDefault(require("../../utils/misc/sleep"));
|
20
|
+
const constants_2 = require("../../utils/coingecko/constants");
|
20
21
|
function getCoingeckoSources(networkId, tokensData) {
|
21
22
|
return __awaiter(this, void 0, void 0, function* () {
|
22
23
|
const coingeckoIds = new Set(tokensData.map((t) => t.coingeckoId));
|
@@ -60,7 +61,7 @@ function getPricesFromCoingeckoIds(coingeckoIds) {
|
|
60
61
|
while (idsToFetch.length !== 0) {
|
61
62
|
const currIdsToFetch = idsToFetch.splice(0, constants_1.nIdsToFetch);
|
62
63
|
const coingeckoSimpleRes = yield axios_1.default
|
63
|
-
.get(
|
64
|
+
.get(constants_2.coingeckoCoinsPriceUrl, {
|
64
65
|
params: {
|
65
66
|
ids: currIdsToFetch.join(','),
|
66
67
|
vs_currencies: 'usd',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA6C;AAM7C,
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/helpers.ts"],"names":[],"mappings":"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"}
|
@@ -16,15 +16,13 @@ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
|
16
16
|
const axios_1 = __importDefault(require("axios"));
|
17
17
|
const constants_1 = require("./constants");
|
18
18
|
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
19
|
-
for (const network
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
});
|
27
|
-
}
|
19
|
+
for (const network of Object.values(portfolio_core_1.networks)) {
|
20
|
+
const tokenList = yield axios_1.default.get(network.tokenListUrl).catch(() => null);
|
21
|
+
if (!tokenList)
|
22
|
+
continue;
|
23
|
+
yield cache.setItem(network.id, tokenList.data, {
|
24
|
+
prefix: constants_1.tokenListsPrefix,
|
25
|
+
});
|
28
26
|
}
|
29
27
|
});
|
30
28
|
const job = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tokenListsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/tokenListsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+
|
1
|
+
{"version":3,"file":"tokenListsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/tokenListsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAAsD;AACtD,kDAA0B;AAG1B,2CAA+C;AAE/C,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAQ,CAAC,EAAE;QAC7C,MAAM,SAAS,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE;YAC9C,MAAM,EAAE,4BAAgB;SACzB,CAAC,CAAC;KACJ;AACH,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,aAAa;IACjB,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -1 +1,2 @@
|
|
1
|
-
export declare const
|
1
|
+
export declare const topTokensPrefix = "top-tokens";
|
2
|
+
export declare const topAddressesMaxSize = 300;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
4
|
-
exports.
|
3
|
+
exports.topAddressesMaxSize = exports.topTokensPrefix = void 0;
|
4
|
+
exports.topTokensPrefix = 'top-tokens';
|
5
|
+
exports.topAddressesMaxSize = 300;
|
5
6
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,YAAY,CAAC;AAC/B,QAAA,mBAAmB,GAAG,GAAG,CAAC"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
4
|
+
const forcedAddresses = new Map([
|
5
|
+
[portfolio_core_1.NetworkId.ethereum, ['0xBe9895146f7AF43049ca1c1AE358B0541Ea49704']],
|
6
|
+
]);
|
7
|
+
exports.default = forcedAddresses;
|
8
|
+
//# sourceMappingURL=forcedAddresses.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"forcedAddresses.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/forcedAddresses.ts"],"names":[],"mappings":";;AAAA,+DAAsE;AAEtE,MAAM,eAAe,GAAiC,IAAI,GAAG,CAAC;IAC5D,CAAC,0BAAS,CAAC,QAAQ,EAAE,CAAC,4CAA4C,CAAC,CAAC;CACrE,CAAC,CAAC;AACH,kBAAe,eAAe,CAAC"}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { NetworkIdType } from '@sonarwatch/portfolio-core';
|
2
|
+
import { CoingeckoCoinsListResponse } from '../../utils/coingecko/types';
|
3
|
+
export default function getTopAddresses(networkId: NetworkIdType, coingeckoCoinsListResponse: CoingeckoCoinsListResponse): Promise<string[]>;
|
@@ -0,0 +1,69 @@
|
|
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
|
+
const axios_1 = __importDefault(require("axios"));
|
16
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
17
|
+
const forcedAddresses_1 = __importDefault(require("./forcedAddresses"));
|
18
|
+
const constants_1 = require("../../utils/coingecko/constants");
|
19
|
+
const constants_2 = require("./constants");
|
20
|
+
const sleep_1 = __importDefault(require("../../utils/misc/sleep"));
|
21
|
+
function getTopAddresses(networkId, coingeckoCoinsListResponse) {
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
23
|
+
const network = portfolio_core_1.networks[networkId];
|
24
|
+
if (!network)
|
25
|
+
throw new Error('Network is missing');
|
26
|
+
const addressById = new Map();
|
27
|
+
coingeckoCoinsListResponse.forEach((gCoin) => {
|
28
|
+
const address = gCoin.platforms[network.coingeckoPlatformId];
|
29
|
+
if (!address)
|
30
|
+
return;
|
31
|
+
addressById.set(gCoin.id, (0, portfolio_core_1.formatTokenAddress)(address, networkId));
|
32
|
+
});
|
33
|
+
const addresses = new Set();
|
34
|
+
addresses.add(network.native.address);
|
35
|
+
if (network.nativeWrapped)
|
36
|
+
addresses.add(network.nativeWrapped.address);
|
37
|
+
const cForcedAddresses = forcedAddresses_1.default.get(network.id);
|
38
|
+
if (cForcedAddresses) {
|
39
|
+
cForcedAddresses.forEach((a) => addresses.add((0, portfolio_core_1.formatAddress)(a, network.addressSystem)));
|
40
|
+
}
|
41
|
+
let page = 0;
|
42
|
+
while (addresses.size < constants_2.topAddressesMaxSize && page < 20) {
|
43
|
+
page += 1;
|
44
|
+
const coinsMarketsRes = yield axios_1.default
|
45
|
+
.get(constants_1.coingeckoCoinsMarketsUrl, {
|
46
|
+
params: {
|
47
|
+
vs_currency: 'usd',
|
48
|
+
order: 'market_cap_desc',
|
49
|
+
per_page: 200,
|
50
|
+
page,
|
51
|
+
},
|
52
|
+
timeout: 5000,
|
53
|
+
})
|
54
|
+
.catch(() => null);
|
55
|
+
yield (0, sleep_1.default)(4000);
|
56
|
+
if (!coinsMarketsRes)
|
57
|
+
continue;
|
58
|
+
coinsMarketsRes.data.forEach((coinMarket) => {
|
59
|
+
const address = addressById.get(coinMarket.id);
|
60
|
+
if (!address)
|
61
|
+
return;
|
62
|
+
addresses.add(address);
|
63
|
+
});
|
64
|
+
}
|
65
|
+
return Array.from(addresses).slice(0, constants_2.topAddressesMaxSize);
|
66
|
+
});
|
67
|
+
}
|
68
|
+
exports.default = getTopAddresses;
|
69
|
+
//# sourceMappingURL=getTopAddresses.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getTopAddresses.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/getTopAddresses.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,+DAKoC;AACpC,wEAAgD;AAChD,+DAA2E;AAK3E,2CAAkD;AAClD,mEAA2C;AAE3C,SAA8B,eAAe,CAC3C,SAAwB,EACxB,0BAAsD;;QAEtD,MAAM,OAAO,GAAG,yBAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAEpD,MAAM,WAAW,GAAwB,IAAI,GAAG,EAAE,CAAC;QACnD,0BAA0B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAA,mCAAkB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAgB,IAAI,GAAG,EAAE,CAAC;QACzC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,OAAO,CAAC,aAAa;YAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAExE,MAAM,gBAAgB,GAAG,yBAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,gBAAgB,EAAE;YACpB,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,SAAS,CAAC,GAAG,CAAC,IAAA,8BAAa,EAAC,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CACvD,CAAC;SACH;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,IAAI,GAAG,+BAAmB,IAAI,IAAI,GAAG,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,CAAC;YACV,MAAM,eAAe,GAAG,MAAM,eAAK;iBAChC,GAAG,CACF,oCAAwB,EACxB;gBACE,MAAM,EAAE;oBACN,WAAW,EAAE,KAAK;oBAClB,KAAK,EAAE,iBAAiB;oBACxB,QAAQ,EAAE,GAAG;oBACb,IAAI;iBACL;gBACD,OAAO,EAAE,IAAI;aACd,CACF;iBACA,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,eAAe;gBAAE,SAAS;YAC/B,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,+BAAmB,CAAC,CAAC;IAC7D,CAAC;CAAA;AAnDD,kCAmDC"}
|
@@ -3,8 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.
|
6
|
+
exports.jobs = void 0;
|
7
7
|
const topTokensJob_1 = __importDefault(require("./topTokensJob"));
|
8
8
|
exports.jobs = [topTokensJob_1.default];
|
9
|
-
exports.fetchers = [];
|
10
9
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/index.ts"],"names":[],"mappings":";;;;;;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/index.ts"],"names":[],"mappings":";;;;;;AACA,kEAA0C;AAE7B,QAAA,IAAI,GAAU,CAAC,sBAAY,CAAC,CAAC"}
|
@@ -15,26 +15,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const axios_1 = __importDefault(require("axios"));
|
16
16
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
17
17
|
const constants_1 = require("./constants");
|
18
|
+
const constants_2 = require("../../utils/coingecko/constants");
|
19
|
+
const sleep_1 = __importDefault(require("../../utils/misc/sleep"));
|
20
|
+
const getTopAddresses_1 = __importDefault(require("./getTopAddresses"));
|
21
|
+
const networkIds = [portfolio_core_1.NetworkId.ethereum, portfolio_core_1.NetworkId.polygon, portfolio_core_1.NetworkId.avalanche];
|
18
22
|
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
19
|
-
const
|
20
|
-
.get(
|
23
|
+
const coingeckoCoinsListRes = yield axios_1.default
|
24
|
+
.get(constants_2.coingeckoCoinsListUrl, {
|
21
25
|
params: {
|
22
|
-
|
23
|
-
order: 'market_cap_desc',
|
24
|
-
per_page: '100',
|
25
|
-
page: '1',
|
26
|
+
include_platform: 'true',
|
26
27
|
},
|
28
|
+
timeout: 5000,
|
27
29
|
})
|
28
30
|
.catch(() => null);
|
29
|
-
|
31
|
+
yield (0, sleep_1.default)(20000);
|
32
|
+
if (!coingeckoCoinsListRes || !coingeckoCoinsListRes.data)
|
30
33
|
return;
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
for (let i = 0; i < networkIds.length; i++) {
|
35
|
+
yield (0, sleep_1.default)(10000);
|
36
|
+
const networkId = networkIds[i];
|
37
|
+
try {
|
38
|
+
const topTokens = yield (0, getTopAddresses_1.default)(networkId, coingeckoCoinsListRes.data);
|
39
|
+
yield cache.setItem(networkId, topTokens, {
|
40
|
+
prefix: constants_1.topTokensPrefix,
|
41
|
+
});
|
42
|
+
}
|
43
|
+
catch (error) {
|
44
|
+
//
|
45
|
+
}
|
46
|
+
}
|
35
47
|
});
|
36
48
|
const job = {
|
37
|
-
id:
|
49
|
+
id: 'top-tokens',
|
38
50
|
executor,
|
39
51
|
};
|
40
52
|
exports.default = job;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"topTokensJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/topTokensJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,+DAAuD;AAGvD,
|
1
|
+
{"version":3,"file":"topTokensJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/topTokensJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,+DAAuD;AAGvD,2CAA8C;AAC9C,+DAAwE;AAExE,mEAA2C;AAC3C,wEAAgD;AAEhD,MAAM,UAAU,GAAG,CAAC,0BAAS,CAAC,QAAQ,EAAE,0BAAS,CAAC,OAAO,EAAE,0BAAS,CAAC,SAAS,CAAC,CAAC;AAEhF,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,qBAAqB,GACzB,MAAM,eAAK;SACR,GAAG,CAAC,iCAAqB,EAAE;QAC1B,MAAM,EAAE;YACN,gBAAgB,EAAE,MAAM;SACzB;QACD,OAAO,EAAE,IAAI;KACd,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC;IACnB,IAAI,CAAC,qBAAqB,IAAI,CAAC,qBAAqB,CAAC,IAAI;QAAE,OAAO;IAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC;QACnB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI;YACF,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAe,EACrC,SAAS,EACT,qBAAqB,CAAC,IAAI,CAC3B,CAAC;YACF,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE;gBACxC,MAAM,EAAE,2BAAe;aACxB,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,EAAE;SACH;KACF;AACH,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,YAAY;IAChB,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export declare const coingeckoCoinsListUrl = "https://api.coingecko.com/api/v3/coins/list";
|
2
|
+
export declare const coingeckoCoinsMarketsUrl = "https://api.coingecko.com/api/v3/coins/markets";
|
3
|
+
export declare const coingeckoCoinsPriceUrl = "https://api.coingecko.com/api/v3/simple/price";
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.coingeckoCoinsPriceUrl = exports.coingeckoCoinsMarketsUrl = exports.coingeckoCoinsListUrl = void 0;
|
4
|
+
exports.coingeckoCoinsListUrl = 'https://api.coingecko.com/api/v3/coins/list';
|
5
|
+
exports.coingeckoCoinsMarketsUrl = 'https://api.coingecko.com/api/v3/coins/markets';
|
6
|
+
exports.coingeckoCoinsPriceUrl = 'https://api.coingecko.com/api/v3/simple/price';
|
7
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/coingecko/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAChC,6CAA6C,CAAC;AACnC,QAAA,wBAAwB,GACnC,gDAAgD,CAAC;AACtC,QAAA,sBAAsB,GACjC,+CAA+C,CAAC"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
export type CoingeckoCoin = {
|
2
|
+
id: string;
|
3
|
+
symbol: string;
|
4
|
+
name: string;
|
5
|
+
platforms: {
|
6
|
+
[key: string]: string;
|
7
|
+
};
|
8
|
+
};
|
9
|
+
export type CoingeckoCoinsListResponse = CoingeckoCoin[];
|
10
|
+
export type CoingeckoCoinMarket = {
|
11
|
+
id: string;
|
12
|
+
symbol: string;
|
13
|
+
name: string;
|
14
|
+
platforms: {
|
15
|
+
[key: string]: string;
|
16
|
+
};
|
17
|
+
};
|
18
|
+
export type CoingeckoCoinsMarketsResponse = CoingeckoCoinMarket[];
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/coingecko/types.ts"],"names":[],"mappings":""}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
export type CoingeckoMarketsRes = {
|
2
|
-
id: string;
|
3
|
-
symbol: string;
|
4
|
-
name: string;
|
5
|
-
image: string;
|
6
|
-
current_price: number;
|
7
|
-
market_cap: number;
|
8
|
-
market_cap_rank: number;
|
9
|
-
fully_diluted_valuation: number;
|
10
|
-
total_volume: number;
|
11
|
-
high_24h: number;
|
12
|
-
low_24h: number;
|
13
|
-
price_change_24h: number;
|
14
|
-
price_change_percentage_24h: number;
|
15
|
-
market_cap_change_24h: number;
|
16
|
-
market_cap_change_percentage_24h: number;
|
17
|
-
circulating_supply: number;
|
18
|
-
total_supply: number;
|
19
|
-
max_supply: number;
|
20
|
-
ath: number;
|
21
|
-
ath_change_percentage: number;
|
22
|
-
ath_date: string;
|
23
|
-
atl: number;
|
24
|
-
atl_change_percentage: number;
|
25
|
-
atl_date: string;
|
26
|
-
roi: number;
|
27
|
-
last_updated: string;
|
28
|
-
};
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/top-tokens/types.ts"],"names":[],"mappings":""}
|
File without changes
|