@sonarwatch/portfolio-plugins 0.4.14 → 0.4.15

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 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.4.15](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.14...plugins-0.4.15) (2023-07-09)
6
+
7
+
8
+
5
9
  ## [0.4.14](https://github.com/sonarwatch/portfolio/compare/plugins-0.4.13...plugins-0.4.14) (2023-07-09)
6
10
 
7
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonarwatch/portfolio-plugins",
3
- "version": "0.4.14",
3
+ "version": "0.4.15",
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.14"
25
+ "@sonarwatch/portfolio-core": "0.4.15"
26
26
  },
27
27
  "main": "./src/index.js",
28
28
  "types": "./src/index.d.ts"
@@ -0,0 +1,3 @@
1
+ import { Fetcher } from '@sonarwatch/portfolio-core';
2
+ declare const fetcher: Fetcher;
3
+ export default fetcher;
@@ -0,0 +1,88 @@
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 js_1 = require("@metaplex-foundation/js");
16
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
17
+ const platforms_1 = require("../../../platforms");
18
+ const clients_1 = require("../../../utils/clients");
19
+ const solana_1 = require("../../../utils/solana");
20
+ const tokenPriceToAssetToken_1 = __importDefault(require("../../../utils/misc/tokenPriceToAssetToken"));
21
+ const solFactor = Math.pow(10, portfolio_core_1.solanaNetwork.native.decimals);
22
+ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
23
+ const client = (0, clients_1.getClientSolana)();
24
+ const ownerPubKey = new js_1.PublicKey(owner);
25
+ const promiseSolTokenPrice = cache.getTokenPrice(portfolio_core_1.solanaNetwork.native.address, portfolio_core_1.NetworkId.solana);
26
+ const balanceAssetPromise = getBalance(ownerPubKey, client, promiseSolTokenPrice);
27
+ const tokenAccounts = yield (0, solana_1.getTokenAccountsByOwner)(client, ownerPubKey);
28
+ const unsolvedTokenAccounts = [];
29
+ const assets = [];
30
+ for (let i = 0; i < tokenAccounts.length; i++) {
31
+ const tokenAccount = tokenAccounts[i];
32
+ if (tokenAccount.amount.isZero())
33
+ continue;
34
+ const address = tokenAccount.mint.toString();
35
+ const tokenPrice = yield cache.getTokenPrice(address, portfolio_core_1.NetworkId.solana);
36
+ if (!tokenPrice) {
37
+ unsolvedTokenAccounts.push(tokenAccount);
38
+ continue;
39
+ }
40
+ const amount = tokenAccount.amount
41
+ .div(Math.pow(10, tokenPrice.decimals))
42
+ .toNumber();
43
+ const { price } = tokenPrice;
44
+ const value = price * amount;
45
+ assets.push({
46
+ type: portfolio_core_1.PortfolioAssetType.token,
47
+ networkId: portfolio_core_1.NetworkId.solana,
48
+ value,
49
+ data: { address, amount, price },
50
+ });
51
+ }
52
+ // Native sol
53
+ const balanceAsset = yield balanceAssetPromise;
54
+ if (balanceAsset)
55
+ assets.push(balanceAsset);
56
+ if (assets.length === 0)
57
+ return [];
58
+ const element = {
59
+ type: portfolio_core_1.PortfolioElementType.multiple,
60
+ networkId: portfolio_core_1.NetworkId.solana,
61
+ platformId: platforms_1.walletTokensPlatform.id,
62
+ label: 'Wallet',
63
+ value: (0, portfolio_core_1.getUsdValueSum)(assets.map((a) => a.value)),
64
+ data: {
65
+ assets,
66
+ },
67
+ };
68
+ return [element];
69
+ });
70
+ function getBalance(owner, client, promiseSolTokenPrice) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ const amountLamports = yield client.getBalance(owner);
73
+ if (amountLamports === 0)
74
+ return null;
75
+ const amount = amountLamports / solFactor;
76
+ const solTokenPrice = yield promiseSolTokenPrice;
77
+ if (!promiseSolTokenPrice)
78
+ return null;
79
+ return (0, tokenPriceToAssetToken_1.default)(portfolio_core_1.solanaNetwork.native.address, amount, portfolio_core_1.NetworkId.solana, solTokenPrice);
80
+ });
81
+ }
82
+ const fetcher = {
83
+ id: `${platforms_1.walletTokensPlatform.id}-solana`,
84
+ networkId: portfolio_core_1.NetworkId.solana,
85
+ executor,
86
+ };
87
+ exports.default = fetcher;
88
+ //# sourceMappingURL=solana.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
8
8
  const platforms_1 = require("../../platforms");
9
9
  const jobExecutorGenerator_1 = __importDefault(require("./jobExecutorGenerator"));
10
10
  const aptos_1 = __importDefault(require("./fetchers/aptos"));
11
+ const solana_1 = __importDefault(require("./fetchers/solana"));
11
12
  exports.jobs = [
12
13
  {
13
14
  id: `${platforms_1.walletTokensPlatform.id}-${portfolio_core_1.NetworkId.aptos}`,
@@ -30,5 +31,5 @@ exports.jobs = [
30
31
  executor: (0, jobExecutorGenerator_1.default)(portfolio_core_1.NetworkId.sui),
31
32
  },
32
33
  ];
33
- exports.fetchers = [aptos_1.default];
34
+ exports.fetchers = [aptos_1.default, solana_1.default];
34
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAqE;AACrE,+CAAuD;AACvD,kFAA0D;AAC1D,6DAA4C;AAE/B,QAAA,IAAI,GAAU;IACzB;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,KAAK,EAAE;QACnD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,KAAK,CAAC;KAChD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,MAAM,EAAE;QACpD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,MAAM,CAAC;KACjD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,QAAQ,EAAE;QACtD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,QAAQ,CAAC;KACnD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,SAAS,EAAE;QACvD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,SAAS,CAAC;KACpD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,GAAG,EAAE;QACjD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,GAAG,CAAC;KAC9C;CACF,CAAC;AAEW,QAAA,QAAQ,GAAc,CAAC,eAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAqE;AACrE,+CAAuD;AACvD,kFAA0D;AAC1D,6DAA4C;AAC5C,+DAA8C;AAEjC,QAAA,IAAI,GAAU;IACzB;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,KAAK,EAAE;QACnD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,KAAK,CAAC;KAChD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,MAAM,EAAE;QACpD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,MAAM,CAAC;KACjD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,QAAQ,EAAE;QACtD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,QAAQ,CAAC;KACnD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,SAAS,EAAE;QACvD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,SAAS,CAAC;KACpD;IACD;QACE,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,IAAI,0BAAS,CAAC,GAAG,EAAE;QACjD,QAAQ,EAAE,IAAA,8BAAoB,EAAC,0BAAS,CAAC,GAAG,CAAC;KAC9C;CACF,CAAC;AAEW,QAAA,QAAQ,GAAc,CAAC,eAAY,EAAE,gBAAa,CAAC,CAAC"}