@sonarwatch/portfolio-plugins 0.4.18 → 0.4.20
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 +8 -0
- package/package.json +2 -2
- package/src/plugins/tokens/fetchers/solana.js +19 -12
- package/src/plugins/tokens/fetchers/solana.js.map +1 -1
- package/src/utils/misc/durationForHumans.d.ts +1 -1
- package/src/utils/misc/durationForHumans.js +4 -4
- package/src/utils/misc/durationForHumans.js.map +1 -1
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
+
## [0.4.20](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.19...plugins-0.4.20) (2023-07-10)
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
## [0.4.19](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.18...plugins-0.4.19) (2023-07-10)
|
10
|
+
|
11
|
+
|
12
|
+
|
5
13
|
## [0.4.18](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.17...plugins-0.4.18) (2023-07-09)
|
6
14
|
|
7
15
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sonarwatch/portfolio-plugins",
|
3
|
-
"version": "0.4.
|
3
|
+
"version": "0.4.20",
|
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.
|
25
|
+
"@sonarwatch/portfolio-core": "0.4.20"
|
26
26
|
},
|
27
27
|
"main": "./src/index.js",
|
28
28
|
"types": "./src/index.d.ts"
|
@@ -18,25 +18,33 @@ const platforms_1 = require("../../../platforms");
|
|
18
18
|
const clients_1 = require("../../../utils/clients");
|
19
19
|
const solana_1 = require("../../../utils/solana");
|
20
20
|
const tokenPriceToAssetToken_1 = __importDefault(require("../../../utils/misc/tokenPriceToAssetToken"));
|
21
|
+
const runInBatch_1 = __importDefault(require("../../../utils/misc/runInBatch"));
|
21
22
|
const solFactor = Math.pow(10, portfolio_core_1.solanaNetwork.native.decimals);
|
22
23
|
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
23
24
|
const client = (0, clients_1.getClientSolana)();
|
24
25
|
const ownerPubKey = new js_1.PublicKey(owner);
|
25
|
-
const
|
26
|
-
const balanceAssetPromise = getBalance(ownerPubKey, client, promiseSolTokenPrice);
|
26
|
+
const balancePromise = getBalance(ownerPubKey, client, cache);
|
27
27
|
const tokenAccounts = yield (0, solana_1.getTokenAccountsByOwner)(client, ownerPubKey);
|
28
|
-
const
|
28
|
+
const mints = [...new Set(tokenAccounts.map((ta) => ta.mint.toString()))];
|
29
|
+
const functionsToRun = mints.map((mint) => () => cache.getTokenPrice(mint, portfolio_core_1.NetworkId.solana));
|
30
|
+
const results = yield (0, runInBatch_1.default)(functionsToRun);
|
31
|
+
const tokenPrices = new Map();
|
32
|
+
results.forEach((r) => {
|
33
|
+
if (r.status === 'rejected')
|
34
|
+
return;
|
35
|
+
if (!r.value)
|
36
|
+
return;
|
37
|
+
tokenPrices.set(r.value.address, r.value);
|
38
|
+
});
|
29
39
|
const assets = [];
|
30
40
|
for (let i = 0; i < tokenAccounts.length; i++) {
|
31
41
|
const tokenAccount = tokenAccounts[i];
|
32
42
|
if (tokenAccount.amount.isZero())
|
33
43
|
continue;
|
34
44
|
const address = tokenAccount.mint.toString();
|
35
|
-
const tokenPrice =
|
36
|
-
if (!tokenPrice)
|
37
|
-
unsolvedTokenAccounts.push(tokenAccount);
|
45
|
+
const tokenPrice = tokenPrices.get(address);
|
46
|
+
if (!tokenPrice)
|
38
47
|
continue;
|
39
|
-
}
|
40
48
|
const amount = tokenAccount.amount
|
41
49
|
.div(Math.pow(10, tokenPrice.decimals))
|
42
50
|
.toNumber();
|
@@ -50,7 +58,7 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
50
58
|
});
|
51
59
|
}
|
52
60
|
// Native sol
|
53
|
-
const balanceAsset = yield
|
61
|
+
const balanceAsset = yield balancePromise;
|
54
62
|
if (balanceAsset)
|
55
63
|
assets.push(balanceAsset);
|
56
64
|
if (assets.length === 0)
|
@@ -67,15 +75,14 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
67
75
|
};
|
68
76
|
return [element];
|
69
77
|
});
|
70
|
-
function getBalance(owner, client,
|
78
|
+
function getBalance(owner, client, cache) {
|
71
79
|
return __awaiter(this, void 0, void 0, function* () {
|
80
|
+
const pTokenPrice = cache.getTokenPrice(portfolio_core_1.solanaNetwork.native.address, portfolio_core_1.NetworkId.solana);
|
72
81
|
const amountLamports = yield client.getBalance(owner);
|
73
82
|
if (amountLamports === 0)
|
74
83
|
return null;
|
75
84
|
const amount = amountLamports / solFactor;
|
76
|
-
const solTokenPrice = yield
|
77
|
-
if (!promiseSolTokenPrice)
|
78
|
-
return null;
|
85
|
+
const solTokenPrice = yield pTokenPrice;
|
79
86
|
return (0, tokenPriceToAssetToken_1.default)(portfolio_core_1.solanaNetwork.native.address, amount, portfolio_core_1.NetworkId.solana, solTokenPrice);
|
80
87
|
});
|
81
88
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gDAAoD;AACpD,+DAYoC;AAEpC,kDAA0D;AAC1D,oDAAyD;AACzD,
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
export default function durationForHumans(
|
1
|
+
export default function durationForHumans(durationMs: number): string;
|
@@ -1,10 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
function durationForHumans(
|
4
|
-
if (
|
5
|
-
return `${
|
3
|
+
function durationForHumans(durationMs) {
|
4
|
+
if (durationMs < 100) {
|
5
|
+
return `${durationMs}ms`;
|
6
6
|
}
|
7
|
-
const seconds =
|
7
|
+
const seconds = durationMs / 1000;
|
8
8
|
if (seconds < 60) {
|
9
9
|
return `${seconds.toFixed(2)}s`;
|
10
10
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"durationForHumans.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/durationForHumans.ts"],"names":[],"mappings":";;AAAA,SAAwB,iBAAiB,CAAC,
|
1
|
+
{"version":3,"file":"durationForHumans.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/durationForHumans.ts"],"names":[],"mappings":";;AAAA,SAAwB,iBAAiB,CAAC,UAAkB;IAC1D,IAAI,UAAU,GAAG,GAAG,EAAE;QACpB,OAAO,GAAG,UAAU,IAAI,CAAC;KAC1B;IAED,MAAM,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;IAClC,IAAI,OAAO,GAAG,EAAE,EAAE;QAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;KACjC;IAED,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAG,EAAE,EAAE;QAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;KACnC;IAED,MAAM,KAAK,GAAG,OAAO,GAAG,EAAE,CAAC;IAC3B,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,CAAC;AAjBD,oCAiBC"}
|