@sonarwatch/portfolio-plugins 0.15.29 → 0.15.30
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 +15 -0
- package/package.json +3 -3
- package/src/Job.d.ts +1 -1
- package/src/plugins/abex/getVaultInfo.d.ts +1 -2
- package/src/plugins/abex/getVaultInfo.js +14 -17
- package/src/plugins/abex/getVaultInfo.js.map +1 -1
- package/src/plugins/abex/helpers.js +1 -1
- package/src/plugins/abex/helpers.js.map +1 -1
- package/src/plugins/cetus/index.js +6 -2
- package/src/plugins/cetus/index.js.map +1 -1
- package/src/plugins/{tokens/fetchers/solana-nfts-underlyings.d.ts → cropper/whirlpoolFetcher.d.ts} +1 -1
- package/src/plugins/cropper/whirlpoolFetcher.js +26 -0
- package/src/plugins/cropper/whirlpoolFetcher.js.map +1 -0
- package/src/plugins/daos/helpers.d.ts +0 -5
- package/src/plugins/daos/helpers.js +1 -51
- package/src/plugins/daos/helpers.js.map +1 -1
- package/src/plugins/drift-market-maker-vault/constants.d.ts +1 -0
- package/src/plugins/drift-market-maker-vault/constants.js +4 -1
- package/src/plugins/drift-market-maker-vault/constants.js.map +1 -1
- package/src/plugins/drift-market-maker-vault/vaultsJob.js +2 -2
- package/src/plugins/drift-market-maker-vault/vaultsJob.js.map +1 -1
- package/src/plugins/flash/helpers.js +8 -2
- package/src/plugins/flash/helpers.js.map +1 -1
- package/src/plugins/fluxbeam/poolsJob.js +25 -27
- package/src/plugins/fluxbeam/poolsJob.js.map +1 -1
- package/src/plugins/hawksight/positionsFetcher.js +3 -24
- package/src/plugins/hawksight/positionsFetcher.js.map +1 -1
- package/src/plugins/helium/getHeliumPositions.d.ts +3 -0
- package/src/plugins/helium/getHeliumPositions.js +53 -0
- package/src/plugins/helium/getHeliumPositions.js.map +1 -0
- package/src/plugins/helium/positionsFetcher.d.ts +3 -0
- package/src/{utils/misc/Memoized.js → plugins/helium/positionsFetcher.js} +15 -20
- package/src/plugins/helium/positionsFetcher.js.map +1 -0
- package/src/plugins/kamino/airdropHelpers.js +4 -9
- package/src/plugins/kamino/airdropHelpers.js.map +1 -1
- package/src/plugins/metaplex/index.js +1 -5
- package/src/plugins/metaplex/index.js.map +1 -1
- package/src/plugins/metaplex/resizableNftFetcher.d.ts +3 -0
- package/src/plugins/metaplex/resizableNftFetcher.js +9 -10
- package/src/plugins/metaplex/resizableNftFetcher.js.map +1 -1
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.d.ts +3 -0
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js +11 -11
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js.map +1 -1
- package/src/plugins/meteora/cpamm/cpammV2Job.js +58 -47
- package/src/plugins/meteora/cpamm/cpammV2Job.js.map +1 -1
- package/src/plugins/meteora/index.js +0 -2
- package/src/plugins/meteora/index.js.map +1 -1
- package/src/plugins/native-stake/index.js +2 -2
- package/src/plugins/native-stake/index.js.map +1 -1
- package/src/plugins/navi/index.js +4 -2
- package/src/plugins/navi/index.js.map +1 -1
- package/src/plugins/orca/getWhirlpoolPositions.d.ts +4 -3
- package/src/plugins/orca/getWhirlpoolPositions.js +9 -15
- package/src/plugins/orca/getWhirlpoolPositions.js.map +1 -1
- package/src/plugins/orca/helpers.d.ts +4 -0
- package/src/plugins/orca/helpers.js +6 -1
- package/src/plugins/orca/helpers.js.map +1 -1
- package/src/plugins/orca/whirlpoolFetcher.d.ts +3 -0
- package/src/plugins/orca/whirlpoolFetcher.js +26 -0
- package/src/plugins/orca/whirlpoolFetcher.js.map +1 -0
- package/src/plugins/picasso/getPicassoPositions.d.ts +3 -0
- package/src/plugins/picasso/getPicassoPositions.js +45 -0
- package/src/plugins/picasso/getPicassoPositions.js.map +1 -0
- package/src/plugins/picasso/helpers.d.ts +1 -3
- package/src/plugins/picasso/helpers.js +1 -60
- package/src/plugins/picasso/helpers.js.map +1 -1
- package/src/plugins/picasso/positionsFetcher.d.ts +3 -0
- package/src/plugins/picasso/positionsFetcher.js +26 -0
- package/src/plugins/picasso/positionsFetcher.js.map +1 -0
- package/src/plugins/pumpswap/marketsJob.js +8 -3
- package/src/plugins/pumpswap/marketsJob.js.map +1 -1
- package/src/plugins/raydium/clmmFetcher.d.ts +6 -0
- package/src/plugins/raydium/clmmFetcher.js +119 -0
- package/src/plugins/raydium/clmmFetcher.js.map +1 -0
- package/src/plugins/texture/helpers.js +4 -9
- package/src/plugins/texture/helpers.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana-native.js +11 -21
- package/src/plugins/tokens/fetchers/solana-native.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana-simple.js +4 -44
- package/src/plugins/tokens/fetchers/solana-simple.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana.d.ts +4 -0
- package/src/plugins/tokens/fetchers/solana.js +85 -104
- package/src/plugins/tokens/fetchers/solana.js.map +1 -1
- package/src/plugins/tokens/index.js +2 -4
- package/src/plugins/tokens/index.js.map +1 -1
- package/src/plugins/tokens/types.d.ts +3 -2
- package/src/utils/elementbuilder/AssetTokenBuilder.d.ts +2 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.js +2 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.js.map +1 -1
- package/src/utils/elementbuilder/Params.d.ts +2 -1
- package/src/utils/misc/MemoryCache.d.ts +6 -0
- package/src/utils/misc/MemoryCache.js +39 -0
- package/src/utils/misc/MemoryCache.js.map +1 -0
- package/src/utils/misc/getCachedDecimalsForToken.d.ts +1 -2
- package/src/utils/solana/getTokenAccountsByOwner.d.ts +4 -0
- package/src/utils/solana/getTokenAccountsByOwner.js +36 -0
- package/src/utils/solana/getTokenAccountsByOwner.js.map +1 -0
- package/src/plugins/raydium/getRaydiumCLMMPositions.d.ts +0 -3
- package/src/plugins/raydium/getRaydiumCLMMPositions.js +0 -113
- package/src/plugins/raydium/getRaydiumCLMMPositions.js.map +0 -1
- package/src/plugins/tokens/fetchers/solana-nfts-underlyings.js +0 -108
- package/src/plugins/tokens/fetchers/solana-nfts-underlyings.js.map +0 -1
- package/src/utils/misc/Memoized.d.ts +0 -8
- package/src/utils/misc/Memoized.js.map +0 -1
@@ -14,20 +14,15 @@ const web3_js_1 = require("@solana/web3.js");
|
|
14
14
|
const clients_1 = require("../../utils/clients");
|
15
15
|
const structs_1 = require("./structs");
|
16
16
|
const constants_1 = require("./constants");
|
17
|
-
const Memoized_1 = require("../../utils/misc/Memoized");
|
18
17
|
const getParsedAccountInfo_1 = require("../../utils/solana/getParsedAccountInfo");
|
19
|
-
const
|
20
|
-
const getMemoizedUser = (owner) => __awaiter(void 0, void 0, void 0, function* () {
|
21
|
-
if (!textureUsersMemo[owner]) {
|
22
|
-
textureUsersMemo[owner] = new Memoized_1.Memoized(() => __awaiter(void 0, void 0, void 0, function* () { return getUser(owner); }));
|
23
|
-
}
|
24
|
-
return textureUsersMemo[owner].getItem();
|
25
|
-
});
|
26
|
-
exports.getMemoizedUser = getMemoizedUser;
|
18
|
+
const MemoryCache_1 = require("../../utils/misc/MemoryCache");
|
27
19
|
const getUser = (owner) => __awaiter(void 0, void 0, void 0, function* () {
|
28
20
|
const userPk = web3_js_1.PublicKey.findProgramAddressSync([new web3_js_1.PublicKey(owner).toBytes(), Buffer.from('MONEY_LENDER_USER')], new web3_js_1.PublicKey(constants_1.lendyProgramId))[0];
|
29
21
|
const connection = (0, clients_1.getClientSolana)();
|
30
22
|
const account = yield (0, getParsedAccountInfo_1.getParsedAccountInfo)(connection, structs_1.userStruct, userPk);
|
31
23
|
return (account === null || account === void 0 ? void 0 : account.pubkey.toString()) || null;
|
32
24
|
});
|
25
|
+
const memoCollection = new MemoryCache_1.MemoryCache(getUser);
|
26
|
+
const getMemoizedUser = (owner) => __awaiter(void 0, void 0, void 0, function* () { return memoCollection.getItem(owner); });
|
27
|
+
exports.getMemoizedUser = getMemoizedUser;
|
33
28
|
//# sourceMappingURL=helpers.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/texture/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAC5C,iDAAsD;AACtD,uCAAuC;AACvC,2CAA6C;AAC7C,
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/texture/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAC5C,iDAAsD;AACtD,uCAAuC;AACvC,2CAA6C;AAC7C,kFAA+E;AAC/E,8DAA2D;AAE3D,MAAM,OAAO,GAAG,CAAO,KAAa,EAA0B,EAAE;IAC9D,MAAM,MAAM,GAAG,mBAAS,CAAC,sBAAsB,CAC7C,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAClE,IAAI,mBAAS,CAAC,0BAAc,CAAC,CAC9B,CAAC,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,2CAAoB,EAAC,UAAU,EAAE,oBAAU,EAAE,MAAM,CAAC,CAAC;IAE3E,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,QAAQ,EAAE,KAAI,IAAI,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,yBAAW,CAAgB,OAAO,CAAC,CAAC;AAExD,MAAM,eAAe,GAAG,CAAO,KAAa,EAAE,EAAE,kDACrD,OAAA,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,GAAA,CAAC;AADnB,QAAA,eAAe,mBACI"}
|
@@ -8,35 +8,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
9
|
});
|
10
10
|
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
12
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
13
|
const web3_js_1 = require("@solana/web3.js");
|
17
14
|
const clients_1 = require("../../../utils/clients");
|
18
|
-
const
|
19
|
-
const solFactor = Math.pow(10, portfolio_core_1.solanaNetwork.native.decimals);
|
15
|
+
const ElementRegistry_1 = require("../../../utils/elementbuilder/ElementRegistry");
|
20
16
|
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
21
17
|
const client = (0, clients_1.getClientSolana)();
|
22
|
-
const
|
23
|
-
|
24
|
-
if (amountLamports === 0)
|
18
|
+
const amount = yield client.getBalance(new web3_js_1.PublicKey(owner));
|
19
|
+
if (amount === 0)
|
25
20
|
return [];
|
26
|
-
const
|
27
|
-
const
|
28
|
-
const asset = (0, tokenPriceToAssetToken_1.default)(portfolio_core_1.solanaNetwork.native.address, amount, portfolio_core_1.NetworkId.solana, solTokenPrice);
|
29
|
-
const element = {
|
30
|
-
type: portfolio_core_1.PortfolioElementType.multiple,
|
31
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
32
|
-
platformId: portfolio_core_1.walletTokensPlatformId,
|
21
|
+
const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, portfolio_core_1.walletTokensPlatformId);
|
22
|
+
const element = elementRegistry.addElementMultiple({
|
33
23
|
label: 'Wallet',
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
};
|
39
|
-
return
|
24
|
+
});
|
25
|
+
element.addAsset({
|
26
|
+
address: portfolio_core_1.solanaNetwork.native.address,
|
27
|
+
amount,
|
28
|
+
});
|
29
|
+
return elementRegistry.getElements(cache);
|
40
30
|
});
|
41
31
|
const fetcher = {
|
42
32
|
id: `${portfolio_core_1.walletTokensPlatformId}-solana-native`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solana-native.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-native.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"solana-native.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-native.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAIoC;AACpC,6CAA4C;AAG5C,oDAAyD;AACzD,mFAAgF;AAEhF,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5B,MAAM,eAAe,GAAG,IAAI,iCAAe,CACzC,0BAAS,CAAC,MAAM,EAChB,uCAAsB,CACvB,CAAC;IAEF,MAAM,OAAO,GAAG,eAAe,CAAC,kBAAkB,CAAC;QACjD,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CAAC;QACf,OAAO,EAAE,8BAAa,CAAC,MAAM,CAAC,OAAO;QACrC,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,uCAAsB,gBAAgB;IAC7C,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
@@ -8,53 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
9
|
});
|
10
10
|
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
12
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
|
-
const
|
17
|
-
const
|
18
|
-
const solana_1 = require("../../../utils/solana");
|
19
|
-
const tokenPriceToAssetToken_1 = __importDefault(require("../../../utils/misc/tokenPriceToAssetToken"));
|
20
|
-
const zeroDecimalMints_1 = require("../../../utils/solana/zeroDecimalMints");
|
13
|
+
const getTokenAccountsByOwner_1 = require("../../../utils/solana/getTokenAccountsByOwner");
|
14
|
+
const solana_1 = require("./solana");
|
21
15
|
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
22
|
-
const
|
23
|
-
|
24
|
-
client.getParsedTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
|
25
|
-
programId: solana_1.solanaTokenPidPk,
|
26
|
-
}),
|
27
|
-
client.getParsedTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
|
28
|
-
programId: solana_1.solanaToken2022PidPk,
|
29
|
-
}),
|
30
|
-
];
|
31
|
-
const res = yield Promise.all(promises);
|
32
|
-
const accounts = [...res[0].value, ...res[1].value].filter((acc) => acc.account.data.parsed.info.tokenAmount.uiAmount !== 0 &&
|
33
|
-
(acc.account.data.parsed.info.tokenAmount.decimals !== 0 ||
|
34
|
-
zeroDecimalMints_1.zeroDecimalMints.has(acc.account.data.parsed.info.mint)));
|
35
|
-
const tokenPrices = yield cache.getTokenPricesAsMap(accounts.map((a) => a.account.data.parsed.info.mint), portfolio_core_1.NetworkId.solana);
|
36
|
-
const tokenAssets = [];
|
37
|
-
accounts.forEach((acc) => {
|
38
|
-
const { mint, tokenAmount } = acc.account.data.parsed.info;
|
39
|
-
const { uiAmount: amount } = tokenAmount;
|
40
|
-
const tokenPrice = tokenPrices.get(mint);
|
41
|
-
if (tokenPrice && tokenPrice.platformId !== portfolio_core_1.walletTokensPlatformId)
|
42
|
-
return;
|
43
|
-
tokenAssets.push(Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(mint, amount, portfolio_core_1.NetworkId.solana, tokenPrice)), { ref: acc.pubkey.toString(), link: tokenPrice === null || tokenPrice === void 0 ? void 0 : tokenPrice.link, sourceRefs: tokenPrice === null || tokenPrice === void 0 ? void 0 : tokenPrice.sourceRefs }));
|
44
|
-
});
|
45
|
-
if (tokenAssets.length === 0)
|
46
|
-
return [];
|
47
|
-
const element = {
|
48
|
-
type: portfolio_core_1.PortfolioElementType.multiple,
|
49
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
50
|
-
platformId: portfolio_core_1.walletTokensPlatformId,
|
51
|
-
label: 'Wallet',
|
52
|
-
value: (0, portfolio_core_1.getUsdValueSum)(tokenAssets.map((a) => a.value)),
|
53
|
-
data: {
|
54
|
-
assets: tokenAssets,
|
55
|
-
},
|
56
|
-
};
|
57
|
-
return [element];
|
16
|
+
const tokenAccounts = yield (0, getTokenAccountsByOwner_1.getTokenAccountsByOwner)(owner);
|
17
|
+
return (0, solana_1.getSolanaTokens)(true)(tokenAccounts, cache);
|
58
18
|
});
|
59
19
|
const fetcher = {
|
60
20
|
id: `${portfolio_core_1.walletTokensPlatformId}-solana-simple`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solana-simple.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-simple.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"solana-simple.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-simple.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA+E;AAI/E,2FAAwF;AACxF,qCAA2C;AAE3C,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,aAAa,GAAG,MAAM,IAAA,iDAAuB,EAAC,KAAK,CAAC,CAAC;IAE3D,OAAO,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,uCAAsB,gBAAgB;IAC7C,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
@@ -1,3 +1,7 @@
|
|
1
|
+
import { PortfolioElement } from '@sonarwatch/portfolio-core';
|
1
2
|
import { Fetcher } from '../../../Fetcher';
|
3
|
+
import { Cache } from '../../../Cache';
|
4
|
+
import { ParsedAccount, TokenAccount } from '../../../utils/solana';
|
5
|
+
export declare const getSolanaTokens: (simple?: boolean) => (tokenAccounts: ParsedAccount<TokenAccount>[], cache: Cache) => Promise<PortfolioElement[]>;
|
2
6
|
declare const fetcher: Fetcher;
|
3
7
|
export default fetcher;
|
@@ -8,118 +8,99 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
9
|
});
|
10
10
|
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.getSolanaTokens = void 0;
|
15
13
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
17
14
|
const helpers_1 = require("../helpers");
|
18
|
-
const
|
19
|
-
const
|
20
|
-
const
|
21
|
-
const
|
22
|
-
const
|
23
|
-
const
|
24
|
-
const
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
});
|
32
|
-
const fungibleAddresses = items.reduce((addresses, curr) => {
|
33
|
-
if ((0, isHeliusFungibleAsset_1.isHeliusFungibleAsset)(curr))
|
34
|
-
addresses.push(curr.id);
|
35
|
-
return addresses;
|
36
|
-
}, []);
|
15
|
+
const getTokenAccountsByOwner_1 = require("../../../utils/solana/getTokenAccountsByOwner");
|
16
|
+
const ElementRegistry_1 = require("../../../utils/elementbuilder/ElementRegistry");
|
17
|
+
const TokenYieldMap_1 = require("../../../TokenYieldMap");
|
18
|
+
const getWhirlpoolPositions_1 = require("../../orca/getWhirlpoolPositions");
|
19
|
+
const constants_1 = require("../../orca/constants");
|
20
|
+
const constants_2 = require("../../cropper/constants");
|
21
|
+
const getHeliumPositions_1 = require("../../helium/getHeliumPositions");
|
22
|
+
const getPicassoPositions_1 = require("../../picasso/getPicassoPositions");
|
23
|
+
const cpammPositionsFetcher_1 = require("../../meteora/cpamm/cpammPositionsFetcher");
|
24
|
+
const clmmFetcher_1 = require("../../raydium/clmmFetcher");
|
25
|
+
const resizableNftFetcher_1 = require("../../metaplex/resizableNftFetcher");
|
26
|
+
const getSolanaTokens = (simple) => (tokenAccounts, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
27
|
+
const fungibleAddresses = tokenAccounts.map((ta) => ta.mint.toString());
|
37
28
|
const tokenPrices = yield cache.getTokenPricesAsMap(fungibleAddresses, portfolio_core_1.NetworkId.solana);
|
38
|
-
const tokenYields =
|
39
|
-
|
40
|
-
|
41
|
-
const
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
const
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
if (tokenPrice
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
};
|
29
|
+
const tokenYields = !simple
|
30
|
+
? yield cache.getTokenYieldsAsMap([...tokenPrices.keys()], portfolio_core_1.NetworkId.solana)
|
31
|
+
: new TokenYieldMap_1.TokenYieldMap(portfolio_core_1.NetworkId.solana);
|
32
|
+
const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, portfolio_core_1.walletTokensPlatformId);
|
33
|
+
const elementTokens = elementRegistry.addElementMultiple({
|
34
|
+
label: 'Wallet',
|
35
|
+
});
|
36
|
+
const elementsLiquidity = new Map();
|
37
|
+
tokenAccounts.forEach((tokenAccount) => {
|
38
|
+
var _a;
|
39
|
+
const address = tokenAccount.mint.toString();
|
40
|
+
const tokenPrice = tokenPrices.get(address);
|
41
|
+
if (!tokenPrice)
|
42
|
+
return;
|
43
|
+
const tokenYield = tokenYields.get(address);
|
44
|
+
const amount = tokenAccount.amount.shiftedBy(-tokenPrice.decimals);
|
45
|
+
if (tokenPrice.platformId === portfolio_core_1.walletTokensPlatformId) {
|
46
|
+
// it's a regular token
|
47
|
+
elementTokens.addAsset({
|
48
|
+
address,
|
49
|
+
amount,
|
50
|
+
alreadyShifted: true,
|
51
|
+
ref: tokenAccount.pubkey,
|
52
|
+
link: tokenPrice.link,
|
53
|
+
sourceRefs: tokenPrice.sourceRefs,
|
54
|
+
tokenYield,
|
55
|
+
});
|
56
|
+
}
|
57
|
+
else if (!simple) {
|
58
|
+
// it's an LP Token
|
65
59
|
const tag = (0, helpers_1.getLpTag)(tokenPrice.platformId, tokenPrice.elementName, tokenPrice.label);
|
66
|
-
|
67
|
-
|
60
|
+
let elementLiquidity = elementsLiquidity.get(tag);
|
61
|
+
if (!elementLiquidity) {
|
62
|
+
elementLiquidity = elementRegistry.addElementLiquidity({
|
63
|
+
name: tokenPrice.elementName,
|
64
|
+
label: (_a = tokenPrice.label) !== null && _a !== void 0 ? _a : 'LiquidityPool',
|
65
|
+
platformId: tokenPrice.platformId,
|
66
|
+
});
|
68
67
|
}
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
68
|
+
const liquidity = elementLiquidity.addLiquidity({
|
69
|
+
name: tokenPrice.liquidityName,
|
70
|
+
});
|
71
|
+
liquidity.addAsset({
|
72
|
+
address,
|
73
|
+
amount,
|
74
|
+
alreadyShifted: true,
|
75
|
+
ref: tokenAccount.pubkey,
|
76
|
+
link: tokenPrice.link,
|
77
|
+
sourceRefs: tokenPrice.sourceRefs,
|
78
|
+
tokenYield,
|
79
|
+
});
|
80
|
+
elementsLiquidity.set(tag, elementLiquidity);
|
80
81
|
}
|
82
|
+
});
|
83
|
+
return elementRegistry.getElements(cache);
|
84
|
+
});
|
85
|
+
exports.getSolanaTokens = getSolanaTokens;
|
86
|
+
const tokensFetchers = [
|
87
|
+
clmmFetcher_1.getRaydiumClmmPositions,
|
88
|
+
cpammPositionsFetcher_1.getMeteoraCpammPositions,
|
89
|
+
(0, getWhirlpoolPositions_1.getOrcaPositions)(constants_1.platformId),
|
90
|
+
(0, getWhirlpoolPositions_1.getOrcaPositions)(constants_2.platformId, constants_2.clmmPid),
|
91
|
+
getHeliumPositions_1.getHeliumPositions,
|
92
|
+
getPicassoPositions_1.getPicassoPositions,
|
93
|
+
(0, exports.getSolanaTokens)(false),
|
94
|
+
resizableNftFetcher_1.getResizableNfts,
|
95
|
+
];
|
96
|
+
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
97
|
+
const tokenAccounts = yield (0, getTokenAccountsByOwner_1.getTokenAccountsByOwner)(owner);
|
98
|
+
const results = [];
|
99
|
+
for (const tokensFetcher of tokensFetchers) {
|
100
|
+
results.push(tokensFetcher(tokenAccounts, cache));
|
81
101
|
}
|
82
|
-
const
|
83
|
-
|
84
|
-
elements.push({
|
85
|
-
type: portfolio_core_1.PortfolioElementType.multiple,
|
86
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
87
|
-
platformId: portfolio_core_1.walletNftsPlatformId,
|
88
|
-
label: 'Wallet',
|
89
|
-
value: null,
|
90
|
-
data: {
|
91
|
-
// Limit NFTs to 1K, to avoid fetcherResult to be too big
|
92
|
-
assets: nftAssets.slice(0, 1000),
|
93
|
-
},
|
94
|
-
});
|
95
|
-
}
|
96
|
-
if (tokenAssets.length !== 0) {
|
97
|
-
elements.push({
|
98
|
-
type: portfolio_core_1.PortfolioElementType.multiple,
|
99
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
100
|
-
platformId: portfolio_core_1.walletTokensPlatformId,
|
101
|
-
label: 'Wallet',
|
102
|
-
value: (0, portfolio_core_1.getUsdValueSum)(tokenAssets.map((a) => a.value)),
|
103
|
-
data: {
|
104
|
-
assets: tokenAssets,
|
105
|
-
},
|
106
|
-
});
|
107
|
-
}
|
108
|
-
for (const [tag, liquidities] of Object.entries(liquiditiesByTag)) {
|
109
|
-
const { platformId, elementName, label } = (0, helpers_1.parseLpTag)(tag);
|
110
|
-
elements.push({
|
111
|
-
type: portfolio_core_1.PortfolioElementType.liquidity,
|
112
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
113
|
-
platformId,
|
114
|
-
name: elementName,
|
115
|
-
label: label !== null && label !== void 0 ? label : 'LiquidityPool',
|
116
|
-
value: (0, portfolio_core_1.getUsdValueSum)(liquidities.map((a) => a.value)),
|
117
|
-
data: {
|
118
|
-
liquidities,
|
119
|
-
},
|
120
|
-
});
|
121
|
-
}
|
122
|
-
return elements;
|
102
|
+
const result = yield Promise.allSettled(results);
|
103
|
+
return result.flatMap((res) => (res.status === 'rejected' ? [] : res.value));
|
123
104
|
});
|
124
105
|
const fetcher = {
|
125
106
|
id: `${portfolio_core_1.walletTokensPlatformId}-solana`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":"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"}
|
@@ -11,9 +11,8 @@ const sui_1 = __importDefault(require("./fetchers/sui"));
|
|
11
11
|
const sui_nfts_1 = __importDefault(require("./fetchers/sui-nfts"));
|
12
12
|
const sei_1 = __importDefault(require("./fetchers/sei"));
|
13
13
|
const bitcoin_1 = __importDefault(require("./fetchers/bitcoin"));
|
14
|
-
const solana_1 = __importDefault(require("./fetchers/solana"));
|
15
14
|
const solana_native_1 = __importDefault(require("./fetchers/solana-native"));
|
16
|
-
const
|
15
|
+
const solana_1 = __importDefault(require("./fetchers/solana"));
|
17
16
|
const evms_1 = require("./fetchers/evms");
|
18
17
|
const getTokenListsJob_1 = __importDefault(require("./getTokenListsJob"));
|
19
18
|
const solana_simple_1 = __importDefault(require("./fetchers/solana-simple"));
|
@@ -32,9 +31,8 @@ exports.jobs = [
|
|
32
31
|
];
|
33
32
|
exports.fetchers = [
|
34
33
|
aptos_1.default,
|
35
|
-
solana_1.default,
|
36
34
|
solana_native_1.default,
|
37
|
-
|
35
|
+
solana_1.default,
|
38
36
|
sui_1.default,
|
39
37
|
sui_nfts_1.default,
|
40
38
|
sei_1.default,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAwE;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAwE;AAIxE,kEAA0C;AAC1C,6DAA4C;AAC5C,yDAAwC;AACxC,mEAAiD;AACjD,yDAAwC;AACxC,iEAAgD;AAChD,6EAA2D;AAC3D,+DAA6C;AAC7C,0CAA0D;AAC1D,0EAAkD;AAElD,6EAA2D;AA0BlD,8BA1BF,uBAAmB,CA0BE;AAxBf,QAAA,IAAI,GAAU;IACzB,IAAA,sBAAY,EAAC,0BAAS,CAAC,OAAO,CAAC;IAC/B,IAAA,sBAAY,EAAC,0BAAS,CAAC,KAAK,CAAC;IAC7B,IAAA,sBAAY,EAAC,0BAAS,CAAC,MAAM,CAAC;IAC9B,IAAA,sBAAY,EAAC,0BAAS,CAAC,QAAQ,CAAC;IAChC,IAAA,sBAAY,EAAC,0BAAS,CAAC,SAAS,CAAC;IACjC,IAAA,sBAAY,EAAC,0BAAS,CAAC,OAAO,CAAC;IAC/B,IAAA,sBAAY,EAAC,0BAAS,CAAC,GAAG,CAAC;IAC3B,IAAA,sBAAY,EAAC,0BAAS,CAAC,GAAG,CAAC;IAC3B,IAAA,sBAAY,EAAC,0BAAS,CAAC,GAAG,CAAC;IAC3B,GAAG,gCAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,0BAAgB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CAClE,CAAC;AAEW,QAAA,QAAQ,GAAc;IACjC,eAAY;IACZ,uBAAmB;IACnB,gBAAY;IACZ,aAAU;IACV,kBAAc;IACd,aAAU;IACV,iBAAc;IACd,GAAG,eAAW;CACf,CAAC"}
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import {
|
1
|
+
import { PortfolioElement } from '@sonarwatch/portfolio-core';
|
2
2
|
import { Cache } from '../../Cache';
|
3
|
+
import { ParsedAccount, TokenAccount } from '../../utils/solana';
|
3
4
|
export type TokenData = {
|
4
5
|
address: string;
|
5
6
|
decimals: number;
|
@@ -35,4 +36,4 @@ export type Token = {
|
|
35
36
|
index?: string;
|
36
37
|
};
|
37
38
|
};
|
38
|
-
export type
|
39
|
+
export type TokenFetcher = (potentialTokens: ParsedAccount<TokenAccount>[], cache: Cache) => Promise<PortfolioElement[]>;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
|
2
2
|
/// <reference types="jito-ts/node_modules/@solana/web3.js" />
|
3
|
-
import { NetworkIdType, PortfolioAsset, PortfolioAssetAttributes, SourceRef, TokenPriceMap } from '@sonarwatch/portfolio-core';
|
3
|
+
import { NetworkIdType, PortfolioAsset, PortfolioAssetAttributes, SourceRef, TokenPriceMap, TokenYield } from '@sonarwatch/portfolio-core';
|
4
4
|
import BigNumber from 'bignumber.js';
|
5
5
|
import { PublicKey } from '@solana/web3.js';
|
6
6
|
import { AssetBuilder } from './AssetBuilder';
|
@@ -13,6 +13,7 @@ export declare class AssetTokenBuilder extends AssetBuilder {
|
|
13
13
|
sourceRefs?: SourceRef[];
|
14
14
|
ref?: string | PublicKey;
|
15
15
|
link?: string;
|
16
|
+
tokenYield?: TokenYield;
|
16
17
|
constructor(params: PortfolioAssetTokenParams);
|
17
18
|
tokenAddresses(): string[];
|
18
19
|
getUnderlyings(networkId: NetworkIdType, tokenPrices: TokenPriceMap): PortfolioAsset[];
|
@@ -18,6 +18,7 @@ class AssetTokenBuilder extends AssetBuilder_1.AssetBuilder {
|
|
18
18
|
this.ref = params.ref;
|
19
19
|
this.sourceRefs = params.sourceRefs;
|
20
20
|
this.link = params.link;
|
21
|
+
this.tokenYield = params.tokenYield;
|
21
22
|
}
|
22
23
|
tokenAddresses() {
|
23
24
|
return [this.address];
|
@@ -43,7 +44,7 @@ class AssetTokenBuilder extends AssetBuilder_1.AssetBuilder {
|
|
43
44
|
return null;
|
44
45
|
if (!this.alreadyShifted && tokenPrice)
|
45
46
|
amount = amount.dividedBy(Math.pow(10, tokenPrice.decimals));
|
46
|
-
return Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(this.address, amount.toNumber(), networkId, tokenPrice, undefined, this.attributes, this.link)), { sourceRefs: this.sourceRefs, ref: (_a = this.ref) === null || _a === void 0 ? void 0 : _a.toString() });
|
47
|
+
return Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(this.address, amount.toNumber(), networkId, tokenPrice, undefined, this.attributes, this.link, this.tokenYield)), { sourceRefs: this.sourceRefs, ref: (_a = this.ref) === null || _a === void 0 ? void 0 : _a.toString() });
|
47
48
|
}
|
48
49
|
}
|
49
50
|
exports.AssetTokenBuilder = AssetTokenBuilder;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AssetTokenBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/AssetTokenBuilder.ts"],"names":[],"mappings":";;;;;;
|
1
|
+
{"version":3,"file":"AssetTokenBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/AssetTokenBuilder.ts"],"names":[],"mappings":";;;;;;AAQA,gEAAqC;AAErC,4FAAoE;AACpE,8FAAsE;AACtE,iDAA8C;AAG9C,MAAa,iBAAkB,SAAQ,2BAAY;IAUjD,YAAY,MAAiC;QAC3C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC;QACrD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,cAAc,CACZ,SAAwB,EACxB,WAA0B;QAE1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE3B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,OAAO,IAAA,iCAAuB,EAC5B,UAAU,CAAC,OAAO,EAClB,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,GAAG,CACD,SAAwB,EACxB,WAA0B;;QAE1B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,UAAU;YACpC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,uCACK,IAAA,gCAAsB,EACvB,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,CAChB,KACD,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE,IACzB;IACJ,CAAC;CACF;AA9ED,8CA8EC"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
|
2
2
|
/// <reference types="jito-ts/node_modules/@solana/web3.js" />
|
3
|
-
import { CrossLevPosition, IsoLevPosition, PortfolioAssetAttributes, PortfolioElementLabel, PortfolioElementTypeType, SourceRef, UsdValue } from '@sonarwatch/portfolio-core';
|
3
|
+
import { CrossLevPosition, IsoLevPosition, PortfolioAssetAttributes, PortfolioElementLabel, PortfolioElementTypeType, SourceRef, TokenYield, UsdValue } from '@sonarwatch/portfolio-core';
|
4
4
|
import { PublicKey } from '@solana/web3.js';
|
5
5
|
import BigNumber from 'bignumber.js';
|
6
6
|
export type Params = {
|
@@ -70,6 +70,7 @@ export type PortfolioAssetTokenParams = {
|
|
70
70
|
sourceRefs?: SourceRef[];
|
71
71
|
ref?: string | PublicKey;
|
72
72
|
link?: string;
|
73
|
+
tokenYield?: TokenYield;
|
73
74
|
};
|
74
75
|
export type TradeParams = {
|
75
76
|
inputAsset: Omit<PortfolioAssetTokenParams, 'amount'> & {
|
@@ -0,0 +1,39 @@
|
|
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.MemoryCache = void 0;
|
16
|
+
const ttlcache_1 = __importDefault(require("@isaacs/ttlcache"));
|
17
|
+
const defaultTtl = 600;
|
18
|
+
const defaultMax = 100;
|
19
|
+
// T is the type of item memoized
|
20
|
+
class MemoryCache {
|
21
|
+
constructor(fetch, ttl = defaultTtl, max = defaultMax) {
|
22
|
+
this.getItem = (key) => __awaiter(this, void 0, void 0, function* () {
|
23
|
+
let item;
|
24
|
+
if (!this.cache.has(key)) {
|
25
|
+
item = yield this.fetch(key);
|
26
|
+
this.cache.set(key, item);
|
27
|
+
return item;
|
28
|
+
}
|
29
|
+
return this.cache.get(key);
|
30
|
+
});
|
31
|
+
this.fetch = fetch;
|
32
|
+
this.cache = new ttlcache_1.default({
|
33
|
+
max,
|
34
|
+
ttl,
|
35
|
+
});
|
36
|
+
}
|
37
|
+
}
|
38
|
+
exports.MemoryCache = MemoryCache;
|
39
|
+
//# sourceMappingURL=MemoryCache.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"MemoryCache.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/MemoryCache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAwC;AAExC,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,iCAAiC;AACjC,MAAa,WAAW;IAItB,YACE,KAAoC,EACpC,MAAc,UAAU,EACxB,MAAc,UAAU;QAS1B,YAAO,GAAG,CAAO,GAAW,EAAE,EAAE;YAC9B,IAAI,IAAO,CAAC;YAEZ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAClC,CAAC,CAAA,CAAC;QAjBA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAQ,CAAC;YACxB,GAAG;YACH,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;CAaF;AA3BD,kCA2BC"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { NetworkIdType } from '@sonarwatch/portfolio-core';
|
2
2
|
import { Cache } from '../../Cache';
|
3
|
-
type Decimal = number | null;
|
3
|
+
export type Decimal = number | null;
|
4
4
|
/**
|
5
5
|
* Return the decimals of a token on any network using RPC calls or TokenList.
|
6
6
|
*
|
@@ -11,4 +11,3 @@ type Decimal = number | null;
|
|
11
11
|
* @returns The number of decimals or undefined if unsuccessful request.
|
12
12
|
*/
|
13
13
|
export declare function getCachedDecimalsForToken(cache: Cache, address: string, networkId: NetworkIdType): Promise<Decimal>;
|
14
|
-
export {};
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { TokenAccount } from './structs';
|
2
|
+
import { ParsedAccount } from './types';
|
3
|
+
export declare const getTokenAccountsByOwner: (owner: string) => Promise<ParsedAccount<TokenAccount>[]>;
|
4
|
+
export declare const getTokenAccountsByOwnerMemo: (owner: string) => Promise<ParsedAccount<TokenAccount>[]>;
|