@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.44",
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
- "@sonarwatch/tx-parser": "^1.2.3",
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.getTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
24
+ client
25
+ .getTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
24
26
  programId: constants_1.solanaTokenPidPk,
25
- }),
26
- client.getTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
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
- ...tokenAccounts[0].value,
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 (0, getParsedMultipleAccountsInfo_1.getParsedMultipleAccountsInfo)(client, structs_2.metadataAccountStruct, tokenAccountsInfo.map((t) => (0, helpers_1.getMetadataPubkey)(t.mint)));
37
- return tokenAccountsInfo.map((t, i) => {
38
- const metadataAccount = metadataAccounts[i];
39
- if (!metadataAccount)
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: metadataAccount.data.name.split('\x00')[0].trim(),
43
- symbol: metadataAccount.data.symbol.split('\x00')[0].trim(),
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,CAAC,uBAAuB,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,EAAE;YACnD,SAAS,EAAE,4BAAgB;SAC5B,CAAC;QACF,MAAM,CAAC,uBAAuB,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,EAAE;YACnD,SAAS,EAAE,gCAAoB;SAChC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG;QACxB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;QACzB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;KAC1B;SACE,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,IAC7B,CAAC;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAkC,CAAC;IAEtE,MAAM,gBAAgB,GAAG,MAAM,IAAA,6DAA6B,EAC1D,MAAM,EACN,+BAAqB,EACrB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,2BAAiB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACxD,CAAC;IAEF,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe;YAAE,OAAO,CAAC,CAAC;QAC/B,uCACK,CAAC,KACJ,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACvD,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;aAC5D,IACD;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AA1CW,QAAA,uBAAuB,2BA0ClC;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"}
1
+ {"version":3,"file":"getTokenAccountsByOwner.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/solana/getTokenAccountsByOwner.ts"],"names":[],"mappings":"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"}