@metamask-previews/assets-controller 8.3.0-preview-3a34409 → 8.3.0-preview-d9626a5a2

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/AssetsController.cjs +10 -1
  3. package/dist/AssetsController.cjs.map +1 -1
  4. package/dist/AssetsController.d.cts.map +1 -1
  5. package/dist/AssetsController.d.mts.map +1 -1
  6. package/dist/AssetsController.mjs +11 -2
  7. package/dist/AssetsController.mjs.map +1 -1
  8. package/dist/data-sources/BackendWebsocketDataSource.cjs +6 -2
  9. package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
  10. package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
  11. package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
  12. package/dist/data-sources/BackendWebsocketDataSource.mjs +6 -2
  13. package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
  14. package/dist/selectors/balance.cjs +5 -1
  15. package/dist/selectors/balance.cjs.map +1 -1
  16. package/dist/selectors/balance.d.cts.map +1 -1
  17. package/dist/selectors/balance.d.mts.map +1 -1
  18. package/dist/selectors/balance.mjs +5 -1
  19. package/dist/selectors/balance.mjs.map +1 -1
  20. package/dist/utils/index.cjs +3 -1
  21. package/dist/utils/index.cjs.map +1 -1
  22. package/dist/utils/index.d.cts +1 -0
  23. package/dist/utils/index.d.cts.map +1 -1
  24. package/dist/utils/index.d.mts +1 -0
  25. package/dist/utils/index.d.mts.map +1 -1
  26. package/dist/utils/index.mjs +1 -0
  27. package/dist/utils/index.mjs.map +1 -1
  28. package/dist/utils/normalizeAmountString.cjs +64 -0
  29. package/dist/utils/normalizeAmountString.cjs.map +1 -0
  30. package/dist/utils/normalizeAmountString.d.cts +35 -0
  31. package/dist/utils/normalizeAmountString.d.cts.map +1 -0
  32. package/dist/utils/normalizeAmountString.d.mts +35 -0
  33. package/dist/utils/normalizeAmountString.d.mts.map +1 -0
  34. package/dist/utils/normalizeAmountString.mjs +57 -0
  35. package/dist/utils/normalizeAmountString.mjs.map +1 -0
  36. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Fixed
11
+
12
+ - Fix sub-`1e-7` dust balance amounts being serialized in scientific-notation form (e.g. `"1e-18"`) instead of plain decimal, which caused crashes in downstream `BigInt()`-based consumers ([#8982](https://github.com/MetaMask/core/pull/8982))
13
+
10
14
  ## [8.3.0]
11
15
 
12
16
  ### Added
@@ -1439,7 +1439,16 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1439
1439
  }
1440
1440
  for (const [assetId, balance] of Object.entries(effective)) {
1441
1441
  const previousBalance = previousBalances[assetId];
1442
- const newAmount = balance.amount;
1442
+ // Coerce amounts (e.g. "1e-18" from a data source stringifying
1443
+ // a JS Number) into a plain decimal so downstream BigInt()
1444
+ // consumers don't crash. Decimals are read from the freshest
1445
+ // merged metadata when available; when metadata is not yet
1446
+ // known, the amount is left at its natural precision (only
1447
+ // exponent form is rewritten) so balances arriving before
1448
+ // their metadata aren't lossily truncated.
1449
+ const assetDecimals = metadata[assetId]?.decimals;
1450
+ const newAmount = (0, utils_2.normalizeAmountString)(balance.amount, assetDecimals);
1451
+ effective[assetId] = { ...balance, amount: newAmount };
1443
1452
  const oldAmount = previousBalance?.amount;
1444
1453
  const isNewDefaultNativeZero = oldAmount === undefined &&
1445
1454
  newAmount === '0' &&