@metamask-previews/assets-controller 14.0.2-preview-4f4c98e → 14.0.2-preview-eb263b0ee
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 +0 -5
- package/dist/AssetsController-method-action-types.cjs +7 -0
- package/dist/AssetsController-method-action-types.cjs.map +1 -0
- package/dist/{AssetsController-method-action-types.d.ts → AssetsController-method-action-types.d.cts} +2 -2
- package/dist/AssetsController-method-action-types.d.cts.map +1 -0
- package/dist/AssetsController-method-action-types.d.mts +181 -0
- package/dist/AssetsController-method-action-types.d.mts.map +1 -0
- package/dist/{AssetsController-method-action-types.js → AssetsController-method-action-types.mjs} +1 -1
- package/dist/AssetsController-method-action-types.mjs.map +1 -0
- package/dist/AssetsController.cjs +2559 -0
- package/dist/AssetsController.cjs.map +1 -0
- package/dist/{AssetsController.d.ts → AssetsController.d.cts} +30 -30
- package/dist/AssetsController.d.cts.map +1 -0
- package/dist/AssetsController.d.mts +395 -0
- package/dist/AssetsController.d.mts.map +1 -0
- package/dist/{AssetsController.js → AssetsController.mjs} +29 -28
- package/dist/AssetsController.mjs.map +1 -0
- package/dist/data-sources/AbstractDataSource.cjs +111 -0
- package/dist/data-sources/AbstractDataSource.cjs.map +1 -0
- package/dist/data-sources/{AbstractDataSource.d.ts → AbstractDataSource.d.cts} +2 -2
- package/dist/data-sources/AbstractDataSource.d.cts.map +1 -0
- package/dist/data-sources/AbstractDataSource.d.mts +113 -0
- package/dist/data-sources/AbstractDataSource.d.mts.map +1 -0
- package/dist/data-sources/{AbstractDataSource.js → AbstractDataSource.mjs} +1 -1
- package/dist/data-sources/AbstractDataSource.mjs.map +1 -0
- package/dist/data-sources/AccountActivityDataSource.cjs +267 -0
- package/dist/data-sources/AccountActivityDataSource.cjs.map +1 -0
- package/dist/data-sources/{AccountActivityDataSource.d.ts → AccountActivityDataSource.d.cts} +6 -6
- package/dist/data-sources/AccountActivityDataSource.d.cts.map +1 -0
- package/dist/data-sources/AccountActivityDataSource.d.mts +80 -0
- package/dist/data-sources/AccountActivityDataSource.d.mts.map +1 -0
- package/dist/data-sources/{AccountActivityDataSource.js → AccountActivityDataSource.mjs} +11 -11
- package/dist/data-sources/AccountActivityDataSource.mjs.map +1 -0
- package/dist/data-sources/AccountsApiDataSource.cjs +586 -0
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -0
- package/dist/data-sources/{AccountsApiDataSource.d.ts → AccountsApiDataSource.d.cts} +7 -7
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -0
- package/dist/data-sources/AccountsApiDataSource.d.mts +82 -0
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -0
- package/dist/data-sources/{AccountsApiDataSource.js → AccountsApiDataSource.mjs} +8 -7
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -0
- package/dist/data-sources/PriceDataSource.cjs +466 -0
- package/dist/data-sources/PriceDataSource.cjs.map +1 -0
- package/dist/data-sources/{PriceDataSource.d.ts → PriceDataSource.d.cts} +5 -5
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -0
- package/dist/data-sources/PriceDataSource.d.mts +100 -0
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -0
- package/dist/data-sources/{PriceDataSource.js → PriceDataSource.mjs} +8 -7
- package/dist/data-sources/PriceDataSource.mjs.map +1 -0
- package/dist/data-sources/RpcDataSource.cjs +1021 -0
- package/dist/data-sources/RpcDataSource.cjs.map +1 -0
- package/dist/data-sources/{RpcDataSource.d.ts → RpcDataSource.d.cts} +10 -10
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -0
- package/dist/data-sources/RpcDataSource.d.mts +174 -0
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -0
- package/dist/data-sources/{RpcDataSource.js → RpcDataSource.mjs} +11 -11
- package/dist/data-sources/RpcDataSource.mjs.map +1 -0
- package/dist/data-sources/SnapDataSource.cjs +443 -0
- package/dist/data-sources/SnapDataSource.cjs.map +1 -0
- package/dist/data-sources/{SnapDataSource.d.ts → SnapDataSource.d.cts} +8 -8
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -0
- package/dist/data-sources/SnapDataSource.d.mts +127 -0
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -0
- package/dist/data-sources/{SnapDataSource.js → SnapDataSource.mjs} +6 -6
- package/dist/data-sources/SnapDataSource.mjs.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.cjs +616 -0
- package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -0
- package/dist/data-sources/{StakedBalanceDataSource.d.ts → StakedBalanceDataSource.d.cts} +5 -5
- package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.d.mts +72 -0
- package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -0
- package/dist/data-sources/{StakedBalanceDataSource.js → StakedBalanceDataSource.mjs} +7 -7
- package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -0
- package/dist/data-sources/TokenDataSource.cjs +583 -0
- package/dist/data-sources/TokenDataSource.cjs.map +1 -0
- package/dist/data-sources/{TokenDataSource.d.ts → TokenDataSource.d.cts} +5 -5
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -0
- package/dist/data-sources/TokenDataSource.d.mts +81 -0
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -0
- package/dist/data-sources/{TokenDataSource.js → TokenDataSource.mjs} +8 -7
- package/dist/data-sources/TokenDataSource.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs +705 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.d.ts → MulticallClient.d.cts} +3 -3
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts +65 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.js → MulticallClient.mjs} +5 -5
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs +312 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{TokensApiClient.d.ts → TokensApiClient.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts +61 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{TokensApiClient.js → TokensApiClient.mjs} +2 -2
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.cjs +10 -0
- package/dist/data-sources/evm-rpc-services/clients/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.cts +4 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.mts +4 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.mjs +3 -0
- package/dist/data-sources/evm-rpc-services/clients/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/index.cjs +17 -0
- package/dist/data-sources/evm-rpc-services/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/{index.d.ts → index.d.cts} +5 -5
- package/dist/data-sources/evm-rpc-services/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/index.d.mts +5 -0
- package/dist/data-sources/evm-rpc-services/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/index.mjs +4 -0
- package/dist/data-sources/evm-rpc-services/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +247 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{BalanceFetcher.d.ts → BalanceFetcher.d.cts} +11 -11
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts +96 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{BalanceFetcher.js → BalanceFetcher.mjs} +5 -5
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs +132 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{StakedBalanceFetcher.d.ts → StakedBalanceFetcher.d.cts} +14 -13
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts +81 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{StakedBalanceFetcher.js → StakedBalanceFetcher.mjs} +6 -5
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs +230 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{TokenDetector.d.ts → TokenDetector.d.cts} +12 -12
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts +78 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{TokenDetector.js → TokenDetector.mjs} +4 -4
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.cjs +13 -0
- package/dist/data-sources/evm-rpc-services/services/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{index.d.ts → index.d.cts} +4 -4
- package/dist/data-sources/evm-rpc-services/services/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.mts +4 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.mjs +4 -0
- package/dist/data-sources/evm-rpc-services/services/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/assets.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/assets.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{assets.d.ts → assets.d.cts} +3 -3
- package/dist/data-sources/evm-rpc-services/types/assets.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/assets.d.mts +53 -0
- package/dist/data-sources/evm-rpc-services/types/assets.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/assets.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/assets.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/config.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/config.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{config.d.ts → config.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/config.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/config.d.mts +18 -0
- package/dist/data-sources/evm-rpc-services/types/config.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/config.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/config.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/core.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/core.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{core.d.ts → core.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/core.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/core.d.mts +19 -0
- package/dist/data-sources/evm-rpc-services/types/core.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/core.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/core.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.cts +7 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.mts +7 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{multicall.d.ts → multicall.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/multicall.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.d.mts +24 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/services.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/services.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{services.d.ts → services.d.cts} +3 -3
- package/dist/data-sources/evm-rpc-services/types/services.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/services.d.mts +70 -0
- package/dist/data-sources/evm-rpc-services/types/services.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/services.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/services.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/state.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/state.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{state.d.ts → state.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/state.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/state.d.mts +58 -0
- package/dist/data-sources/evm-rpc-services/types/state.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/state.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/state.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.cjs +9 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{assets.d.ts → assets.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/utils/assets.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.d.mts +3 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{assets.js → assets.mjs} +2 -2
- package/dist/data-sources/evm-rpc-services/utils/assets.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.cjs +45 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{batch.d.ts → batch.d.cts} +1 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.d.mts +28 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{batch.js → batch.mjs} +1 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.cjs +15 -0
- package/dist/data-sources/evm-rpc-services/utils/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts +4 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts +4 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.mjs +4 -0
- package/dist/data-sources/evm-rpc-services/utils/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.cjs +47 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{parsing.d.ts → parsing.d.cts} +3 -3
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{parsing.js → parsing.mjs} +3 -3
- package/dist/data-sources/evm-rpc-services/utils/parsing.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs +68 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{staking-contracts.d.ts → staking-contracts.d.cts} +1 -1
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{staking-contracts.js → staking-contracts.mjs} +3 -3
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs.map +1 -0
- package/dist/data-sources/index.cjs +30 -0
- package/dist/data-sources/index.cjs.map +1 -0
- package/dist/data-sources/{index.d.ts → index.d.cts} +9 -9
- package/dist/data-sources/index.d.cts.map +1 -0
- package/dist/data-sources/index.d.mts +9 -0
- package/dist/data-sources/index.d.mts.map +1 -0
- package/dist/data-sources/index.mjs +14 -0
- package/dist/data-sources/index.mjs.map +1 -0
- package/dist/defaults.cjs +125 -0
- package/dist/defaults.cjs.map +1 -0
- package/dist/{defaults.d.ts → defaults.d.cts} +2 -2
- package/dist/defaults.d.cts.map +1 -0
- package/dist/defaults.d.mts +50 -0
- package/dist/defaults.d.mts.map +1 -0
- package/dist/{defaults.js → defaults.mjs} +1 -1
- package/dist/defaults.mjs.map +1 -0
- package/dist/errors.cjs +25 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/{errors.d.ts → errors.d.cts} +1 -1
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +25 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/{errors.js → errors.mjs} +1 -1
- package/dist/errors.mjs.map +1 -0
- package/dist/index.cjs +67 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{index.d.ts → index.d.cts} +26 -26
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +26 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/{index.js → index.mjs} +13 -13
- package/dist/index.mjs.map +1 -0
- package/dist/logger.cjs +7 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/logger.d.cts +5 -0
- package/dist/logger.d.cts.map +1 -0
- package/dist/logger.d.mts +5 -0
- package/dist/logger.d.mts.map +1 -0
- package/dist/logger.mjs +4 -0
- package/dist/logger.mjs.map +1 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs +132 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs.map +1 -0
- package/dist/middlewares/{CustomAssetGraduationMiddleware.d.ts → CustomAssetGraduationMiddleware.d.cts} +2 -2
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts.map +1 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts +32 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{CustomAssetGraduationMiddleware.js → CustomAssetGraduationMiddleware.mjs} +5 -5
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs.map +1 -0
- package/dist/middlewares/DetectionMiddleware.cjs +154 -0
- package/dist/middlewares/DetectionMiddleware.cjs.map +1 -0
- package/dist/middlewares/{DetectionMiddleware.d.ts → DetectionMiddleware.d.cts} +2 -2
- package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -0
- package/dist/middlewares/DetectionMiddleware.d.mts +40 -0
- package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{DetectionMiddleware.js → DetectionMiddleware.mjs} +4 -4
- package/dist/middlewares/DetectionMiddleware.mjs.map +1 -0
- package/dist/middlewares/ParallelMiddleware.cjs +263 -0
- package/dist/middlewares/ParallelMiddleware.cjs.map +1 -0
- package/dist/middlewares/{ParallelMiddleware.d.ts → ParallelMiddleware.d.cts} +2 -2
- package/dist/middlewares/ParallelMiddleware.d.cts.map +1 -0
- package/dist/middlewares/ParallelMiddleware.d.mts +41 -0
- package/dist/middlewares/ParallelMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{ParallelMiddleware.js → ParallelMiddleware.mjs} +9 -2
- package/dist/middlewares/{ParallelMiddleware.js.map → ParallelMiddleware.mjs.map} +1 -1
- package/dist/middlewares/RpcFallbackMiddleware.cjs +90 -0
- package/dist/middlewares/RpcFallbackMiddleware.cjs.map +1 -0
- package/dist/middlewares/{RpcFallbackMiddleware.d.ts → RpcFallbackMiddleware.d.cts} +2 -2
- package/dist/middlewares/RpcFallbackMiddleware.d.cts.map +1 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.mts +23 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{RpcFallbackMiddleware.js → RpcFallbackMiddleware.mjs} +4 -4
- package/dist/middlewares/RpcFallbackMiddleware.mjs.map +1 -0
- package/dist/middlewares/index.cjs +14 -0
- package/dist/middlewares/index.cjs.map +1 -0
- package/dist/middlewares/index.d.cts +9 -0
- package/dist/middlewares/index.d.cts.map +1 -0
- package/dist/middlewares/index.d.mts +9 -0
- package/dist/middlewares/index.d.mts.map +1 -0
- package/dist/middlewares/index.mjs +5 -0
- package/dist/middlewares/index.mjs.map +1 -0
- package/dist/migrations/healAssetsInfoMetadata.cjs +385 -0
- package/dist/migrations/healAssetsInfoMetadata.cjs.map +1 -0
- package/dist/migrations/{healAssetsInfoMetadata.d.ts → healAssetsInfoMetadata.d.cts} +4 -4
- package/dist/migrations/healAssetsInfoMetadata.d.cts.map +1 -0
- package/dist/migrations/healAssetsInfoMetadata.d.mts +106 -0
- package/dist/migrations/healAssetsInfoMetadata.d.mts.map +1 -0
- package/dist/migrations/{healAssetsInfoMetadata.js → healAssetsInfoMetadata.mjs} +5 -4
- package/dist/migrations/healAssetsInfoMetadata.mjs.map +1 -0
- package/dist/selectors/balance.cjs +532 -0
- package/dist/selectors/balance.cjs.map +1 -0
- package/dist/selectors/{balance.d.ts → balance.d.cts} +6 -6
- package/dist/selectors/balance.d.cts.map +1 -0
- package/dist/selectors/balance.d.mts +103 -0
- package/dist/selectors/balance.d.mts.map +1 -0
- package/dist/selectors/{balance.js → balance.mjs} +5 -5
- package/dist/selectors/balance.mjs.map +1 -0
- package/dist/types.cjs +39 -0
- package/dist/types.cjs.map +1 -0
- package/dist/{types.d.ts → types.d.cts} +4 -4
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +533 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/{types.js → types.mjs} +1 -1
- package/dist/types.mjs.map +1 -0
- package/dist/utils/constants.cjs +5 -0
- package/dist/utils/constants.cjs.map +1 -0
- package/dist/utils/constants.d.cts +2 -0
- package/dist/utils/constants.d.cts.map +1 -0
- package/dist/utils/constants.d.mts +2 -0
- package/dist/utils/constants.d.mts.map +1 -0
- package/dist/utils/{constants.js → constants.mjs} +1 -1
- package/dist/utils/constants.mjs.map +1 -0
- package/dist/utils/customAssetsRpcSupplement.cjs +72 -0
- package/dist/utils/customAssetsRpcSupplement.cjs.map +1 -0
- package/dist/utils/{customAssetsRpcSupplement.d.ts → customAssetsRpcSupplement.d.cts} +2 -2
- package/dist/utils/customAssetsRpcSupplement.d.cts.map +1 -0
- package/dist/utils/customAssetsRpcSupplement.d.mts +60 -0
- package/dist/utils/customAssetsRpcSupplement.d.mts.map +1 -0
- package/dist/utils/{customAssetsRpcSupplement.js → customAssetsRpcSupplement.mjs} +2 -2
- package/dist/utils/customAssetsRpcSupplement.mjs.map +1 -0
- package/dist/utils/dedupingBatchFetcher.cjs +168 -0
- package/dist/utils/dedupingBatchFetcher.cjs.map +1 -0
- package/dist/utils/{dedupingBatchFetcher.d.ts → dedupingBatchFetcher.d.cts} +1 -1
- package/dist/utils/dedupingBatchFetcher.d.cts.map +1 -0
- package/dist/utils/dedupingBatchFetcher.d.mts +72 -0
- package/dist/utils/dedupingBatchFetcher.d.mts.map +1 -0
- package/dist/utils/{dedupingBatchFetcher.js → dedupingBatchFetcher.mjs} +1 -1
- package/dist/utils/dedupingBatchFetcher.mjs.map +1 -0
- package/dist/utils/fetchWithTimeout.cjs +30 -0
- package/dist/utils/fetchWithTimeout.cjs.map +1 -0
- package/dist/utils/{fetchWithTimeout.d.ts → fetchWithTimeout.d.cts} +1 -1
- package/dist/utils/fetchWithTimeout.d.cts.map +1 -0
- package/dist/utils/fetchWithTimeout.d.mts +11 -0
- package/dist/utils/fetchWithTimeout.d.mts.map +1 -0
- package/dist/utils/{fetchWithTimeout.js → fetchWithTimeout.mjs} +1 -1
- package/dist/utils/fetchWithTimeout.mjs.map +1 -0
- package/dist/utils/formatExchangeRatesForBridge.cjs +161 -0
- package/dist/utils/formatExchangeRatesForBridge.cjs.map +1 -0
- package/dist/utils/{formatExchangeRatesForBridge.d.ts → formatExchangeRatesForBridge.d.cts} +3 -3
- package/dist/utils/formatExchangeRatesForBridge.d.cts.map +1 -0
- package/dist/utils/formatExchangeRatesForBridge.d.mts +43 -0
- package/dist/utils/formatExchangeRatesForBridge.d.mts.map +1 -0
- package/dist/utils/{formatExchangeRatesForBridge.js → formatExchangeRatesForBridge.mjs} +7 -6
- package/dist/utils/formatExchangeRatesForBridge.mjs.map +1 -0
- package/dist/utils/formatStateForTransactionPay.cjs +174 -0
- package/dist/utils/formatStateForTransactionPay.cjs.map +1 -0
- package/dist/utils/{formatStateForTransactionPay.d.ts → formatStateForTransactionPay.d.cts} +3 -3
- package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -0
- package/dist/utils/formatStateForTransactionPay.d.mts +72 -0
- package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -0
- package/dist/utils/{formatStateForTransactionPay.js → formatStateForTransactionPay.mjs} +8 -7
- package/dist/utils/formatStateForTransactionPay.mjs.map +1 -0
- package/dist/utils/index.cjs +21 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +9 -0
- package/dist/utils/index.d.cts.map +1 -0
- package/dist/utils/index.d.mts +9 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +7 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/native-assets.cjs +64 -0
- package/dist/utils/native-assets.cjs.map +1 -0
- package/dist/utils/{native-assets.d.ts → native-assets.d.cts} +2 -2
- package/dist/utils/native-assets.d.cts.map +1 -0
- package/dist/utils/native-assets.d.mts +19 -0
- package/dist/utils/native-assets.d.mts.map +1 -0
- package/dist/utils/{native-assets.js → native-assets.mjs} +5 -5
- package/dist/utils/native-assets.mjs.map +1 -0
- package/dist/utils/normalizeAmountString.cjs +64 -0
- package/dist/utils/normalizeAmountString.cjs.map +1 -0
- package/dist/utils/{normalizeAmountString.d.ts → normalizeAmountString.d.cts} +1 -1
- package/dist/utils/normalizeAmountString.d.cts.map +1 -0
- package/dist/utils/normalizeAmountString.d.mts +35 -0
- package/dist/utils/normalizeAmountString.d.mts.map +1 -0
- package/dist/utils/{normalizeAmountString.js → normalizeAmountString.mjs} +2 -2
- package/dist/utils/normalizeAmountString.mjs.map +1 -0
- package/dist/utils/normalizeAssetId.cjs +60 -0
- package/dist/utils/normalizeAssetId.cjs.map +1 -0
- package/dist/utils/{normalizeAssetId.d.ts → normalizeAssetId.d.cts} +3 -3
- package/dist/utils/normalizeAssetId.d.cts.map +1 -0
- package/dist/utils/normalizeAssetId.d.mts +32 -0
- package/dist/utils/normalizeAssetId.d.mts.map +1 -0
- package/dist/utils/{normalizeAssetId.js → normalizeAssetId.mjs} +11 -4
- package/dist/utils/normalizeAssetId.mjs.map +1 -0
- package/dist/utils/snaps-assets-migration.cjs +171 -0
- package/dist/utils/snaps-assets-migration.cjs.map +1 -0
- package/dist/utils/{snaps-assets-migration.d.ts → snaps-assets-migration.d.cts} +5 -5
- package/dist/utils/snaps-assets-migration.d.cts.map +1 -0
- package/dist/utils/snaps-assets-migration.d.mts +113 -0
- package/dist/utils/snaps-assets-migration.d.mts.map +1 -0
- package/dist/utils/{snaps-assets-migration.js → snaps-assets-migration.mjs} +2 -2
- package/dist/utils/snaps-assets-migration.mjs.map +1 -0
- package/dist/utils/trace.cjs +120 -0
- package/dist/utils/trace.cjs.map +1 -0
- package/dist/utils/{trace.d.ts → trace.d.cts} +2 -2
- package/dist/utils/trace.d.cts.map +1 -0
- package/dist/utils/trace.d.mts +52 -0
- package/dist/utils/trace.d.mts.map +1 -0
- package/dist/utils/{trace.js → trace.mjs} +1 -1
- package/dist/utils/trace.mjs.map +1 -0
- package/package.json +18 -15
- package/dist/AssetsController-method-action-types.d.ts.map +0 -1
- package/dist/AssetsController-method-action-types.js.map +0 -1
- package/dist/AssetsController.d.ts.map +0 -1
- package/dist/AssetsController.js.map +0 -1
- package/dist/data-sources/AbstractDataSource.d.ts.map +0 -1
- package/dist/data-sources/AbstractDataSource.js.map +0 -1
- package/dist/data-sources/AccountActivityDataSource.d.ts.map +0 -1
- package/dist/data-sources/AccountActivityDataSource.js.map +0 -1
- package/dist/data-sources/AccountsApiDataSource.d.ts.map +0 -1
- package/dist/data-sources/AccountsApiDataSource.js.map +0 -1
- package/dist/data-sources/PriceDataSource.d.ts.map +0 -1
- package/dist/data-sources/PriceDataSource.js.map +0 -1
- package/dist/data-sources/RpcDataSource.d.ts.map +0 -1
- package/dist/data-sources/RpcDataSource.js.map +0 -1
- package/dist/data-sources/SnapDataSource.d.ts.map +0 -1
- package/dist/data-sources/SnapDataSource.js.map +0 -1
- package/dist/data-sources/StakedBalanceDataSource.d.ts.map +0 -1
- package/dist/data-sources/StakedBalanceDataSource.js.map +0 -1
- package/dist/data-sources/TokenDataSource.d.ts.map +0 -1
- package/dist/data-sources/TokenDataSource.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/index.d.ts +0 -4
- package/dist/data-sources/evm-rpc-services/clients/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/index.js +0 -3
- package/dist/data-sources/evm-rpc-services/clients/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/index.js +0 -4
- package/dist/data-sources/evm-rpc-services/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/index.js +0 -4
- package/dist/data-sources/evm-rpc-services/services/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/assets.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/assets.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/assets.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/config.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/config.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/config.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/core.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/core.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/core.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/index.d.ts +0 -7
- package/dist/data-sources/evm-rpc-services/types/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/index.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/multicall.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/multicall.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/multicall.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/services.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/services.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/services.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/state.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/state.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/state.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/assets.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/assets.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/index.d.ts +0 -4
- package/dist/data-sources/evm-rpc-services/utils/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/index.js +0 -4
- package/dist/data-sources/evm-rpc-services/utils/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/parsing.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.js.map +0 -1
- package/dist/data-sources/index.d.ts.map +0 -1
- package/dist/data-sources/index.js +0 -14
- package/dist/data-sources/index.js.map +0 -1
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts +0 -4
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -4
- package/dist/logger.js.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.ts.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.js.map +0 -1
- package/dist/middlewares/DetectionMiddleware.d.ts.map +0 -1
- package/dist/middlewares/DetectionMiddleware.js.map +0 -1
- package/dist/middlewares/ParallelMiddleware.d.ts.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.d.ts.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.js.map +0 -1
- package/dist/middlewares/index.d.ts +0 -9
- package/dist/middlewares/index.d.ts.map +0 -1
- package/dist/middlewares/index.js +0 -5
- package/dist/middlewares/index.js.map +0 -1
- package/dist/migrations/healAssetsInfoMetadata.d.ts.map +0 -1
- package/dist/migrations/healAssetsInfoMetadata.js.map +0 -1
- package/dist/selectors/balance.d.ts.map +0 -1
- package/dist/selectors/balance.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/constants.d.ts +0 -2
- package/dist/utils/constants.d.ts.map +0 -1
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/customAssetsRpcSupplement.d.ts.map +0 -1
- package/dist/utils/customAssetsRpcSupplement.js.map +0 -1
- package/dist/utils/dedupingBatchFetcher.d.ts.map +0 -1
- package/dist/utils/dedupingBatchFetcher.js.map +0 -1
- package/dist/utils/fetchWithTimeout.d.ts.map +0 -1
- package/dist/utils/fetchWithTimeout.js.map +0 -1
- package/dist/utils/formatExchangeRatesForBridge.d.ts.map +0 -1
- package/dist/utils/formatExchangeRatesForBridge.js.map +0 -1
- package/dist/utils/formatStateForTransactionPay.d.ts.map +0 -1
- package/dist/utils/formatStateForTransactionPay.js.map +0 -1
- package/dist/utils/index.d.ts +0 -9
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -7
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/native-assets.d.ts.map +0 -1
- package/dist/utils/native-assets.js.map +0 -1
- package/dist/utils/normalizeAmountString.d.ts.map +0 -1
- package/dist/utils/normalizeAmountString.js.map +0 -1
- package/dist/utils/normalizeAssetId.d.ts.map +0 -1
- package/dist/utils/normalizeAssetId.js.map +0 -1
- package/dist/utils/snaps-assets-migration.d.ts.map +0 -1
- package/dist/utils/snaps-assets-migration.js.map +0 -1
- package/dist/utils/trace.d.ts.map +0 -1
- package/dist/utils/trace.js.map +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { toChecksumAddress } from
|
|
2
|
-
import { getNativeTokenAddress } from
|
|
3
|
-
import { numberToHex } from
|
|
4
|
-
import { parseCaipAssetType, parseCaipChainId } from
|
|
5
|
-
import
|
|
6
|
-
|
|
1
|
+
import { toChecksumAddress } from "@ethereumjs/util";
|
|
2
|
+
import { getNativeTokenAddress } from "@metamask/assets-controllers";
|
|
3
|
+
import { numberToHex } from "@metamask/utils";
|
|
4
|
+
import { parseCaipAssetType, parseCaipChainId } from "@metamask/utils";
|
|
5
|
+
import $lodash from "lodash";
|
|
6
|
+
const { isEqual } = $lodash;
|
|
7
|
+
import { formatExchangeRatesForBridge } from "./formatExchangeRatesForBridge.mjs";
|
|
7
8
|
function amountToHex(amount) {
|
|
8
9
|
const hexString = BigInt(amount).toString(16);
|
|
9
10
|
return `0x${hexString}`;
|
|
@@ -166,4 +167,4 @@ function computeStateForTransactionPay(params) {
|
|
|
166
167
|
currentCurrency: exchangeRates.currentCurrency,
|
|
167
168
|
};
|
|
168
169
|
}
|
|
169
|
-
//# sourceMappingURL=formatStateForTransactionPay.
|
|
170
|
+
//# sourceMappingURL=formatStateForTransactionPay.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatStateForTransactionPay.mjs","sourceRoot":"","sources":["../../src/utils/formatStateForTransactionPay.ts"],"names":[],"mappings":"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","sourcesContent":["import { toChecksumAddress } from '@ethereumjs/util';\nimport { getNativeTokenAddress } from '@metamask/assets-controllers';\nimport { numberToHex } from '@metamask/utils';\nimport { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';\nimport { isEqual } from 'lodash';\n\nimport type {\n AssetBalance,\n AssetMetadata,\n AssetPrice,\n Caip19AssetId,\n} from '../types.js';\nimport { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge.js';\nimport type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge.js';\n\n/** Account with id and address for mapping state to legacy format. */\nexport type AccountForLegacyFormat = { id: string; address: string };\n\n/**\n * Legacy Token shape expected by TokensController / transaction-pay-controller.\n */\nexport type LegacyToken = {\n address: string;\n decimals: number;\n symbol: string;\n name?: string;\n [key: string]: unknown;\n};\n\n/**\n * Legacy state shape that transaction-pay-controller reads from\n * TokenBalancesController, AccountTrackerController, TokensController,\n * TokenRatesController, and CurrencyRateController.\n */\nexport type TransactionPayLegacyFormat = {\n /** TokenBalancesController:getState().tokenBalances */\n tokenBalances: Record<string, Record<string, Record<string, `0x${string}`>>>;\n /** AccountTrackerController:getState().accountsByChainId */\n accountsByChainId: Record<\n string,\n Record<string, { balance: string; stakedBalance?: string }>\n >;\n /** TokensController:getState().allTokens (chainId -> key -> Token[]) */\n allTokens: Record<string, Record<string, LegacyToken[]>>;\n /** TokenRatesController:getState().marketData */\n marketData: BridgeExchangeRatesFormat['marketData'];\n /** CurrencyRateController:getState().currencyRates */\n currencyRates: BridgeExchangeRatesFormat['currencyRates'];\n /** CurrencyRateController:getState().currentCurrency */\n currentCurrency: string;\n};\n\n/** Parameters accepted by {@link formatStateForTransactionPay}. */\nexport type FormatStateForTransactionPayParams = {\n assetsBalance: Record<string, Record<string, AssetBalance>>;\n assetsInfo: Record<string, AssetMetadata>;\n assetsPrice: Record<string, AssetPrice>;\n selectedCurrency: string;\n accounts: AccountForLegacyFormat[];\n nativeAssetIdentifiers: Record<string, string>;\n networkConfigurationsByChainId?: Record<string, { nativeCurrency?: string }>;\n};\n\nfunction amountToHex(amount: string): `0x${string}` {\n const hexString = BigInt(amount).toString(16);\n return `0x${hexString}`;\n}\n\n/**\n * Determines whether two sets of {@link formatStateForTransactionPay}\n * parameters are identical for memoization purposes.\n *\n * State slices (`assetsBalance`, `assetsInfo`, `assetsPrice`,\n * `networkConfigurationsByChainId`) are compared by reference since\n * BaseController state updates are immutable. The `accounts` and\n * `nativeAssetIdentifiers` inputs are rebuilt on every call, so they are\n * compared by value instead.\n *\n * @param a - Previous parameters.\n * @param b - Next parameters.\n * @returns True if the parameters are identical.\n */\nfunction isTransactionPayParamsIdentical(\n a: FormatStateForTransactionPayParams,\n b: FormatStateForTransactionPayParams,\n): boolean {\n return (\n a.assetsBalance === b.assetsBalance &&\n a.assetsInfo === b.assetsInfo &&\n a.assetsPrice === b.assetsPrice &&\n a.selectedCurrency === b.selectedCurrency &&\n a.networkConfigurationsByChainId === b.networkConfigurationsByChainId &&\n isEqual(a.accounts, b.accounts) &&\n isEqual(a.nativeAssetIdentifiers, b.nativeAssetIdentifiers)\n );\n}\n\nfunction getAmountFromBalance(balance: AssetBalance): string {\n return typeof balance === 'object' && balance !== null && 'amount' in balance\n ? String((balance as { amount: string }).amount)\n : '0';\n}\n\nlet lastCall: {\n params: FormatStateForTransactionPayParams;\n result: TransactionPayLegacyFormat;\n} | null = null;\n\n/**\n * Converts AssetsController state into the legacy format consumed by\n * transaction-pay-controller (TokenBalancesController, AccountTrackerController,\n * TokensController, TokenRatesController, CurrencyRateController shapes).\n *\n * The last result is memoized on input identity: this function is invoked (via\n * `AssetsController:getStateForTransactionPay`) on every\n * `TransactionController:stateChange`, but its inputs only change when the\n * assets pipeline updates. Recomputing runs keccak256 (`toChecksumAddress`)\n * per asset per call, which dominates CPU profiles during transaction\n * approval.\n *\n * @param params - Conversion parameters.\n * @returns Legacy-compatible state for transaction-pay-controller.\n */\nexport function formatStateForTransactionPay(\n params: FormatStateForTransactionPayParams,\n): TransactionPayLegacyFormat {\n if (lastCall && isTransactionPayParamsIdentical(lastCall.params, params)) {\n return lastCall.result;\n }\n\n const result = computeStateForTransactionPay(params);\n lastCall = { params, result: Object.freeze(result) };\n return result;\n}\n\n/**\n * Clears the {@link formatStateForTransactionPay} memoize cache. Exported for tests.\n */\nexport function clearFormatStateForTransactionPayCacheForTesting(): void {\n lastCall = null;\n}\n\n/**\n * Performs the actual state conversion for\n * {@link formatStateForTransactionPay}.\n *\n * @param params - Conversion parameters.\n * @returns Legacy-compatible state for transaction-pay-controller.\n */\nfunction computeStateForTransactionPay(\n params: FormatStateForTransactionPayParams,\n): TransactionPayLegacyFormat {\n const {\n assetsBalance,\n assetsInfo,\n assetsPrice,\n selectedCurrency,\n accounts,\n nativeAssetIdentifiers,\n networkConfigurationsByChainId = {},\n } = params;\n\n const tokenBalances: TransactionPayLegacyFormat['tokenBalances'] = {};\n const accountsByChainId: TransactionPayLegacyFormat['accountsByChainId'] = {};\n const allTokensByChain: Record<string, LegacyToken[]> = {};\n\n for (const account of accounts) {\n const accountAddressLower = account.address.toLowerCase();\n const accountBalances = assetsBalance[account.id];\n if (!accountBalances) {\n continue;\n }\n\n for (const [assetId, balance] of Object.entries(accountBalances)) {\n try {\n const parsed = parseCaipAssetType(assetId as Caip19AssetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n if (chainIdParsed.namespace !== 'eip155') {\n continue;\n }\n const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));\n const amount = getAmountFromBalance(balance);\n const balanceHex = amountToHex(amount);\n\n if (assetsInfo[assetId]?.type === 'native') {\n const nativeAddress = toChecksumAddress(\n getNativeTokenAddress(chainIdHex),\n );\n const checksumAddress = toChecksumAddress(account.address);\n tokenBalances[accountAddressLower] ??= {};\n tokenBalances[accountAddressLower][chainIdHex] ??= {};\n tokenBalances[accountAddressLower][chainIdHex][nativeAddress] =\n balanceHex;\n accountsByChainId[chainIdHex] ??= {};\n accountsByChainId[chainIdHex][checksumAddress] = {\n balance: balanceHex,\n };\n } else if (parsed.assetNamespace === 'erc20') {\n const tokenAddress = toChecksumAddress(String(parsed.assetReference));\n tokenBalances[accountAddressLower] ??= {};\n tokenBalances[accountAddressLower][chainIdHex] ??= {};\n tokenBalances[accountAddressLower][chainIdHex][tokenAddress] =\n balanceHex;\n }\n } catch {\n // Skip malformed asset IDs\n }\n }\n }\n\n for (const [assetId, metadata] of Object.entries(assetsInfo)) {\n try {\n const parsed = parseCaipAssetType(assetId as Caip19AssetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n if (chainIdParsed.namespace !== 'eip155') {\n continue;\n }\n const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));\n const address =\n metadata.type === 'native'\n ? getNativeTokenAddress(chainIdHex)\n : toChecksumAddress(String(parsed.assetReference));\n const token: LegacyToken = {\n address,\n decimals: metadata.decimals,\n symbol: metadata.symbol,\n name: metadata.name,\n };\n allTokensByChain[chainIdHex] ??= [];\n if (\n !allTokensByChain[chainIdHex].some(\n (existing) =>\n existing.address.toLowerCase() === address.toLowerCase(),\n )\n ) {\n allTokensByChain[chainIdHex].push(token);\n }\n } catch {\n // Skip malformed asset IDs\n }\n }\n\n const allTokens: TransactionPayLegacyFormat['allTokens'] = {};\n for (const [chainId, tokens] of Object.entries(allTokensByChain)) {\n allTokens[chainId] = { '': tokens };\n }\n\n const exchangeRates = formatExchangeRatesForBridge({\n assetsInfo,\n assetsPrice,\n selectedCurrency,\n nativeAssetIdentifiers,\n networkConfigurationsByChainId,\n });\n\n return {\n tokenBalances,\n accountsByChainId,\n allTokens,\n marketData: exchangeRates.marketData,\n currencyRates: exchangeRates.currencyRates,\n currentCurrency: exchangeRates.currentCurrency,\n };\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildNativeAssetsFromApi = exports.buildNativeAssetsFromConstant = exports.clearFormatStateForTransactionPayCacheForTesting = exports.formatStateForTransactionPay = exports.clearFormatExchangeRatesForBridgeCacheForTesting = exports.formatExchangeRatesForBridge = exports.clearNormalizeAssetIdCacheForTesting = exports.safeNormalizeAssetId = exports.normalizeAssetId = exports.normalizeAmountString = exports.fetchWithTimeout = void 0;
|
|
4
|
+
var fetchWithTimeout_js_1 = require("./fetchWithTimeout.cjs");
|
|
5
|
+
Object.defineProperty(exports, "fetchWithTimeout", { enumerable: true, get: function () { return fetchWithTimeout_js_1.fetchWithTimeout; } });
|
|
6
|
+
var normalizeAmountString_js_1 = require("./normalizeAmountString.cjs");
|
|
7
|
+
Object.defineProperty(exports, "normalizeAmountString", { enumerable: true, get: function () { return normalizeAmountString_js_1.normalizeAmountString; } });
|
|
8
|
+
var normalizeAssetId_js_1 = require("./normalizeAssetId.cjs");
|
|
9
|
+
Object.defineProperty(exports, "normalizeAssetId", { enumerable: true, get: function () { return normalizeAssetId_js_1.normalizeAssetId; } });
|
|
10
|
+
Object.defineProperty(exports, "safeNormalizeAssetId", { enumerable: true, get: function () { return normalizeAssetId_js_1.safeNormalizeAssetId; } });
|
|
11
|
+
Object.defineProperty(exports, "clearNormalizeAssetIdCacheForTesting", { enumerable: true, get: function () { return normalizeAssetId_js_1.clearNormalizeAssetIdCacheForTesting; } });
|
|
12
|
+
var formatExchangeRatesForBridge_js_1 = require("./formatExchangeRatesForBridge.cjs");
|
|
13
|
+
Object.defineProperty(exports, "formatExchangeRatesForBridge", { enumerable: true, get: function () { return formatExchangeRatesForBridge_js_1.formatExchangeRatesForBridge; } });
|
|
14
|
+
Object.defineProperty(exports, "clearFormatExchangeRatesForBridgeCacheForTesting", { enumerable: true, get: function () { return formatExchangeRatesForBridge_js_1.clearFormatExchangeRatesForBridgeCacheForTesting; } });
|
|
15
|
+
var formatStateForTransactionPay_js_1 = require("./formatStateForTransactionPay.cjs");
|
|
16
|
+
Object.defineProperty(exports, "formatStateForTransactionPay", { enumerable: true, get: function () { return formatStateForTransactionPay_js_1.formatStateForTransactionPay; } });
|
|
17
|
+
Object.defineProperty(exports, "clearFormatStateForTransactionPayCacheForTesting", { enumerable: true, get: function () { return formatStateForTransactionPay_js_1.clearFormatStateForTransactionPayCacheForTesting; } });
|
|
18
|
+
var native_assets_js_1 = require("./native-assets.cjs");
|
|
19
|
+
Object.defineProperty(exports, "buildNativeAssetsFromConstant", { enumerable: true, get: function () { return native_assets_js_1.buildNativeAssetsFromConstant; } });
|
|
20
|
+
Object.defineProperty(exports, "buildNativeAssetsFromApi", { enumerable: true, get: function () { return native_assets_js_1.buildNativeAssetsFromApi; } });
|
|
21
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,8DAAyD;AAAhD,uHAAA,gBAAgB,OAAA;AACzB,wEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,8DAI+B;AAH7B,uHAAA,gBAAgB,OAAA;AAChB,2HAAA,oBAAoB,OAAA;AACpB,2IAAA,oCAAoC,OAAA;AAEtC,sFAG2C;AAFzC,+IAAA,4BAA4B,OAAA;AAC5B,mKAAA,gDAAgD,OAAA;AAElD,sFAG2C;AAFzC,+IAAA,4BAA4B,OAAA;AAC5B,mKAAA,gDAAgD,OAAA;AAYlD,wDAG4B;AAF1B,iIAAA,6BAA6B,OAAA;AAC7B,4HAAA,wBAAwB,OAAA","sourcesContent":["export { fetchWithTimeout } from './fetchWithTimeout.js';\nexport { normalizeAmountString } from './normalizeAmountString.js';\nexport {\n normalizeAssetId,\n safeNormalizeAssetId,\n clearNormalizeAssetIdCacheForTesting,\n} from './normalizeAssetId.js';\nexport {\n formatExchangeRatesForBridge,\n clearFormatExchangeRatesForBridgeCacheForTesting,\n} from './formatExchangeRatesForBridge.js';\nexport {\n formatStateForTransactionPay,\n clearFormatStateForTransactionPayCacheForTesting,\n} from './formatStateForTransactionPay.js';\nexport type {\n BridgeExchangeRatesFormat,\n FormatExchangeRatesForBridgeParams,\n} from './formatExchangeRatesForBridge.js';\nexport type {\n AccountForLegacyFormat,\n FormatStateForTransactionPayParams,\n LegacyToken,\n TransactionPayLegacyFormat,\n} from './formatStateForTransactionPay.js';\nexport {\n buildNativeAssetsFromConstant,\n buildNativeAssetsFromApi,\n} from './native-assets.js';\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { fetchWithTimeout } from "./fetchWithTimeout.cjs";
|
|
2
|
+
export { normalizeAmountString } from "./normalizeAmountString.cjs";
|
|
3
|
+
export { normalizeAssetId, safeNormalizeAssetId, clearNormalizeAssetIdCacheForTesting, } from "./normalizeAssetId.cjs";
|
|
4
|
+
export { formatExchangeRatesForBridge, clearFormatExchangeRatesForBridgeCacheForTesting, } from "./formatExchangeRatesForBridge.cjs";
|
|
5
|
+
export { formatStateForTransactionPay, clearFormatStateForTransactionPayCacheForTesting, } from "./formatStateForTransactionPay.cjs";
|
|
6
|
+
export type { BridgeExchangeRatesFormat, FormatExchangeRatesForBridgeParams, } from "./formatExchangeRatesForBridge.cjs";
|
|
7
|
+
export type { AccountForLegacyFormat, FormatStateForTransactionPayParams, LegacyToken, TransactionPayLegacyFormat, } from "./formatStateForTransactionPay.cjs";
|
|
8
|
+
export { buildNativeAssetsFromConstant, buildNativeAssetsFromApi, } from "./native-assets.cjs";
|
|
9
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AACzD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;AACnE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oCAAoC,GACrC,+BAA8B;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,YAAY,EACV,yBAAyB,EACzB,kCAAkC,GACnC,2CAA0C;AAC3C,YAAY,EACV,sBAAsB,EACtB,kCAAkC,EAClC,WAAW,EACX,0BAA0B,GAC3B,2CAA0C;AAC3C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GACzB,4BAA2B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { fetchWithTimeout } from "./fetchWithTimeout.mjs";
|
|
2
|
+
export { normalizeAmountString } from "./normalizeAmountString.mjs";
|
|
3
|
+
export { normalizeAssetId, safeNormalizeAssetId, clearNormalizeAssetIdCacheForTesting, } from "./normalizeAssetId.mjs";
|
|
4
|
+
export { formatExchangeRatesForBridge, clearFormatExchangeRatesForBridgeCacheForTesting, } from "./formatExchangeRatesForBridge.mjs";
|
|
5
|
+
export { formatStateForTransactionPay, clearFormatStateForTransactionPayCacheForTesting, } from "./formatStateForTransactionPay.mjs";
|
|
6
|
+
export type { BridgeExchangeRatesFormat, FormatExchangeRatesForBridgeParams, } from "./formatExchangeRatesForBridge.mjs";
|
|
7
|
+
export type { AccountForLegacyFormat, FormatStateForTransactionPayParams, LegacyToken, TransactionPayLegacyFormat, } from "./formatStateForTransactionPay.mjs";
|
|
8
|
+
export { buildNativeAssetsFromConstant, buildNativeAssetsFromApi, } from "./native-assets.mjs";
|
|
9
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AACzD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;AACnE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oCAAoC,GACrC,+BAA8B;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,GACjD,2CAA0C;AAC3C,YAAY,EACV,yBAAyB,EACzB,kCAAkC,GACnC,2CAA0C;AAC3C,YAAY,EACV,sBAAsB,EACtB,kCAAkC,EAClC,WAAW,EACX,0BAA0B,GAC3B,2CAA0C;AAC3C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GACzB,4BAA2B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { fetchWithTimeout } from "./fetchWithTimeout.mjs";
|
|
2
|
+
export { normalizeAmountString } from "./normalizeAmountString.mjs";
|
|
3
|
+
export { normalizeAssetId, safeNormalizeAssetId, clearNormalizeAssetIdCacheForTesting } from "./normalizeAssetId.mjs";
|
|
4
|
+
export { formatExchangeRatesForBridge, clearFormatExchangeRatesForBridgeCacheForTesting } from "./formatExchangeRatesForBridge.mjs";
|
|
5
|
+
export { formatStateForTransactionPay, clearFormatStateForTransactionPayCacheForTesting } from "./formatStateForTransactionPay.mjs";
|
|
6
|
+
export { buildNativeAssetsFromConstant, buildNativeAssetsFromApi } from "./native-assets.mjs";
|
|
7
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AACzD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;AACnE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oCAAoC,EACrC,+BAA8B;AAC/B,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,EACjD,2CAA0C;AAC3C,OAAO,EACL,4BAA4B,EAC5B,gDAAgD,EACjD,2CAA0C;AAW3C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACzB,4BAA2B","sourcesContent":["export { fetchWithTimeout } from './fetchWithTimeout.js';\nexport { normalizeAmountString } from './normalizeAmountString.js';\nexport {\n normalizeAssetId,\n safeNormalizeAssetId,\n clearNormalizeAssetIdCacheForTesting,\n} from './normalizeAssetId.js';\nexport {\n formatExchangeRatesForBridge,\n clearFormatExchangeRatesForBridgeCacheForTesting,\n} from './formatExchangeRatesForBridge.js';\nexport {\n formatStateForTransactionPay,\n clearFormatStateForTransactionPayCacheForTesting,\n} from './formatStateForTransactionPay.js';\nexport type {\n BridgeExchangeRatesFormat,\n FormatExchangeRatesForBridgeParams,\n} from './formatExchangeRatesForBridge.js';\nexport type {\n AccountForLegacyFormat,\n FormatStateForTransactionPayParams,\n LegacyToken,\n TransactionPayLegacyFormat,\n} from './formatStateForTransactionPay.js';\nexport {\n buildNativeAssetsFromConstant,\n buildNativeAssetsFromApi,\n} from './native-assets.js';\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildNativeAssetsFromApi = exports.buildNativeAssetsFromConstant = void 0;
|
|
4
|
+
const assets_controllers_1 = require("@metamask/assets-controllers");
|
|
5
|
+
const controller_utils_1 = require("@metamask/controller-utils");
|
|
6
|
+
const utils_1 = require("@metamask/utils");
|
|
7
|
+
const normalizeAssetId_js_1 = require("./normalizeAssetId.cjs");
|
|
8
|
+
const CHAINID_NETWORK_URL = 'https://chainid.network/chains.json';
|
|
9
|
+
/**
|
|
10
|
+
* Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.
|
|
11
|
+
*
|
|
12
|
+
* @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.
|
|
13
|
+
*/
|
|
14
|
+
function buildNativeAssetsFromConstant() {
|
|
15
|
+
const nativeAssetsMap = {};
|
|
16
|
+
for (const nativeAssetId of Object.values(assets_controllers_1.SPOT_PRICES_SUPPORT_INFO)) {
|
|
17
|
+
const { chainId } = (0, utils_1.parseCaipAssetType)(nativeAssetId);
|
|
18
|
+
nativeAssetsMap[chainId] = (0, normalizeAssetId_js_1.normalizeAssetId)(nativeAssetId);
|
|
19
|
+
}
|
|
20
|
+
return nativeAssetsMap;
|
|
21
|
+
}
|
|
22
|
+
exports.buildNativeAssetsFromConstant = buildNativeAssetsFromConstant;
|
|
23
|
+
/**
|
|
24
|
+
* Fetches chain data from chainid.network and merges it with the seed
|
|
25
|
+
* native asset map built from {@link buildNativeAssetsFromConstant}.
|
|
26
|
+
*
|
|
27
|
+
* Remote entries only fill gaps — chains already present in the seed map
|
|
28
|
+
* are never overwritten. Invalid entries (missing/negative chainId or slip44)
|
|
29
|
+
* are silently skipped.
|
|
30
|
+
*
|
|
31
|
+
* @returns The merged native asset map.
|
|
32
|
+
*/
|
|
33
|
+
async function buildNativeAssetsFromApi() {
|
|
34
|
+
const nativeAssetsMap = buildNativeAssetsFromConstant();
|
|
35
|
+
try {
|
|
36
|
+
const chains = await (0, controller_utils_1.fetchWithErrorHandling)({
|
|
37
|
+
url: CHAINID_NETWORK_URL,
|
|
38
|
+
timeout: 10000,
|
|
39
|
+
});
|
|
40
|
+
if (chains && Array.isArray(chains)) {
|
|
41
|
+
for (const chain of chains) {
|
|
42
|
+
if (!chain.chainId ||
|
|
43
|
+
!chain.slip44 ||
|
|
44
|
+
!Number.isInteger(chain.chainId) ||
|
|
45
|
+
chain.chainId < 1 ||
|
|
46
|
+
!Number.isInteger(chain.slip44) ||
|
|
47
|
+
chain.slip44 < 1) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const caipChainId = `eip155:${chain.chainId}`;
|
|
51
|
+
if (!nativeAssetsMap[caipChainId]) {
|
|
52
|
+
nativeAssetsMap[caipChainId] =
|
|
53
|
+
`eip155:${chain.chainId}/slip44:${chain.slip44}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Non-fatal: caller should fall back to the seed map.
|
|
60
|
+
}
|
|
61
|
+
return nativeAssetsMap;
|
|
62
|
+
}
|
|
63
|
+
exports.buildNativeAssetsFromApi = buildNativeAssetsFromApi;
|
|
64
|
+
//# sourceMappingURL=native-assets.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-assets.cjs","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,iEAAoE;AACpE,2CAAqD;AAGrD,gEAAyD;AAEzD,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAOlE;;;;GAIG;AACH,SAAgB,6BAA6B;IAI3C,MAAM,eAAe,GAAmC,EAAE,CAAC;IAC3D,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,6CAAwB,CAAC,EAAE,CAAC;QACpE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,0BAAkB,EAAC,aAAa,CAAC,CAAC;QACtD,eAAe,CAAC,OAAO,CAAC,GAAG,IAAA,sCAAgB,EAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAVD,sEAUC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,wBAAwB;IAG5C,MAAM,eAAe,GAAG,6BAA6B,EAAE,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,MAAM,GACV,MAAM,IAAA,yCAAsB,EAAC;YAC3B,GAAG,EAAE,mBAAmB;YACxB,OAAO,EAAE,KAAM;SAChB,CAAC,CAAC;QAEL,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IACE,CAAC,KAAK,CAAC,OAAO;oBACd,CAAC,KAAK,CAAC,MAAM;oBACb,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;oBAChC,KAAK,CAAC,OAAO,GAAG,CAAC;oBACjB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/B,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,OAAO,EAAa,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClC,eAAe,CAAC,WAAW,CAAC;wBAC1B,UAAU,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,MAAM,EAAmB,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AArCD,4DAqCC","sourcesContent":["import { SPOT_PRICES_SUPPORT_INFO } from '@metamask/assets-controllers';\nimport { fetchWithErrorHandling } from '@metamask/controller-utils';\nimport { parseCaipAssetType } from '@metamask/utils';\n\nimport type { Caip19AssetId, ChainId } from '../types.js';\nimport { normalizeAssetId } from './normalizeAssetId.js';\n\nconst CHAINID_NETWORK_URL = 'https://chainid.network/chains.json';\n\ntype ChainIdNetworkEntry = {\n chainId: number;\n slip44?: number;\n};\n\n/**\n * Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.\n *\n * @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.\n */\nexport function buildNativeAssetsFromConstant(): Record<\n ChainId,\n Caip19AssetId\n> {\n const nativeAssetsMap: Record<ChainId, Caip19AssetId> = {};\n for (const nativeAssetId of Object.values(SPOT_PRICES_SUPPORT_INFO)) {\n const { chainId } = parseCaipAssetType(nativeAssetId);\n nativeAssetsMap[chainId] = normalizeAssetId(nativeAssetId);\n }\n return nativeAssetsMap;\n}\n\n/**\n * Fetches chain data from chainid.network and merges it with the seed\n * native asset map built from {@link buildNativeAssetsFromConstant}.\n *\n * Remote entries only fill gaps — chains already present in the seed map\n * are never overwritten. Invalid entries (missing/negative chainId or slip44)\n * are silently skipped.\n *\n * @returns The merged native asset map.\n */\nexport async function buildNativeAssetsFromApi(): Promise<\n Record<ChainId, Caip19AssetId>\n> {\n const nativeAssetsMap = buildNativeAssetsFromConstant();\n\n try {\n const chains: ChainIdNetworkEntry[] | undefined =\n await fetchWithErrorHandling({\n url: CHAINID_NETWORK_URL,\n timeout: 10_000,\n });\n\n if (chains && Array.isArray(chains)) {\n for (const chain of chains) {\n if (\n !chain.chainId ||\n !chain.slip44 ||\n !Number.isInteger(chain.chainId) ||\n chain.chainId < 1 ||\n !Number.isInteger(chain.slip44) ||\n chain.slip44 < 1\n ) {\n continue;\n }\n\n const caipChainId = `eip155:${chain.chainId}` as ChainId;\n if (!nativeAssetsMap[caipChainId]) {\n nativeAssetsMap[caipChainId] =\n `eip155:${chain.chainId}/slip44:${chain.slip44}` as Caip19AssetId;\n }\n }\n }\n } catch {\n // Non-fatal: caller should fall back to the seed map.\n }\n\n return nativeAssetsMap;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Caip19AssetId, ChainId } from
|
|
1
|
+
import type { Caip19AssetId, ChainId } from "../types.cjs";
|
|
2
2
|
/**
|
|
3
3
|
* Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.
|
|
4
4
|
*
|
|
@@ -16,4 +16,4 @@ export declare function buildNativeAssetsFromConstant(): Record<ChainId, Caip19A
|
|
|
16
16
|
* @returns The merged native asset map.
|
|
17
17
|
*/
|
|
18
18
|
export declare function buildNativeAssetsFromApi(): Promise<Record<ChainId, Caip19AssetId>>;
|
|
19
|
-
//# sourceMappingURL=native-assets.d.
|
|
19
|
+
//# sourceMappingURL=native-assets.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-assets.d.cts","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAoB;AAU1D;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CACrD,OAAO,EACP,aAAa,CACd,CAOA;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CACvD,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAC/B,CAmCA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Caip19AssetId, ChainId } from "../types.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.
|
|
4
|
+
*
|
|
5
|
+
* @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildNativeAssetsFromConstant(): Record<ChainId, Caip19AssetId>;
|
|
8
|
+
/**
|
|
9
|
+
* Fetches chain data from chainid.network and merges it with the seed
|
|
10
|
+
* native asset map built from {@link buildNativeAssetsFromConstant}.
|
|
11
|
+
*
|
|
12
|
+
* Remote entries only fill gaps — chains already present in the seed map
|
|
13
|
+
* are never overwritten. Invalid entries (missing/negative chainId or slip44)
|
|
14
|
+
* are silently skipped.
|
|
15
|
+
*
|
|
16
|
+
* @returns The merged native asset map.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildNativeAssetsFromApi(): Promise<Record<ChainId, Caip19AssetId>>;
|
|
19
|
+
//# sourceMappingURL=native-assets.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-assets.d.mts","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAoB;AAU1D;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CACrD,OAAO,EACP,aAAa,CACd,CAOA;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CACvD,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAC/B,CAmCA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { SPOT_PRICES_SUPPORT_INFO } from
|
|
2
|
-
import { fetchWithErrorHandling } from
|
|
3
|
-
import { parseCaipAssetType } from
|
|
4
|
-
import { normalizeAssetId } from
|
|
1
|
+
import { SPOT_PRICES_SUPPORT_INFO } from "@metamask/assets-controllers";
|
|
2
|
+
import { fetchWithErrorHandling } from "@metamask/controller-utils";
|
|
3
|
+
import { parseCaipAssetType } from "@metamask/utils";
|
|
4
|
+
import { normalizeAssetId } from "./normalizeAssetId.mjs";
|
|
5
5
|
const CHAINID_NETWORK_URL = 'https://chainid.network/chains.json';
|
|
6
6
|
/**
|
|
7
7
|
* Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.
|
|
@@ -56,4 +56,4 @@ export async function buildNativeAssetsFromApi() {
|
|
|
56
56
|
}
|
|
57
57
|
return nativeAssetsMap;
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=native-assets.
|
|
59
|
+
//# sourceMappingURL=native-assets.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-assets.mjs","sourceRoot":"","sources":["../../src/utils/native-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,EAAE,sBAAsB,EAAE,mCAAmC;AACpE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AAGrD,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AAEzD,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAOlE;;;;GAIG;AACH,MAAM,UAAU,6BAA6B;IAI3C,MAAM,eAAe,GAAmC,EAAE,CAAC;IAC3D,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACpE,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACtD,eAAe,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAG5C,MAAM,eAAe,GAAG,6BAA6B,EAAE,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,MAAM,GACV,MAAM,sBAAsB,CAAC;YAC3B,GAAG,EAAE,mBAAmB;YACxB,OAAO,EAAE,KAAM;SAChB,CAAC,CAAC;QAEL,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IACE,CAAC,KAAK,CAAC,OAAO;oBACd,CAAC,KAAK,CAAC,MAAM;oBACb,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;oBAChC,KAAK,CAAC,OAAO,GAAG,CAAC;oBACjB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/B,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,OAAO,EAAa,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClC,eAAe,CAAC,WAAW,CAAC;wBAC1B,UAAU,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,MAAM,EAAmB,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC","sourcesContent":["import { SPOT_PRICES_SUPPORT_INFO } from '@metamask/assets-controllers';\nimport { fetchWithErrorHandling } from '@metamask/controller-utils';\nimport { parseCaipAssetType } from '@metamask/utils';\n\nimport type { Caip19AssetId, ChainId } from '../types.js';\nimport { normalizeAssetId } from './normalizeAssetId.js';\n\nconst CHAINID_NETWORK_URL = 'https://chainid.network/chains.json';\n\ntype ChainIdNetworkEntry = {\n chainId: number;\n slip44?: number;\n};\n\n/**\n * Builds a native asset map from the hardcoded SPOT_PRICES_SUPPORT_INFO constant.\n *\n * @returns A record mapping CAIP-2 chain IDs to their CAIP-19 native asset IDs.\n */\nexport function buildNativeAssetsFromConstant(): Record<\n ChainId,\n Caip19AssetId\n> {\n const nativeAssetsMap: Record<ChainId, Caip19AssetId> = {};\n for (const nativeAssetId of Object.values(SPOT_PRICES_SUPPORT_INFO)) {\n const { chainId } = parseCaipAssetType(nativeAssetId);\n nativeAssetsMap[chainId] = normalizeAssetId(nativeAssetId);\n }\n return nativeAssetsMap;\n}\n\n/**\n * Fetches chain data from chainid.network and merges it with the seed\n * native asset map built from {@link buildNativeAssetsFromConstant}.\n *\n * Remote entries only fill gaps — chains already present in the seed map\n * are never overwritten. Invalid entries (missing/negative chainId or slip44)\n * are silently skipped.\n *\n * @returns The merged native asset map.\n */\nexport async function buildNativeAssetsFromApi(): Promise<\n Record<ChainId, Caip19AssetId>\n> {\n const nativeAssetsMap = buildNativeAssetsFromConstant();\n\n try {\n const chains: ChainIdNetworkEntry[] | undefined =\n await fetchWithErrorHandling({\n url: CHAINID_NETWORK_URL,\n timeout: 10_000,\n });\n\n if (chains && Array.isArray(chains)) {\n for (const chain of chains) {\n if (\n !chain.chainId ||\n !chain.slip44 ||\n !Number.isInteger(chain.chainId) ||\n chain.chainId < 1 ||\n !Number.isInteger(chain.slip44) ||\n chain.slip44 < 1\n ) {\n continue;\n }\n\n const caipChainId = `eip155:${chain.chainId}` as ChainId;\n if (!nativeAssetsMap[caipChainId]) {\n nativeAssetsMap[caipChainId] =\n `eip155:${chain.chainId}/slip44:${chain.slip44}` as Caip19AssetId;\n }\n }\n }\n } catch {\n // Non-fatal: caller should fall back to the seed map.\n }\n\n return nativeAssetsMap;\n}\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.normalizeAmountString = void 0;
|
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
|
+
/**
|
|
9
|
+
* Normalize an asset balance `amount` string into a canonical plain-decimal
|
|
10
|
+
* form (no scientific notation), optionally truncating to the asset's decimal
|
|
11
|
+
* precision.
|
|
12
|
+
*
|
|
13
|
+
* Amounts entering `assetsBalance` state come from external sources (snaps,
|
|
14
|
+
* accounts API, websocket, RPC) and may be serialized from JavaScript Numbers
|
|
15
|
+
* as `"1e-18"`. Downstream consumers (e.g. the extension's
|
|
16
|
+
* `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,
|
|
17
|
+
* which throws on exponent-form strings. Normalizing at the controller
|
|
18
|
+
* boundary keeps the invariant that `amount` is always a plain decimal so
|
|
19
|
+
* every current and future data source is safe without per-source changes.
|
|
20
|
+
*
|
|
21
|
+
* When `decimals` is provided (i.e. the asset's metadata is registered),
|
|
22
|
+
* fractional digits beyond `decimals` are truncated using round-toward-zero
|
|
23
|
+
* to match the extension's `parseBalanceWithDecimals`, which slices off any
|
|
24
|
+
* fractional digits beyond `decimals`.
|
|
25
|
+
*
|
|
26
|
+
* When `decimals` is omitted (metadata not yet known for this asset), the
|
|
27
|
+
* amount is left at its natural precision — exponent form is still converted
|
|
28
|
+
* to plain decimal, but no digits are dropped. This preserves balances that
|
|
29
|
+
* arrive before their metadata without lossy truncation.
|
|
30
|
+
*
|
|
31
|
+
* Non-finite or non-string inputs collapse to `'0'` rather than throwing,
|
|
32
|
+
* because controller state must remain JSON-serializable and a malformed
|
|
33
|
+
* upstream payload should not corrupt the rest of the update.
|
|
34
|
+
*
|
|
35
|
+
* @param amount - The raw amount string from a data source.
|
|
36
|
+
* @param decimals - The asset's decimal precision (from `assetsInfo`). Pass
|
|
37
|
+
* `undefined` when metadata is unknown to skip truncation.
|
|
38
|
+
* @returns A plain decimal string (e.g. `"0.000000000000000001"`), or `'0'`
|
|
39
|
+
* for non-finite / non-string input.
|
|
40
|
+
*/
|
|
41
|
+
function normalizeAmountString(amount, decimals) {
|
|
42
|
+
if (typeof amount !== 'string' || amount.length === 0) {
|
|
43
|
+
return '0';
|
|
44
|
+
}
|
|
45
|
+
const bn = new bignumber_js_1.default(amount);
|
|
46
|
+
if (!bn.isFinite()) {
|
|
47
|
+
return '0';
|
|
48
|
+
}
|
|
49
|
+
let fixed;
|
|
50
|
+
if (decimals === undefined || !Number.isFinite(decimals) || decimals < 0) {
|
|
51
|
+
// Metadata unknown — preserve full precision, just defeat exponent form.
|
|
52
|
+
fixed = bn.toFixed();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
fixed = bn.toFixed(Math.floor(decimals), bignumber_js_1.default.ROUND_DOWN);
|
|
56
|
+
}
|
|
57
|
+
if (!fixed.includes('.')) {
|
|
58
|
+
return fixed;
|
|
59
|
+
}
|
|
60
|
+
// Trim trailing zeros and a dangling dot: "1.500" -> "1.5", "1.000" -> "1".
|
|
61
|
+
return fixed.replace(/0+$/u, '').replace(/\.$/u, '');
|
|
62
|
+
}
|
|
63
|
+
exports.normalizeAmountString = normalizeAmountString;
|
|
64
|
+
//# sourceMappingURL=normalizeAmountString.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAmountString.cjs","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAuC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAgB,qBAAqB,CACnC,MAAe,EACf,QAAiB;IAEjB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzE,yEAAyE;QACzE,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,sBAAW,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAzBD,sDAyBC","sourcesContent":["import BigNumberJS from 'bignumber.js';\n\n/**\n * Normalize an asset balance `amount` string into a canonical plain-decimal\n * form (no scientific notation), optionally truncating to the asset's decimal\n * precision.\n *\n * Amounts entering `assetsBalance` state come from external sources (snaps,\n * accounts API, websocket, RPC) and may be serialized from JavaScript Numbers\n * as `\"1e-18\"`. Downstream consumers (e.g. the extension's\n * `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,\n * which throws on exponent-form strings. Normalizing at the controller\n * boundary keeps the invariant that `amount` is always a plain decimal so\n * every current and future data source is safe without per-source changes.\n *\n * When `decimals` is provided (i.e. the asset's metadata is registered),\n * fractional digits beyond `decimals` are truncated using round-toward-zero\n * to match the extension's `parseBalanceWithDecimals`, which slices off any\n * fractional digits beyond `decimals`.\n *\n * When `decimals` is omitted (metadata not yet known for this asset), the\n * amount is left at its natural precision — exponent form is still converted\n * to plain decimal, but no digits are dropped. This preserves balances that\n * arrive before their metadata without lossy truncation.\n *\n * Non-finite or non-string inputs collapse to `'0'` rather than throwing,\n * because controller state must remain JSON-serializable and a malformed\n * upstream payload should not corrupt the rest of the update.\n *\n * @param amount - The raw amount string from a data source.\n * @param decimals - The asset's decimal precision (from `assetsInfo`). Pass\n * `undefined` when metadata is unknown to skip truncation.\n * @returns A plain decimal string (e.g. `\"0.000000000000000001\"`), or `'0'`\n * for non-finite / non-string input.\n */\nexport function normalizeAmountString(\n amount: unknown,\n decimals?: number,\n): string {\n if (typeof amount !== 'string' || amount.length === 0) {\n return '0';\n }\n const bn = new BigNumberJS(amount);\n if (!bn.isFinite()) {\n return '0';\n }\n\n let fixed: string;\n if (decimals === undefined || !Number.isFinite(decimals) || decimals < 0) {\n // Metadata unknown — preserve full precision, just defeat exponent form.\n fixed = bn.toFixed();\n } else {\n fixed = bn.toFixed(Math.floor(decimals), BigNumberJS.ROUND_DOWN);\n }\n\n if (!fixed.includes('.')) {\n return fixed;\n }\n // Trim trailing zeros and a dangling dot: \"1.500\" -> \"1.5\", \"1.000\" -> \"1\".\n return fixed.replace(/0+$/u, '').replace(/\\.$/u, '');\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAmountString.d.cts","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAsBR"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize an asset balance `amount` string into a canonical plain-decimal
|
|
3
|
+
* form (no scientific notation), optionally truncating to the asset's decimal
|
|
4
|
+
* precision.
|
|
5
|
+
*
|
|
6
|
+
* Amounts entering `assetsBalance` state come from external sources (snaps,
|
|
7
|
+
* accounts API, websocket, RPC) and may be serialized from JavaScript Numbers
|
|
8
|
+
* as `"1e-18"`. Downstream consumers (e.g. the extension's
|
|
9
|
+
* `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,
|
|
10
|
+
* which throws on exponent-form strings. Normalizing at the controller
|
|
11
|
+
* boundary keeps the invariant that `amount` is always a plain decimal so
|
|
12
|
+
* every current and future data source is safe without per-source changes.
|
|
13
|
+
*
|
|
14
|
+
* When `decimals` is provided (i.e. the asset's metadata is registered),
|
|
15
|
+
* fractional digits beyond `decimals` are truncated using round-toward-zero
|
|
16
|
+
* to match the extension's `parseBalanceWithDecimals`, which slices off any
|
|
17
|
+
* fractional digits beyond `decimals`.
|
|
18
|
+
*
|
|
19
|
+
* When `decimals` is omitted (metadata not yet known for this asset), the
|
|
20
|
+
* amount is left at its natural precision — exponent form is still converted
|
|
21
|
+
* to plain decimal, but no digits are dropped. This preserves balances that
|
|
22
|
+
* arrive before their metadata without lossy truncation.
|
|
23
|
+
*
|
|
24
|
+
* Non-finite or non-string inputs collapse to `'0'` rather than throwing,
|
|
25
|
+
* because controller state must remain JSON-serializable and a malformed
|
|
26
|
+
* upstream payload should not corrupt the rest of the update.
|
|
27
|
+
*
|
|
28
|
+
* @param amount - The raw amount string from a data source.
|
|
29
|
+
* @param decimals - The asset's decimal precision (from `assetsInfo`). Pass
|
|
30
|
+
* `undefined` when metadata is unknown to skip truncation.
|
|
31
|
+
* @returns A plain decimal string (e.g. `"0.000000000000000001"`), or `'0'`
|
|
32
|
+
* for non-finite / non-string input.
|
|
33
|
+
*/
|
|
34
|
+
export declare function normalizeAmountString(amount: unknown, decimals?: number): string;
|
|
35
|
+
//# sourceMappingURL=normalizeAmountString.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAmountString.d.mts","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAsBR"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BigNumberJS from "bignumber.js";
|
|
2
2
|
/**
|
|
3
3
|
* Normalize an asset balance `amount` string into a canonical plain-decimal
|
|
4
4
|
* form (no scientific notation), optionally truncating to the asset's decimal
|
|
@@ -54,4 +54,4 @@ export function normalizeAmountString(amount, decimals) {
|
|
|
54
54
|
// Trim trailing zeros and a dangling dot: "1.500" -> "1.5", "1.000" -> "1".
|
|
55
55
|
return fixed.replace(/0+$/u, '').replace(/\.$/u, '');
|
|
56
56
|
}
|
|
57
|
-
//# sourceMappingURL=normalizeAmountString.
|
|
57
|
+
//# sourceMappingURL=normalizeAmountString.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAmountString.mjs","sourceRoot":"","sources":["../../src/utils/normalizeAmountString.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,qBAAqB;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAe,EACf,QAAiB;IAEjB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzE,yEAAyE;QACzE,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import BigNumberJS from 'bignumber.js';\n\n/**\n * Normalize an asset balance `amount` string into a canonical plain-decimal\n * form (no scientific notation), optionally truncating to the asset's decimal\n * precision.\n *\n * Amounts entering `assetsBalance` state come from external sources (snaps,\n * accounts API, websocket, RPC) and may be serialized from JavaScript Numbers\n * as `\"1e-18\"`. Downstream consumers (e.g. the extension's\n * `parseBalanceWithDecimals`) split on `'.'` and feed the result to `BigInt()`,\n * which throws on exponent-form strings. Normalizing at the controller\n * boundary keeps the invariant that `amount` is always a plain decimal so\n * every current and future data source is safe without per-source changes.\n *\n * When `decimals` is provided (i.e. the asset's metadata is registered),\n * fractional digits beyond `decimals` are truncated using round-toward-zero\n * to match the extension's `parseBalanceWithDecimals`, which slices off any\n * fractional digits beyond `decimals`.\n *\n * When `decimals` is omitted (metadata not yet known for this asset), the\n * amount is left at its natural precision — exponent form is still converted\n * to plain decimal, but no digits are dropped. This preserves balances that\n * arrive before their metadata without lossy truncation.\n *\n * Non-finite or non-string inputs collapse to `'0'` rather than throwing,\n * because controller state must remain JSON-serializable and a malformed\n * upstream payload should not corrupt the rest of the update.\n *\n * @param amount - The raw amount string from a data source.\n * @param decimals - The asset's decimal precision (from `assetsInfo`). Pass\n * `undefined` when metadata is unknown to skip truncation.\n * @returns A plain decimal string (e.g. `\"0.000000000000000001\"`), or `'0'`\n * for non-finite / non-string input.\n */\nexport function normalizeAmountString(\n amount: unknown,\n decimals?: number,\n): string {\n if (typeof amount !== 'string' || amount.length === 0) {\n return '0';\n }\n const bn = new BigNumberJS(amount);\n if (!bn.isFinite()) {\n return '0';\n }\n\n let fixed: string;\n if (decimals === undefined || !Number.isFinite(decimals) || decimals < 0) {\n // Metadata unknown — preserve full precision, just defeat exponent form.\n fixed = bn.toFixed();\n } else {\n fixed = bn.toFixed(Math.floor(decimals), BigNumberJS.ROUND_DOWN);\n }\n\n if (!fixed.includes('.')) {\n return fixed;\n }\n // Trim trailing zeros and a dangling dot: \"1.500\" -> \"1.5\", \"1.000\" -> \"1\".\n return fixed.replace(/0+$/u, '').replace(/\\.$/u, '');\n}\n"]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.clearNormalizeAssetIdCacheForTesting = exports.safeNormalizeAssetId = exports.normalizeAssetId = void 0;
|
|
7
|
+
const util_1 = require("@ethereumjs/util");
|
|
8
|
+
const utils_1 = require("@metamask/utils");
|
|
9
|
+
const memoize_1 = __importDefault(require("lodash/memoize.js"));
|
|
10
|
+
/**
|
|
11
|
+
* Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
|
|
12
|
+
* This ensures consistent asset IDs regardless of the data source format.
|
|
13
|
+
*
|
|
14
|
+
* For EVM ERC20 tokens (e.g., "eip155:1/erc20:0x..."), the address is checksummed.
|
|
15
|
+
* All other asset types are returned unchanged.
|
|
16
|
+
*
|
|
17
|
+
* Results are memoized with lodash: repeated calls with the same ID (common after
|
|
18
|
+
* the first pipeline pass, when IDs are already checksummed) skip re-parsing and
|
|
19
|
+
* keccak256 checksum work.
|
|
20
|
+
*
|
|
21
|
+
* @param assetId - The CAIP-19 asset ID to normalize
|
|
22
|
+
* @returns The normalized asset ID with checksummed address (for EVM tokens)
|
|
23
|
+
*/
|
|
24
|
+
exports.normalizeAssetId = (0, memoize_1.default)((assetId) => {
|
|
25
|
+
const parsed = (0, utils_1.parseCaipAssetType)(assetId);
|
|
26
|
+
const chainIdParsed = (0, utils_1.parseCaipChainId)(parsed.chainId);
|
|
27
|
+
// Only checksum EVM ERC20 addresses
|
|
28
|
+
if (chainIdParsed.namespace === 'eip155' &&
|
|
29
|
+
parsed.assetNamespace === 'erc20') {
|
|
30
|
+
const checksummedAddress = (0, util_1.toChecksumAddress)(parsed.assetReference);
|
|
31
|
+
return `${parsed.chainId}/${parsed.assetNamespace}:${checksummedAddress}`;
|
|
32
|
+
}
|
|
33
|
+
return assetId;
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Normalize a CAIP-19 asset ID, returning the original on failure. Some
|
|
37
|
+
* malformed IDs (e.g. an asset reference that fails address checksumming)
|
|
38
|
+
* make {@link normalizeAssetId} throw; callers processing untrusted input
|
|
39
|
+
* use this so one bad ID cannot abort a whole batch.
|
|
40
|
+
*
|
|
41
|
+
* @param assetId - The CAIP-19 asset ID to normalize.
|
|
42
|
+
* @returns The normalized ID, or the original on failure.
|
|
43
|
+
*/
|
|
44
|
+
function safeNormalizeAssetId(assetId) {
|
|
45
|
+
try {
|
|
46
|
+
return (0, exports.normalizeAssetId)(assetId);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return assetId;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.safeNormalizeAssetId = safeNormalizeAssetId;
|
|
53
|
+
/**
|
|
54
|
+
* Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.
|
|
55
|
+
*/
|
|
56
|
+
function clearNormalizeAssetIdCacheForTesting() {
|
|
57
|
+
exports.normalizeAssetId.cache.clear?.();
|
|
58
|
+
}
|
|
59
|
+
exports.clearNormalizeAssetIdCacheForTesting = clearNormalizeAssetIdCacheForTesting;
|
|
60
|
+
//# sourceMappingURL=normalizeAssetId.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAssetId.cjs","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AACrD,2CAAuE;AAEvE,gEAAqC;AAIrC;;;;;;;;;;;;;GAaG;AACU,QAAA,gBAAgB,GACR,IAAA,iBAAO,EAAC,CAAC,OAAsB,EAAiB,EAAE;IACrE,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvD,oCAAoC;IACpC,IACE,aAAa,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,cAAc,KAAK,OAAO,EACjC,CAAC;QACD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACpE,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,kBAAkB,EAAmB,CAAC;IAC7F,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAC,OAAsB;IACzD,IAAI,CAAC;QACH,OAAO,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAND,oDAMC;AAED;;GAEG;AACH,SAAgB,oCAAoC;IAClD,wBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;AACnC,CAAC;AAFD,oFAEC","sourcesContent":["import { toChecksumAddress } from '@ethereumjs/util';\nimport { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';\nimport type { MemoizedFunction } from 'lodash';\nimport memoize from 'lodash/memoize';\n\nimport type { Caip19AssetId } from '../types.js';\n\n/**\n * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.\n * This ensures consistent asset IDs regardless of the data source format.\n *\n * For EVM ERC20 tokens (e.g., \"eip155:1/erc20:0x...\"), the address is checksummed.\n * All other asset types are returned unchanged.\n *\n * Results are memoized with lodash: repeated calls with the same ID (common after\n * the first pipeline pass, when IDs are already checksummed) skip re-parsing and\n * keccak256 checksum work.\n *\n * @param assetId - The CAIP-19 asset ID to normalize\n * @returns The normalized asset ID with checksummed address (for EVM tokens)\n */\nexport const normalizeAssetId: ((assetId: Caip19AssetId) => Caip19AssetId) &\n MemoizedFunction = memoize((assetId: Caip19AssetId): Caip19AssetId => {\n const parsed = parseCaipAssetType(assetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n\n // Only checksum EVM ERC20 addresses\n if (\n chainIdParsed.namespace === 'eip155' &&\n parsed.assetNamespace === 'erc20'\n ) {\n const checksummedAddress = toChecksumAddress(parsed.assetReference);\n return `${parsed.chainId}/${parsed.assetNamespace}:${checksummedAddress}` as Caip19AssetId;\n }\n\n return assetId;\n});\n\n/**\n * Normalize a CAIP-19 asset ID, returning the original on failure. Some\n * malformed IDs (e.g. an asset reference that fails address checksumming)\n * make {@link normalizeAssetId} throw; callers processing untrusted input\n * use this so one bad ID cannot abort a whole batch.\n *\n * @param assetId - The CAIP-19 asset ID to normalize.\n * @returns The normalized ID, or the original on failure.\n */\nexport function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19AssetId {\n try {\n return normalizeAssetId(assetId);\n } catch {\n return assetId;\n }\n}\n\n/**\n * Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.\n */\nexport function clearNormalizeAssetIdCacheForTesting(): void {\n normalizeAssetId.cache.clear?.();\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { MemoizedFunction } from
|
|
2
|
-
import type { Caip19AssetId } from
|
|
1
|
+
import type { MemoizedFunction } from "lodash";
|
|
2
|
+
import type { Caip19AssetId } from "../types.cjs";
|
|
3
3
|
/**
|
|
4
4
|
* Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
|
|
5
5
|
* This ensures consistent asset IDs regardless of the data source format.
|
|
@@ -29,4 +29,4 @@ export declare function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19Asse
|
|
|
29
29
|
* Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.
|
|
30
30
|
*/
|
|
31
31
|
export declare function clearNormalizeAssetIdCacheForTesting(): void;
|
|
32
|
-
//# sourceMappingURL=normalizeAssetId.d.
|
|
32
|
+
//# sourceMappingURL=normalizeAssetId.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAssetId.d.cts","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAoB;AAEjD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,CAAC,GACxE,gBAcA,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAM1E;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { MemoizedFunction } from "lodash";
|
|
2
|
+
import type { Caip19AssetId } from "../types.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
|
|
5
|
+
* This ensures consistent asset IDs regardless of the data source format.
|
|
6
|
+
*
|
|
7
|
+
* For EVM ERC20 tokens (e.g., "eip155:1/erc20:0x..."), the address is checksummed.
|
|
8
|
+
* All other asset types are returned unchanged.
|
|
9
|
+
*
|
|
10
|
+
* Results are memoized with lodash: repeated calls with the same ID (common after
|
|
11
|
+
* the first pipeline pass, when IDs are already checksummed) skip re-parsing and
|
|
12
|
+
* keccak256 checksum work.
|
|
13
|
+
*
|
|
14
|
+
* @param assetId - The CAIP-19 asset ID to normalize
|
|
15
|
+
* @returns The normalized asset ID with checksummed address (for EVM tokens)
|
|
16
|
+
*/
|
|
17
|
+
export declare const normalizeAssetId: ((assetId: Caip19AssetId) => Caip19AssetId) & MemoizedFunction;
|
|
18
|
+
/**
|
|
19
|
+
* Normalize a CAIP-19 asset ID, returning the original on failure. Some
|
|
20
|
+
* malformed IDs (e.g. an asset reference that fails address checksumming)
|
|
21
|
+
* make {@link normalizeAssetId} throw; callers processing untrusted input
|
|
22
|
+
* use this so one bad ID cannot abort a whole batch.
|
|
23
|
+
*
|
|
24
|
+
* @param assetId - The CAIP-19 asset ID to normalize.
|
|
25
|
+
* @returns The normalized ID, or the original on failure.
|
|
26
|
+
*/
|
|
27
|
+
export declare function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19AssetId;
|
|
28
|
+
/**
|
|
29
|
+
* Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.
|
|
30
|
+
*/
|
|
31
|
+
export declare function clearNormalizeAssetIdCacheForTesting(): void;
|
|
32
|
+
//# sourceMappingURL=normalizeAssetId.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAssetId.d.mts","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAoB;AAEjD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,CAAC,GACxE,gBAcA,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAM1E;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
function $importDefault(module) {
|
|
2
|
+
if (module?.__esModule) {
|
|
3
|
+
return module.default;
|
|
4
|
+
}
|
|
5
|
+
return module;
|
|
6
|
+
}
|
|
7
|
+
import { toChecksumAddress } from "@ethereumjs/util";
|
|
8
|
+
import { parseCaipAssetType, parseCaipChainId } from "@metamask/utils";
|
|
9
|
+
import $memoize from "lodash/memoize.js";
|
|
10
|
+
const memoize = $importDefault($memoize);
|
|
4
11
|
/**
|
|
5
12
|
* Normalizes a CAIP-19 asset ID by checksumming EVM addresses.
|
|
6
13
|
* This ensures consistent asset IDs regardless of the data source format.
|
|
@@ -49,4 +56,4 @@ export function safeNormalizeAssetId(assetId) {
|
|
|
49
56
|
export function clearNormalizeAssetIdCacheForTesting() {
|
|
50
57
|
normalizeAssetId.cache.clear?.();
|
|
51
58
|
}
|
|
52
|
-
//# sourceMappingURL=normalizeAssetId.
|
|
59
|
+
//# sourceMappingURL=normalizeAssetId.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeAssetId.mjs","sourceRoot":"","sources":["../../src/utils/normalizeAssetId.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB;AAEvE,OAAO,QAAO,0BAAuB;;AAIrC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gBAAgB,GACR,OAAO,CAAC,CAAC,OAAsB,EAAiB,EAAE;IACrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvD,oCAAoC;IACpC,IACE,aAAa,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,cAAc,KAAK,OAAO,EACjC,CAAC;QACD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACpE,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,kBAAkB,EAAmB,CAAC;IAC7F,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAsB;IACzD,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC;IAClD,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;AACnC,CAAC","sourcesContent":["import { toChecksumAddress } from '@ethereumjs/util';\nimport { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';\nimport type { MemoizedFunction } from 'lodash';\nimport memoize from 'lodash/memoize';\n\nimport type { Caip19AssetId } from '../types.js';\n\n/**\n * Normalizes a CAIP-19 asset ID by checksumming EVM addresses.\n * This ensures consistent asset IDs regardless of the data source format.\n *\n * For EVM ERC20 tokens (e.g., \"eip155:1/erc20:0x...\"), the address is checksummed.\n * All other asset types are returned unchanged.\n *\n * Results are memoized with lodash: repeated calls with the same ID (common after\n * the first pipeline pass, when IDs are already checksummed) skip re-parsing and\n * keccak256 checksum work.\n *\n * @param assetId - The CAIP-19 asset ID to normalize\n * @returns The normalized asset ID with checksummed address (for EVM tokens)\n */\nexport const normalizeAssetId: ((assetId: Caip19AssetId) => Caip19AssetId) &\n MemoizedFunction = memoize((assetId: Caip19AssetId): Caip19AssetId => {\n const parsed = parseCaipAssetType(assetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n\n // Only checksum EVM ERC20 addresses\n if (\n chainIdParsed.namespace === 'eip155' &&\n parsed.assetNamespace === 'erc20'\n ) {\n const checksummedAddress = toChecksumAddress(parsed.assetReference);\n return `${parsed.chainId}/${parsed.assetNamespace}:${checksummedAddress}` as Caip19AssetId;\n }\n\n return assetId;\n});\n\n/**\n * Normalize a CAIP-19 asset ID, returning the original on failure. Some\n * malformed IDs (e.g. an asset reference that fails address checksumming)\n * make {@link normalizeAssetId} throw; callers processing untrusted input\n * use this so one bad ID cannot abort a whole batch.\n *\n * @param assetId - The CAIP-19 asset ID to normalize.\n * @returns The normalized ID, or the original on failure.\n */\nexport function safeNormalizeAssetId(assetId: Caip19AssetId): Caip19AssetId {\n try {\n return normalizeAssetId(assetId);\n } catch {\n return assetId;\n }\n}\n\n/**\n * Clears the {@link normalizeAssetId} memoize cache. Exported for unit tests.\n */\nexport function clearNormalizeAssetIdCacheForTesting(): void {\n normalizeAssetId.cache.clear?.();\n}\n"]}
|