@sonarwatch/portfolio-plugins 0.5.26 → 0.5.28

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,14 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [0.5.28](https://github.com/sonarwatch/portfolio/compare/plugins-0.5.27...plugins-0.5.28) (2023-08-11)
6
+
7
+
8
+
9
+ ## [0.5.27](https://github.com/sonarwatch/portfolio/compare/plugins-0.5.26...plugins-0.5.27) (2023-08-11)
10
+
11
+
12
+
5
13
  ## [0.5.26](https://github.com/sonarwatch/portfolio/compare/plugins-0.5.25...plugins-0.5.26) (2023-08-10)
6
14
 
7
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonarwatch/portfolio-plugins",
3
- "version": "0.5.26",
3
+ "version": "0.5.28",
4
4
  "type": "commonjs",
5
5
  "generators": "./generators.json",
6
6
  "dependencies": {
@@ -21,7 +21,7 @@
21
21
  "viem": "^1.2.9"
22
22
  },
23
23
  "peerDependencies": {
24
- "@sonarwatch/portfolio-core": "0.5.26"
24
+ "@sonarwatch/portfolio-core": "0.5.28"
25
25
  },
26
26
  "main": "./src/index.js",
27
27
  "types": "./src/index.d.ts"
package/src/platforms.js CHANGED
@@ -112,8 +112,8 @@ exports.meeiroPlatform = {
112
112
  image: 'https://alpha.sonar.watch/img/platforms/meeiro.png',
113
113
  };
114
114
  exports.nativeStakePlatform = {
115
- id: 'nativeStake',
115
+ id: 'native-stake',
116
116
  name: 'Native Stake',
117
- image: 'https://alpha.sonar.watch/img/platforms/nativeStake.png',
117
+ image: 'https://alpha.sonar.watch/img/platforms/native-stake.png',
118
118
  };
119
119
  //# sourceMappingURL=platforms.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../../../packages/plugins/src/platforms.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAa;IAC5C,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,2DAA2D;CACnE,CAAC;AACW,QAAA,kBAAkB,GAAa;IAC1C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,yDAAyD;CACjE,CAAC;AACW,QAAA,gBAAgB,GAAa;IACxC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,sDAAsD;CAC9D,CAAC;AACW,QAAA,YAAY,GAAa;IACpC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,kDAAkD;CAC1D,CAAC;AACW,QAAA,gBAAgB,GAAa;IACxC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,sDAAsD;CAC9D,CAAC;AACW,QAAA,cAAc,GAAa;IACtC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,oDAAoD;CAC5D,CAAC;AACW,QAAA,aAAa,GAAa;IACrC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,mDAAmD;CAC3D,CAAC;AACW,QAAA,eAAe,GAAa;IACvC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,qDAAqD;CAC7D,CAAC;AACW,QAAA,mBAAmB,GAAa;IAC3C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,yDAAyD;CACjE,CAAC;AACW,QAAA,mBAAmB,GAAa;IAC3C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,yDAAyD;CACjE,CAAC;AACW,QAAA,kBAAkB,GAAa;IAC1C,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,wDAAwD;CAChE,CAAC;AACW,QAAA,aAAa,GAAa;IACrC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,mDAAmD;CAC3D,CAAC;AACW,QAAA,iBAAiB,GAAa;IACzC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,uDAAuD;CAC/D,CAAC;AACW,QAAA,eAAe,GAAa;IACvC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,qDAAqD;CAC7D,CAAC;AACW,QAAA,cAAc,GAAa;IACtC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,oDAAoD;CAC5D,CAAC;AACW,QAAA,YAAY,GAAa;IACpC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,kDAAkD;CAC1D,CAAC;AACW,QAAA,eAAe,GAAa;IACvC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,qDAAqD;CAC7D,CAAC;AACW,QAAA,aAAa,GAAa;IACrC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,mDAAmD;CAC3D,CAAC;AACW,QAAA,aAAa,GAAa;IACrC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,mDAAmD;CAC3D,CAAC;AACW,QAAA,aAAa,GAAa;IACrC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,mDAAmD;CAC3D,CAAC;AACW,QAAA,cAAc,GAAa;IACtC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,oDAAoD;CAC5D,CAAC;AACW,QAAA,cAAc,GAAa;IACtC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,oDAAoD;CAC5D,CAAC;AACW,QAAA,mBAAmB,GAAa;IAC3C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,yDAAyD;CACjE,CAAC"}
1
+ {"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../../../packages/plugins/src/platforms.ts"],"names":[],"mappings":"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"}
@@ -18,15 +18,55 @@ const js_1 = require("@metaplex-foundation/js");
18
18
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
19
19
  const platforms_1 = require("../../../platforms");
20
20
  const clients_1 = require("../../../utils/clients");
21
- const executor = (owner) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const runInBatch_1 = __importDefault(require("../../../utils/misc/runInBatch"));
22
+ const prefix = 'nft-images';
23
+ const noImageValue = 'noimage';
24
+ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
22
25
  const client = (0, clients_1.getClientSolana)();
