@exodus/assets-feature 9.2.2 → 9.2.4

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,23 @@
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.2.4](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@9.2.3...@exodus/assets-feature@9.2.4) (2026-06-26)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **assets-feature:** preserve tags in filterBuiltInProps ([#17372](https://github.com/ExodusMovement/exodus-hydra/issues/17372)) ([8435a56](https://github.com/ExodusMovement/exodus-hydra/commit/8435a565b133d84aa9f938b4707d7c14718e70e0))
11
+
12
+ ## [9.2.3](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@9.2.2...@exodus/assets-feature@9.2.3) (2026-06-02)
13
+
14
+ ### Features
15
+
16
+ - **keychain:** expose needed exports at the root ([#16638](https://github.com/ExodusMovement/exodus-hydra/issues/16638)) ([30b1e96](https://github.com/ExodusMovement/exodus-hydra/commit/30b1e9644d476958f8a8c53e36a87dec3d27c7fb)), closes [#16361](https://github.com/ExodusMovement/exodus-hydra/issues/16361) [#16361](https://github.com/ExodusMovement/exodus-hydra/issues/16361)
17
+ - **typescript:** enable erasableSyntaxOnly across the monorepo ([#16435](https://github.com/ExodusMovement/exodus-hydra/issues/16435)) ([6055ee5](https://github.com/ExodusMovement/exodus-hydra/commit/6055ee57210c9b9a6a67dc0d7b8821077da121e0))
18
+
19
+ ### Bug Fixes
20
+
21
+ - restore precise public types in exchange & assets-feature apis ([#16938](https://github.com/ExodusMovement/exodus-hydra/issues/16938)) ([0c767ee](https://github.com/ExodusMovement/exodus-hydra/commit/0c767ee5fd13990f4cf87445b91f599fdf2b753b)), closes [#16940](https://github.com/ExodusMovement/exodus-hydra/issues/16940)
22
+
6
23
  ## [9.2.2](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@9.2.1...@exodus/assets-feature@9.2.2) (2026-04-22)
7
24
 
8
25
  ### Bug Fixes
package/README.md CHANGED
@@ -5,7 +5,7 @@ This Exodus SDK feature provides access to instances of all blockchain asset ada
5
5
  ## Install
6
6
 
7
7
  ```sh
8
- yarn add @exodus/assets-feature
8
+ pnpm add @exodus/assets-feature
9
9
  ```
10
10
 
11
11
  ## Usage
package/api/index.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  type Asset = any
2
2
 
3
- export enum TokenStatus {
4
- CURATED = 'c',
5
- DISABLED = 'd',
6
- UNVERIFIED = 'u',
7
- VERIFIED = 'v',
8
- }
3
+ export const TokenStatus = {
4
+ CURATED: 'c',
5
+ DISABLED: 'd',
6
+ UNVERIFIED: 'u',
7
+ VERIFIED: 'v',
8
+ } as const
9
+
10
+ export type TokenStatus = (typeof TokenStatus)[keyof typeof TokenStatus]
9
11
 
10
12
  Object.setPrototypeOf(TokenStatus, null)
11
13
 
@@ -21,6 +23,7 @@ declare const assetsApiDefinition: {
21
23
  }
22
24
  assets: {
23
25
  fetchToken(assetId: string, baseAssetName: string): Asset
26
+ fetchTokens(assetDescriptors: { assetId: string; baseAssetName: string }[]): Promise<Asset[]>
24
27
  searchTokens(params: {
25
28
  baseAssetName?: string | string[]
26
29
  lifecycleStatus?: TokenStatus[]
package/index.js CHANGED
@@ -47,7 +47,7 @@ const assets = (config = Object.create(null)) => {
47
47
  },
48
48
  { definition: assetsApiDefinition },
49
49
  // TODO: add storage namespace once we remove customTokensStorage
50
- // eslint-disable-next-line @exodus/hydra/missing-storage-namespace
50
+ // oxlint-disable-next-line @exodus/oxlint-plugin-hydra/missing-storage-namespace
51
51
  {
52
52
  definition: assetModuleDefinition,
53
53
  // storage: { namespace: 'customTokens' },
@@ -27,7 +27,7 @@ import { validateCustomToken } from '@exodus/asset-schema-validation'
27
27
  import makeConcurrent from 'make-concurrent'
28
28
  import oldToNewStyleTokenNames from '@exodus/asset-legacy-token-name-mapping'
29
29
 
30
- // eslint-disable-next-line @exodus/basic-utils/prefer-basic-utils
30
+ // oxlint-disable-next-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
31
31
  const { get, isEmpty, once, uniq, chunk, pick } = lodash
32
32
 
33
33
  const getFetchCacheKey = (baseAssetName, assetId) => `${assetId}-${baseAssetName}`
@@ -37,8 +37,8 @@ const _isDisabledCustomToken = (token) => token.lifecycleStatus === STATUS.DISAB
37
37
  const normalizeToken = (token) => ({
38
38
  ...token,
39
39
  name: token.name || token.assetName,
40
- displayName: token.displayName || token.properName, // eslint-disable-line @exodus/hydra/no-asset-proper
41
- displayTicker: token.displayTicker || token.properTicker, // eslint-disable-line @exodus/hydra/no-asset-proper
40
+ displayName: token.displayName || token.properName, // oxlint-disable-line @exodus/oxlint-plugin-hydra/no-asset-proper
41
+ displayTicker: token.displayTicker || token.properTicker, // oxlint-disable-line @exodus/oxlint-plugin-hydra/no-asset-proper
42
42
  })
43
43
 
44
44
  const initialAssetRegistry = {
@@ -190,7 +190,7 @@ export class AssetsModule {
190
190
  const storedTokens = await this.#readCustomTokens()
191
191
  const tokens = pickBy(storedTokens, ({ baseAssetName }) => {
192
192
  const baseAsset = this.getAsset(baseAssetName)
193
- return baseAsset?.api?.hasFeature?.('customTokens')
193
+ return baseAsset?.api?.features?.customTokens
194
194
  })
195
195
 
196
196
  // tokens may be:
@@ -430,7 +430,7 @@ export class AssetsModule {
430
430
  const versionedAssetNames = await this.#getVersionedAssetNames()
431
431
  const updatableAssetNames = versionedAssetNames.filter(({ assetName }) => {
432
432
  const asset = this.getAsset(assetName)
433
- return !asset?.isBuiltIn && asset?.baseAsset.api?.hasFeature?.('customTokens')
433
+ return !asset?.isBuiltIn && asset?.baseAsset.api?.features?.customTokens
434
434
  })
435
435
  if (updatableAssetNames.length === 0) return
436
436
 
@@ -499,8 +499,8 @@ export class AssetsModule {
499
499
  }
500
500
 
501
501
  #getCustomTokensNetworkNames = () =>
502
- this.getBaseAssetNames().filter((assetName) =>
503
- this.getAsset(assetName).api?.hasFeature?.('customTokens')
502
+ this.getBaseAssetNames().filter(
503
+ (assetName) => this.getAsset(assetName).api?.features?.customTokens
504
504
  )
505
505
 
506
506
  #fetchTokensByNames = async ({ tokenNames, allowedStatusList }) => {
@@ -691,7 +691,7 @@ export class AssetsModule {
691
691
 
692
692
  #assertSupportsCustomTokens = (baseAssetName) => {
693
693
  const baseAsset = this.getAsset(baseAssetName)
694
- if (!baseAsset?.api?.hasFeature('customTokens')) {
694
+ if (!baseAsset?.api?.features?.customTokens) {
695
695
  const reason = `BUG: network ${baseAsset?.name} does not support custom tokens.`
696
696
  this.#logger.warn(reason)
697
697
  throw new Error(reason)
package/module/utils.js CHANGED
@@ -61,6 +61,7 @@ const FILTERED_FIELDS = [
61
61
  'primaryColor',
62
62
  'properName',
63
63
  'properTicker',
64
+ 'tags',
64
65
  'ticker',
65
66
  ]
66
67
 
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@exodus/assets-feature",
3
- "version": "9.2.2",
3
+ "version": "9.2.4",
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",
7
7
  "main": "index.js",
8
8
  "author": "Exodus Movement, Inc.",
9
9
  "scripts": {
10
- "test": "run -T exodus-test --jest",
11
- "lint": "run -T eslint .",
12
- "lint:fix": "yarn lint --fix"
10
+ "test": "pnpm exec exodus-test --jest",
11
+ "lint": "pnpm exec eslint .",
12
+ "lint:fix": "pnpm run lint --fix"
13
13
  },
14
14
  "files": [
15
15
  "api",
@@ -53,13 +53,14 @@
53
53
  },
54
54
  "devDependencies": {
55
55
  "@exodus/available-assets": "^8.11.0",
56
+ "@exodus/bip32": "^4.3.0",
56
57
  "@exodus/bip39": "^1.1.0",
57
58
  "@exodus/bip44-constants": "^195.0.0",
58
59
  "@exodus/bitcoin-meta": "^2.0.0",
59
60
  "@exodus/bitcoin-plugin": "^2.0.0",
60
61
  "@exodus/bitcoinregtest-plugin": "^2.0.0",
61
62
  "@exodus/bitcointestnet-plugin": "^2.0.0",
62
- "@exodus/blockchain-metadata": "^17.1.1",
63
+ "@exodus/blockchain-metadata": "^17.2.0",
63
64
  "@exodus/cardano-lib": "^4.0.0",
64
65
  "@exodus/combined-assets-meta": "^3.7.0",
65
66
  "@exodus/cosmos-plugin": "^1.3.3",
@@ -67,14 +68,14 @@
67
68
  "@exodus/ethereum-meta": "^2.0.0",
68
69
  "@exodus/ethereum-plugin": "^2.7.4",
69
70
  "@exodus/fusion-local": "^2.1.0",
70
- "@exodus/keychain": "^9.0.3",
71
+ "@exodus/keychain": "^12.0.0",
71
72
  "@exodus/logger": "^1.2.3",
72
- "@exodus/models": "^13.2.1",
73
+ "@exodus/models": "^13.3.1",
73
74
  "@exodus/osmosis-plugin": "^1.3.3",
74
- "@exodus/public-key-provider": "^4.2.1",
75
- "@exodus/redux-dependency-injection": "^4.2.0",
75
+ "@exodus/public-key-provider": "^4.3.1",
76
+ "@exodus/redux-dependency-injection": "^5.0.0",
76
77
  "@exodus/storage-memory": "^2.4.0",
77
- "@exodus/wallet-accounts": "^20.4.3",
78
+ "@exodus/wallet-accounts": "^20.4.8",
78
79
  "@exodus/wild-emitter": "^1.0.0",
79
80
  "events": "^3.3.0",
80
81
  "msw": "^2.0.0",
@@ -84,5 +85,5 @@
84
85
  "access": "public",
85
86
  "provenance": false
86
87
  },
87
- "gitHead": "95974d24064fcb294f4ad618cf17d12f6719d303"
88
+ "gitHead": "15bc530ddbb4d8dc9a459ef954bda419320186ad"
88
89
  }
package/plugin/index.js CHANGED
@@ -21,7 +21,7 @@ const createAssetsPlugin = ({
21
21
  const payload = {
22
22
  assets,
23
23
  defaultAccountStates: mapValues(
24
- pickBy(assets, (asset) => asset.api?.hasFeature?.('accountState')),
24
+ pickBy(assets, (asset) => asset.api?.features?.accountState),
25
25
  (asset) => asset.api.createAccountState().create()
26
26
  ),
27
27
  }
@@ -4,7 +4,7 @@ import { createSelector } from 'reselect'
4
4
  // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
5
5
  import lodash from 'lodash'
6
6
 
7
- const { memoize } = lodash // eslint-disable-line @exodus/basic-utils/prefer-basic-utils
7
+ const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
8
8
 
9
9
  const allAssetsSelectorDefinition = {
10
10
  id: 'all',