@exodus/assets-feature 9.0.1 → 9.1.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 CHANGED
@@ -3,6 +3,16 @@
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
+ ## [9.1.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@9.0.1...@exodus/assets-feature@9.1.0) (2026-04-14)
7
+
8
+ ### Features
9
+
10
+ - feat(assets): add tags parameter to searchTokens (#15984)
11
+
12
+ ### Bug Fixes
13
+
14
+ - fix: add protection from malformed remote asset config during startup (#15650)
15
+
6
16
  ## [9.0.1](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@9.0.0...@exodus/assets-feature@9.0.1) (2026-02-20)
7
17
 
8
18
  ### Bug Fixes
package/api/index.d.ts CHANGED
@@ -25,6 +25,7 @@ declare const assetsApiDefinition: {
25
25
  baseAssetName?: string | string[]
26
26
  lifecycleStatus?: TokenStatus[]
27
27
  query?: string
28
+ tags?: string[]
28
29
  excludeTags?: string[]
29
30
  pageNumber?: number
30
31
  pageSize?: number
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type assetsApiDefinition from './api/index.js'
2
2
 
3
+ export type { AssetsModule } from './module/assets-module.js'
3
4
  export { TokenStatus } from './api/index.js'
4
5
 
5
6
  declare const assets: () => {
@@ -0,0 +1,37 @@
1
+ import type { BaseAsset, TokenAsset, CombinedAsset } from '@exodus/asset-types'
2
+
3
+ type Asset = BaseAsset | TokenAsset | CombinedAsset
4
+ type TokenDefinition = Record<string, unknown>
5
+
6
+ export declare class AssetsModule {
7
+ initialize(params: {
8
+ assetClientInterface: unknown
9
+ assetsConfig?: Record<string, { config?: Record<string, unknown> }>
10
+ }): void
11
+
12
+ getAssets(): Record<string, Asset>
13
+
14
+ getAsset(assetName: string): Asset | undefined
15
+
16
+ getTokenNames(baseAssetName: string): string[]
17
+
18
+ getBaseAssetNames(): string[]
19
+
20
+ load(): Promise<void>
21
+
22
+ fetchToken(assetId: string, baseAssetName: string): Promise<TokenDefinition>
23
+
24
+ fetchTokens(assetDescriptors: { assetId: string; baseAssetName: string }[]): Promise<Asset[]>
25
+
26
+ addToken(assetId: string, baseAssetName: string): Promise<Asset>
27
+
28
+ addTokens(params: {
29
+ assetIds: string[]
30
+ baseAssetName: string
31
+ allowedStatusList?: string[]
32
+ }): Promise<Asset[]>
33
+
34
+ addRemoteTokens(params: { tokenNames: string[]; allowedStatusList?: string[] }): Promise<string[]>
35
+ }
36
+
37
+ export default AssetsModule
@@ -140,8 +140,23 @@ export class AssetsModule {
140
140
  const { assetsConfig: defaultAssetsConfig = Object.create(null) } = this.#config
141
141
  const assetsList = Object.entries(this.#assetPlugins)
142
142
  .map(([name, assetPlugin]) => {
143
- const config = { ...defaultAssetsConfig[name], ...assetsConfig?.[name]?.config }
144
- const asset = assetPlugin.createAsset({ assetClientInterface, config })
143
+ let asset
144
+
145
+ try {
146
+ const config = { ...defaultAssetsConfig[name], ...assetsConfig?.[name]?.config }
147
+ asset = assetPlugin.createAsset({ assetClientInterface, config })
148
+ } catch (e) {
149
+ this.#logger.error(
150
+ `failed to createAsset ${name} using custom assetsConfig: ${e.message}, using default configuration`,
151
+ e
152
+ )
153
+
154
+ asset = assetPlugin.createAsset({
155
+ assetClientInterface,
156
+ config: defaultAssetsConfig[name],
157
+ })
158
+ }
159
+
145
160
  if (asset.name === name) return asset
146
161
  console.warn(`Incorrectly referenced supported asset ${name}. Expected ${asset.name}.`)
147
162
  })
@@ -460,6 +475,7 @@ export class AssetsModule {
460
475
  baseAssetName,
461
476
  lifecycleStatus,
462
477
  query,
478
+ tags,
463
479
  excludeTags = ['offensive'],
464
480
  pageNumber,
465
481
  pageSize,
@@ -482,7 +498,15 @@ export class AssetsModule {
482
498
 
483
499
  const tokens = await this.#fetch(
484
500
  'search',
485
- { baseAssetName: baseAssetNames, lifecycleStatus, query, excludeTags, pageNumber, pageSize },
501
+ {
502
+ baseAssetName: baseAssetNames,
503
+ lifecycleStatus,
504
+ query,
505
+ tags,
506
+ excludeTags,
507
+ pageNumber,
508
+ pageSize,
509
+ },
486
510
  'tokens'
487
511
  )
488
512
  const validTokens = tokens.filter(this.#isValidCustomToken)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exodus/assets-feature",
3
- "version": "9.0.1",
3
+ "version": "9.1.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",
@@ -37,10 +37,11 @@
37
37
  "dependencies": {
38
38
  "@exodus/asset-legacy-token-name-mapping": "^1.4.0",
39
39
  "@exodus/asset-lib": "^5.3.0",
40
- "@exodus/asset-schema-validation": "^1.0.1",
40
+ "@exodus/asset-schema-validation": "^1.2.0",
41
+ "@exodus/asset-types": "^0.3.0",
41
42
  "@exodus/assets": "^11.3.0",
42
- "@exodus/atoms": "^9.0.0",
43
- "@exodus/basic-utils": "^3.6.0",
43
+ "@exodus/atoms": "^10.3.3",
44
+ "@exodus/basic-utils": "^5.0.0",
44
45
  "@exodus/fetch": "^1.3.0",
45
46
  "@exodus/fusion-atoms": "^1.4.0",
46
47
  "@exodus/timer": "^1.1.2",
@@ -55,12 +56,12 @@
55
56
  "@exodus/bip39": "^1.1.0",
56
57
  "@exodus/bip44-constants": "^195.0.0",
57
58
  "@exodus/bitcoin-meta": "^2.0.0",
58
- "@exodus/bitcoin-plugin": "^1.29.1",
59
- "@exodus/bitcoinregtest-plugin": "^1.11.0",
60
- "@exodus/bitcointestnet-plugin": "^1.13.1",
61
- "@exodus/blockchain-metadata": "^17.1.0",
59
+ "@exodus/bitcoin-plugin": "^2.0.0",
60
+ "@exodus/bitcoinregtest-plugin": "^2.0.0",
61
+ "@exodus/bitcointestnet-plugin": "^2.0.0",
62
+ "@exodus/blockchain-metadata": "^17.1.1",
62
63
  "@exodus/cardano-lib": "^4.0.0",
63
- "@exodus/combined-assets-meta": "^3.0.0",
64
+ "@exodus/combined-assets-meta": "^3.7.0",
64
65
  "@exodus/cosmos-plugin": "^1.3.3",
65
66
  "@exodus/ethereum-lib": "^5.0.0",
66
67
  "@exodus/ethereum-meta": "^2.0.0",
@@ -68,12 +69,12 @@
68
69
  "@exodus/fusion-local": "^2.1.0",
69
70
  "@exodus/keychain": "^9.0.3",
70
71
  "@exodus/logger": "^1.2.3",
71
- "@exodus/models": "^12.19.0",
72
+ "@exodus/models": "^13.2.0",
72
73
  "@exodus/osmosis-plugin": "^1.3.3",
73
74
  "@exodus/public-key-provider": "^4.2.1",
74
- "@exodus/redux-dependency-injection": "^4.1.2",
75
- "@exodus/storage-memory": "^2.3.0",
76
- "@exodus/wallet-accounts": "^20.2.1",
75
+ "@exodus/redux-dependency-injection": "^4.2.0",
76
+ "@exodus/storage-memory": "^2.4.0",
77
+ "@exodus/wallet-accounts": "^20.4.3",
77
78
  "@exodus/wild-emitter": "^1.0.0",
78
79
  "events": "^3.3.0",
79
80
  "msw": "^2.0.0",
@@ -83,5 +84,5 @@
83
84
  "access": "public",
84
85
  "provenance": false
85
86
  },
86
- "gitHead": "6dc89086935fcd111dfd71ac8d05c7f40861de72"
87
+ "gitHead": "b58f4d5c33731861e8613ff3321f55a54463267b"
87
88
  }