23
26
  const ownerPubKey = new web3_js_1.PublicKey(owner);
24
27
  const metaplex = new js_1.Metaplex(client);
25
- if (!owner)
26
- return [];
27
28
  const outputs = yield metaplex.nfts().findAllByOwner({
28
29
  owner: ownerPubKey,
29
30
  });
31
+ const cachedImages = yield cache.getItems(outputs.map((o) => o.model === 'metadata'
32
+ ? o.mintAddress.toString()
33
+ : o.mint.address.toString()), {
34
+ prefix,
35
+ networkId: portfolio_core_1.NetworkId.solana,
36
+ });
37
+ const images = new Map();
38
+ const missings = [];
39
+ outputs.forEach((o, i) => {
40
+ const cachedImage = cachedImages[i];
41
+ if (cachedImage) {
42
+ const address = o.model === 'metadata'
43
+ ? o.mintAddress.toString()
44
+ : o.mint.address.toString();
45
+ images.set(address, cachedImage);
46
+ }
47
+ else if (o.model === 'metadata') {
48
+ missings.push(o);
49
+ }
50
+ });
51
+ const res = yield (0, runInBatch_1.default)(missings.map((o) => () => metaplex.nfts().load({ metadata: o })), 5);
52
+ const promises = res.map((r, i) => {
53
+ var _a;
54
+ const image = r.status !== 'rejected' ? (_a = r.value.json) === null || _a === void 0 ? void 0 : _a.image : undefined;
55
+ if (r.status === 'rejected' || !image) {
56
+ const address = missings[i].mintAddress.toString();
57
+ return cache.setItem(address, noImageValue, {
58
+ prefix,
59
+ networkId: portfolio_core_1.NetworkId.solana,
60
+ });
61
+ }
62
+ const address = r.value.mint.address.toString();
63
+ images.set(address, image);
64
+ return cache.setItem(address, image, {
65
+ prefix,
66
+ networkId: portfolio_core_1.NetworkId.solana,
67
+ });
68
+ });
69
+ yield Promise.allSettled(promises);
30
70
  const assets = outputs.map((output) => {
31
71
  var _a;
32
72
  const address = output.model === 'metadata'
@@ -38,6 +78,9 @@ const executor = (owner) => __awaiter(void 0, void 0, void 0, function* () {
38
78
  .div(Math.pow(10, token.amount.currency.decimals))
39
79
  .toNumber()
40
80
  : 1;
81
+ let image = images.get(address);
82
+ if (image === noImageValue)
83
+ image = undefined;
41
84
  return {
42
85
  networkId: portfolio_core_1.NetworkId.solana,
43
86
  type: portfolio_core_1.PortfolioAssetType.collectible,
@@ -49,6 +92,7 @@ const executor = (owner) => __awaiter(void 0, void 0, void 0, function* () {
49
92
  price: null,
50
93
  value: null,
51
94
  floorPrice: null,
95
+ image,
52
96
  name: output.name,
53
97
  collectionId: (_a = output.collection) === null || _a === void 0 ? void 0 : _a.address.toString(),
54
98
  },
@@ -1 +1 @@
1
- {"version":3,"file":"solana-nfts.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-nfts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAMoC;AACpC,6CAA4C;AAC5C,gDAKiC;AACjC,gEAAqC;AAErC,kDAA8E;AAC9E,oDAAyD;AAEzD,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,aAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC;QACnD,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC;IACH,MAAM,MAAM,GAAgC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;QACjE,MAAM,OAAO,GACX,MAAM,CAAC,KAAK,KAAK,UAAU;YACzB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAErC,MAAM,KAAK,GACT,IAAA,mBAAc,EAAC,MAAM,CAAC,IAAI,IAAA,mBAAc,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAEzE,MAAM,MAAM,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM;YAC1B,CAAC,CAAC,IAAI,sBAAS,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;iBAC/C,GAAG,CAAC,SAAA,EAAE,EAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,CAAC;iBACzC,QAAQ,EAAE;YACf,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,SAAS,EAAE,0BAAS,CAAC,MAAM;YAC3B,IAAI,EAAE,mCAAkB,CAAC,WAAW;YACpC,KAAK,EAAE,IAAI;YACX,IAAI,EAAE;gBACJ,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,GAAG;gBACnB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,YAAY,EAAE,MAAA,MAAM,CAAC,UAAU,0CAAE,OAAO,CAAC,QAAQ,EAAE;aACpD;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,OAAO,GAA6B;QACxC,IAAI,EAAE,qCAAoB,CAAC,QAAQ;QACnC,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,UAAU,EAAE,8BAAkB,CAAC,EAAE;QACjC,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,IAAI;QACX,IAAI,EAAE;YACJ,MAAM;SACP;KACF,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,gCAAoB,CAAC,EAAE,cAAc;IAC5C,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"solana-nfts.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-nfts.ts"],"names":[],"mappings":"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"}