@exodus/assets-feature 8.2.0 → 8.3.0
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 +8 -0
- package/module/assets-module.js +17 -5
- package/module/constants.js +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [8.3.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@8.2.0...@exodus/assets-feature@8.3.0) (2025-08-11)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- feat(assets-feature): filter invalid fetched tokens (#13532)
|
|
11
|
+
|
|
12
|
+
- feat(assets-feature): paginate fetch tokens call (#13533)
|
|
13
|
+
|
|
6
14
|
## [8.2.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@8.1.3...@exodus/assets-feature@8.2.0) (2025-08-07)
|
|
7
15
|
|
|
8
16
|
### Features
|
package/module/assets-module.js
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
CT_FETCH_CACHE_EXPIRY,
|
|
14
14
|
CT_TIMESTAMP_KEY,
|
|
15
15
|
CT_UPDATE_INTERVAL,
|
|
16
|
+
CTR_TOKENS_LIMIT,
|
|
16
17
|
} from './constants.js'
|
|
17
18
|
import {
|
|
18
19
|
filterBuiltInProps,
|
|
@@ -25,7 +26,7 @@ import { validateCustomToken, isValidCustomToken } from '@exodus/asset-schema-va
|
|
|
25
26
|
import makeConcurrent from 'make-concurrent'
|
|
26
27
|
import oldToNewStyleTokenNames from '@exodus/asset-legacy-token-name-mapping'
|
|
27
28
|
|
|
28
|
-
const { get, isEmpty, once, uniq } = lodash
|
|
29
|
+
const { get, isEmpty, once, uniq, chunk } = lodash
|
|
29
30
|
|
|
30
31
|
const getFetchCacheKey = (baseAssetName, assetId) => `${assetId}-${baseAssetName}`
|
|
31
32
|
|
|
@@ -258,20 +259,23 @@ export class AssetsModule {
|
|
|
258
259
|
'tokens'
|
|
259
260
|
)
|
|
260
261
|
|
|
262
|
+
let validTokens = []
|
|
261
263
|
if (this.#shouldValidateCustomToken) {
|
|
262
264
|
for (const token of _tokens) {
|
|
263
265
|
try {
|
|
264
266
|
validateCustomToken(token)
|
|
267
|
+
validTokens.push(token)
|
|
265
268
|
} catch (e) {
|
|
266
269
|
this.#logger.warn(
|
|
267
270
|
`Token did not pass validation ${token.baseAssetName} ${token.assetId}. Error: ${e.message}`
|
|
268
271
|
)
|
|
269
|
-
throw new Error('Token did not pass validation')
|
|
270
272
|
}
|
|
271
273
|
}
|
|
274
|
+
} else {
|
|
275
|
+
validTokens = _tokens
|
|
272
276
|
}
|
|
273
277
|
|
|
274
|
-
const tokens =
|
|
278
|
+
const tokens = validTokens.map((token) => normalizeToken(token))
|
|
275
279
|
|
|
276
280
|
try {
|
|
277
281
|
await this.#iconsStorage.storeIcons(tokens)
|
|
@@ -293,8 +297,16 @@ export class AssetsModule {
|
|
|
293
297
|
return { builtInTokens, customTokens }
|
|
294
298
|
}
|
|
295
299
|
|
|
296
|
-
fetchTokens = async (
|
|
297
|
-
const
|
|
300
|
+
fetchTokens = async (assetDescriptors) => {
|
|
301
|
+
const pages = chunk(assetDescriptors, CTR_TOKENS_LIMIT)
|
|
302
|
+
|
|
303
|
+
const builtInTokens = []
|
|
304
|
+
const customTokens = []
|
|
305
|
+
for (const page of pages) {
|
|
306
|
+
const tokens = await this.#fetchTokens(page)
|
|
307
|
+
builtInTokens.push(...tokens.builtInTokens)
|
|
308
|
+
customTokens.push(...tokens.customTokens)
|
|
309
|
+
}
|
|
298
310
|
|
|
299
311
|
const builtInAssets = builtInTokens.map(({ name }) => this.getAsset(name))
|
|
300
312
|
const customTokenAssets = customTokens.map((definition) => {
|
package/module/constants.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/assets-feature",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "This Exodus SDK feature provides access to instances of all blockchain asset adapters supported by the wallet, and enables you to search for and add custom tokens at runtime.",
|
|
6
6
|
"type": "module",
|
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
"publishConfig": {
|
|
83
83
|
"access": "public"
|
|
84
84
|
},
|
|
85
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "b1676f695267900d5d7e94265f97d6e7ae4a92ae"
|
|
86
86
|
}
|