codeant-ai-for-open-source[bot] commented on code in PR #37522:
URL: https://github.com/apache/superset/pull/37522#discussion_r2741015178
##########
superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts:
##########
@@ -140,7 +140,7 @@ export default function transformProps(
currencyFormats = {},
columnFormats = {},
currencyCodeColumn,
- } = datasource;
+ } = datasource as typeof datasource & { currencyCodeColumn?: string };
const { label_map: labelMap, detected_currency: backendDetectedCurrency } =
queriesData[0] as TimeseriesChartDataResponseResult;
Review Comment:
**Suggestion:** Destructuring directly from `queriesData[0]` can throw if
`queriesData[0]` is undefined at runtime; wrap the source in a nullish-default
before destructuring and provide a safe default for `label_map` so downstream
code doesn't access properties on undefined. [possible bug]
<details>
<summary><b>Severity Level:</b> Major ⚠️</summary>
```mdx
- ❌ MixedTimeseries chart render crashes (transformProps.ts).
- ⚠️ Formula/annotation processing aborted silently.
- ⚠️ Unit tests invoking transformProps may fail.
```
</details>
```suggestion
const q0 = (queriesData[0] ?? {}) as TimeseriesChartDataResponseResult;
const { label_map: labelMap = {}, detected_currency:
backendDetectedCurrency } = q0;
```
<details>
<summary><b>Steps of Reproduction ✅ </b></summary>
```mdx
1. Open file
superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
and
locate function `transformProps` (function start around line 121). Note the
destructuring
at lines 144-145 that reads `queriesData[0]` directly.
2. In a unit test or Node REPL import this function and call it directly
with a minimal
chartProps object whose `queriesData` is an empty array (e.g., `{
...minimalProps,
queriesData: [] }`). This simulates a render where no query result was
provided for query
A.
3. Execution reaches transformProps and attempts the destructuring on lines
144-145.
Because `queriesData[0]` is undefined, JavaScript throws a TypeError when
trying to
destructure `label_map` from undefined (error observed at
transformProps.ts:144-145).
4. Note: the presence of defensive code in getAnnotationData (see
superset-frontend/plugins/plugin-chart-echarts/src/utils/annotation.ts:132-140)
uses
optional chaining on `queriesData[0]`, indicating callers can provide
missing query data.
Therefore the destructuring at transformProps is a real risk rather than a
purely
theoretical issue.
```
</details>
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:**
superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
**Line:** 144:145
**Comment:**
*Possible Bug: Destructuring directly from `queriesData[0]` can throw
if `queriesData[0]` is undefined at runtime; wrap the source in a
nullish-default before destructuring and provide a safe default for `label_map`
so downstream code doesn't access properties on undefined.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
```
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]