Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


rusackas commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3715902414

   Thanks to both of you! On to the next batch! :D 


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


rusackas merged PR #36760:
URL: https://github.com/apache/superset/pull/36760


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3715674978

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3715434154

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2665525798


##
superset-frontend/src/SqlLab/components/SqlEditorLeftBar/index.tsx:
##
@@ -195,7 +195,8 @@ const SqlEditorLeftBar = ({ queryEditorId }: 
SqlEditorLeftBarProps) => {
 
   const handleDbList = useCallback(
 (result: DatabaseObject) => {
-  dispatch(setDatabases(result));
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any

Review Comment:
   This is not a bug.
   
 Looking at the reducer (lines 707-718):
 [actions.SET_DATABASES]() {
   const databases: any = {};
   (action.databases as any[])!.forEach((db: any) => {
 databases[db.id] = {  // <-- Converts array to map
   ...db,
   extra_json: JSON.parse(db.extra || ''),
 };
   });
   return { ...state, databases };  // Stores as map
 }
   
 The flow is:
 1. Input: setDatabases receives an array from the API
 2. Reducer: Converts array → map keyed by db.id
 3. State: Stores databases as a map
 4. Usage: databases[dbId] lookups work correctly
   
 The action accepts an array, and the reducer transforms it to a map 
internally. This is by design - no fix needed.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3714591455

   CodeAnt AI finished running the review.
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


codeant-ai-for-open-source[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2664830007


##
superset-frontend/src/SqlLab/actions/sqlLab.ts:
##
@@ -430,11 +613,19 @@ export function postStopQuery(query) {
   };
 }
 
-export function setDatabases(databases) {
+export function setDatabases(
+  databases: Record,

Review Comment:
   **Suggestion:** The `setDatabases` action creator is typed to accept a 
`Record`, while the reducer's `SET_DATABASES` handler treats 
`action.databases` as an array and calls `.forEach` on it; if callers follow 
the action's type and pass a record, this will cause a runtime `TypeError: 
action.databases.forEach is not a function`. To keep the contract consistent 
and avoid this failure, the action should accept a `Database[]`, matching what 
the reducer expects. [logic error]
   
   **Severity Level:** Minor ⚠️
   ```suggestion
   export function setDatabases(databases: Database[]): SqlLabAction {
   ```
   
   Why it matters? ⭐ 
   
   The PR adds a setDatabases action creator typed as Record 
but the reducer (superset-frontend/src/SqlLab/reducers/sqlLab.ts) clearly 
treats action.databases as an array and iterates over it:
   
   (action.databases as any[])!.forEach((db: any) => { ... });
   
   This is a real typing/contract mismatch. If callers provide a record 
(matching the current action signature) the reducer will throw 
"action.databases.forEach is not a function" at runtime. Changing the action 
signature to accept Database[] brings the action type in-line with the 
reducer's expectation and prevents this class of runtime error. The change is 
not merely stylistic — it fixes a real inconsistency verified in the codebase.
   
   
   Prompt for AI Agent 🤖 
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset-frontend/src/SqlLab/actions/sqlLab.ts
   **Line:** 616:617
   **Comment:**
*Logic Error: The `setDatabases` action creator is typed to accept a 
`Record`, while the reducer's `SET_DATABASES` handler treats 
`action.databases` as an array and calls `.forEach` on it; if callers follow 
the action's type and pass a record, this will cause a runtime `TypeError: 
action.databases.forEach is not a function`. To keep the contract consistent 
and avoid this failure, the action should accept a `Database[]`, matching what 
the reducer expects.
   
   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.
   ```
   



##
superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:
##
@@ -344,9 +344,9 @@ export const SaveDatasetModal = ({
 dispatch(
   createDatasource({
 sql: datasource.sql,
-dbId: datasource.dbId || datasource?.database?.id,
-catalog: datasource?.catalog,
-schema: datasource?.schema,
+dbId: (datasource.dbId || datasource?.database?.id) as number,

Review Comment:
   **Suggestion:** The `dbId` fallback currently uses the `||` operator, which 
treats `0` as falsy and will incorrectly ignore a valid `dbId` of `0` in favor 
of `datasource.database.id`. This can lead to sending the wrong `database` id 
to the `/api/v1/dataset/` endpoint and associating the new virtual dataset with 
an unintended database. Using nullish coalescing (`??`) ensures that only 
`null`/`undefined` trigger the fallback while preserving legitimate numeric 
ids. [logic error]
   
   **Severity Level:** Minor ⚠️
   ```suggestion
   dbId: (datasource.dbId ?? datasource?.database?.id) as number,
   ```
   
   Why it matters? ⭐ 
   
   The current code uses the logical OR operator which treats 0 as falsy. If a 
valid database id of 0 is possible in this environment, the expression will 
incorrectly fall back to datasource?.database?.id, potentially associating the 
new dataset with the wrong database. Replacing `||` with the nullish coalescing 
operator `??` preserves legitimate numeric 0 while still falling back only on 
null/undefined, so this is a real logic bug fix rather than a cosmetic change.
   
   
   Prompt for AI Agent 🤖 
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx
   **Line:** 347:347
   **Comment:**
*Logic Error: The `dbId` fallback currently uses the `||` operator, 
which treats `0` as falsy and will incorrectly ignore a valid `dbId` of `0` in 
favor of `datasource.database.id`. This can lead to sending the wrong 
`database` id to the `/api/v1/dataset/` endpoint and associating the new 
virtual dataset with an unintended database. Using nullish coalescing (`??`) 
ensures that only `null`/`undefined` trigger the fallback while preserving 
legitimate numeric ids.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please ma

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3714577711

   ## **Sequence Diagram**
   
   The PR migrates SqlLab and Explore controls to TypeScript and tightens 
action/reducer types. This diagram shows the core success paths: running a SQL 
query through SqlLab actions to the API and updating state, and applying an 
annotation from the AnnotationLayer control which fetches chart/native options 
then emits the finalized annotation to the parent handler.
   
   ```mermaid
   sequenceDiagram
   participant User
   participant SqlEditor (UI)
   participant SqlLabActions
   participant SupersetAPI
   participant SqlLabReducer
   participant AnnotationLayer (UI)
   participant ParentHandler
   
   %% Query run success path
   User->>SqlEditor: Click "Run" (query object)
   SqlEditor->>SqlLabActions: dispatch runQuery(query)
   SqlLabActions->>SupersetAPI: POST /sqllab/execute (client_id, sql...)
   SupersetAPI-->>SqlLabActions: 200 OK (SqlExecuteResponse)
   SqlLabActions->>SqlLabReducer: dispatch QUERY_SUCCESS (query, results)
   SqlLabReducer-->>SqlEditor: state updated (queries -> results)
   
   %% Annotation apply path
   User->>AnnotationLayer: Open editor / select source (chart or native)
   AnnotationLayer->>SupersetAPI: GET /charts or /annotation_layer (async 
options)
   SupersetAPI-->>AnnotationLayer: lists of charts or layers
   AnnotationLayer->>AnnotationLayer: prepare newAnnotation (resolve 
value/overrides)
   AnnotationLayer->>ParentHandler: addAnnotationLayer(newAnnotation)
   ParentHandler-->>AnnotationLayer: confirm / close UI
   ```
   
   ---
   *Generated by [CodeAnt AI](https://codeant.ai)*
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


michael-s-molina commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3714573666

   @codeant-ai: review


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-06 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3714573939

   CodeAnt AI is running the review.
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-05 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3713322393

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-05 Thread via GitHub


netlify[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3713184686

   ### 👷 Deploy Preview for 
*superset-docs-preview* processing.
   
   
   |  Name | Link |
   |:-:||
   |🔨 Latest commit | 
f068039db88afc3f2ca321ee9e427c7a15b67b3e |
   |🔍 Latest deploy log | 
https://app.netlify.com/projects/superset-docs-preview/deploys/695c9ed47c126800084f0d1c
 |


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-05 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3713178077

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-05 Thread via GitHub


rusackas commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3711447051

   I'll see what I can brush up here... 
   
   The bajillion "any" types are obviously not great... that's just AI being 
lazy. But... I see this as only temporary. All part of a simple thousand-step 
plan!
   
   1) Get all the frontend (product) files in TypeScript... by any means 
necessary
   2) Start cleaning up and centralizing/reusing the existing Type definitions
   3) Tackle the `any` pile by using/extending/defining types
   4) Refactor tests to Typescript, taking advantage of all of the above.


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-03 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2638290071


##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -189,11 +188,10 @@ export class StandardizedFormData {
 
   transform(
 targetVizType: string,
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 exploreState: Record,
-  ): {
-formData: QueryFormData;
-controlsState: ControlStateMapping;
-  } {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+  ): any {
 /*
  * Transform form_data between different viz. Return new form_data and 
controlsState.
  * 1. get memorized form_data by viz type or get previous form_data

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   Changing the transform method return type to any degrades type safety and 
violates standards. The method should return a properly typed object with 
formData and controlsState.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/6d597ef/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   
   
   
   
   
   Code Review Run #402208
   
   
   
   
   Type Safety Violation
   
   
   Changing the `transform` method return type to `any` and adding eslint 
disable comments violates ongoing TypeScript modernization standards that 
prohibit `any` types.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/0fc9f19/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/0fc9f19/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #29cac3
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-03 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3707815187

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2026-01-03 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3707778132

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-23 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2644009950


##
superset-frontend/src/SqlLab/components/SqlEditorLeftBar/index.tsx:
##
@@ -195,7 +195,8 @@ const SqlEditorLeftBar = ({ queryEditorId }: 
SqlEditorLeftBarProps) => {
 
   const handleDbList = useCallback(
 (result: DatabaseObject) => {
-  dispatch(setDatabases(result));
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  dispatch(setDatabases(result as any));

Review Comment:
   
   The `as any` cast temporarily bypasses the type mismatch between the 
QueryEditor interface and TableSelector component's props from Redux state. 
It's documented as technical debt, with the proper fix—aligning the 
types—deferred for future work.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-23 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2644008962


##
superset-frontend/src/SqlLab/components/AceEditorWrapper/useKeywords.test.ts:
##
@@ -232,7 +232,8 @@ test('returns column keywords among selected tables', async 
() => {
 );
 storeWithSqlLab.dispatch(
   addTable(
-{ id: expectQueryEditorId },
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+{ id: expectQueryEditorId } as any,

Review Comment:
   
   The suggestion recommends replacing the partial mock object with a full 
QueryEditor to avoid type assertions and potential runtime issues where state 
lookups might fail. However, using partial mocks with only the necessary 'id' 
property is a common testing practice that keeps tests focused and 
maintainable, especially since the hook's behavior depends solely on that 
identifier. Full objects could introduce irrelevant complexity without adding 
value to this specific test.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-23 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2644006815


##
superset-frontend/src/SqlLab/components/SqlEditorLeftBar/index.tsx:
##
@@ -195,7 +195,8 @@ const SqlEditorLeftBar = ({ queryEditorId }: 
SqlEditorLeftBarProps) => {
 
   const handleDbList = useCallback(
 (result: DatabaseObject) => {
-  dispatch(setDatabases(result));
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  dispatch(setDatabases(result as any));

Review Comment:
   The `as any` cast bypasses a type mismatch between the QueryEditor interface 
and the TableSelector component's expected props. This component receives props 
from Redux state which has slightly different types than what TableSelector 
expects. Documented as technical debt.



##
superset-frontend/src/SqlLab/components/AceEditorWrapper/useKeywords.test.ts:
##
@@ -232,7 +232,8 @@ test('returns column keywords among selected tables', async 
() => {
 );
 storeWithSqlLab.dispatch(
   addTable(
-{ id: expectQueryEditorId },
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+{ id: expectQueryEditorId } as any,

Review Comment:
   Test files use partial mock objects by design. The test only needs the `id` 
property from QueryEditor to test the hook's behavior. Creating full 
QueryEditor objects for tests would add unnecessary complexity and make tests 
harder to maintain.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-23 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2643684876


##
superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnMetricSelect.tsx:
##
@@ -344,10 +345,14 @@ function DndColumnMetricSelect(props: 
DndColumnMetricSelectProps) {
   onChange(multi ? newValues : newValues[0]);
 }}
 onRemoveMetric={onClickClose}
-columns={columns}
-savedMetrics={savedMetrics}
-savedMetricsOptions={savedMetrics}
-datasource={datasource}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+columns={columns as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+savedMetrics={savedMetrics as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+savedMetricsOptions={savedMetrics as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+datasource={datasource as any}
 onMoveLabel={onShiftOptions}
 onDropLabel={() => {}}
 type={`${DndItemType.AdhocMetricOption}_${name}_${label}`}

Review Comment:
   
   The explanation is valid — `as any` casts are often used as a temporary 
workaround for complex library integrations like react-dnd, where full typing 
requires extensive refactoring. Consider adding a TODO comment to track future 
type improvements.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-23 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2643681280


##
superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnMetricSelect.tsx:
##
@@ -344,10 +345,14 @@ function DndColumnMetricSelect(props: 
DndColumnMetricSelectProps) {
   onChange(multi ? newValues : newValues[0]);
 }}
 onRemoveMetric={onClickClose}
-columns={columns}
-savedMetrics={savedMetrics}
-savedMetricsOptions={savedMetrics}
-datasource={datasource}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+columns={columns as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+savedMetrics={savedMetrics as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+savedMetricsOptions={savedMetrics as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+datasource={datasource as any}
 onMoveLabel={onShiftOptions}
 onDropLabel={() => {}}
 type={`${DndItemType.AdhocMetricOption}_${name}_${label}`}

Review Comment:
   The `as any` casts and eslint-disables document type incompatibilities 
between the DnD library and our typed props. The DndColumnMetricSelect 
component interfaces with react-dnd which has complex generic types. Proper 
typing would require extensive refactoring of the drag-and-drop infrastructure.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642210349


##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -211,13 +211,15 @@ export class StandardizedFormData {
 publicFormData[key] = exploreState.form_data[key];
   }
 });
-const targetControlsState = getControlsState(exploreState, {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+const targetControlsState = getControlsState(exploreState as any, {

Review Comment:
   
   Yes, the explanation is valid — the casts are necessary because 
`getControlsState()` returns `Record`, which doesn't match the 
expected `ControlStateMapping` type. Updating the function's return type across 
multiple files is out of scope for this JS→TS migration PR. It's properly 
documented as technical debt with eslint-disable comments.



##
superset-frontend/src/explore/components/controls/SelectControl.tsx:
##
@@ -316,11 +370,9 @@ export default class SelectControl extends PureComponent {
   }
 `}
   >
-
+{/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}
+

Review Comment:
   
   Your explanation is accurate. SelectControl handles diverse input types 
(strings, numbers, objects), leading to complex typing. The `any` cast and 
eslint-disable mark this as technical debt for future controls typing 
improvements.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642209870


##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -58,7 +78,7 @@ class AdhocMetricOption extends PureComponent {
   onMetricEdit,
   columns,
   savedMetricsOptions,
-  savedMetric,
+  savedMetric = {} as SavedMetricTypeDef,

Review Comment:
   
   Yes, defaulting savedMetric to {} maintains JavaScript destructuring 
behavior and ensures consistent handling. The check 
`Object.keys(savedMetric).length > 0` will correctly identify an empty object 
as no saved metric, triggering the appropriate code path without errors.



##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.tsx:
##
@@ -216,12 +216,12 @@ class AdhocMetricPopoverTrigger extends PureComponent<
   adhocMetric={adhocMetric}
   columns={columns}
   savedMetricsOptions={savedMetricsOptions}
-  savedMetric={savedMetric}
-  datasource={datasource}
+  savedMetric={savedMetric as savedMetricType}

Review Comment:
   
   This explanation documents the type assertion as intentional technical debt 
for the JS→TS migration, noting that parent components pass either a typed 
savedMetric or an empty object. The eslint-disable comment marks it for future 
cleanup. However, the bot's suggestion to pass undefined instead of asserting 
an empty object to savedMetricType is safer to avoid potential runtime property 
access errors.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642207986


##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -57,13 +57,14 @@ const defaultProps = {
   columns: [],
 };
 
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 function getOptionsForSavedMetrics(
-  savedMetrics,
-  currentMetricValues,
-  currentMetric,
+  savedMetrics: any,
+  currentMetricValues: any,
+  currentMetric: any,
 ) {

Review Comment:
   
   Yes, using `any` types with `eslint-disable` comments is a valid approach 
for documenting technical debt during a large JS→TS migration. It allows the 
conversion to proceed without requiring extensive refactoring of complex 
Redux/form state interactions, which can be addressed in follow-up work.
   
   
**superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx**
   ```
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
   function getOptionsForSavedMetrics(
 savedMetrics: any,
 currentMetricValues: any,
 currentMetric: any,
   ) {
   ```



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642208726


##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -18,12 +18,32 @@
  */
 import { PureComponent } from 'react';
 import PropTypes from 'prop-types';
+import { Metric } from '@superset-ui/core';
 import { OptionControlLabel } from 
'src/explore/components/controls/OptionControls';
 import { DndItemType } from 'src/explore/components/DndItemType';
+import { Datasource } from 'src/explore/types';
+import { ISaveableDatasource } from 'src/SqlLab/components/SaveDatasetModal';
 import columnType from './columnType';
 import AdhocMetric from './AdhocMetric';
 import savedMetricType from './savedMetricType';
 import AdhocMetricPopoverTrigger from './AdhocMetricPopoverTrigger';
+import { savedMetricType as SavedMetricTypeDef } from './types';
+
+interface AdhocMetricOptionProps {
+  adhocMetric: AdhocMetric;
+  onMetricEdit: (newMetric: Metric, oldMetric: Metric) => void;
+  onRemoveMetric?: (index: number) => void;
+  columns?: { column_name: string; type: string }[];
+  savedMetricsOptions?: SavedMetricTypeDef[];
+  savedMetric?: SavedMetricTypeDef | Record;

Review Comment:
   
   Yes, your explanation is accurate. In TypeScript, `Record` 
precisely types an empty object `{}`, matching the JavaScript default behavior 
without introducing properties.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642206490


##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -58,7 +78,7 @@ class AdhocMetricOption extends PureComponent {
   onMetricEdit,
   columns,
   savedMetricsOptions,
-  savedMetric,
+  savedMetric = {} as SavedMetricTypeDef,

Review Comment:
   Defaulting to `{}` matches the original JavaScript behavior. Components 
conditionally render based on whether the savedMetric has properties - this is 
checked with patterns like `Object.keys(savedMetric).length > 0`. An empty 
object correctly triggers the "no saved metric" code path.



##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.tsx:
##
@@ -216,12 +216,12 @@ class AdhocMetricPopoverTrigger extends PureComponent<
   adhocMetric={adhocMetric}
   columns={columns}
   savedMetricsOptions={savedMetricsOptions}
-  savedMetric={savedMetric}
-  datasource={datasource}
+  savedMetric={savedMetric as savedMetricType}

Review Comment:
   Same pattern as other documented technical debt in this migration. The type 
assertion is needed because the component receives props from parent components 
that pass either a typed `savedMetric` or an empty object. The `eslint-disable` 
comment documents this as intentional for migration scope.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642206987


##
superset-frontend/src/explore/components/controls/SelectControl.tsx:
##
@@ -316,11 +370,9 @@ export default class SelectControl extends PureComponent {
   }
 `}
   >
-
+{/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}
+

Review Comment:
   The `any` cast and eslint-disable are documenting existing type complexity 
in this component. The `SelectControl` handles multiple input types (strings, 
numbers, objects) which makes precise typing complex. This is marked for future 
type improvement as part of the broader controls typing effort.



##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -211,13 +211,15 @@ export class StandardizedFormData {
 publicFormData[key] = exploreState.form_data[key];
   }
 });
-const targetControlsState = getControlsState(exploreState, {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+const targetControlsState = getControlsState(exploreState as any, {

Review Comment:
   These casts are necessary because `getControlsState()` returns 
`Record` but the code expects more specific types. The 
function's return type would need to be updated across multiple files to 
properly type this. Documented as technical debt for future cleanup.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642205586


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/index.tsx:
##
@@ -59,14 +60,16 @@ export default function AdhocFilterOption({
   operators={operators}
   adhocFilter={adhocFilter}
   options={options}
-  datasource={datasource}
+  datasource={datasource as Record || {}}
   onFilterEdit={onFilterEdit}
-  partitionColumn={partitionColumn}
+  partitionColumn={partitionColumn ?? undefined}
 >
   
+  onRemoveFilter({} as React.MouseEvent)
+}

Review Comment:
   
   Yes, the suggestion is valid — it provides a minimal mock MouseEvent with 
only the stopPropagation method, which is sufficient since the handler only 
calls that method.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642206326


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.tsx:
##
@@ -331,16 +391,16 @@ class AdhocFilterControl extends Component {
 return null;
   }
 
-  addNewFilterPopoverTrigger(trigger) {
+  addNewFilterPopoverTrigger(trigger: ReactNode): JSX.Element {
 return (
|| {}}
 options={this.state.options}
-onFilterEdit={this.onNewFilter}
-partitionColumn={this.state.partitionColumn}
+onFilterEdit={this.onNewFilter as unknown as (editedFilter: 
AdhocFilter) => void}

Review Comment:
   
   Yes, the unsafe type assertion has been removed. The onNewFilter method now 
accepts FilterOption | AdhocFilter, eliminating the need for the cast.
   
   
**superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.tsx**
   ```
   addNewFilterPopoverTrigger(trigger: ReactNode): JSX.Element {
   return (
 ) || {}}
   options={this.state.options}
   onFilterEdit={this.onNewFilter}
   partitionColumn={this.state.partitionColumn ?? undefined}
 >
   {trigger}
 
   );
 }
   ```



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642204482


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/index.tsx:
##
@@ -59,14 +60,16 @@ export default function AdhocFilterOption({
   operators={operators}
   adhocFilter={adhocFilter}
   options={options}
-  datasource={datasource}
+  datasource={datasource as Record || {}}
   onFilterEdit={onFilterEdit}
-  partitionColumn={partitionColumn}
+  partitionColumn={partitionColumn ?? undefined}
 >
   
+  onRemoveFilter({} as React.MouseEvent)
+}

Review Comment:
   The fake MouseEvent includes `stopPropagation: () => {}` which is the only 
method used by the handler. The original JavaScript created this pattern - 
we're just typing what already existed. Since only `stopPropagation()` is 
called on this event, providing a minimal mock is sufficient.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642204861


##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -18,12 +18,32 @@
  */
 import { PureComponent } from 'react';
 import PropTypes from 'prop-types';
+import { Metric } from '@superset-ui/core';
 import { OptionControlLabel } from 
'src/explore/components/controls/OptionControls';
 import { DndItemType } from 'src/explore/components/DndItemType';
+import { Datasource } from 'src/explore/types';
+import { ISaveableDatasource } from 'src/SqlLab/components/SaveDatasetModal';
 import columnType from './columnType';
 import AdhocMetric from './AdhocMetric';
 import savedMetricType from './savedMetricType';
 import AdhocMetricPopoverTrigger from './AdhocMetricPopoverTrigger';
+import { savedMetricType as SavedMetricTypeDef } from './types';
+
+interface AdhocMetricOptionProps {
+  adhocMetric: AdhocMetric;
+  onMetricEdit: (newMetric: Metric, oldMetric: Metric) => void;
+  onRemoveMetric?: (index: number) => void;
+  columns?: { column_name: string; type: string }[];
+  savedMetricsOptions?: SavedMetricTypeDef[];
+  savedMetric?: SavedMetricTypeDef | Record;

Review Comment:
   The `Record` type is intentional - it matches the existing 
JavaScript behavior where `savedMetric` defaults to an empty object `{}`. Using 
`never` accurately represents that when no saved metric is provided, the object 
has no properties.



##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -57,13 +57,14 @@ const defaultProps = {
   columns: [],
 };
 
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 function getOptionsForSavedMetrics(
-  savedMetrics,
-  currentMetricValues,
-  currentMetric,
+  savedMetrics: any,
+  currentMetricValues: any,
+  currentMetric: any,
 ) {

Review Comment:
   These `any` types are **documented technical debt** with `eslint-disable` 
comments. This is a JS→TS migration that converts ~40 JavaScript files - proper 
typing for these complex Redux/form state interactions would require 
significant refactoring beyond the migration scope. The `eslint-disable` 
pattern follows codebase guidelines for documenting unavoidable debt.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2642202189


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.tsx:
##
@@ -331,16 +391,16 @@ class AdhocFilterControl extends Component {
 return null;
   }
 
-  addNewFilterPopoverTrigger(trigger) {
+  addNewFilterPopoverTrigger(trigger: ReactNode): JSX.Element {
 return (
|| {}}
 options={this.state.options}
-onFilterEdit={this.onNewFilter}
-partitionColumn={this.state.partitionColumn}
+onFilterEdit={this.onNewFilter as unknown as (editedFilter: 
AdhocFilter) => void}

Review Comment:
   This was **fixed** - the unsafe type assertion was removed. The 
`onNewFilter` method signature was updated to accept `FilterOption | 
AdhocFilter`, eliminating the need for the `as unknown as` cast. See the 
updated code at line 416.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641588325


##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -57,13 +57,14 @@ const defaultProps = {
   columns: [],
 };
 
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 function getOptionsForSavedMetrics(
-  savedMetrics,
-  currentMetricValues,
-  currentMetric,
+  savedMetrics: any,
+  currentMetricValues: any,
+  currentMetric: any,
 ) {

Review Comment:
   
   Using `any` types with `eslint-disable` comments is a pragmatic approach for 
JS→TS migrations, especially for complex state interactions. It documents 
technical debt without blocking the conversion, aligning with guidelines for 
cases where full typing requires broader refactoring. This avoids regressions 
while enabling future cleanup.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641588588


##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -18,12 +18,32 @@
  */
 import { PureComponent } from 'react';
 import PropTypes from 'prop-types';
+import { Metric } from '@superset-ui/core';
 import { OptionControlLabel } from 
'src/explore/components/controls/OptionControls';
 import { DndItemType } from 'src/explore/components/DndItemType';
+import { Datasource } from 'src/explore/types';
+import { ISaveableDatasource } from 'src/SqlLab/components/SaveDatasetModal';
 import columnType from './columnType';
 import AdhocMetric from './AdhocMetric';
 import savedMetricType from './savedMetricType';
 import AdhocMetricPopoverTrigger from './AdhocMetricPopoverTrigger';
+import { savedMetricType as SavedMetricTypeDef } from './types';
+
+interface AdhocMetricOptionProps {
+  adhocMetric: AdhocMetric;
+  onMetricEdit: (newMetric: Metric, oldMetric: Metric) => void;
+  onRemoveMetric?: (index: number) => void;
+  columns?: { column_name: string; type: string }[];
+  savedMetricsOptions?: SavedMetricTypeDef[];
+  savedMetric?: SavedMetricTypeDef | Record;

Review Comment:
   
   Your explanation makes sense for matching JavaScript's default empty object 
behavior and enabling conditional rendering based on property presence. 
However, since `SavedMetricTypeDef` requires fields like `metric_name` and 
`expression`, allowing `Record` (which is `{}`) and then casting 
it as `SavedMetricTypeDef` creates type safety risks—code might assume required 
properties exist. Consider changing the type to `SavedMetricTypeDef | 
undefined` and defaulting `savedMetric` to `undefined` instead of `{}` for 
stricter typing.
   
   **superset-frontend/src/explore/components/controls/MetricControl/types.ts**
   ```
   export type savedMetricType = {
 metric_name: string;
 verbose_name?: string;
 expression: string;
 error_text?: string;
 id?: number | string;
   };
   ```



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641587351


##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -18,12 +18,32 @@
  */
 import { PureComponent } from 'react';
 import PropTypes from 'prop-types';
+import { Metric } from '@superset-ui/core';
 import { OptionControlLabel } from 
'src/explore/components/controls/OptionControls';
 import { DndItemType } from 'src/explore/components/DndItemType';
+import { Datasource } from 'src/explore/types';
+import { ISaveableDatasource } from 'src/SqlLab/components/SaveDatasetModal';
 import columnType from './columnType';
 import AdhocMetric from './AdhocMetric';
 import savedMetricType from './savedMetricType';
 import AdhocMetricPopoverTrigger from './AdhocMetricPopoverTrigger';
+import { savedMetricType as SavedMetricTypeDef } from './types';
+
+interface AdhocMetricOptionProps {
+  adhocMetric: AdhocMetric;
+  onMetricEdit: (newMetric: Metric, oldMetric: Metric) => void;
+  onRemoveMetric?: (index: number) => void;
+  columns?: { column_name: string; type: string }[];
+  savedMetricsOptions?: SavedMetricTypeDef[];
+  savedMetric?: SavedMetricTypeDef | Record;

Review Comment:
   The `Record` type is intentional - it matches the existing 
JavaScript behavior where `savedMetric` defaults to an empty object `{}`. 
   
   Using `never` accurately represents that when no saved metric is provided, 
the object has no properties. This is used for conditional rendering - 
components check if the savedMetric has properties before rendering 
metric-specific UI.



##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -57,13 +57,14 @@ const defaultProps = {
   columns: [],
 };
 
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 function getOptionsForSavedMetrics(
-  savedMetrics,
-  currentMetricValues,
-  currentMetric,
+  savedMetrics: any,
+  currentMetricValues: any,
+  currentMetric: any,
 ) {

Review Comment:
   These `any` types are **documented technical debt** with `eslint-disable` 
comments explaining the issue. This is a JS→TS migration that converts ~40 
JavaScript files - proper typing for these complex Redux/form state 
interactions would require significant refactoring beyond the migration scope.
   
   The `eslint-disable` pattern is explicitly recommended by the codebase 
guidelines for cases where proper typing isn't feasible in the immediate change.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641586925


##
superset-frontend/src/SqlLab/middlewares/persistSqlLabStateEnhancer.ts:
##
@@ -0,0 +1,184 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import type { StoreEnhancer } from 'redux';
+import persistState from 'redux-localstorage';
+import { pickBy } from 'lodash';
+import { isFeatureEnabled, FeatureFlag } from '@superset-ui/core';
+import { filterUnsavedQueryEditorList } from 
'src/SqlLab/components/EditorAutoSync';
+import type {
+  SqlLabRootState,
+  QueryEditor,
+  UnsavedQueryEditor,
+  Table,
+} from '../types';
+import {
+  emptyTablePersistData,
+  emptyQueryResults,
+  clearQueryEditors,
+} from '../utils/reduxStateToLocalStorageHelper';
+import { BYTES_PER_CHAR, KB_STORAGE } from '../constants';
+
+type SqlLabState = SqlLabRootState['sqlLab'];
+
+type ClearEntityHelperValue =
+  | Table[]
+  | SqlLabState['queries']
+  | QueryEditor[]
+  | UnsavedQueryEditor;
+
+interface ClearEntityHelpersMap {
+  tables: (tables: Table[]) => ReturnType;
+  queries: (
+queries: SqlLabState['queries'],
+  ) => ReturnType;
+  queryEditors: (
+queryEditors: QueryEditor[],
+  ) => ReturnType;
+  unsavedQueryEditor: (
+qe: UnsavedQueryEditor,
+  ) => ReturnType[number];
+}
+
+const CLEAR_ENTITY_HELPERS_MAP: ClearEntityHelpersMap = {
+  tables: emptyTablePersistData,
+  queries: emptyQueryResults,
+  queryEditors: clearQueryEditors,
+  unsavedQueryEditor: (qe: UnsavedQueryEditor) =>
+clearQueryEditors([qe as QueryEditor])[0],
+};
+
+interface PersistedSqlLabState {
+  sqlLab?: Partial;
+  localStorageUsageInKilobytes?: number;
+}
+
+const sqlLabPersistStateConfig = {
+  paths: ['sqlLab'],
+  config: {
+slicer:
+  (paths: string[]) =>
+  (state: SqlLabRootState): PersistedSqlLabState => {
+const subset: PersistedSqlLabState = {};
+paths.forEach(path => {
+  if (isFeatureEnabled(FeatureFlag.SqllabBackendPersistence)) {
+const {
+  queryEditors,
+  editorTabLastUpdatedAt,
+  unsavedQueryEditor,
+  tables,
+  queries,
+  tabHistory,
+  lastUpdatedActiveTab,
+  destroyedQueryEditors,
+} = state.sqlLab;
+const unsavedQueryEditors = filterUnsavedQueryEditorList(
+  queryEditors,
+  unsavedQueryEditor,
+  editorTabLastUpdatedAt,
+);
+const hasUnsavedActiveTabState =
+  tabHistory.slice(-1)[0] !== lastUpdatedActiveTab;
+const hasUnsavedDeletedQueryEditors =
+  Object.keys(destroyedQueryEditors).length > 0;
+if (
+  unsavedQueryEditors.length > 0 ||
+  hasUnsavedActiveTabState ||
+  hasUnsavedDeletedQueryEditors
+) {
+  const hasFinishedMigrationFromLocalStorage =
+unsavedQueryEditors.every(
+  ({ inLocalStorage }) => !inLocalStorage,
+);
+  subset.sqlLab = {
+queryEditors: unsavedQueryEditors,
+...(!hasFinishedMigrationFromLocalStorage && {
+  tabHistory,
+  tables: tables.filter(table => table.inLocalStorage),
+  queries: pickBy(
+queries,
+query => query.inLocalStorage && !query.isDataPreview,
+  ),
+}),
+...(hasUnsavedActiveTabState && {
+  tabHistory,
+}),
+destroyedQueryEditors,
+  };
+}
+return;

Review Comment:
   
   Your explanation is correct. The `return;` is inside the `forEach` callback, 
equivalent to `continue`, skipping processing for actions without 
`queryEditorId` but allowing the slicer to continue and calculate size.



-- 
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: notifications-unsubscr...@superse

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641585763


##
superset-frontend/src/SqlLab/middlewares/persistSqlLabStateEnhancer.ts:
##
@@ -0,0 +1,184 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import type { StoreEnhancer } from 'redux';
+import persistState from 'redux-localstorage';
+import { pickBy } from 'lodash';
+import { isFeatureEnabled, FeatureFlag } from '@superset-ui/core';
+import { filterUnsavedQueryEditorList } from 
'src/SqlLab/components/EditorAutoSync';
+import type {
+  SqlLabRootState,
+  QueryEditor,
+  UnsavedQueryEditor,
+  Table,
+} from '../types';
+import {
+  emptyTablePersistData,
+  emptyQueryResults,
+  clearQueryEditors,
+} from '../utils/reduxStateToLocalStorageHelper';
+import { BYTES_PER_CHAR, KB_STORAGE } from '../constants';
+
+type SqlLabState = SqlLabRootState['sqlLab'];
+
+type ClearEntityHelperValue =
+  | Table[]
+  | SqlLabState['queries']
+  | QueryEditor[]
+  | UnsavedQueryEditor;
+
+interface ClearEntityHelpersMap {
+  tables: (tables: Table[]) => ReturnType;
+  queries: (
+queries: SqlLabState['queries'],
+  ) => ReturnType;
+  queryEditors: (
+queryEditors: QueryEditor[],
+  ) => ReturnType;
+  unsavedQueryEditor: (
+qe: UnsavedQueryEditor,
+  ) => ReturnType[number];
+}
+
+const CLEAR_ENTITY_HELPERS_MAP: ClearEntityHelpersMap = {
+  tables: emptyTablePersistData,
+  queries: emptyQueryResults,
+  queryEditors: clearQueryEditors,
+  unsavedQueryEditor: (qe: UnsavedQueryEditor) =>
+clearQueryEditors([qe as QueryEditor])[0],
+};
+
+interface PersistedSqlLabState {
+  sqlLab?: Partial;
+  localStorageUsageInKilobytes?: number;
+}
+
+const sqlLabPersistStateConfig = {
+  paths: ['sqlLab'],
+  config: {
+slicer:
+  (paths: string[]) =>
+  (state: SqlLabRootState): PersistedSqlLabState => {
+const subset: PersistedSqlLabState = {};
+paths.forEach(path => {
+  if (isFeatureEnabled(FeatureFlag.SqllabBackendPersistence)) {
+const {
+  queryEditors,
+  editorTabLastUpdatedAt,
+  unsavedQueryEditor,
+  tables,
+  queries,
+  tabHistory,
+  lastUpdatedActiveTab,
+  destroyedQueryEditors,
+} = state.sqlLab;
+const unsavedQueryEditors = filterUnsavedQueryEditorList(
+  queryEditors,
+  unsavedQueryEditor,
+  editorTabLastUpdatedAt,
+);
+const hasUnsavedActiveTabState =
+  tabHistory.slice(-1)[0] !== lastUpdatedActiveTab;
+const hasUnsavedDeletedQueryEditors =
+  Object.keys(destroyedQueryEditors).length > 0;
+if (
+  unsavedQueryEditors.length > 0 ||
+  hasUnsavedActiveTabState ||
+  hasUnsavedDeletedQueryEditors
+) {
+  const hasFinishedMigrationFromLocalStorage =
+unsavedQueryEditors.every(
+  ({ inLocalStorage }) => !inLocalStorage,
+);
+  subset.sqlLab = {
+queryEditors: unsavedQueryEditors,
+...(!hasFinishedMigrationFromLocalStorage && {
+  tabHistory,
+  tables: tables.filter(table => table.inLocalStorage),
+  queries: pickBy(
+queries,
+query => query.inLocalStorage && !query.isDataPreview,
+  ),
+}),
+...(hasUnsavedActiveTabState && {
+  tabHistory,
+}),
+destroyedQueryEditors,
+  };
+}
+return;

Review Comment:
   This is **not a bug** - the `return;` is inside the `forEach` callback, not 
the slicer function. It's equivalent to `continue` in the loop and was present 
in the original JavaScript.
   
   The `forEach` skips processing for any action missing `queryEditorId`. The 
outer slicer function continues normally after the forEach completes. This 
behavior is unchanged from the original JS→TS migration.



##
superset-frontend/src/explore/components/contr

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641587514


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.tsx:
##
@@ -331,16 +391,16 @@ class AdhocFilterControl extends Component {
 return null;
   }
 
-  addNewFilterPopoverTrigger(trigger) {
+  addNewFilterPopoverTrigger(trigger: ReactNode): JSX.Element {
 return (
|| {}}
 options={this.state.options}
-onFilterEdit={this.onNewFilter}
-partitionColumn={this.state.partitionColumn}
+onFilterEdit={this.onNewFilter as unknown as (editedFilter: 
AdhocFilter) => void}

Review Comment:
   
   Yes, the unsafe type assertion has been removed by updating the 
`onNewFilter` method to accept `FilterOption | AdhocFilter`, which safely 
handles both types without casting.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641587200


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/index.tsx:
##
@@ -59,14 +60,16 @@ export default function AdhocFilterOption({
   operators={operators}
   adhocFilter={adhocFilter}
   options={options}
-  datasource={datasource}
+  datasource={datasource as Record || {}}
   onFilterEdit={onFilterEdit}
-  partitionColumn={partitionColumn}
+  partitionColumn={partitionColumn ?? undefined}
 >
   
+  onRemoveFilter({} as React.MouseEvent)
+}

Review Comment:
   
   Yes, the suggestion to add `stopPropagation: () => {}` to the fake 
MouseEvent object is valid — it provides the minimal mock needed to prevent the 
runtime TypeError when the handler calls `stopPropagation()`, matching the 
original behavior without unnecessary complexity.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641585249


##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -25,7 +25,6 @@ import {
   QueryFormMetric,
 } from '@superset-ui/core';
 import {
-  ControlStateMapping,
   getStandardizedControls,
   isStandardizedFormData,
   StandardizedControls,

Review Comment:
   
   Yes, the changes in standardizedFormData.ts document existing technical debt 
by adding eslint-disable comments and using 'any' types, since 
getControlsState() in store.ts returns Record, which isn't 
compatible with the previous ControlStateMapping type annotation that was 
incorrect.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2641584021


##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -25,7 +25,6 @@ import {
   QueryFormMetric,
 } from '@superset-ui/core';
 import {
-  ControlStateMapping,
   getStandardizedControls,
   isStandardizedFormData,
   StandardizedControls,

Review Comment:
   This is **documenting existing technical debt**, not introducing a 
regression:
   
   1. `getControlsState()` in `store.ts` returns `Record` (see 
line 59)
   2. The old return type claimed `controlsState: ControlStateMapping` where 
`ControlStateMapping = { [key: string]: ControlState }`
   3. `Record` is **not compatible** with 
`ControlStateMapping` - this was an incorrect type annotation
   
   The original code had a type mismatch that only compiled because TypeScript 
wasn't being enforced strictly. The proper fix would require updating 
`getControlsState()` and multiple downstream functions to return proper types - 
that's out of scope for this JS→TS migration PR.
   
   The `eslint-disable` comments document this as technical debt for future 
cleanup.



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3684005647

   The `any` types with `eslint-disable` comments are intentional for this 
migration PR. These utility functions handle dynamic values from various 
sources (URL params, Redux state, user input) that can have multiple shapes:
   
   - `getOptionsForSavedMetrics`: `currentMetricValues` can be an array or 
single value
   - `isDictionaryForAdhocMetric`: Type guard for unknown value shapes
   - `coerceAdhocMetrics`: Converts various value types to AdhocMetric instances
   
   Adding proper union types for these would require significant refactoring to 
trace all call sites and their expected types, which is beyond the scope of 
this JS-to-TS migration. The eslint-disable comments document this technical 
debt for future improvement.


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3683992928

   The `Record` type is intentional - it represents the empty 
object `{}` default value used in the component (line 81):
   
   ```typescript
   savedMetric = {} as SavedMetricTypeDef,
   ```
   
   This matches the existing JavaScript behavior where `savedMetric` defaults 
to `{}` when not provided. Changing this would require modifying the 
component's runtime behavior, which is beyond the scope of this TypeScript 
migration PR.
   
   The current typing accurately reflects how the component is actually used in 
the codebase.


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3683862005

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3683558508

   This was already fixed in commit d03c5531e1. The current code includes 
`stopPropagation: () => {}` in the fake event object:
   
   ```tsx
   onRemove={() =>
 onRemoveFilter({
   stopPropagation: () => {},
 } as React.MouseEvent)
   }
   ```
   
   The bot's comment is on outdated code.


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3683485810

   Good catch! Fixed in d97610c981 - updated `onNewFilter` to accept 
`FilterOption | AdhocFilter` which matches the `mapOption` method's signature, 
eliminating the need for the unsafe `as unknown as` type assertion.


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3683484889

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


rusackas commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3683187537

   Regarding bito-code-review's suggestion about the `return;` on line 124 in 
`persistSqlLabStateEnhancer.ts`:
   
   **This `return;` is intentional and was present in the original JavaScript 
code.** It's not a bug introduced by this TypeScript migration.
   
   The logic flow is:
   
   1. The `return;` is inside the `paths.forEach(path => { ... })` callback, 
NOT the slicer function itself
   2. When `SqllabBackendPersistence` is enabled, the code:
  - Builds `subset.sqlLab` with only unsaved data (if any exists)
  - Returns early from the forEach callback to **skip** the old 
localStorage persistence logic (lines 126-150)
   3. The size calculation (lines 153-159) still runs after the forEach 
completes
   
   The `return;` prevents the non-backend-persistence code path from executing 
when backend persistence is enabled - this is the correct and intended 
behavior. The size calculation is **not** affected because it's outside the 
forEach loop.
   
   No changes needed here.


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-22 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3681091377

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3680667834

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3680548658

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2638290069


##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -25,7 +25,6 @@ import {
   QueryFormMetric,
 } from '@superset-ui/core';
 import {
-  ControlStateMapping,
   getStandardizedControls,
   isStandardizedFormData,
   StandardizedControls,

Review Comment:
   
   
   
   
   Type Safety Regression
   
   
   Removing ControlStateMapping import and switching to any types violates the 
critical frontend modernization standards that prohibit any types. 
ControlStateMapping is still available from '@superset-ui/chart-controls' and 
should be imported there for type safety.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/6d597ef/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/6d597ef/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #402208
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -189,11 +188,10 @@ export class StandardizedFormData {
 
   transform(
 targetVizType: string,
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 exploreState: Record,
-  ): {
-formData: QueryFormData;
-controlsState: ControlStateMapping;
-  } {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+  ): any {
 /*
  * Transform form_data between different viz. Return new form_data and 
controlsState.
  * 1. get memorized form_data by viz type or get previous form_data

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   Changing the transform method return type to any degrades type safety and 
violates standards. The method should return a properly typed object with 
formData and controlsState.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/6d597ef/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   
   
   
   
   
   Code Review Run #402208
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -243,14 +243,18 @@ export class StandardizedFormData {
   getStandardizedControls().clear();
   rv = {
 formData: transformed,
-controlsState: getControlsState(exploreState, transformed),
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+controlsState: getControlsState(exploreState as any, transformed),
   };
 }
 
 // refresh validator message
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 rv.controlsState = getControlsState(
-  { ...exploreState, controls: rv.controlsState },
-  rv.formData,
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  { ...exploreState, controls: rv.controlsState } as any,
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  rv.formData as any,
 );
 return rv;
   }

Review Comment:
   
   
   
   
   Type Safety Bypass
   
   
   Multiple any casts and eslint disables here continue the pattern of avoiding 
proper typing. This should be fixed to maintain type safety.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/6d597ef/.cursor/rules/dev-standard.mdc#L35";>dev-standard.mdc:35
   
   
   
   
   
   
   
   
   Code Review Run #402208
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnMetricSelect.tsx:
##
@@ -344,10 +345,14 @@ function DndColumnMetricSelect(props: 
DndColumnMetricSelectProps) {
   onChange(multi ? newValues : newValues[0]);
 }}
 onRemoveMetric={onClickClose}
-columns={columns}
-savedMetrics={savedMetrics}
-savedMetricsOptions={savedMetrics}
-datasource={datasource}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+columns={columns as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+savedMetrics={savedMetrics as any}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+savedMetricsOptions={savedMetrics as any}
+// eslint-disable-next-line @typescript

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3679873354

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3679640960

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2637366369


##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -99,21 +103,38 @@ function coerceAdhocMetrics(value) {
 const emptySavedMetric = { metric_name: '', expression: '' };
 
 // TODO: use typeguards to distinguish saved metrics from adhoc metrics
-const getMetricsMatchingCurrentDataset = (value, columns, savedMetrics) =>
-  ensureIsArray(value).filter(metric => {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+const getMetricsMatchingCurrentDataset = (value: any, columns: any, 
savedMetrics: any) =>
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  ensureIsArray(value).filter((metric: any) => {
 if (typeof metric === 'string' || metric.metric_name) {
   return savedMetrics?.some(
-savedMetric =>
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+(savedMetric: any) =>
   savedMetric.metric_name === metric ||
   savedMetric.metric_name === metric.metric_name,
   );
 }
 return columns?.some(
-  column =>
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  (column: any) =>
 !metric.column || metric.column.column_name === column.column_name,
 );
   });

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   The changes add 'as any' type assertions and eslint disables for 
@typescript-eslint/no-explicit-any, violating the development standards that 
explicitly prohibit 'any' types in favor of proper TypeScript typing. The TODO 
comment suggests using typeguards to distinguish metric types, but instead 
'any' is used throughout, which defeats TypeScript's type safety. Consider 
importing typeguards from @superset-ui/core/src/query/types/Metric and defining 
proper union types for parameters.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fcf2d2f/.cursor/rules/dev-standard.mdc#L15";>dev-standard.mdc:15
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fcf2d2f/AGENTS.md#L56";>AGENTS.md:56
   
   
   
   
   
   
   
   
   Code Review Run #14ed29
   
   
   
   
   Replace `any` types with proper TypeScript types
   
   
   The function parameters use `any` types, violating the project's TypeScript 
standards that prohibit `any` in favor of proper types. Consider defining 
interfaces for the parameters to enhance type safety.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/35a90de/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/35a90de/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   
   
   
   
   
   Code Review Run #09aefd
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3679473352

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3679374014

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-21 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678629785

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678496466

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678458263

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678212642

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2637412665


##
superset-frontend/src/SqlLab/components/AceEditorWrapper/useKeywords.test.ts:
##
@@ -232,7 +232,8 @@ test('returns column keywords among selected tables', async 
() => {
 );
 storeWithSqlLab.dispatch(
   addTable(
-{ id: expectQueryEditorId },
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+{ id: expectQueryEditorId } as any,

Review Comment:
   
   
   
   
   Incorrect type assertion in test
   
   
   The test is passing { id: expectQueryEditorId } as any to addTable, but 
addTable expects a full QueryEditor object. This bypasses TypeScript checks and 
may lead to runtime issues since getUpToDateQuery will fail to find the 
queryEditor in state. Consider setting up the store with a proper QueryEditor 
or using an existing one.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/90f99b5/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/90f99b5/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #4f0eeb
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/SqlLab/reducers/sqlLab.ts:
##
@@ -753,7 +780,8 @@ export default function sqlLabReducer(state = {}, action) {
 }
 return true;
   })
-  .map(([id, query]) => [
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  .map(([id, query]: [string, any]) => [

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   The type annotation uses 'any' for the query parameter, which violates the 
project's strict TypeScript guidelines against using 'any' types. Since the 
query is of type QueryResponse & { inLocalStorage?: boolean }, use that instead 
for better type safety.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/90f99b5/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/90f99b5/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #4f0eeb
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/SqlLab/components/AceEditorWrapper/useKeywords.test.ts:
##
@@ -276,7 +277,8 @@ test('returns column keywords among selected tables', async 
() => {
   act(() => {
 storeWithSqlLab.dispatch(
   addTable(
-{ id: expectQueryEditorId },
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+{ id: expectQueryEditorId } as any,

Review Comment:
   
   
   
   
   Incorrect type assertion in test
   
   
   Similar to the first instance, this test call passes { id: 
expectQueryEditorId } as any to addTable, bypassing type checks. The function 
expects a complete QueryEditor, and this may cause getUpToDateQuery to return 
undefined dbId, breaking the table creation logic.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/90f99b5/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/90f99b5/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #4f0eeb
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -189,11 +188,10 @@ export class StandardizedFormData {
 
   transform(
 targetVizType: string,
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 exploreState: Record,
-  ): {
-formData: QueryFormData;
-controlsState: ControlStateMapping;
-  } {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+  ): any {

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   The return type change from a structured object to 'any' reduces TypeScript 
type safety and violates ongoing frontend modernization standards that prohibit 
'any' types. While this may resolve CI errors, it risks runtime issues if 
callers assume the object structure. Consider defining a proper interface for 
the return value to align with the 'NO any types' rule in dev standards.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/90f99b5/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
 

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678166920

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2637366365


##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -211,13 +211,15 @@ export class StandardizedFormData {
 publicFormData[key] = exploreState.form_data[key];
   }
 });
-const targetControlsState = getControlsState(exploreState, {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+const targetControlsState = getControlsState(exploreState as any, {

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   This change adds 'as any' casts to bypass TypeScript type checking, which 
violates the project's development standards that explicitly prohibit 'any' 
types. The ExploreState interface appears incomplete compared to actual usage.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fcf2d2f/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fcf2d2f/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #14ed29
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/SqlLab/actions/sqlLab.ts:
##
@@ -1242,23 +1541,25 @@ export function popSavedQuery(saveQueryId) {
   ...convertQueryToClient(json.result),
   loaded: true,
   autorun: false,
-};
+} as Record;
 const tmpAdaptedProps = {
-  name: queryEditorProps.name,
-  dbId: queryEditorProps.database.id,
-  catalog: queryEditorProps.catalog,
-  schema: queryEditorProps.schema,
-  sql: queryEditorProps.sql,
-  templateParams: queryEditorProps.templateParams,
-  remoteId: queryEditorProps.remoteId,
+  name: queryEditorProps.name as string,
+  dbId: (queryEditorProps.database as { id: number }).id,

Review Comment:
   
   
   
   
   Unsafe type assertion may throw
   
   
   The assertion `queryEditorProps.catalog as string` assumes `catalog` is 
always a string, but if the API returns `null` (allowed by 
QueryEditor.catalog?: string | null), this throws a runtime TypeError. Consider 
safe casting or null handling.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fcf2d2f/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   
   
   
   
   
   Code Review Run #14ed29
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -243,14 +245,18 @@ export class StandardizedFormData {
   getStandardizedControls().clear();
   rv = {
 formData: transformed,
-controlsState: getControlsState(exploreState, transformed),
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+controlsState: getControlsState(exploreState as any, transformed),

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   This change adds 'as any' casts to bypass TypeScript type checking, which 
violates the project's development standards that explicitly prohibit 'any' 
types. The ExploreState interface appears incomplete compared to actual usage.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fcf2d2f/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fcf2d2f/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #14ed29
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/controlUtils/standardizedFormData.ts:
##
@@ -211,13 +211,15 @@ export class StandardizedFormData {
 publicFormData[key] = exploreState.form_data[key];
   }
 });
-const targetControlsState = getControlsState(exploreState, {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+const targetControlsState = getControlsState(exploreState as any, {
   ...latestFormData,
   ...publicFormData,
   viz_type: targetVizType,
 });
 const targetFormData = {
-  ...getFormDataFromControls(targetControlsState),
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  ...getFormDataFromControls(targetControlsState as any),

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   This change adds 'as any' casts to bypass TypeScript type checking, which 

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678123691

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2637311932


##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -57,13 +57,14 @@ const defaultProps = {
   columns: [],
 };
 
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
 function getOptionsForSavedMetrics(
-  savedMetrics,
-  currentMetricValues,
-  currentMetric,
+  savedMetrics: any,
+  currentMetricValues: any,
+  currentMetric: any,
 ) {

Review Comment:
   
   
   
   
   Type Safety Regression
   
   
   This change introduces `any` types, violating the development standard that 
prohibits `any` types in favor of proper TypeScript types. The functions should 
use union types based on the component's PropTypes definitions.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/1d07646/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/1d07646/AGENTS.md#L10";>AGENTS.md:10
   
   
   
   
   
   
   
   
   Code Review Run #2ce9c6
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -72,13 +73,15 @@ function getOptionsForSavedMetrics(
   );
 }
 
-function isDictionaryForAdhocMetric(value) {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+function isDictionaryForAdhocMetric(value: any) {
   return value && !(value instanceof AdhocMetric) && value.expressionType;
 }

Review Comment:
   
   
   
   
   Type Safety Issue
   
   
   Using `any` here bypasses type checking. Use `unknown` for safer type guards.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/1d07646/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   
   
   
   
   
   Code Review Run #2ce9c6
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -88,7 +91,8 @@ function coerceAdhocMetrics(value) {
 }
 return [value];
   }
-  return value.map(val => {
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  return value.map((val: any) => {

Review Comment:
   
   
   
   
   Type Safety Issue
   
   
   Using `any` in array map bypasses type safety.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/1d07646/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   
   
   
   
   
   Code Review Run #2ce9c6
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.tsx:
##
@@ -216,12 +216,12 @@ class AdhocMetricPopoverTrigger extends PureComponent<
   adhocMetric={adhocMetric}
   columns={columns}
   savedMetricsOptions={savedMetricsOptions}
-  savedMetric={savedMetric}
-  datasource={datasource}
+  savedMetric={savedMetric as savedMetricType}

Review Comment:
   
   
   
   
   Unsafe Type Assertion on Empty Object
   
   
   The type assertion `savedMetric as savedMetricType` is unsafe because 
savedMetric can be an empty object (Record), but SavedMetricType 
requires properties like metric_name. This could cause runtime errors if the 
component accesses properties on an empty object. Pass undefined instead when 
empty, as the prop is optional.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/1d07646/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/1d07646/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #2ce9c6
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.tsx:
##
@@ -72,13 +73,15 @@ function getOptionsForSavedMetrics(
   );
 }
 
-function isDictionaryForAdhocMetric(value) {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+function isDictionaryForAdhocMetric(value: any) {
   return value && !(value instanceof AdhocMetric) && value.expressionType;
 }
 
 // adhoc metrics are stored as dictionaries in URL params. We convert them 
back i

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678077174

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3678039501

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2636969119


##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -58,7 +78,7 @@ class AdhocMetricOption extends PureComponent {
   onMetricEdit,
   columns,
   savedMetricsOptions,
-  savedMetric,
+  savedMetric = {} as SavedMetricTypeDef,

Review Comment:
   
   
   
   
   Invalid Default Value
   
   
   Defaulting to `{}` creates an invalid `SavedMetricTypeDef` object (missing 
`metric_name`), which can cause issues in AdhocMetricPopoverTrigger expecting 
required fields. Provide a proper default with required properties to maintain 
type safety.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fc3fe76/.cursor/rules/dev-standard.mdc#L120";>dev-standard.mdc:120
   
   
   
   
   
   
   
   
   Code Review Run #fbef04
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



##
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.tsx:
##
@@ -18,12 +18,32 @@
  */
 import { PureComponent } from 'react';
 import PropTypes from 'prop-types';
+import { Metric } from '@superset-ui/core';
 import { OptionControlLabel } from 
'src/explore/components/controls/OptionControls';
 import { DndItemType } from 'src/explore/components/DndItemType';
+import { Datasource } from 'src/explore/types';
+import { ISaveableDatasource } from 'src/SqlLab/components/SaveDatasetModal';
 import columnType from './columnType';
 import AdhocMetric from './AdhocMetric';
 import savedMetricType from './savedMetricType';
 import AdhocMetricPopoverTrigger from './AdhocMetricPopoverTrigger';
+import { savedMetricType as SavedMetricTypeDef } from './types';
+
+interface AdhocMetricOptionProps {
+  adhocMetric: AdhocMetric;
+  onMetricEdit: (newMetric: Metric, oldMetric: Metric) => void;
+  onRemoveMetric?: (index: number) => void;
+  columns?: { column_name: string; type: string }[];
+  savedMetricsOptions?: SavedMetricTypeDef[];
+  savedMetric?: SavedMetricTypeDef | Record;

Review Comment:
   
   
   
   
   Type Safety Violation
   
   
   The type `SavedMetricTypeDef | Record` allows an empty object 
`{}` which doesn't satisfy `SavedMetricTypeDef` (missing required 
`metric_name`), leading to type safety issues. Since the rules emphasize proper 
TypeScript without type assertions, simplify to `SavedMetricTypeDef` and ensure 
defaults provide valid objects.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fc3fe76/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/fc3fe76/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #fbef04
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3677650776

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2636936319


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/index.tsx:
##
@@ -59,14 +60,16 @@ export default function AdhocFilterOption({
   operators={operators}
   adhocFilter={adhocFilter}
   options={options}
-  datasource={datasource}
+  datasource={datasource as Record || {}}
   onFilterEdit={onFilterEdit}
-  partitionColumn={partitionColumn}
+  partitionColumn={partitionColumn ?? undefined}
 >
   
+  onRemoveFilter({} as React.MouseEvent)
+}

Review Comment:
   
   
   
   
   Runtime Error: Fake MouseEvent Lacks Methods
   
   
   This change passes an empty object cast as a React.MouseEvent to 
onRemoveFilter, but the fake event lacks the stopPropagation method that the 
parent expects, leading to a runtime TypeError when users click to remove 
filters. The underlying issue is a type mismatch in OptionControlLabel where 
onRemove is typed as () => void but receives a MouseEvent from onClick. 
Consider updating the component's interface to properly accept the event.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/615d63d/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   
   
   
   
   
   Code Review Run #6677b1
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-20 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3677577815

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-19 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3677514959

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-19 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2636612069


##
superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.tsx:
##
@@ -331,16 +391,16 @@ class AdhocFilterControl extends Component {
 return null;
   }
 
-  addNewFilterPopoverTrigger(trigger) {
+  addNewFilterPopoverTrigger(trigger: ReactNode): JSX.Element {
 return (
|| {}}
 options={this.state.options}
-onFilterEdit={this.onNewFilter}
-partitionColumn={this.state.partitionColumn}
+onFilterEdit={this.onNewFilter as unknown as (editedFilter: 
AdhocFilter) => void}

Review Comment:
   
   
   
   
   Unsafe Type Assertion Bypass
   
   
   The double type assertion 'as unknown as (editedFilter: AdhocFilter) => 
void' bypasses TypeScript's type safety, violating standards that require 
proper TypeScript types. This can mask type errors and lead to runtime issues. 
Update onNewFilter to handle both FilterOption and AdhocFilter types for safe 
assignment.
   
   
   
   
   
   
   Citations
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/c470121/.cursor/rules/dev-standard.mdc#L16";>dev-standard.mdc:16
   
   
   
   Rule Violated: https://github.com/apache/superset/blob/c470121/AGENTS.md#L57";>AGENTS.md:57
   
   
   
   
   
   
   
   
   Code Review Run #732e18
   
   
   ---
   Should Bito avoid suggestions like this for future reviews? (https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules)
   - [ ] Yes, avoid them



-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-19 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3677033620

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).
   
   
   
   Bito Usage Guide
   
   
   **Commands**
 
   Type the following command in the pull request comment and save the comment.
 
   - `/review` - Manually triggers a full AI review.
   
   - `/pause` - Pauses automatic reviews on this pull request.
   - `/resume` - Resumes automatic reviews.
   - `/resolve` - Marks all Bito-posted review comments as resolved.
   - `/abort` - Cancels all in-progress reviews.
   
 
   Refer to the https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/available-commands";
 target="_blank" rel="noopener noreferrer">documentation for additional 
commands.
 
   **Configuration**
   
   This repository uses `Superset` You can customize the agent settings https://alpha.bito.ai/home/ai-agents/code-review-agent"; target="_blank" 
rel="noopener noreferrer">here or contact your Bito workspace admin at 
[email protected].
 
   **Documentation & Help**
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/getting-started/install-run-using-bito-cloud/create-or-customize-an-agent-instance";
 target="_blank" rel="noopener noreferrer">Customize agent settings
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/implementing-custom-code-review-rules";
 target="_blank" rel="noopener noreferrer">Review rules
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent"; 
target="_blank" rel="noopener noreferrer">General documentation
   - https://docs.bito.ai/bito-dev-agents/ai-code-review-agent/faqs"; 
target="_blank" rel="noopener noreferrer">FAQ
   
   
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-19 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3676465985

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-19 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3675466153

   CodeAnt AI is running Incremental review
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-18 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3673955671

   ## Nitpicks 🔍
   
   
   🔒 No security issues identified
   ⚡ Recommended areas for review
   
   - [ ] Unsafe
 Default StateThe reducer default state is set to an empty 
object cast to `SqlLabState` (`{} as SqlLabState`). Casting an empty object 
silences missing required properties and may mask runtime errors. Use an 
explicit, properly shaped initial state (imported initial state) or make the 
reducer accept a Partial state to ensure required fields are present.
   
   - [ ] Possible
 runtime errorThe code grabs a control component from 
`controlMap` using `this.props.controlName` without guarding against 
`undefined`. If `controlMap[this.props.controlName]` is missing the render will 
throw. Consider validating and providing a clear fallback UI or throwing a 
helpful error.
   
   - [ ] Unsafe
 savedMetrics accessgetMetricExpression calls .expression on 
the result of .find(...) without checking whether a matching saved metric 
exists. If no saved metric matches, this will throw a runtime TypeError. 
Consider returning a safe default or handling the missing case explicitly.
   
   - [ ] State
 mutationThe slicer function mutates the incoming Redux state: 
it uses `delete` on `statePath.common` and assigns to 
`state.localStorageUsageInKilobytes`. Mutating the provided `state` in a Redux 
pipeline can cause subtle bugs and break assumptions about immutability. 
Consider returning derived values instead of mutating the input.
   
   - [ ] Query
 id requiredThe new `Query` interface declares `id` as 
required (`string`), but multiple code paths (and the original JS) allow 
creating queries without an `id` and rely on `startQuery` to generate one. This 
mismatch can produce incorrect type assumptions across callers or TypeScript 
errors; make `id` optional or ensure callers always set it.
   
   - [ ] Unsafe
 array accessThe code calls array methods without guarding 
that the arrays exist. Examples: `const { columns } = datasource; 
columns.find(...)` and `datasource.owners?.map(...).includes(...)` can throw if 
`columns` or the result of the optional chain is undefined. These places should 
defensively handle missing `columns`/`owners` to avoid runtime exceptions.
   
   - [ ] Optional
 chaining misuseThe expression 
`datasource.owners?.map(...).includes(...)` uses optional chaining only for 
`map`, but then immediately calls `.includes` on possibly `undefined`. Use a 
fallback (e.g. `|| []`) or restructure to avoid calling methods on undefined 
values.
   
   - [ ] Potential
 undefined entries in selectedLayersWhen mapping 
`layerFilterScope` to find matching options from `result.data` the code does 
not filter out not-found results. That can leave `selectedLayers` containing 
`undefined` entries which may be passed to the `Select` `value` prop and later 
cause `onSave` to include `undefined` in the saved `layerFilterScope`. Consider 
filtering out falsy/undefined items before calling setState or ensuring `find` 
always returns a valid option.
   
   - [ ] Event
 handling bugThe helper that handles Link onClick 
(preventRouterLinkWhileMetaClicked) appears to invert semantics: it calls 
preventDefault() when metaKey is true and stopPropagation() otherwise. This 
likely prevents the browser default (opening in a new tab) while allowing 
client-side router handling, which is the opposite of the intended behavior. 
Verify desired behavior and fix the event handling to stop router navigation 
while preserving default browser behavior for modifier-clicks.
   
   - [ ] Unsafe
 optional accessThe implementation of `getDefaultTab` accesses 
`savedMetric.metric_name` without guarding for `savedMetric` being undefined. 
If `props.savedMetric` is undefined this will throw at runtime. The same logic 
is invoked when initializing `defaultActiveTabKey`, increasing the chance of a 
crash during component construction.
   
   - [ ] Incorrect
 object checkThe code uses `Object.is(c)` to test whether a 
choice `c` is an object. `Object.is` is a function that requires two arguments 
and is not a truthy test for "is object". This will cause plain-object choices 
to fall through to the primitive branch, producing incorrect `{ value, label }` 
mapping (labels/values lost). Inspect how object choices are detected and 
mapped.
   
   - [ ] onInit
 return mismatchThe code returns the result of 
controlPanelConfig.onInit(controlsState). However, the upstream type for onInit 
is declared as returning void in the control panel types. If onInit returns 
nothing (undefined) but only mutates the passed state, this function will 
return undefined instead of the expected controlsState. Confirm whether onInit 
should return the new controls state or mutate it in-place, and make the code 
robust to both behaviors.
   
   - [ ] Falsy
 coordinate checkThe label rendering uses truthy checks for 
longitude an

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-18 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3673955850

   CodeAnt AI finished reviewing your PR.


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-18 Thread via GitHub


bito-code-review[bot] commented on code in PR #36760:
URL: https://github.com/apache/superset/pull/36760#discussion_r2634038860


##
superset-frontend/src/SqlLab/middlewares/persistSqlLabStateEnhancer.ts:
##
@@ -0,0 +1,184 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import type { StoreEnhancer } from 'redux';
+import persistState from 'redux-localstorage';
+import { pickBy } from 'lodash';
+import { isFeatureEnabled, FeatureFlag } from '@superset-ui/core';
+import { filterUnsavedQueryEditorList } from 
'src/SqlLab/components/EditorAutoSync';
+import type {
+  SqlLabRootState,
+  QueryEditor,
+  UnsavedQueryEditor,
+  Table,
+} from '../types';
+import {
+  emptyTablePersistData,
+  emptyQueryResults,
+  clearQueryEditors,
+} from '../utils/reduxStateToLocalStorageHelper';
+import { BYTES_PER_CHAR, KB_STORAGE } from '../constants';
+
+type SqlLabState = SqlLabRootState['sqlLab'];
+
+type ClearEntityHelperValue =
+  | Table[]
+  | SqlLabState['queries']
+  | QueryEditor[]
+  | UnsavedQueryEditor;
+
+interface ClearEntityHelpersMap {
+  tables: (tables: Table[]) => ReturnType;
+  queries: (
+queries: SqlLabState['queries'],
+  ) => ReturnType;
+  queryEditors: (
+queryEditors: QueryEditor[],
+  ) => ReturnType;
+  unsavedQueryEditor: (
+qe: UnsavedQueryEditor,
+  ) => ReturnType[number];
+}
+
+const CLEAR_ENTITY_HELPERS_MAP: ClearEntityHelpersMap = {
+  tables: emptyTablePersistData,
+  queries: emptyQueryResults,
+  queryEditors: clearQueryEditors,
+  unsavedQueryEditor: (qe: UnsavedQueryEditor) =>
+clearQueryEditors([qe as QueryEditor])[0],
+};
+
+interface PersistedSqlLabState {
+  sqlLab?: Partial;
+  localStorageUsageInKilobytes?: number;
+}
+
+const sqlLabPersistStateConfig = {
+  paths: ['sqlLab'],
+  config: {
+slicer:
+  (paths: string[]) =>
+  (state: SqlLabRootState): PersistedSqlLabState => {
+const subset: PersistedSqlLabState = {};
+paths.forEach(path => {
+  if (isFeatureEnabled(FeatureFlag.SqllabBackendPersistence)) {
+const {
+  queryEditors,
+  editorTabLastUpdatedAt,
+  unsavedQueryEditor,
+  tables,
+  queries,
+  tabHistory,
+  lastUpdatedActiveTab,
+  destroyedQueryEditors,
+} = state.sqlLab;
+const unsavedQueryEditors = filterUnsavedQueryEditorList(
+  queryEditors,
+  unsavedQueryEditor,
+  editorTabLastUpdatedAt,
+);
+const hasUnsavedActiveTabState =
+  tabHistory.slice(-1)[0] !== lastUpdatedActiveTab;
+const hasUnsavedDeletedQueryEditors =
+  Object.keys(destroyedQueryEditors).length > 0;
+if (
+  unsavedQueryEditors.length > 0 ||
+  hasUnsavedActiveTabState ||
+  hasUnsavedDeletedQueryEditors
+) {
+  const hasFinishedMigrationFromLocalStorage =
+unsavedQueryEditors.every(
+  ({ inLocalStorage }) => !inLocalStorage,
+);
+  subset.sqlLab = {
+queryEditors: unsavedQueryEditors,
+...(!hasFinishedMigrationFromLocalStorage && {
+  tabHistory,
+  tables: tables.filter(table => table.inLocalStorage),
+  queries: pickBy(
+queries,
+query => query.inLocalStorage && !query.isDataPreview,
+  ),
+}),
+...(hasUnsavedActiveTabState && {
+  tabHistory,
+}),
+destroyedQueryEditors,
+  };
+}
+return;

Review Comment:
   
   
   
   
   Logic Error: Premature Return
   
   
   The slicer function has a `return;` on line 124 that exits early when 
`SqllabBackendPersistence` is enabled, preventing size calculation and proper 
return of the persisted state. This could break persistence and size tracking. 
Remove this `return;` to let execution continue.
   
   
   
   
   
   Code suggestion
   
   Check the AI-generated fix before applying
   
   
   
   ```

Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-18 Thread via GitHub


codeant-ai-for-open-source[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3673927491

   CodeAnt AI is reviewing your PR.
   
   ---
   
   ### Thanks for using CodeAnt! 🎉
   
   We're free for open-source projects. if you're enjoying it, help us grow by 
sharing.
   
   [Share on 
X](https://twitter.com/intent/tweet?text=Just%20tried%20%40CodeAntAI%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A&url=https%3A//codeant.ai)
 ·
   
[Reddit](https://www.reddit.com/submit?title=Check%20out%20CodeAnt%20for%20automated%20code%20review&text=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos.%20Worth%20checking%20out%3A%20https%3A//codeant.ai)
 ·
   
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcodeant.ai&mini=true&title=Check%20out%20CodeAnt%20for%20automated%20code%20review&summary=Just%20tried%20CodeAnt%20for%20automated%20code%20review%20and%20I%27m%20impressed%21%20Free%20for%20open%20source%20with%20a%20free%20trial%20for%20private%20repos)
   


-- 
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]



Re: [PR] chore(frontend): migrate SqlLab and explore JS/JSX files to TypeScript [superset]

2025-12-18 Thread via GitHub


bito-code-review[bot] commented on PR #36760:
URL: https://github.com/apache/superset/pull/36760#issuecomment-3673927683

   AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a 
very large PR).


-- 
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]