@sonarwatch/portfolio-plugins 0.15.44 → 0.15.46
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,19 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
+
## [0.15.46](https://github.com/sonarwatch/portfolio/compare/plugins-0.15.45...plugins-0.15.46) (2025-06-29)
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
## [0.15.45](https://github.com/sonarwatch/portfolio/compare/plugins-0.15.44...plugins-0.15.45) (2025-06-29)
|
10
|
+
|
11
|
+
|
12
|
+
### Features
|
13
|
+
|
14
|
+
* **plugins:** enhance token account metadata handling for Solana by supporting Token 2022 accounts ([362dc3f](https://github.com/sonarwatch/portfolio/commit/362dc3f8e7512c4c074a16672ac4ff88d3d36077))
|
15
|
+
|
16
|
+
|
17
|
+
|
5
18
|
## [0.15.44](https://github.com/sonarwatch/portfolio/compare/plugins-0.15.43...plugins-0.15.44) (2025-06-28)
|
6
19
|
|
7
20
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sonarwatch/portfolio-plugins",
|
3
|
-
"version": "0.15.
|
3
|
+
"version": "0.15.46",
|
4
4
|
"type": "commonjs",
|
5
5
|
"types": "./src/index.d.ts",
|
6
6
|
"peerDependencies": {
|
@@ -27,8 +27,9 @@
|
|
27
27
|
"@project-serum/anchor": "^0.26.0",
|
28
28
|
"@sei-js/core": "^3.2.1",
|
29
29
|
"@sei-js/proto": "^3.1.0",
|
30
|
-
"@
|
30
|
+
"@solana/spl-token": "^0.4.13",
|
31
31
|
"@solana/web3.js": "^1.98.0",
|
32
|
+
"@sonarwatch/tx-parser": "^1.2.3",
|
32
33
|
"axios": "^1.7.9",
|
33
34
|
"bignumber.js": "^9.1.2",
|
34
35
|
"bn.js": "^5.2.1",
|
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.getTokenAccountsByOwnerMemo = exports.getTokenAccountsByOwner = void 0;
|
13
13
|
const web3_js_1 = require("@solana/web3.js");
|
14
|
+
const spl_token_1 = require("@solana/spl-token");
|
14
15
|
const constants_1 = require("./constants");
|
15
16
|
const structs_1 = require("./structs");
|
16
17
|
const MemoryCache_1 = require("../misc/MemoryCache");
|
@@ -20,27 +21,49 @@ const getParsedMultipleAccountsInfo_1 = require("./getParsedMultipleAccountsInfo
|
|
20
21
|
const structs_2 = require("../../plugins/metaplex/structs");
|
21
22
|
const getTokenAccountsByOwner = (client, owner) => __awaiter(void 0, void 0, void 0, function* () {
|
22
23
|
const tokenAccounts = yield Promise.all([
|
23
|
-
client
|
24
|
+
client
|
25
|
+
.getTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
|
24
26
|
programId: constants_1.solanaTokenPidPk,
|
25
|
-
})
|
26
|
-
|
27
|
+
})
|
28
|
+
.then((res) => res.value.map((t) => (Object.assign(Object.assign({}, t), { isToken2022: false })))),
|
29
|
+
client
|
30
|
+
.getTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
|
27
31
|
programId: constants_1.solanaToken2022PidPk,
|
28
|
-
})
|
32
|
+
})
|
33
|
+
.then((res) => res.value.map((t) => (Object.assign(Object.assign({}, t), { isToken2022: true })))),
|
29
34
|
]);
|
30
|
-
const tokenAccountsInfo = [
|
31
|
-
|
32
|
-
...tokenAccounts[1].value,
|
33
|
-
]
|
34
|
-
.map((x) => (Object.assign(Object.assign({}, structs_1.tokenAccountStruct.deserialize(x.account.data)[0]), { pubkey: x.pubkey, lamports: x.account.lamports, tokenProgram: x.account.owner })))
|
35
|
+
const tokenAccountsInfo = [...tokenAccounts[0], ...tokenAccounts[1]]
|
36
|
+
.map((x) => (Object.assign(Object.assign({}, structs_1.tokenAccountStruct.deserialize(x.account.data)[0]), { pubkey: x.pubkey, lamports: x.account.lamports, tokenProgram: x.account.owner, isToken2022: x.isToken2022 })))
|
35
37
|
.filter((a) => !a.amount.isZero());
|
36
|
-
const metadataAccounts = yield
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
const [metadataAccounts, token2022Accounts] = yield Promise.all([
|
39
|
+
(0, getParsedMultipleAccountsInfo_1.getParsedMultipleAccountsInfo)(client, structs_2.metadataAccountStruct, tokenAccountsInfo
|
40
|
+
.filter((t) => !t.isToken2022)
|
41
|
+
.map((t) => (0, helpers_1.getMetadataPubkey)(t.mint))),
|
42
|
+
Promise.all(tokenAccountsInfo
|
43
|
+
.filter((t) => t.isToken2022)
|
44
|
+
.map((t) => (0, spl_token_1.getTokenMetadata)(client, t.mint))),
|
45
|
+
]);
|
46
|
+
return tokenAccountsInfo.map((t) => {
|
47
|
+
let metadata;
|
48
|
+
if (t.isToken2022) {
|
49
|
+
const metadataAccount = token2022Accounts.find((a) => a && a.mint.toString() === t.mint.toString());
|
50
|
+
metadata = {
|
51
|
+
name: metadataAccount === null || metadataAccount === void 0 ? void 0 : metadataAccount.name,
|
52
|
+
symbol: metadataAccount === null || metadataAccount === void 0 ? void 0 : metadataAccount.symbol,
|
53
|
+
};
|
54
|
+
}
|
55
|
+
else {
|
56
|
+
const metadataAccount = metadataAccounts.find((a) => a && a.mint.toString() === t.mint.toString());
|
57
|
+
metadata = {
|
58
|
+
name: metadataAccount === null || metadataAccount === void 0 ? void 0 : metadataAccount.data.name.split('\x00')[0].trim(),
|
59
|
+
symbol: metadataAccount === null || metadataAccount === void 0 ? void 0 : metadataAccount.data.symbol.split('\x00')[0].trim(),
|
60
|
+
};
|
61
|
+
}
|
62
|
+
if (!metadata || !metadata.name || !metadata.symbol)
|
40
63
|
return t;
|
41
64
|
return Object.assign(Object.assign({}, t), { metadata: {
|
42
|
-
name:
|
43
|
-
symbol:
|
65
|
+
name: metadata.name,
|
66
|
+
symbol: metadata.symbol,
|
44
67
|
} });
|
45
68
|
});
|
46
69
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getTokenAccountsByOwner.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/solana/getTokenAccountsByOwner.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAC5C,2CAAqE;AACrE,uCAImB;AAEnB,qDAAkD;AAElD,wCAA6C;AAC7C,4DAAmE;AACnE,mFAAgF;AAChF,4DAAuE;AAEhE,MAAM,uBAAuB,GAAG,CACrC,MAAoB,EACpB,KAAa,EACuC,EAAE;IACtD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtC,MAAM,
|
1
|
+
{"version":3,"file":"getTokenAccountsByOwner.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/solana/getTokenAccountsByOwner.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAC5C,iDAAqD;AACrD,2CAAqE;AACrE,uCAImB;AAEnB,qDAAkD;AAElD,wCAA6C;AAC7C,4DAAmE;AACnE,mFAAgF;AAChF,4DAAuE;AAEhE,MAAM,uBAAuB,GAAG,CACrC,MAAoB,EACpB,KAAa,EACuC,EAAE;IACtD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtC,MAAM;aACH,uBAAuB,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,EAAE;YAC7C,SAAS,EAAE,4BAAgB;SAC5B,CAAC;aACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,KAAE,WAAW,EAAE,KAAK,IAAG,CAAC,CAAC;QACtE,MAAM;aACH,uBAAuB,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,EAAE;YAC7C,SAAS,EAAE,gCAAoB;SAChC,CAAC;aACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,KAAE,WAAW,EAAE,IAAI,IAAG,CAAC,CAAC;KACtE,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;SACjE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCACP,4BAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAC5B,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAC7B,WAAW,EAAE,CAAC,CAAC,WAAW,IAC1B,CAAC;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAIhC,CAAC;IAEJ,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9D,IAAA,6DAA6B,EAC3B,MAAM,EACN,+BAAqB,EACrB,iBAAiB;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,2BAAiB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACzC;QACD,OAAO,CAAC,GAAG,CACT,iBAAiB;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,4BAAgB,EAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAChD;KACF,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,IAAI,QAGH,CAAC;QACF,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACpD,CAAC;YACF,QAAQ,GAAG;gBACT,IAAI,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI;gBAC3B,MAAM,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM;aAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACpD,CAAC;YAEF,QAAQ,GAAG;gBACT,IAAI,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;gBACxD,MAAM,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;aAC7D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;QAE9D,uCACK,CAAC,KACJ,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,IACD;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAhFW,QAAA,uBAAuB,2BAgFlC;AAEF,MAAM,cAAc,GAAG,IAAI,yBAAW,CACpC,CAAC,KAAa,EAAE,EAAE,CAAC,IAAA,+BAAuB,EAAC,IAAA,yBAAe,GAAE,EAAE,KAAK,CAAC,CACrE,CAAC;AAEK,MAAM,2BAA2B,GAAG,CAAO,KAAa,EAAE,EAAE,kDACjE,OAAA,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,GAAA,CAAC;AADnB,QAAA,2BAA2B,+BACR"}
|