@metamask-previews/assets-controller 10.2.0-preview-2263d69 → 10.2.0-preview-cab0b56bc

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 (44) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/AssetsController.cjs +16 -3
  3. package/dist/AssetsController.cjs.map +1 -1
  4. package/dist/AssetsController.d.cts +4 -2
  5. package/dist/AssetsController.d.cts.map +1 -1
  6. package/dist/AssetsController.d.mts +4 -2
  7. package/dist/AssetsController.d.mts.map +1 -1
  8. package/dist/AssetsController.mjs +16 -3
  9. package/dist/AssetsController.mjs.map +1 -1
  10. package/dist/data-sources/SnapDataSource.cjs +32 -2
  11. package/dist/data-sources/SnapDataSource.cjs.map +1 -1
  12. package/dist/data-sources/SnapDataSource.d.cts +8 -1
  13. package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
  14. package/dist/data-sources/SnapDataSource.d.mts +8 -1
  15. package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
  16. package/dist/data-sources/SnapDataSource.mjs +32 -2
  17. package/dist/data-sources/SnapDataSource.mjs.map +1 -1
  18. package/dist/data-sources/index.cjs.map +1 -1
  19. package/dist/data-sources/index.d.cts +1 -1
  20. package/dist/data-sources/index.d.cts.map +1 -1
  21. package/dist/data-sources/index.d.mts +1 -1
  22. package/dist/data-sources/index.d.mts.map +1 -1
  23. package/dist/data-sources/index.mjs.map +1 -1
  24. package/dist/data-sources/stellar.cjs +50 -0
  25. package/dist/data-sources/stellar.cjs.map +1 -0
  26. package/dist/data-sources/stellar.d.cts +44 -0
  27. package/dist/data-sources/stellar.d.cts.map +1 -0
  28. package/dist/data-sources/stellar.d.mts +44 -0
  29. package/dist/data-sources/stellar.d.mts.map +1 -0
  30. package/dist/data-sources/stellar.mjs +44 -0
  31. package/dist/data-sources/stellar.mjs.map +1 -0
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.cts +1 -1
  34. package/dist/index.d.cts.map +1 -1
  35. package/dist/index.d.mts +1 -1
  36. package/dist/index.d.mts.map +1 -1
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/types.cjs.map +1 -1
  39. package/dist/types.d.cts +2 -0
  40. package/dist/types.d.cts.map +1 -1
  41. package/dist/types.d.mts +2 -0
  42. package/dist/types.d.mts.map +1 -1
  43. package/dist/types.mjs.map +1 -1
  44. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - Add Stellar-only snap account-asset enrichment ([9455] (https://github.com/MetaMask/core/pull/9455))
13
+ - Add optional `snapDataSourceConfig.isStellarEnabled` getter to `AssetsControllerOptions` so clients can enable or disable Stellar snap `getAccountAssetInfo` enrichment at runtime (defaults to disabled)
14
+ - Add Stellar-only snap account-asset enrichment on `SnapDataSource.fetch` when `isStellarEnabled` is true: trustline fields from `getAccountAssetInfo` are attached to matching `stellar:pubnet` native and trustline balance rows under `metadata` on `FungibleAssetBalance`; balance push events (`AccountsController:accountBalancesUpdated`) pass amounts through without enrichment — clients should call `getAssets` after trustline-related snap events (e.g. `AccountsController:accountAssetListUpdated`)
15
+
10
16
  ## [10.2.0]
11
17
 
12
18
  ### Added
@@ -199,6 +199,12 @@ function normalizeResponse(response) {
199
199
  }
200
200
  return normalized;
201
201
  }
202
+ function mergeBalanceEntry(previous, incoming) {
203
+ return {
204
+ ...(previous ?? { amount: '0' }),
205
+ ...incoming,
206
+ };
207
+ }
202
208
  /**
203
209
  * Merge account balances from a data-source response into prior state.
204
210
  *
@@ -211,7 +217,11 @@ function normalizeResponse(response) {
211
217
  */
212
218
  function mergeAccountBalances(previousBalances, accountBalances, customAssetIds, replaceCoveredChains) {
213
219
  if (!replaceCoveredChains) {
214
- return { ...previousBalances, ...accountBalances };
220
+ const next = { ...previousBalances };
221
+ for (const [assetId, balance] of Object.entries(accountBalances)) {
222
+ next[assetId] = mergeBalanceEntry(previousBalances[assetId], balance);
223
+ }
224
+ return next;
215
225
  }
216
226
  const coveredChains = new Set(Object.keys(accountBalances).map((assetId) => assetId.split('/')[0]));
217
227
  const next = {};
@@ -220,7 +230,9 @@ function mergeAccountBalances(previousBalances, accountBalances, customAssetIds,
220
230
  next[assetId] = balance;
221
231
  }
222
232
  }
223
- Object.assign(next, accountBalances);
233
+ for (const [assetId, balance] of Object.entries(accountBalances)) {
234
+ next[assetId] = mergeBalanceEntry(previousBalances[assetId], balance);
235
+ }
224
236
  for (const customId of customAssetIds) {
225
237
  if (!Object.prototype.hasOwnProperty.call(next, customId)) {
226
238
  const prev = previousBalances[customId];
@@ -260,7 +272,7 @@ function mergeAccountBalances(previousBalances, accountBalances, customAssetIds,
260
272
  * - The controller does NOT manage polling - it simply receives pushed updates
261
273
  */
262
274
  class AssetsController extends base_controller_1.BaseController {
263
- constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, captureException, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, tempMigrateAssetsInfoMetadataAssets3346, }) {
275
+ constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, captureException, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, snapDataSourceConfig, isOnboarded, tempMigrateAssetsInfoMetadataAssets3346, }) {
264
276
  super({
265
277
  name: CONTROLLER_NAME,
266
278
  messenger,
@@ -362,6 +374,7 @@ class AssetsController extends base_controller_1.BaseController {
362
374
  __classPrivateFieldSet(this, _AssetsController_snapDataSource, new SnapDataSource_1.SnapDataSource({
363
375
  messenger: this.messenger,
364
376
  onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
377
+ ...snapDataSourceConfig,
365
378
  }), "f");
366
379
  __classPrivateFieldSet(this, _AssetsController_rpcDataSource, new RpcDataSource_1.RpcDataSource({
367
380
  messenger: this.messenger,