Browse Source

Bugfix/fix exception when fetching top holdings in Yahoo Finance service (#6279)

* Add missing guard

* Update changelog
pull/6280/head
Thomas Kaul 4 days ago
committed by GitHub
parent
commit
eb6177d2e5
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      CHANGELOG.md
  2. 34
      apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts

4
CHANGELOG.md

@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Upgraded `stripe` from version `20.1.0` to `20.3.0` - Upgraded `stripe` from version `20.1.0` to `20.3.0`
### Fixed
- Fixed an exception when fetching the top holdings for ETF and mutual fund assets from _Yahoo Finance_
## 2.235.0 - 2026-02-03 ## 2.235.0 - 2026-02-03
### Added ### Added

34
apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts

@ -206,26 +206,26 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
); );
if (['ETF', 'MUTUALFUND'].includes(assetSubClass)) { if (['ETF', 'MUTUALFUND'].includes(assetSubClass)) {
response.sectors = []; response.holdings =
assetProfile.topHoldings?.holdings?.map(
for (const sectorWeighting of assetProfile.topHoldings ({ holdingName, holdingPercent }) => {
?.sectorWeightings ?? []) { return {
for (const [sector, weight] of Object.entries(sectorWeighting)) { name: this.formatName({ longName: holdingName }),
response.sectors.push({ weight: holdingPercent
};
}
) ?? [];
response.sectors = (
assetProfile.topHoldings?.sectorWeightings ?? []
).flatMap((sectorWeighting) => {
return Object.entries(sectorWeighting).map(([sector, weight]) => {
return {
name: this.parseSector(sector), name: this.parseSector(sector),
weight: weight as number weight: weight as number
});
}
}
response.holdings = assetProfile.topHoldings.holdings.map(
({ holdingName, holdingPercent }) => {
return {
name: this.formatName({ longName: holdingName }),
weight: holdingPercent
}; };
} });
); });
} else if ( } else if (
assetSubClass === 'STOCK' && assetSubClass === 'STOCK' &&
assetProfile.summaryProfile?.country assetProfile.summaryProfile?.country

Loading…
Cancel
Save